From d2d634fe9d8eb65d7c1b8dd20ba1f8dd5ceb49d1 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 15:47:43 +0000 Subject: [PATCH 001/114] pipecat draft doc --- docs/integrations/pipecat.mdx | 56 +++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 docs/integrations/pipecat.mdx diff --git a/docs/integrations/pipecat.mdx b/docs/integrations/pipecat.mdx new file mode 100644 index 00000000..905f6070 --- /dev/null +++ b/docs/integrations/pipecat.mdx @@ -0,0 +1,56 @@ +--- +description: Learn how to integrate Speechmatics STT with Pipecat. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Pipecat + +Pipecat is an open-source framework for building real-time voice and multimodal conversational agents. It orchestrates audio and video input/output, speech-to-text, large language models, and text-to-speech into a single, unified pipeline. + +SpeechmaticsSTTService enables real-time speech transcription using Speechmatics’ WebSocket API with partial and final results, speaker diarization, and end of utterance detection (VAD) for comprehensive conversation analysis. +When integrated with Pipecat, you can build real-time voice and multimodal conversational agents specifically tailored to your use case. + +# Quickstart + +## Use cases + +Pipecat is perfect for: + +- **Voice AI**: Voice assistants, chatbots, and IVR systems +- **Translation**: Realtime translation of live events or media +- **Accessibility applications**: Screen readers and assistive technologies +- **Content creation**: Podcasts, dubbing, audiobooks, and voice-overs +- **Media production**: News broadcasts and automated announcements + +## Getting started + +### Prerequisites + +- Pipecat +- Speechmatics Account + +### Installation + +Install the SpeechmaticsSTTService from PyPl: + +```bash +pip install "pipecat-ai[speechmatics]" + +### Authentication + +The SpeechmaticsSTTService requires an API key. You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). + +#### Required environment variable: + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +## Further reading + +[Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) +[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) From 266ae79b4f8eb6ada70b0dcd46db36aa466d9f11 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 16:42:52 +0000 Subject: [PATCH 002/114] PC tweak --- docs/integrations/pipecat.mdx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/integrations/pipecat.mdx b/docs/integrations/pipecat.mdx index 905f6070..c9f181c9 100644 --- a/docs/integrations/pipecat.mdx +++ b/docs/integrations/pipecat.mdx @@ -28,9 +28,9 @@ Pipecat is perfect for: ## Getting started -### Prerequisites +### Requirements -- Pipecat +- Pipecat >= 1.2 - Speechmatics Account ### Installation @@ -42,9 +42,10 @@ pip install "pipecat-ai[speechmatics]" ### Authentication -The SpeechmaticsSTTService requires an API key. You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +The SpeechmaticsSTTService requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). -#### Required environment variable: +### Required environment variable: ```bash export SPEECHMATICS_API_KEY=your_api_key From 06a326588e815fc6aa78e9c6e8779eefdd651ad6 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 17:01:17 +0000 Subject: [PATCH 003/114] LiveKit draft --- docs/integrations/livekit.mdx | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 docs/integrations/livekit.mdx diff --git a/docs/integrations/livekit.mdx b/docs/integrations/livekit.mdx new file mode 100644 index 00000000..a0dc1833 --- /dev/null +++ b/docs/integrations/livekit.mdx @@ -0,0 +1,65 @@ +--- +description: Learn how to integrate Speechmatics STT with LiveKit Agents. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# LiveKit + +LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. +With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your LiveKit applications. + +## Use cases + +LiveKit is perfect for: + +- **Voice AI**: Voice assistants, chatbots, and IVR systems +- **Translation**: Real-time transcription of live events or recordings +- **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets +- **Media production**: News broadcasts, automated announcements + +## Quickstart + +### Requirements + +- Python 3.9 or higher +- Speechmatics Account + +### Installation + +Install SpeechmaticsSTT from PyPl: + +```bash +uv add "livekit-plugins-speechmatics" +``` +or + +```bash +pip install livekit-plugins-speechmatics +``` + +### Authentication + +The SpeechmaticsSTT requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +Set SPEECHMATICS_API_KEY in your .env file. + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +from livekit.agents import AgentSession +from livekit.plugins import speechmatics +from livekit.agents import turn_detector + +agent = AgentSession( + stt=speechmatics.STT(), + turn_detector=turn_detector.EOUModel(), + min_endpointing=0.5, + max_endpointing=5.0, +) From 14fe38fdbdfae829cc7e9769efbf679f5643d594 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 17:06:17 +0000 Subject: [PATCH 004/114] integrations sidebar added --- docs/integrations/sidebar.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/integrations/sidebar.ts diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts new file mode 100644 index 00000000..91abb205 --- /dev/null +++ b/docs/integrations/sidebar.ts @@ -0,0 +1,28 @@ +export default { + type: "category", + label: "Integrations", + collapsible: false, + collapsed: false, + items: [ + { + type: "doc", + id: "index", + label: "Introduction", + }, + { + type: "doc", + id: "livekit", + label: "LiveKit", + }, + { + type: "doc", + id: "pipecat", + label: "Pipecat", + }, + { + type: "doc", + id: "vapi", + label: "Vapi", + }, + ], +} as const; \ No newline at end of file From 00488f4be6902ef57c245956a920d7a6a7af0dbe Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 17:06:39 +0000 Subject: [PATCH 005/114] Main sidebar - integrations added --- sidebars.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sidebars.ts b/sidebars.ts index bb37156a..ea405110 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -4,6 +4,7 @@ import gettingStartedSidebar from "./docs/get-started/sidebar"; import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; +import integrationsSidebar from "./docs/integrations/sidebar"; export default { docs: [ @@ -12,6 +13,7 @@ export default { textToSpeechSidebar, voiceAgentsFlowSidebar, deploymentsSidebar, + integrationsSidebar, { type: "category", label: "Developer Resources", From 1c6f428a92fea5f62cf4749c7266bc06213af9ae Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 17:17:52 +0000 Subject: [PATCH 006/114] sidebar fix?? --- docs/integrations/sidebar.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 91abb205..f1de266b 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -6,22 +6,22 @@ export default { items: [ { type: "doc", - id: "index", + id: "integrations/index", label: "Introduction", }, { type: "doc", - id: "livekit", + id: "integrations/livekit", label: "LiveKit", }, { type: "doc", - id: "pipecat", + id: "integrations/pipecat", label: "Pipecat", }, { type: "doc", - id: "vapi", + id: "integrations/vapi", label: "Vapi", }, ], From c1bb590d39d0f58aa31e67bda40a22b96ab9683d Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 27 Nov 2025 15:51:25 +0000 Subject: [PATCH 007/114] Update readme and contributing files (#163) Highlights Node.js as a requirement, instructs how contributors can fork & create a PR. --- CONTRIBUTING.md | 26 ++++++++++++++++++++++++-- README.md | 6 ++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c1b911f..18506d22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,14 +2,36 @@ We welcome contributions to the docs. Please file an issue, or open a PR if you find something that needs to be fixed or improved. -## For Speechmatics employees +## Speechmatics org. members Open a pull request to the `main` branch. The CI pipeline will build and deploy the docs to Vercel. -## For external contributors +## Other contributors Fork this repository, and open a PR against the `main` branch. Note that this will *not* create a preview link. +### Forking + +1. Navigate to the repository on GitHub +2. Click the "Fork" button in the top right corner of the repository page +3. Confirm your fork - this will be your own copy of the repository in your github account +4. Clone your fork to your local machine +5. Add the upstream repository as a remote to your local repository, and fetch upstream changes +6. Create a new branch +7. Make your changes and git push to your fork +8. Open a PR against the `main` branch + +### Creating a PR + +1. Navigate to the repository on GitHub +2. Click the "New pull request" button in the top right corner of the repository page +3. Select the `main` branch as the base branch and your fork as the compare branch +4. Fill in the PR title and description +5. Click "Create pull request" +6. Wait for the CI pipeline to run +7. If the CI pipeline fails, fix the issues and push to your fork +8. If the CI pipeline passes, the PR will be reviewed, and merged into the `main` branch if approved. + ## Style guide Please refer to the [style guide](https://github.com/speechmatics/docs/blob/main/.windsurf/rules/docs-style-guide.md) for information on writing standards, style and tone of voice. If you're using Windsurf, these rules should be taken into account automatically. diff --git a/README.md b/README.md index 0cca68c1..9bce092b 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,18 @@ This website is built using [Docusaurus](https://docusaurus.io/), a modern stati We welcome contributions to the docs! Please see `CONTRIBUTING.md` for information on contributions and style. -## For Speechmatics employees +## Speechmatics org. members Open a pull request to the `main` branch. The CI pipeline will build and deploy the docs to Vercel. -## For external contributors +## Other contributors Fork this repository, and open a PR against the `main` branch. Note that this will *not* create a preview link. ## Project overview +For UI development, you will need [Node.js](https://nodejs.org/en/download/) to be installed. + ### Installation ``` From 2a5df493fca6eb8fd801ff6721f7bada546fdb78 Mon Sep 17 00:00:00 2001 From: smvenkateshc <88679930+smvenkateshc@users.noreply.github.com> Date: Thu, 27 Nov 2025 18:39:31 +0000 Subject: [PATCH 008/114] Update medical domain languages availability in prod and preview (#164) Co-authored-by: Yahia <42359972+yaiir-a@users.noreply.github.com> --- docs/speech-to-text/languages.mdx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/speech-to-text/languages.mdx b/docs/speech-to-text/languages.mdx index c3cbd0db..0f1b496a 100644 --- a/docs/speech-to-text/languages.mdx +++ b/docs/speech-to-text/languages.mdx @@ -210,10 +210,12 @@ Medical domain example: |Language| Real-time | Batch| |----------------|--|-| +|Danish| [Public preview](../private/preview-mode.mdx) | [Limited preview](https://www.speechmatics.com/speak-to-sales) | +|Dutch| Available | Available | |English| Available | Available | -|Dutch| [Public preview](../private/preview-mode.mdx) | Available | -|Finnish| [Public preview](../private/preview-mode.mdx) | Available | -|French| [Public preview](../private/preview-mode.mdx) | Available | -|German| [Public preview](../private/preview-mode.mdx) | Available | -|Spanish| [Public preview](../private/preview-mode.mdx) | Available | +|Finnish| Available | Available | +|French| Available | Available | +|German| Available | Available | +|Norwegian| [Public preview](../private/preview-mode.mdx) | [Limited preview](https://www.speechmatics.com/speak-to-sales) | +|Spanish| Available | Available | |Additional languages| [Contact us for more information](https://www.speechmatics.com/speak-to-sales)| From c35e6d5543d58f22b62e5fd3ec03ed5a4b7bfe77 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 12:17:54 +0000 Subject: [PATCH 009/114] Overview page added --- docs/integrations/overview.mdx | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/integrations/overview.mdx diff --git a/docs/integrations/overview.mdx b/docs/integrations/overview.mdx new file mode 100644 index 00000000..7fa5529c --- /dev/null +++ b/docs/integrations/overview.mdx @@ -0,0 +1,35 @@ +--- +id: overview +description: Learn how to integrate Speechmatics STT with voice AI applications. +--- +# Speechmatics Integrations + +Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. By ensuring the "ears" of your AI are industry-leading, you solve the most common failure point in voice bots: misunderstanding the user. + +Speechmatics STT + +## Why Choose Speechmatics STT for your Voice AI Integrations? + +Speechmatics is widely regarded as the "Gold Standard" for real-world speech recognition because it is engineered for the messiness of actual human conversation, not just sterile lab conditions. + +### Unmatched Accuracy +Speechmatics is the most accurate real-time speech-to-text engine, delivering final transcripts in under one second without compromising accuracy. This balance of speed and precision is critical for voice agents that need to respond naturally to users while keeping the conversation flow intact. + +### Noise Robustness using VAD +Speechmatics STT uses VAD (Voice Activity Detection) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. + +### Global Accent & Dialect Support +With a single language pack (e.g., Global English), Speechmatics STT understands diverse accents without needing regional configuration. It supports 50+ languages globally. + +### Low Latency for Real-Time Transcription +Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. + +### Contextual Precision +Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. + +## Integration Options + +Speechmatics STT can be integrated into voice AI applications on a variety of platforms, including: + - LiveKit + - Pipecat + - Vapi From 3202dd8d43ee43af55793f2b2663a22f7fd32293 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 12:20:23 +0000 Subject: [PATCH 010/114] feat: add overview page and update integration docs --- docs/integrations/vapi.mdx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 docs/integrations/vapi.mdx diff --git a/docs/integrations/vapi.mdx b/docs/integrations/vapi.mdx new file mode 100644 index 00000000..b9fc5c97 --- /dev/null +++ b/docs/integrations/vapi.mdx @@ -0,0 +1,14 @@ +--- +id: vapi +description: Learn how to integrate Speechmatics STT with Pipecat. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Vapi + +Vapi is the developer platform for building voice AI agents. +With \ No newline at end of file From 2924667813809a1c963c08136577eb4be75cca88 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 12:43:02 +0000 Subject: [PATCH 011/114] integrations sidebar config update --- docs/integrations/sidebar.ts | 82 ++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index f1de266b..40408246 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -1,28 +1,54 @@ -export default { - type: "category", - label: "Integrations", - collapsible: false, - collapsed: false, - items: [ - { - type: "doc", - id: "integrations/index", - label: "Introduction", - }, - { - type: "doc", - id: "integrations/livekit", - label: "LiveKit", - }, - { - type: "doc", - id: "integrations/pipecat", - label: "Pipecat", - }, - { - type: "doc", - id: "integrations/vapi", - label: "Vapi", - }, - ], -} as const; \ No newline at end of file +export default [ + { + type: "category", + collapsible: false, + collapsed: false, + label: "Overview", + items: [ + { + type: "doc", + id: "integrations/overview", + label: "Overview", + }, + ], + }, + { + type: "category", + collapsible: false, + collapsed: false, + label: "LiveKit", + items: [ + { + type: "doc", + id: "integrations/livekit", + label: "LiveKit", + }, + ], + }, + { + type: "category", + collapsible: false, + collapsed: false, + label: "Pipecat", + items: [ + { + type: "doc", + id: "integrations/pipecat", + label: "Pipecat", + }, + ], + }, + { + type: "category", + collapsible: false, + collapsed: false, + label: "Vapi", + items: [ + { + type: "doc", + id: "integrations/vapi", + label: "Vapi", + }, + ], + }, +] as const; \ No newline at end of file From d091f1662255e44c842f95e30d845625a5bd9153 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 12:53:23 +0000 Subject: [PATCH 012/114] hopeful fix#1 --- docs/integrations/sidebar.ts | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 40408246..e400b34b 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -1,54 +1,30 @@ export default [ { type: "category", + label: "Integrations", collapsible: false, collapsed: false, - label: "Overview", items: [ { type: "doc", id: "integrations/overview", label: "Overview", }, - ], - }, - { - type: "category", - collapsible: false, - collapsed: false, - label: "LiveKit", - items: [ { type: "doc", id: "integrations/livekit", label: "LiveKit", }, - ], - }, - { - type: "category", - collapsible: false, - collapsed: false, - label: "Pipecat", - items: [ { type: "doc", id: "integrations/pipecat", label: "Pipecat", }, - ], - }, - { - type: "category", - collapsible: false, - collapsed: false, - label: "Vapi", - items: [ { type: "doc", id: "integrations/vapi", label: "Vapi", - }, + } ], }, ] as const; \ No newline at end of file From 22d4ad5f9c46cc49d52b5b62da95fdd1a19ebd5e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 13:42:14 +0000 Subject: [PATCH 013/114] livekit intro --- docs/integrations/livekit.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations/livekit.mdx b/docs/integrations/livekit.mdx index a0dc1833..acbdd396 100644 --- a/docs/integrations/livekit.mdx +++ b/docs/integrations/livekit.mdx @@ -1,4 +1,5 @@ --- +id: livekit description: Learn how to integrate Speechmatics STT with LiveKit Agents. --- From cd4f190153b98272b9e8387e848d27e9d9872020 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 14:12:08 +0000 Subject: [PATCH 014/114] vapi description error correction --- docs/integrations/vapi.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/vapi.mdx b/docs/integrations/vapi.mdx index b9fc5c97..16988ee6 100644 --- a/docs/integrations/vapi.mdx +++ b/docs/integrations/vapi.mdx @@ -1,6 +1,6 @@ --- id: vapi -description: Learn how to integrate Speechmatics STT with Pipecat. +description: Learn how to integrate Speechmatics STT with Vapi. --- import Admonition from '@theme/Admonition'; @@ -11,4 +11,4 @@ import TabItem from '@theme/TabItem'; # Vapi Vapi is the developer platform for building voice AI agents. -With \ No newline at end of file +With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your Vapi applications. \ No newline at end of file From 2ce9772f42376556321dd16ebbebfac41cffbaa0 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 14:15:54 +0000 Subject: [PATCH 015/114] fmt fix --- docs/integrations/pipecat.mdx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/integrations/pipecat.mdx b/docs/integrations/pipecat.mdx index c9f181c9..cbe523bf 100644 --- a/docs/integrations/pipecat.mdx +++ b/docs/integrations/pipecat.mdx @@ -1,4 +1,5 @@ --- +id: pipecat description: Learn how to integrate Speechmatics STT with Pipecat. --- @@ -14,9 +15,9 @@ Pipecat is an open-source framework for building real-time voice and multimodal SpeechmaticsSTTService enables real-time speech transcription using Speechmatics’ WebSocket API with partial and final results, speaker diarization, and end of utterance detection (VAD) for comprehensive conversation analysis. When integrated with Pipecat, you can build real-time voice and multimodal conversational agents specifically tailored to your use case. -# Quickstart +## Quickstart -## Use cases +### Use cases Pipecat is perfect for: From 0bfb15848064783318613192feec035e27f9b391 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 14:58:13 +0000 Subject: [PATCH 016/114] feat: add LiveKit int intro --- docs/integrations/livekit/livekit.mdx | 66 +++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/integrations/livekit/livekit.mdx diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations/livekit/livekit.mdx new file mode 100644 index 00000000..acbdd396 --- /dev/null +++ b/docs/integrations/livekit/livekit.mdx @@ -0,0 +1,66 @@ +--- +id: livekit +description: Learn how to integrate Speechmatics STT with LiveKit Agents. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# LiveKit + +LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. +With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your LiveKit applications. + +## Use cases + +LiveKit is perfect for: + +- **Voice AI**: Voice assistants, chatbots, and IVR systems +- **Translation**: Real-time transcription of live events or recordings +- **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets +- **Media production**: News broadcasts, automated announcements + +## Quickstart + +### Requirements + +- Python 3.9 or higher +- Speechmatics Account + +### Installation + +Install SpeechmaticsSTT from PyPl: + +```bash +uv add "livekit-plugins-speechmatics" +``` +or + +```bash +pip install livekit-plugins-speechmatics +``` + +### Authentication + +The SpeechmaticsSTT requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +Set SPEECHMATICS_API_KEY in your .env file. + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +from livekit.agents import AgentSession +from livekit.plugins import speechmatics +from livekit.agents import turn_detector + +agent = AgentSession( + stt=speechmatics.STT(), + turn_detector=turn_detector.EOUModel(), + min_endpointing=0.5, + max_endpointing=5.0, +) From e183f19b8fc6adac78f05ad106f791e47649e994 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 14:58:48 +0000 Subject: [PATCH 017/114] add livekit-speechmatics stt plugin guide --- .../livekit/speechmatics-stt-plugin-guide.mdx | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx diff --git a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx new file mode 100644 index 00000000..3c68009c --- /dev/null +++ b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx @@ -0,0 +1,68 @@ +--- +id: livekit +description: How to use the Speechmatics STT plugin for LiveKit Agents. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Speechmatics STT plugin for LiveKit Agents + +The Speechmatics STT plugin for LiveKit Agents enables real-time speech transcription using Speechmatics as your STT provider for your voice agent. +With different configurations, you are able to tailor your application to your specific needs, whilst ensuring accurate, reliable and speedy results. + +## Features +Using Speechmatics STT you can: +- Obtain partial and final results, +- Incorporate speaker diarization, +- Turn detection (end of utterance detection) +- Noise robustness using VAD +- Global accent & dialect support +- Low latency for real-time transcription +- Contextual precision + +## Quickstart + +This section includes a basic example and some reference material. +For more detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). + +### Requirements + +- LiveKit >= 1.2 +- Speechmatics Account + +### Installation + +Install the plugin from PyPI: + +```python +uv add "livekit-agents[speechmatics]~=1.2" +``` + +### Authentication + +The SpeechmaticsSTTService requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +Set the environment variable `SPEECHMATICS_API_KEY` in your .env file. + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +Use the Speechmatics STT in an AgentSession or as a standalone transcription service. + +```python +from livekit.plugins import speechmatics + +session = AgentSession( + stt = speechmatics.STT(), + # ... llm, tts, etc. +) + +session.run() +``` + From 87c51299e9e0930ea2f783aa7b6d45d0cedece3c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 14:59:18 +0000 Subject: [PATCH 018/114] add livekit sidebar --- docs/integrations/livekit/sidebar.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 docs/integrations/livekit/sidebar.ts diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts new file mode 100644 index 00000000..76b1e008 --- /dev/null +++ b/docs/integrations/livekit/sidebar.ts @@ -0,0 +1,12 @@ +export default { + type: "category", + label: "LiveKit", + collapsible: true, + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "integrations/livekit", + }, + ], +}; From e3ad1fdbbf874461b7e60f202afd0adb384f3160 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:24:12 +0000 Subject: [PATCH 019/114] another sidebar + dropdown test --- docs/integrations/sidebar.ts | 53 +++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index e400b34b..ccc8b414 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -11,20 +11,59 @@ export default [ label: "Overview", }, { - type: "doc", - id: "integrations/livekit", + type: "category", label: "LiveKit", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations/livekit", + label: "Overview", + }, + { + type: "doc", + id: "integrations/livekit/speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", + } + ] }, { - type: "doc", - id: "integrations/pipecat", + type: "category", label: "Pipecat", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations/pipecat", + label: "Overview", + }, + { + type: "doc", + id: "integrations/pipecat/speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", + } + ] }, { - type: "doc", - id: "integrations/vapi", + type: "category", label: "Vapi", - } + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations/vapi", + label: "Overview", + }, + { + type: "doc", + id: "integrations/vapi/speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", + } + ] + }, ], }, ] as const; \ No newline at end of file From 8132920b896268770e7775df7aaf17fc441011b3 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:29:44 +0000 Subject: [PATCH 020/114] another try --- docs/integrations/sidebar.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index ccc8b414..cbffadab 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -7,7 +7,7 @@ export default [ items: [ { type: "doc", - id: "integrations/overview", + id: "integrations/index", label: "Overview", }, { @@ -19,7 +19,7 @@ export default [ { type: "doc", id: "integrations/livekit", - label: "Overview", + label: "LiveKit", }, { type: "doc", @@ -37,7 +37,7 @@ export default [ { type: "doc", id: "integrations/pipecat", - label: "Overview", + label: "Pipecat", }, { type: "doc", @@ -55,7 +55,7 @@ export default [ { type: "doc", id: "integrations/vapi", - label: "Overview", + label: "Vapi", }, { type: "doc", From 9dfad28515225a991fc28c8f0f6cc85bc45d2d9c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:33:07 +0000 Subject: [PATCH 021/114] and again --- docs/integrations/sidebar.ts | 43 +++++------------------------------- 1 file changed, 6 insertions(+), 37 deletions(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index cbffadab..fe258afa 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -7,7 +7,7 @@ export default [ items: [ { type: "doc", - id: "integrations/index", + id: "integrations/overview", label: "Overview", }, { @@ -20,50 +20,19 @@ export default [ type: "doc", id: "integrations/livekit", label: "LiveKit", - }, - { - type: "doc", - id: "integrations/livekit/speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", } ] }, { - type: "category", + type: "doc", + id: "integrations/pipecat", label: "Pipecat", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations/pipecat", - label: "Pipecat", - }, - { - type: "doc", - id: "integrations/pipecat/speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", - } - ] }, { - type: "category", + type: "doc", + id: "integrations/vapi", label: "Vapi", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations/vapi", - label: "Vapi", - }, - { - type: "doc", - id: "integrations/vapi/speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", - } - ] - }, + } ], }, ] as const; \ No newline at end of file From dde5fd0781584594b19e2e3ae6d22a6e0bb99ca4 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:38:44 +0000 Subject: [PATCH 022/114] stt-plugin livekit guide page --- docs/integrations/sidebar.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index fe258afa..4b3a2c0f 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -20,6 +20,11 @@ export default [ type: "doc", id: "integrations/livekit", label: "LiveKit", + }, + { + type: "doc", + id: "integrations/livekit/speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", } ] }, From 2cd72542baeaba1edc431ddfbbb04ba1bc12c831 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:48:26 +0000 Subject: [PATCH 023/114] sb-int fix --- docs/integrations/sidebar.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 4b3a2c0f..05d87b51 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -18,7 +18,7 @@ export default [ items: [ { type: "doc", - id: "integrations/livekit", + id: "integrations/livekit/livekit", // Note the full path label: "LiveKit", }, { From 0eb349ac1a49b465247bf8ef39ba908cff436751 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:51:23 +0000 Subject: [PATCH 024/114] doc id update --- docs/integrations/livekit/sidebar.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index 76b1e008..e7b7e06c 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -8,5 +8,15 @@ export default { type: "autogenerated", dirName: "integrations/livekit", }, + { + type: "doc", + id: "integrations/livekit/speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", + }, + { + type: "doc", + id: "integrations/livekit/livekit", + label: "LiveKit", + } ], }; From ca2fd20f93e230259a68edd6438775ccf581073a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 15:57:14 +0000 Subject: [PATCH 025/114] LK poss sidebar --- docs/integrations/livekit/sidebar.ts | 2 +- docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index e7b7e06c..3dd65e62 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -19,4 +19,4 @@ export default { label: "LiveKit", } ], -}; +} as const; diff --git a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx index 3c68009c..3303fd5b 100644 --- a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx +++ b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx @@ -1,5 +1,5 @@ --- -id: livekit +id: integrations/livekit/speechmatics-stt-plugin-guide description: How to use the Speechmatics STT plugin for LiveKit Agents. --- From 1ec9bfca85d01d5eee979d119988cedc1d74c0e4 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:19:18 +0000 Subject: [PATCH 026/114] 1st Draft Docs for all 3 integrations of stt --- docs/integrations/{overview.mdx => index.mdx} | 0 docs/integrations/livekit.mdx | 66 - docs/integrations/livekit/livekit.mdx | 53 +- docs/integrations/livekit/sidebar.ts | 14 +- .../livekit/speechmatics-stt-plugin-guide.mdx | 33 +- .../pipecat-speechmatics-stt-plugin-guide.mdx | 65 + docs/integrations/{ => pipecat}/pipecat.mdx | 26 +- docs/integrations/pipecat/sidebar.ts | 18 + docs/integrations/sidebar.ts | 67 +- docs/integrations/vapi.mdx | 14 - docs/integrations/vapi/vapi.mdx | 50 + package-lock.json | 2654 ++++++++++------- package.json | 12 +- 13 files changed, 1831 insertions(+), 1241 deletions(-) rename docs/integrations/{overview.mdx => index.mdx} (100%) delete mode 100644 docs/integrations/livekit.mdx create mode 100644 docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx rename docs/integrations/{ => pipecat}/pipecat.mdx (75%) create mode 100644 docs/integrations/pipecat/sidebar.ts delete mode 100644 docs/integrations/vapi.mdx create mode 100644 docs/integrations/vapi/vapi.mdx diff --git a/docs/integrations/overview.mdx b/docs/integrations/index.mdx similarity index 100% rename from docs/integrations/overview.mdx rename to docs/integrations/index.mdx diff --git a/docs/integrations/livekit.mdx b/docs/integrations/livekit.mdx deleted file mode 100644 index acbdd396..00000000 --- a/docs/integrations/livekit.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: livekit -description: Learn how to integrate Speechmatics STT with LiveKit Agents. ---- - -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# LiveKit - -LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. -With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your LiveKit applications. - -## Use cases - -LiveKit is perfect for: - -- **Voice AI**: Voice assistants, chatbots, and IVR systems -- **Translation**: Real-time transcription of live events or recordings -- **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets -- **Media production**: News broadcasts, automated announcements - -## Quickstart - -### Requirements - -- Python 3.9 or higher -- Speechmatics Account - -### Installation - -Install SpeechmaticsSTT from PyPl: - -```bash -uv add "livekit-plugins-speechmatics" -``` -or - -```bash -pip install livekit-plugins-speechmatics -``` - -### Authentication - -The SpeechmaticsSTT requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). -Set SPEECHMATICS_API_KEY in your .env file. - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` - -### Usage - -from livekit.agents import AgentSession -from livekit.plugins import speechmatics -from livekit.agents import turn_detector - -agent = AgentSession( - stt=speechmatics.STT(), - turn_detector=turn_detector.EOUModel(), - min_endpointing=0.5, - max_endpointing=5.0, -) diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations/livekit/livekit.mdx index acbdd396..b8b2e7ed 100644 --- a/docs/integrations/livekit/livekit.mdx +++ b/docs/integrations/livekit/livekit.mdx @@ -11,7 +11,8 @@ import TabItem from '@theme/TabItem'; # LiveKit LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. -With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your LiveKit applications. +The Speechmatics STT plugin for LiveKit Agents enables real-time speech transcription using Speechmatics as your STT provider for your voice agent. +With different configurations, you are able to tailor your application to your specific needs, whilst ensuring accurate, reliable and speedy results. ## Use cases @@ -22,45 +23,13 @@ LiveKit is perfect for: - **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets - **Media production**: News broadcasts, automated announcements -## Quickstart +## Features -### Requirements - -- Python 3.9 or higher -- Speechmatics Account - -### Installation - -Install SpeechmaticsSTT from PyPl: - -```bash -uv add "livekit-plugins-speechmatics" -``` -or - -```bash -pip install livekit-plugins-speechmatics -``` - -### Authentication - -The SpeechmaticsSTT requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). -Set SPEECHMATICS_API_KEY in your .env file. - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` - -### Usage - -from livekit.agents import AgentSession -from livekit.plugins import speechmatics -from livekit.agents import turn_detector - -agent = AgentSession( - stt=speechmatics.STT(), - turn_detector=turn_detector.EOUModel(), - min_endpointing=0.5, - max_endpointing=5.0, -) +Using Speechmatics STT you can: +- Obtain partial and final results, +- Incorporate speaker diarization, +- Turn detection (end of utterance detection) +- Noise robustness using VAD +- Global accent & dialect support +- Low latency for real-time transcription +- Contextual precision diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index 3dd65e62..2e9f9855 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -4,19 +4,15 @@ export default { collapsible: true, collapsed: true, items: [ - { - type: "autogenerated", - dirName: "integrations/livekit", - }, { type: "doc", - id: "integrations/livekit/speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", + id: "integrations/livekit/livekit", + label: "Overview", }, { type: "doc", - id: "integrations/livekit/livekit", - label: "LiveKit", + id: "integrations/livekit/livekit-speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", } ], -} as const; +} as const; \ No newline at end of file diff --git a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx index 3303fd5b..fd8f022b 100644 --- a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx +++ b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx @@ -5,7 +5,7 @@ description: How to use the Speechmatics STT plugin for LiveKit Agents. import Admonition from '@theme/Admonition'; import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; +import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Speechmatics STT plugin for LiveKit Agents @@ -56,13 +56,30 @@ export SPEECHMATICS_API_KEY=your_api_key Use the Speechmatics STT in an AgentSession or as a standalone transcription service. ```python +import os +from dotenv import load_dotenv +from livekit.agents import AgentSession, cli from livekit.plugins import speechmatics -session = AgentSession( - stt = speechmatics.STT(), - # ... llm, tts, etc. -) - -session.run() +# Load API keys from .env file +load_dotenv() + +# Initialize the agent with Speechmatics STT +async def run_agent(room): + session = AgentSession( + stt=speechmatics.STT( + enable_diarization=True, + end_of_utterance_silence_trigger=0.3 + ) + ) + + # Process incoming audio + @session.on("transcription_received") + async def on_transcription(event): + print(f"Speaker {event.speaker}: {event.text}") + + await session.start(room) + +if __name__ == "__main__": + cli.run_app(run_agent) ``` - diff --git a/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx b/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx new file mode 100644 index 00000000..ba8a8a4c --- /dev/null +++ b/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx @@ -0,0 +1,65 @@ +--- +id: integrations/pipecat/pipecat-speechmatics-stt-plugin-guide +description: How to integrate Speechmatics STT with Pipecat for real-time speech transcription. +--- + +## Getting started + +### Requirements +- Python 3.10 or later +- uv package manager installed +- Pipecat >= 1.2 +- Speechmatics Account (https://portal.speechmatics.com) + +### Installation + +Install the SpeechmaticsSTTService from PyPl: + +```bash +pip install "pipecat-ai[speechmatics]" +``` + +### Authentication + +The SpeechmaticsSTTService requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). + +### Required environment variable: + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +```python +import os +import asyncio +from pipecat.services.speechmatics import SpeechmaticsSTTService +from pipecat.language_configs.language import Language + +async def main(): + # Initialize Speechmatics STT + stt = SpeechmaticsSTTService( + api_key=os.getenv("SPEECHMATICS_API_KEY"), + params=SpeechmaticsSTTService.InputParams( + language=Language.EN, + enable_diarization=True + ) + ) + + # Example audio processing + async def process_audio(): + # In a real app, this would be your audio stream + # For demo, we'll simulate a simple audio source + audio_chunks = [b"fake_audio_chunk_1", b"fake_audio_chunk_2"] + + async for transcript in stt.transcribe(audio_chunks): + speaker = f"Speaker {transcript.speaker}" if transcript.speaker else "Unknown" + print(f"{speaker}: {transcript.text}") + + await process_audio() + +if __name__ == "__main__": + asyncio.run(main()) +``` diff --git a/docs/integrations/pipecat.mdx b/docs/integrations/pipecat/pipecat.mdx similarity index 75% rename from docs/integrations/pipecat.mdx rename to docs/integrations/pipecat/pipecat.mdx index cbe523bf..c0e19d32 100644 --- a/docs/integrations/pipecat.mdx +++ b/docs/integrations/pipecat/pipecat.mdx @@ -27,32 +27,8 @@ Pipecat is perfect for: - **Content creation**: Podcasts, dubbing, audiobooks, and voice-overs - **Media production**: News broadcasts and automated announcements -## Getting started - -### Requirements - -- Pipecat >= 1.2 -- Speechmatics Account - -### Installation - -Install the SpeechmaticsSTTService from PyPl: - -```bash -pip install "pipecat-ai[speechmatics]" - -### Authentication - -The SpeechmaticsSTTService requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). - -### Required environment variable: - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` - ## Further reading [Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) + [SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts new file mode 100644 index 00000000..334a1d1f --- /dev/null +++ b/docs/integrations/pipecat/sidebar.ts @@ -0,0 +1,18 @@ +export default { + type: "category", + label: "Pipecat", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations/pipecat/pipecat", + label: "Overview", + }, + { + type: "doc", + id: "integrations/pipecat/pipecat-speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", + } + ], +} as const; \ No newline at end of file diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 05d87b51..0307c96c 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -1,43 +1,26 @@ -export default [ - { - type: "category", - label: "Integrations", - collapsible: false, - collapsed: false, - items: [ - { - type: "doc", - id: "integrations/overview", - label: "Overview", - }, - { - type: "category", - label: "LiveKit", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations/livekit/livekit", // Note the full path - label: "LiveKit", - }, - { - type: "doc", - id: "integrations/livekit/speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", - } - ] - }, - { - type: "doc", - id: "integrations/pipecat", - label: "Pipecat", - }, - { - type: "doc", - id: "integrations/vapi", - label: "Vapi", - } - ], +import livekitSidebar from "./livekit/sidebar"; +import pipecatSidebar from "./pipecat/sidebar"; + +export default { + type: "category", + label: "Integrations", + collapsible: false, + collapsed: false, + link: { + type: "generated-index", }, -] as const; \ No newline at end of file + items: [ + { + type: "doc", + label: "Overview", + id: "integrations/overview", + }, + { + type: "doc", + label: "Vapi", + id: "integrations/vapi/vapi", + }, + livekitSidebar, + pipecatSidebar, + ], +} as const; \ No newline at end of file diff --git a/docs/integrations/vapi.mdx b/docs/integrations/vapi.mdx deleted file mode 100644 index 16988ee6..00000000 --- a/docs/integrations/vapi.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -id: vapi -description: Learn how to integrate Speechmatics STT with Vapi. ---- - -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Vapi - -Vapi is the developer platform for building voice AI agents. -With Speechmatics STT integration, you can add accurate and reliable, real-time speech transcriptions to your Vapi applications. \ No newline at end of file diff --git a/docs/integrations/vapi/vapi.mdx b/docs/integrations/vapi/vapi.mdx new file mode 100644 index 00000000..e7f95ad4 --- /dev/null +++ b/docs/integrations/vapi/vapi.mdx @@ -0,0 +1,50 @@ +--- +id: vapi +description: Learn how to integrate Speechmatics STT with Vapi. +--- + +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Vapi + +Vapi is the developer platform for building voice AI agents. +Vapi offers native integration with Speechmatics for real-time, highly accurate Speech-to-Text (STT) capabilities in AI voice agents. This integration is designed to handle real-world conversation complexities like background noise, diverse accents, and multiple speakers. + +## Key Features + +### Native Availability: +Speechmatics is a natively available transcriber option within the Vapi platform, simplifying the setup process for developers. + +### High Accuracy & Low Latency: +The integration provides an accurate and low-latency input layer, crucial for natural, real-time conversations with AI agents. + +### Speaker Diarization: +Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. + +### Flexible Deployment: +The integration is available in the cloud via Vapi's managed SaaS, and Speechmatics also offers private cloud or on-premise deployment options for data privacy-sensitive use cases. + + +## Quickstart + +### Requirements +- Vapi >= 1.2 +- Speechmatics Account (https://portal.speechmatics.com) + +### UI Integration + +The Vapi UI provides a simple way to integrate Speechmatics STT into your voice AI agent. + +1. Navigate to Assistants: In the Vapi dashboard, go to the Assistants tab. +2. Select or Create an Assistant: Choose an existing voice assistant or create a new one. +3. Open Transcriber Settings: Access the Transcriber tab or scroll down to the Transcriber module settings. +4. Select Speechmatics: In the Provider dropdown menu, select Speechmatics. + +### Best Practices + +Operating Point – Select the Enhanced model for the best accuracy in real-time voice agents. +Region – Choose the region closest to your users to optimize latency. +Custom Vocabulary – Use this feature to add key terms (e.g., product names) and leverage the Sounds Like option for tricky pronunciations. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a7daef04..64144524 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,9 @@ "name": "speechmatics-docs", "version": "0.0.0", "dependencies": { - "@docusaurus/core": "^3.8.1", - "@docusaurus/preset-classic": "^3.8.1", - "@docusaurus/theme-mermaid": "^3.8.1", + "@docusaurus/core": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", "@mdx-js/react": "^3.0.0", "@radix-ui/themes": "^3.2.1", "@signalwire/docusaurus-plugin-llms-txt": "^1.2.1", @@ -31,9 +31,9 @@ "devDependencies": { "@asyncapi/parser": "^3.4.0", "@biomejs/biome": "^1.9.4", - "@docusaurus/module-type-aliases": "^3.8.1", - "@docusaurus/tsconfig": "^3.8.1", - "@docusaurus/types": "^3.8.1", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/tsconfig": "^3.9.2", + "@docusaurus/types": "^3.9.2", "@types/mixpanel-browser": "^2.60.0", "cspell": "^8.17.3", "dotenv": "^17.2.0", @@ -49,45 +49,117 @@ "node": ">=18.0" } }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", - "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", - "license": "MIT", + "node_modules/@ai-sdk/gateway": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.17.tgz", + "integrity": "sha512-oVAG6q72KsjKlrYdLhWjRO7rcqAR8CjokAbYuyVZoCO4Uh2PH/VzZoxZav71w2ipwlXhHCNaInGYWNs889MMDA==", + "license": "Apache-2.0", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", - "@algolia/autocomplete-shared": "1.17.9" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.18", + "@vercel/oidc": "3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" } }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", - "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", - "license": "MIT", + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.18.tgz", + "integrity": "sha512-ypv1xXMsgGcNKUP+hglKqtdDuMg68nWHucPPAhIENrbFAI+xCHiqPVN8Zllxyv1TNZwGWUghPxJXU+Mqps0YRQ==", + "license": "Apache-2.0", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "search-insights": ">= 1 < 3" + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "2.0.104", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.104.tgz", + "integrity": "sha512-vpRNUwOrHXSsywZuEge78/LPbYMR/3tkBnwijGpIGnORMa/SzYhuVsE+sZBFVo/v0m5K/tg+CXNNvuJrVZ/MBQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "3.0.18", + "ai": "5.0.104", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.25.76 || ^4.1.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.11.0.tgz", + "integrity": "sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" } }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", - "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@algolia/autocomplete-shared": "1.19.2" }, "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" + "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", - "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -95,99 +167,99 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.29.0.tgz", - "integrity": "sha512-AM/6LYMSTnZvAT5IarLEKjYWOdV+Fb+LVs8JRq88jn8HH6bpVUtjWdOZXqX1hJRXuCAY8SdQfb7F8uEiMNXdYQ==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.45.0.tgz", + "integrity": "sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.29.0.tgz", - "integrity": "sha512-La34HJh90l0waw3wl5zETO8TuukeUyjcXhmjYZL3CAPLggmKv74mobiGRIb+mmBENybiFDXf/BeKFLhuDYWMMQ==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.45.0.tgz", + "integrity": "sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.29.0.tgz", - "integrity": "sha512-T0lzJH/JiCxQYtCcnWy7Jf1w/qjGDXTi2npyF9B9UsTvXB97GRC6icyfXxe21mhYvhQcaB1EQ/J2575FXxi2rA==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.45.0.tgz", + "integrity": "sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.29.0.tgz", - "integrity": "sha512-A39F1zmHY9aev0z4Rt3fTLcGN5AG1VsVUkVWy6yQG5BRDScktH+U5m3zXwThwniBTDV1HrPgiGHZeWb67GkR2Q==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.45.0.tgz", + "integrity": "sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.29.0.tgz", - "integrity": "sha512-ibxmh2wKKrzu5du02gp8CLpRMeo+b/75e4ORct98CT7mIxuYFXowULwCd6cMMkz/R0LpKXIbTUl15UL5soaiUQ==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.45.0.tgz", + "integrity": "sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.29.0.tgz", - "integrity": "sha512-VZq4/AukOoJC2WSwF6J5sBtt+kImOoBwQc1nH3tgI+cxJBg7B77UsNC+jT6eP2dQCwGKBBRTmtPLUTDDnHpMgA==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.45.0.tgz", + "integrity": "sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.29.0.tgz", - "integrity": "sha512-cZ0Iq3OzFUPpgszzDr1G1aJV5UMIZ4VygJ2Az252q4Rdf5cQMhYEIKArWY/oUjMhQmosM8ygOovNq7gvA9CdCg==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.45.0.tgz", + "integrity": "sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" @@ -200,99 +272,86 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.29.0.tgz", - "integrity": "sha512-scBXn0wO5tZCxmO6evfa7A3bGryfyOI3aoXqSQBj5SRvNYXaUlFWQ/iKI70gRe/82ICwE0ICXbHT/wIvxOW7vw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.45.0.tgz", + "integrity": "sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.29.0.tgz", - "integrity": "sha512-FGWWG9jLFhsKB7YiDjM2dwQOYnWu//7Oxrb2vT96N7+s+hg1mdHHfHNRyEudWdxd4jkMhBjeqNA21VbTiOIPVg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.45.0.tgz", + "integrity": "sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.29.0.tgz", - "integrity": "sha512-xte5+mpdfEARAu61KXa4ewpjchoZuJlAlvQb8ptK6hgHlBHDnYooy1bmOFpokaAICrq/H9HpoqNUX71n+3249A==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.45.0.tgz", + "integrity": "sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "@algolia/client-common": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.29.0.tgz", - "integrity": "sha512-og+7Em75aPHhahEUScq2HQ3J7ULN63Levtd87BYMpn6Im5d5cNhaC4QAUsXu6LWqxRPgh4G+i+wIb6tVhDhg2A==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.45.0.tgz", + "integrity": "sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0" + "@algolia/client-common": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.29.0.tgz", - "integrity": "sha512-JCxapz7neAy8hT/nQpCvOrI5JO8VyQ1kPvBiaXWNC1prVq0UMYHEL52o1BsPvtXfdQ7BVq19OIq6TjOI06mV/w==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.45.0.tgz", + "integrity": "sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0" + "@algolia/client-common": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.29.0.tgz", - "integrity": "sha512-lVBD81RBW5VTdEYgnzCz7Pf9j2H44aymCP+/eHGJu4vhU+1O8aKf3TVBgbQr5UM6xoe8IkR/B112XY6YIG2vtg==", + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.45.0.tgz", + "integrity": "sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.29.0" + "@algolia/client-common": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@antfu/install-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", @@ -403,30 +462,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", - "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", - "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", + "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.4", - "@babel/parser": "^7.27.4", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.4", - "@babel/types": "^7.27.3", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -451,15 +510,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", - "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -504,17 +563,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "engines": { @@ -534,13 +593,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -560,29 +619,38 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", - "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -602,14 +670,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -696,9 +764,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -714,39 +782,39 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", - "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -756,13 +824,13 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -819,13 +887,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", - "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -950,14 +1018,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", - "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -999,9 +1067,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", - "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1030,12 +1098,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", - "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { @@ -1046,17 +1114,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", - "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1082,12 +1150,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz", - "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1158,10 +1227,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1252,9 +1337,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1314,15 +1399,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-module-transforms": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1409,15 +1494,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz", - "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.3", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1458,9 +1544,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1474,9 +1560,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", - "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1552,9 +1638,9 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", - "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1617,9 +1703,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", - "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1663,16 +1749,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", - "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "engines": { @@ -1768,13 +1854,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", - "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", + "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1" @@ -1850,63 +1936,64 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", - "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.27.1", "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.5", "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.27.1", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.4", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", @@ -1919,10 +2006,10 @@ "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "engines": { @@ -1956,14 +2043,14 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", "@babel/plugin-transform-react-jsx": "^7.27.1", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@babel/plugin-transform-react-pure-annotations": "^7.27.1" @@ -1976,16 +2063,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2004,12 +2091,12 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.6.tgz", - "integrity": "sha512-vDVrlmRAY8z9Ul/HxT+8ceAru95LQgkSKiXkSYZvqtbkPSfhZJgpRp45Cldbh1GJ1kxzQkI70AqyrTI58KpaWQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", "license": "MIT", "dependencies": { - "core-js-pure": "^3.30.2" + "core-js-pure": "^3.43.0" }, "engines": { "node": ">=6.9.0" @@ -2030,31 +2117,31 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", - "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.4", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2891,9 +2978,9 @@ } }, "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "funding": [ { "type": "github", @@ -2933,9 +3020,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", - "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "funding": [ { "type": "github", @@ -2948,7 +3035,7 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.0.2", + "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" }, "engines": { @@ -3023,10 +3110,39 @@ "@csstools/css-tokenizer": "^3.0.4" } }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-cascade-layers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz", - "integrity": "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", "funding": [ { "type": "github", @@ -3072,9 +3188,9 @@ } }, "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -3085,9 +3201,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.10.tgz", - "integrity": "sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", "funding": [ { "type": "github", @@ -3100,10 +3216,39 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3114,9 +3259,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.10.tgz", - "integrity": "sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", "funding": [ { "type": "github", @@ -3129,10 +3274,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3143,9 +3288,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.0.tgz", - "integrity": "sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "funding": [ { "type": "github", @@ -3158,10 +3303,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3172,9 +3317,9 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.6.tgz", - "integrity": "sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", "funding": [ { "type": "github", @@ -3189,7 +3334,36 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3253,9 +3427,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.10.tgz", - "integrity": "sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", "funding": [ { "type": "github", @@ -3268,7 +3442,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" }, @@ -3280,9 +3454,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.10.tgz", - "integrity": "sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "funding": [ { "type": "github", @@ -3295,10 +3469,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3309,9 +3483,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.10.tgz", - "integrity": "sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "funding": [ { "type": "github", @@ -3324,10 +3498,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3338,9 +3512,9 @@ } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.2.tgz", - "integrity": "sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "funding": [ { "type": "github", @@ -3353,7 +3527,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -3435,9 +3609,9 @@ } }, "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -3448,9 +3622,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.9.tgz", - "integrity": "sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "funding": [ { "type": "github", @@ -3465,7 +3639,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3699,9 +3873,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.10.tgz", - "integrity": "sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "funding": [ { "type": "github", @@ -3714,10 +3888,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3728,9 +3902,9 @@ } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.1.0.tgz", - "integrity": "sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "funding": [ { "type": "github", @@ -3780,9 +3954,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.10.tgz", - "integrity": "sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "funding": [ { "type": "github", @@ -3795,10 +3969,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3834,9 +4008,9 @@ } }, "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -3901,9 +4075,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz", - "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", "funding": [ { "type": "github", @@ -3916,7 +4090,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/color-helpers": "^5.0.2", + "@csstools/color-helpers": "^5.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -4006,22 +4180,48 @@ "node": ">=10.0.0" } }, + "node_modules/@docsearch/core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.3.1.tgz", + "integrity": "sha512-ktVbkePE+2h9RwqCUMbWXOoebFyDOxHqImAqfs+lC8yOU+XwEW4jgvHGJK079deTeHtdhUNj0PXHSnhJINvHzQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@docsearch/css": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", - "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.3.2.tgz", + "integrity": "sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==", "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", - "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.3.2.tgz", + "integrity": "sha512-74SFD6WluwvgsOPqifYOviEEVwDxslxfhakTlra+JviaNcs7KK/rjsPj89kVEoQc9FUxRkAofaJnHIR7pb4TSQ==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-core": "1.17.9", - "@algolia/autocomplete-preset-algolia": "1.17.9", - "@docsearch/css": "3.9.0", - "algoliasearch": "^5.14.2" + "@ai-sdk/react": "^2.0.30", + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/core": "4.3.1", + "@docsearch/css": "4.3.2", + "ai": "^5.0.30", + "algoliasearch": "^5.28.0", + "marked": "^16.3.0", + "zod": "^4.1.8" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -4044,10 +4244,22 @@ } } }, + "node_modules/@docsearch/react/node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/@docusaurus/babel": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.8.1.tgz", - "integrity": "sha512-3brkJrml8vUbn9aeoZUlJfsI/GqyFcDgQJwQkmBtclJgWDEQBKKeagZfOgx0WfUQhagL1sQLNW0iBdxnI863Uw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", + "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", @@ -4060,28 +4272,28 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/bundler": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.8.1.tgz", - "integrity": "sha512-/z4V0FRoQ0GuSLToNjOSGsk6m2lQUG4FRn8goOVoZSRsTrU8YR2aJacX5K3RG18EaX9b+52pN4m1sL3MQZVsQA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", + "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.8.1", - "@docusaurus/cssnano-preset": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/babel": "3.9.2", + "@docusaurus/cssnano-preset": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-loader": "^9.2.1", "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", @@ -4102,7 +4314,7 @@ "webpackbar": "^6.0.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/faster": "*" @@ -4114,18 +4326,18 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.8.1.tgz", - "integrity": "sha512-ENB01IyQSqI2FLtOzqSI3qxG2B/jP4gQPahl2C3XReiLebcVh5B5cB9KYFvdoOqOWPyr5gXK4sjgTKv7peXCrA==", - "license": "MIT", - "dependencies": { - "@docusaurus/babel": "3.8.1", - "@docusaurus/bundler": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", + "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.9.2", + "@docusaurus/bundler": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -4159,14 +4371,14 @@ "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", @@ -4175,9 +4387,9 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.8.1.tgz", - "integrity": "sha512-G7WyR2N6SpyUotqhGznERBK+x84uyhfMQM2MmDLs88bw4Flom6TY46HzkRkSEzaP9j80MbTN8naiL1fR17WQug==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", + "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", @@ -4186,31 +4398,31 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/logger": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.8.1.tgz", - "integrity": "sha512-2wjeGDhKcExEmjX8k1N/MRDiPKXGF2Pg+df/bDDPnnJWHXnVEZxXj80d6jcxp1Gpnksl0hF8t/ZQw9elqj2+ww==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", + "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.8.1.tgz", - "integrity": "sha512-DZRhagSFRcEq1cUtBMo4TKxSNo/W6/s44yhr8X+eoXqCLycFQUylebOMPseHi5tc4fkGJqwqpWJLz6JStU9L4w==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", + "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -4234,7 +4446,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4538,12 +4750,12 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.8.1.tgz", - "integrity": "sha512-6xhvAJiXzsaq3JdosS7wbRt/PwEPWHr9eM4YNYqVlbgG1hSK3uQDXTVvQktasp3VO6BmfYWPozueLWuj4gB+vg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", + "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.8.1", + "@docusaurus/types": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -4557,19 +4769,19 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.8.1.tgz", - "integrity": "sha512-vNTpMmlvNP9n3hGEcgPaXyvTljanAKIUkuG9URQ1DeuDup0OR7Ltvoc8yrmH+iMZJbcQGhUJF+WjHLwuk8HSdw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", + "integrity": "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", @@ -4582,7 +4794,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -4591,20 +4803,20 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.8.1.tgz", - "integrity": "sha512-oByRkSZzeGNQByCMaX+kif5Nl2vmtj2IHQI2fWjCfCootsdKZDPFLonhIp5s3IGJO7PLUfe0POyw0Xh/RrGXJA==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", + "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", @@ -4616,7 +4828,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4624,22 +4836,22 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.8.1.tgz", - "integrity": "sha512-a+V6MS2cIu37E/m7nDJn3dcxpvXb6TvgdNI22vJX8iUTp8eoMoPa0VArEbWvCxMY/xdC26WzNv4wZ6y0iIni/w==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz", + "integrity": "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4647,36 +4859,36 @@ } }, "node_modules/@docusaurus/plugin-css-cascade-layers": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.8.1.tgz", - "integrity": "sha512-VQ47xRxfNKjHS5ItzaVXpxeTm7/wJLFMOPo1BkmoMG4Cuz4nuI+Hs62+RMk1OqVog68Swz66xVPK8g9XTrBKRw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz", + "integrity": "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.8.1.tgz", - "integrity": "sha512-nT3lN7TV5bi5hKMB7FK8gCffFTBSsBsAfV84/v293qAmnHOyg1nr9okEw8AiwcO3bl9vije5nsUvP0aRl2lpaw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz", + "integrity": "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "fs-extra": "^11.1.1", "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4684,18 +4896,18 @@ } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.8.1.tgz", - "integrity": "sha512-Hrb/PurOJsmwHAsfMDH6oVpahkEGsx7F8CWMjyP/dw1qjqmdS9rcV1nYCGlM8nOtD3Wk/eaThzUB5TSZsGz+7Q==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz", + "integrity": "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4703,19 +4915,19 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.8.1.tgz", - "integrity": "sha512-tKE8j1cEZCh8KZa4aa80zpSTxsC2/ZYqjx6AAfd8uA8VHZVw79+7OTEP2PoWi0uL5/1Is0LF5Vwxd+1fz5HlKg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz", + "integrity": "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4723,18 +4935,18 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.8.1.tgz", - "integrity": "sha512-iqe3XKITBquZq+6UAXdb1vI0fPY5iIOitVjPQ581R1ZKpHr0qe+V6gVOrrcOHixPDD/BUKdYwkxFjpNiEN+vBw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz", + "integrity": "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4742,23 +4954,23 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.8.1.tgz", - "integrity": "sha512-+9YV/7VLbGTq8qNkjiugIelmfUEVkTyLe6X8bWq7K5qPvGXAjno27QAfFq63mYfFFbJc7z+pudL63acprbqGzw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz", + "integrity": "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4766,22 +4978,22 @@ } }, "node_modules/@docusaurus/plugin-svgr": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.8.1.tgz", - "integrity": "sha512-rW0LWMDsdlsgowVwqiMb/7tANDodpy1wWPwCcamvhY7OECReN3feoFwLjd/U4tKjNY3encj0AJSTxJA+Fpe+Gw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz", + "integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4789,29 +5001,29 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.8.1.tgz", - "integrity": "sha512-yJSjYNHXD8POMGc2mKQuj3ApPrN+eG0rO1UPgSx7jySpYU+n4WjBikbrA2ue5ad9A7aouEtMWUoiSRXTH/g7KQ==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/plugin-content-blog": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/plugin-content-pages": "3.8.1", - "@docusaurus/plugin-css-cascade-layers": "3.8.1", - "@docusaurus/plugin-debug": "3.8.1", - "@docusaurus/plugin-google-analytics": "3.8.1", - "@docusaurus/plugin-google-gtag": "3.8.1", - "@docusaurus/plugin-google-tag-manager": "3.8.1", - "@docusaurus/plugin-sitemap": "3.8.1", - "@docusaurus/plugin-svgr": "3.8.1", - "@docusaurus/theme-classic": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-search-algolia": "3.8.1", - "@docusaurus/types": "3.8.1" + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz", + "integrity": "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/plugin-css-cascade-layers": "3.9.2", + "@docusaurus/plugin-debug": "3.9.2", + "@docusaurus/plugin-google-analytics": "3.9.2", + "@docusaurus/plugin-google-gtag": "3.9.2", + "@docusaurus/plugin-google-tag-manager": "3.9.2", + "@docusaurus/plugin-sitemap": "3.9.2", + "@docusaurus/plugin-svgr": "3.9.2", + "@docusaurus/theme-classic": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-search-algolia": "3.9.2", + "@docusaurus/types": "3.9.2" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4819,27 +5031,26 @@ } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.8.1.tgz", - "integrity": "sha512-bqDUCNqXeYypMCsE1VcTXSI1QuO4KXfx8Cvl6rYfY0bhhqN6d2WZlRkyLg/p6pm+DzvanqHOyYlqdPyP0iz+iw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/plugin-content-blog": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/plugin-content-pages": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-translations": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz", + "integrity": "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", - "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", @@ -4852,7 +5063,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4860,15 +5071,15 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.8.1.tgz", - "integrity": "sha512-UswMOyTnPEVRvN5Qzbo+l8k4xrd5fTFu2VPPfD6FcW/6qUtVLmJTQCktbAL3KJ0BVXGm5aJXz/ZrzqFuZERGPw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", + "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -4879,7 +5090,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -4888,43 +5099,49 @@ } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.8.1.tgz", - "integrity": "sha512-IWYqjyTPjkNnHsFFu9+4YkeXS7PD1xI3Bn2shOhBq+f95mgDfWInkpfBN4aYvx4fTT67Am6cPtohRdwh4Tidtg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.2.tgz", + "integrity": "sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "mermaid": ">=11.6.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { + "@mermaid-js/layout-elk": "^0.1.9", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.8.1.tgz", - "integrity": "sha512-NBFH5rZVQRAQM087aYSRKQ9yGEK9eHd+xOxQjqNpxMiV85OhJDD4ZGz6YJIod26Fbooy54UWVdzNU0TFeUUUzQ==", - "license": "MIT", - "dependencies": { - "@docsearch/react": "^3.9.0", - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-translations": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", - "algoliasearch": "^5.17.1", - "algoliasearch-helper": "^3.22.6", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", + "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", @@ -4933,7 +5150,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4941,33 +5158,34 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.8.1.tgz", - "integrity": "sha512-OTp6eebuMcf2rJt4bqnvuwmm3NVXfzfYejL+u/Y1qwKhZPrjPoKWfk1CbOP5xH5ZOPkiAsx4dHdQBRJszK3z2g==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", + "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/tsconfig": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.8.1.tgz", - "integrity": "sha512-XBWCcqhRHhkhfolnSolNL+N7gj3HVE3CoZVqnVjfsMzCoOsuQw2iCLxVVHtO+rePUUfouVZHURDgmqIySsF66A==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.9.2.tgz", + "integrity": "sha512-j6/Fp4Rlpxsc632cnRnl5HpOWeb6ZKssDj6/XzzAzVGXXfm9Eptx3rxCC+fDzySn9fHTS+CWJjPineCR1bB5WQ==", "dev": true, "license": "MIT" }, "node_modules/@docusaurus/types": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.8.1.tgz", - "integrity": "sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", + "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", @@ -4996,14 +5214,14 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.8.1.tgz", - "integrity": "sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", + "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "escape-string-regexp": "^4.0.0", "execa": "5.1.1", "file-loader": "^6.2.0", @@ -5024,31 +5242,31 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-common": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.8.1.tgz", - "integrity": "sha512-zTZiDlvpvoJIrQEEd71c154DkcriBecm4z94OzEE9kz7ikS3J+iSlABhFXM45mZ0eN5pVqqr7cs60+ZlYLewtg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", + "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.8.1", + "@docusaurus/types": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.8.1.tgz", - "integrity": "sha512-gs5bXIccxzEbyVecvxg6upTwaUbfa0KMmTj7HhHzc016AGyxH2o73k1/aOD0IFrdCsfJNt37MqNI47s2MgRZMA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", + "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -5056,7 +5274,7 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -5690,17 +5908,23 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -5712,15 +5936,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", @@ -5738,9 +5953,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -5789,6 +6004,120 @@ "jsep": "^0.4.0||^1.0.0" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -5901,6 +6230,15 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -8250,6 +8588,12 @@ "micromark-util-symbol": "^1.0.1" } }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, "node_modules/@stoplight/better-ajv-errors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", @@ -8811,9 +9155,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "license": "MIT", "dependencies": { "@types/connect": "*", @@ -9161,33 +9505,21 @@ } }, "node_modules/@types/express": { - "version": "4.17.22", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.22.tgz", - "integrity": "sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", - "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -9246,15 +9578,15 @@ "license": "MIT" }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -9340,9 +9672,9 @@ } }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -9432,9 +9764,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "license": "MIT" }, "node_modules/@types/sax": { @@ -9447,12 +9779,11 @@ } }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -9466,14 +9797,24 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sockjs": { @@ -9514,9 +9855,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -9534,6 +9875,15 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, + "node_modules/@vercel/oidc": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.5.tgz", + "integrity": "sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -9817,6 +10167,24 @@ "node": ">=8" } }, + "node_modules/ai": { + "version": "5.0.104", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.104.tgz", + "integrity": "sha512-MZOkL9++nY5PfkpWKBR3Rv+Oygxpb9S16ctv8h91GvrSif7UnNEdPMVZe3bUyMd2djxf0AtBk/csBixP0WwWZQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "2.0.17", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.18", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -9886,33 +10254,34 @@ } }, "node_modules/algoliasearch": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.29.0.tgz", - "integrity": "sha512-E2l6AlTWGznM2e7vEE6T6hzObvEyXukxMOlBmVlMyixZyK1umuO/CiVc6sDBbzVH0oEviCE5IfVY1oZBmccYPQ==", - "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.29.0", - "@algolia/client-analytics": "5.29.0", - "@algolia/client-common": "5.29.0", - "@algolia/client-insights": "5.29.0", - "@algolia/client-personalization": "5.29.0", - "@algolia/client-query-suggestions": "5.29.0", - "@algolia/client-search": "5.29.0", - "@algolia/ingestion": "1.29.0", - "@algolia/monitoring": "1.29.0", - "@algolia/recommend": "5.29.0", - "@algolia/requester-browser-xhr": "5.29.0", - "@algolia/requester-fetch": "5.29.0", - "@algolia/requester-node-http": "5.29.0" + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.45.0.tgz", + "integrity": "sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.11.0", + "@algolia/client-abtesting": "5.45.0", + "@algolia/client-analytics": "5.45.0", + "@algolia/client-common": "5.45.0", + "@algolia/client-insights": "5.45.0", + "@algolia/client-personalization": "5.45.0", + "@algolia/client-query-suggestions": "5.45.0", + "@algolia/client-search": "5.45.0", + "@algolia/ingestion": "1.45.0", + "@algolia/monitoring": "1.45.0", + "@algolia/recommend": "5.45.0", + "@algolia/requester-browser-xhr": "5.45.0", + "@algolia/requester-fetch": "5.45.0", + "@algolia/requester-node-http": "5.45.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz", - "integrity": "sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==", + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.1.tgz", + "integrity": "sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" @@ -10171,9 +10540,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", "funding": [ { "type": "opencollective", @@ -10190,9 +10559,9 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -10258,13 +10627,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", - "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.4", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -10281,25 +10650,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", - "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.4" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -10350,6 +10719,15 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz", + "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -10496,9 +10874,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", - "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "funding": [ { "type": "opencollective", @@ -10515,10 +10893,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001718", - "electron-to-chromium": "^1.5.160", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -10557,6 +10936,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -10690,9 +11084,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "funding": [ { "type": "opencollective", @@ -11244,16 +11638,16 @@ } }, "node_modules/compression": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", - "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -11495,12 +11889,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.43.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", - "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "license": "MIT", "dependencies": { - "browserslist": "^4.25.0" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -11508,9 +11902,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.43.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.43.0.tgz", - "integrity": "sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", + "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -11859,9 +12253,9 @@ } }, "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -11872,9 +12266,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -11884,9 +12278,9 @@ } }, "node_modules/css-has-pseudo": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz", - "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", "funding": [ { "type": "github", @@ -11933,9 +12327,9 @@ } }, "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -12047,9 +12441,9 @@ } }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -12104,9 +12498,9 @@ } }, "node_modules/cssdb": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.3.1.tgz", - "integrity": "sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.2.tgz", + "integrity": "sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==", "funding": [ { "type": "opencollective", @@ -12925,16 +13319,32 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "license": "BSD-2-Clause", + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -13771,9 +14181,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.171", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz", - "integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==", + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -14364,6 +14774,15 @@ "node": ">=0.8.x" } }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -14852,9 +15271,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -14947,15 +15366,15 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -14982,12 +15401,6 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "license": "Unlicense" - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -15207,6 +15620,22 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -15263,15 +15692,6 @@ "node": ">=10" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -16045,22 +16465,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -16331,6 +16735,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -16546,9 +16959,9 @@ } }, "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "license": "MIT", "engines": { "node": ">= 10" @@ -16865,6 +17278,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -16905,6 +17351,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-npm": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", @@ -17358,6 +17816,12 @@ "foreach": "^2.0.4" } }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-compare": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz", @@ -17545,13 +18009,13 @@ } }, "node_modules/launch-editor": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", - "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/layout-base": { @@ -19865,15 +20329,21 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "license": "Unlicense", + "version": "4.51.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", + "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/memorystream": { @@ -22196,9 +22666,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", @@ -22485,9 +22955,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", + "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -22503,9 +22973,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "license": "MIT" }, "node_modules/normalize-package-data": { @@ -23041,9 +23511,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -23288,16 +23758,20 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { @@ -23755,9 +24229,9 @@ } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -23799,9 +24273,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.10.tgz", - "integrity": "sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", "funding": [ { "type": "github", @@ -23814,10 +24288,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -23999,9 +24473,9 @@ } }, "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24037,9 +24511,9 @@ } }, "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24113,9 +24587,9 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.2.tgz", - "integrity": "sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", "funding": [ { "type": "github", @@ -24128,7 +24602,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -24165,9 +24639,9 @@ } }, "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24203,9 +24677,9 @@ } }, "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24273,9 +24747,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.10.tgz", - "integrity": "sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", "funding": [ { "type": "github", @@ -24288,10 +24762,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -24492,9 +24966,9 @@ } }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24520,9 +24994,9 @@ } }, "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24619,9 +25093,9 @@ } }, "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -24862,9 +25336,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.2.3.tgz", - "integrity": "sha512-zlQN1yYmA7lFeM1wzQI14z97mKoM8qGng+198w1+h6sCud/XxOjcKtApY9jWr7pXNS3yHDEafPlClSsWnkY8ow==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz", + "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==", "funding": [ { "type": "github", @@ -24877,20 +25351,23 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-cascade-layers": "^5.0.1", - "@csstools/postcss-color-function": "^4.0.10", - "@csstools/postcss-color-mix-function": "^3.0.10", - "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.0", - "@csstools/postcss-content-alt-text": "^2.0.6", + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", "@csstools/postcss-exponential-functions": "^2.0.9", "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.10", - "@csstools/postcss-gradients-interpolation-method": "^5.0.10", - "@csstools/postcss-hwb-function": "^4.0.10", - "@csstools/postcss-ic-unit": "^4.0.2", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", "@csstools/postcss-initial": "^2.0.1", "@csstools/postcss-is-pseudo-class": "^5.0.3", - "@csstools/postcss-light-dark-function": "^2.0.9", + "@csstools/postcss-light-dark-function": "^2.0.11", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", @@ -24900,38 +25377,38 @@ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.10", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/postcss-random-function": "^2.0.1", - "@csstools/postcss-relative-color-syntax": "^3.0.10", + "@csstools/postcss-relative-color-syntax": "^3.0.12", "@csstools/postcss-scope-pseudo-class": "^4.0.1", "@csstools/postcss-sign-functions": "^1.1.4", "@csstools/postcss-stepped-value-functions": "^4.0.9", - "@csstools/postcss-text-decoration-shorthand": "^4.0.2", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", "@csstools/postcss-trigonometric-functions": "^4.0.9", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.21", - "browserslist": "^4.25.0", + "browserslist": "^4.26.0", "css-blank-pseudo": "^7.0.1", - "css-has-pseudo": "^7.0.2", + "css-has-pseudo": "^7.0.3", "css-prefers-color-scheme": "^10.0.0", - "cssdb": "^8.3.0", + "cssdb": "^8.4.2", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.10", + "postcss-color-functional-notation": "^7.0.12", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", "postcss-custom-media": "^11.0.6", "postcss-custom-properties": "^14.0.6", "postcss-custom-selectors": "^8.0.5", "postcss-dir-pseudo-class": "^9.0.1", - "postcss-double-position-gradients": "^6.0.2", + "postcss-double-position-gradients": "^6.0.4", "postcss-focus-visible": "^10.0.1", "postcss-focus-within": "^9.0.1", "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.10", + "postcss-lab-function": "^7.0.12", "postcss-logical": "^8.1.0", "postcss-nesting": "^13.0.2", "postcss-opacity-percentage": "^3.0.0", @@ -24975,9 +25452,9 @@ } }, "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -25068,9 +25545,9 @@ } }, "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -25849,9 +26326,9 @@ "license": "MIT" }, "node_modules/react-json-view-lite": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.4.1.tgz", - "integrity": "sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", "license": "MIT", "engines": { "node": ">=18" @@ -26928,9 +27405,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -26960,17 +27437,17 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -27010,29 +27487,17 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/rehype-katex": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", @@ -27755,6 +28220,18 @@ "node": ">=12.0.0" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -27981,10 +28458,10 @@ } }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" }, "node_modules/scheduler": { "version": "0.26.0", @@ -28355,9 +28832,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -28773,9 +29250,9 @@ } }, "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "license": "MIT" }, "node_modules/stop-iteration-iterator": { @@ -29248,6 +29725,19 @@ "node": ">= 6" } }, + "node_modules/swr": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz", + "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/tapable": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", @@ -29365,6 +29855,34 @@ "node": ">=0.8" } }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -29479,6 +29997,22 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -29755,18 +30289,18 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "license": "MIT", "engines": { "node": ">=4" @@ -29944,9 +30478,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "funding": [ { "type": "opencollective", @@ -30607,47 +31141,57 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/webpack-dev-middleware/node_modules/range-parser": { @@ -30660,54 +31204,52 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.21.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -30718,25 +31260,40 @@ } } }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -31163,6 +31720,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -31289,9 +31876,9 @@ } }, "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { "node": ">=12.20" @@ -31300,6 +31887,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", + "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 72d82fa8..dd339700 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,9 @@ "sync-redirects": "tsx scripts/redirects/sync-redirects.ts" }, "dependencies": { - "@docusaurus/core": "^3.8.1", - "@docusaurus/preset-classic": "^3.8.1", - "@docusaurus/theme-mermaid": "^3.8.1", + "@docusaurus/core": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", "@mdx-js/react": "^3.0.0", "@radix-ui/themes": "^3.2.1", "@signalwire/docusaurus-plugin-llms-txt": "^1.2.1", @@ -44,9 +44,9 @@ "devDependencies": { "@asyncapi/parser": "^3.4.0", "@biomejs/biome": "^1.9.4", - "@docusaurus/module-type-aliases": "^3.8.1", - "@docusaurus/tsconfig": "^3.8.1", - "@docusaurus/types": "^3.8.1", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/tsconfig": "^3.9.2", + "@docusaurus/types": "^3.9.2", "@types/mixpanel-browser": "^2.60.0", "cspell": "^8.17.3", "dotenv": "^17.2.0", From a3bf36ad8f0ed82812ca4adc2016c490abb939ae Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:25:48 +0000 Subject: [PATCH 027/114] removed / from if --- docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx index fd8f022b..da010958 100644 --- a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx +++ b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx @@ -1,5 +1,5 @@ --- -id: integrations/livekit/speechmatics-stt-plugin-guide +id: integrations-livekit-speechmatics-stt-plugin-guide description: How to use the Speechmatics STT plugin for LiveKit Agents. --- From 5922dfdef44dbbf66c8b2197a45468f733d4db6d Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:27:23 +0000 Subject: [PATCH 028/114] pc / removed from id --- .../pipecat/pipecat-speechmatics-stt-plugin-guide.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx b/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx index ba8a8a4c..ee642a9e 100644 --- a/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx +++ b/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx @@ -1,5 +1,5 @@ --- -id: integrations/pipecat/pipecat-speechmatics-stt-plugin-guide +id: integrations-pipecat-speechmatics-stt-plugin-guide description: How to integrate Speechmatics STT with Pipecat for real-time speech transcription. --- From f958dd64effb9e8dcf8860071cb790136e67120d Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:31:51 +0000 Subject: [PATCH 029/114] formatting error corrections --- docs/integrations/livekit/sidebar.ts | 2 +- docs/integrations/pipecat/sidebar.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index 2e9f9855..bd189df6 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -11,7 +11,7 @@ export default { }, { type: "doc", - id: "integrations/livekit/livekit-speechmatics-stt-plugin-guide", + id: "integrations-livekit-speechmatics-stt-plugin-guide", label: "Speechmatics STT Plugin Guide", } ], diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts index 334a1d1f..4733fb38 100644 --- a/docs/integrations/pipecat/sidebar.ts +++ b/docs/integrations/pipecat/sidebar.ts @@ -11,7 +11,7 @@ export default { }, { type: "doc", - id: "integrations/pipecat/pipecat-speechmatics-stt-plugin-guide", + id: "integrations-pipecat-speechmatics-stt-plugin-guide", label: "Speechmatics STT Plugin Guide", } ], From d2b52fa24888bc40db0ae7bdc422dd93501cd2fd Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:37:49 +0000 Subject: [PATCH 030/114] fix --- docs/integrations/livekit/livekit.mdx | 2 +- docs/integrations/pipecat/pipecat.mdx | 2 +- docs/integrations/pipecat/sidebar.ts | 2 +- docs/integrations/sidebar.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations/livekit/livekit.mdx index b8b2e7ed..2bccae7b 100644 --- a/docs/integrations/livekit/livekit.mdx +++ b/docs/integrations/livekit/livekit.mdx @@ -1,5 +1,5 @@ --- -id: livekit +id: integrations-livekit-livekit description: Learn how to integrate Speechmatics STT with LiveKit Agents. --- diff --git a/docs/integrations/pipecat/pipecat.mdx b/docs/integrations/pipecat/pipecat.mdx index c0e19d32..ec559b04 100644 --- a/docs/integrations/pipecat/pipecat.mdx +++ b/docs/integrations/pipecat/pipecat.mdx @@ -1,5 +1,5 @@ --- -id: pipecat +id: integrations-pipecat-pipecat description: Learn how to integrate Speechmatics STT with Pipecat. --- diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts index 4733fb38..d01c3256 100644 --- a/docs/integrations/pipecat/sidebar.ts +++ b/docs/integrations/pipecat/sidebar.ts @@ -6,7 +6,7 @@ export default { items: [ { type: "doc", - id: "integrations/pipecat/pipecat", + id: "integrations-pipecat-pipecat", label: "Overview", }, { diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 0307c96c..12d7df7c 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -13,12 +13,12 @@ export default { { type: "doc", label: "Overview", - id: "integrations/overview", + id: "integrations-overview", }, { type: "doc", label: "Vapi", - id: "integrations/vapi/vapi", + id: "integrations-vapi-vapi", }, livekitSidebar, pipecatSidebar, From 613f301e33c5983ad27d62637d3bedd829608e59 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:43:50 +0000 Subject: [PATCH 031/114] sidebar please work --- docs/integrations/pipecat/sidebar.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts index d01c3256..476cfcc9 100644 --- a/docs/integrations/pipecat/sidebar.ts +++ b/docs/integrations/pipecat/sidebar.ts @@ -1,6 +1,6 @@ export default { type: "category", - label: "Pipecat", + label: "pipecat", collapsible: true, collapsed: true, items: [ From d0c881a29a4eb3973a1505d804f0ba5a3544c5dd Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:48:24 +0000 Subject: [PATCH 032/114] sidebar p->P --- docs/integrations/pipecat/sidebar.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts index 476cfcc9..d01c3256 100644 --- a/docs/integrations/pipecat/sidebar.ts +++ b/docs/integrations/pipecat/sidebar.ts @@ -1,6 +1,6 @@ export default { type: "category", - label: "pipecat", + label: "Pipecat", collapsible: true, collapsed: true, items: [ From c25c8e401b51c81c3baf600aea748b7929abe16e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 17:50:53 +0000 Subject: [PATCH 033/114] build item --- docs/integrations/livekit/sidebar.ts | 2 +- docs/integrations/vapi/vapi.mdx | 2 +- sidebars.ts | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index bd189df6..73312abe 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -6,7 +6,7 @@ export default { items: [ { type: "doc", - id: "integrations/livekit/livekit", + id: "integrations-livekit-livekit", label: "Overview", }, { diff --git a/docs/integrations/vapi/vapi.mdx b/docs/integrations/vapi/vapi.mdx index e7f95ad4..10198321 100644 --- a/docs/integrations/vapi/vapi.mdx +++ b/docs/integrations/vapi/vapi.mdx @@ -1,5 +1,5 @@ --- -id: vapi +id: integrations-vapi-vapi description: Learn how to integrate Speechmatics STT with Vapi. --- diff --git a/sidebars.ts b/sidebars.ts index ea405110..c26e7f9c 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -5,6 +5,9 @@ import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; import integrationsSidebar from "./docs/integrations/sidebar"; +import pipecatSidebar from "./docs/integrations/pipecat/sidebar"; +import livekitSidebar from "./docs/integrations/livekit/sidebar"; + export default { docs: [ @@ -14,6 +17,8 @@ export default { voiceAgentsFlowSidebar, deploymentsSidebar, integrationsSidebar, + pipecatSidebar, + livekitSidebar, { type: "category", label: "Developer Resources", From 43d4809ffda9fc5a25e7309f9397e4429d4d8892 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 28 Nov 2025 18:13:55 +0000 Subject: [PATCH 034/114] ..... more --- docs/integrations/index.mdx | 2 +- docs/integrations/livekit/sidebar.ts | 18 +++++++++--------- docs/integrations/pipecat/sidebar.ts | 22 +++++++++++----------- docs/integrations/sidebar.ts | 19 ++++++++++--------- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx index 7fa5529c..4d75212b 100644 --- a/docs/integrations/index.mdx +++ b/docs/integrations/index.mdx @@ -1,5 +1,5 @@ --- -id: overview +id: integrations-overview description: Learn how to integrate Speechmatics STT with voice AI applications. --- # Speechmatics Integrations diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index 73312abe..de448919 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -5,14 +5,14 @@ export default { collapsed: true, items: [ { - type: "doc", - id: "integrations-livekit-livekit", - label: "Overview", - }, - { - type: "doc", - id: "integrations-livekit-speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", - } + type: "doc", + id: "integrations/livekit/integrations-livekit-livekit", + label: "Overview", +}, +{ + type: "doc", + id: "integrations/livekit/integrations-livekit-speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", +}, ], } as const; \ No newline at end of file diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts index d01c3256..9e268380 100644 --- a/docs/integrations/pipecat/sidebar.ts +++ b/docs/integrations/pipecat/sidebar.ts @@ -4,15 +4,15 @@ export default { collapsible: true, collapsed: true, items: [ - { - type: "doc", - id: "integrations-pipecat-pipecat", - label: "Overview", - }, - { - type: "doc", - id: "integrations-pipecat-speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", - } +{ + type: "doc", + id: "integrations/pipecat/integrations-pipecat-pipecat", + label: "Overview", +}, +{ + type: "doc", + id: "integrations/pipecat/integrations-pipecat-speechmatics-stt-plugin-guide", + label: "Speechmatics STT Plugin Guide", +}, ], -} as const; \ No newline at end of file +} as const; diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index 12d7df7c..c5e47195 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -10,16 +10,17 @@ export default { type: "generated-index", }, items: [ + // docs/integrations/sidebar.ts { - type: "doc", - label: "Overview", - id: "integrations-overview", - }, - { - type: "doc", - label: "Vapi", - id: "integrations-vapi-vapi", - }, + type: "doc", + label: "Overview", + id: "integrations/integrations-overview", +}, +{ + type: "doc", + label: "Vapi", + id: "integrations/vapi/integrations-vapi-vapi", +}, livekitSidebar, pipecatSidebar, ], From 6e9794d90a05cbeb82f7b76f09dfe3c9cfd60241 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Sun, 30 Nov 2025 15:36:28 +0000 Subject: [PATCH 035/114] Removal of pc and lk from main sidebar, --- sidebars.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sidebars.ts b/sidebars.ts index c26e7f9c..ea405110 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -5,9 +5,6 @@ import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; import integrationsSidebar from "./docs/integrations/sidebar"; -import pipecatSidebar from "./docs/integrations/pipecat/sidebar"; -import livekitSidebar from "./docs/integrations/livekit/sidebar"; - export default { docs: [ @@ -17,8 +14,6 @@ export default { voiceAgentsFlowSidebar, deploymentsSidebar, integrationsSidebar, - pipecatSidebar, - livekitSidebar, { type: "category", label: "Developer Resources", From ce9771a987878e4cd291090f19de38d8b522c8be Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 13:59:03 +0000 Subject: [PATCH 036/114] livekit agents with stt update --- docs/integrations/index.mdx | 31 +++++++++--- docs/integrations/livekit/livekit.mdx | 70 ++++++++++++++++++++++++--- 2 files changed, 89 insertions(+), 12 deletions(-) diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx index 4d75212b..b0a31d73 100644 --- a/docs/integrations/index.mdx +++ b/docs/integrations/index.mdx @@ -6,12 +6,8 @@ description: Learn how to integrate Speechmatics STT with voice AI applications. Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. By ensuring the "ears" of your AI are industry-leading, you solve the most common failure point in voice bots: misunderstanding the user. -Speechmatics STT - -## Why Choose Speechmatics STT for your Voice AI Integrations? - -Speechmatics is widely regarded as the "Gold Standard" for real-world speech recognition because it is engineered for the messiness of actual human conversation, not just sterile lab conditions. - +## Benefits +Speechmatics is built for real-world application, handling the nuances of natural human conversation. ### Unmatched Accuracy Speechmatics is the most accurate real-time speech-to-text engine, delivering final transcripts in under one second without compromising accuracy. This balance of speed and precision is critical for voice agents that need to respond naturally to users while keeping the conversation flow intact. @@ -33,3 +29,26 @@ Speechmatics STT can be integrated into voice AI applications on a variety of pl - LiveKit - Pipecat - Vapi + +## Explore integrations + + + } + href="/integrations/vapi/" + /> + } + href="/integrations/livekit/" + /> + } + href="/integrations/pipecat/" + /> + diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations/livekit/livekit.mdx index 2bccae7b..aebd6191 100644 --- a/docs/integrations/livekit/livekit.mdx +++ b/docs/integrations/livekit/livekit.mdx @@ -8,15 +8,12 @@ import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# LiveKit +# LiveKit Agents LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. -The Speechmatics STT plugin for LiveKit Agents enables real-time speech transcription using Speechmatics as your STT provider for your voice agent. -With different configurations, you are able to tailor your application to your specific needs, whilst ensuring accurate, reliable and speedy results. +With the Speechmatics STT plugin, you enable your voice agent to transcribe live audio in real-time, along with speaker diarization, turn detection and noise robustness. -## Use cases - -LiveKit is perfect for: +LiveKit Agents is perfect for: - **Voice AI**: Voice assistants, chatbots, and IVR systems - **Translation**: Real-time transcription of live events or recordings @@ -33,3 +30,64 @@ Using Speechmatics STT you can: - Global accent & dialect support - Low latency for real-time transcription - Contextual precision + +## Quickstart + +This section includes a basic example and some reference material. +For more detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). + +### Requirements + +- LiveKit >= 1.2 +- Speechmatics Account + +### Installation + +Install the plugin from PyPI: + +```python +uv add "livekit-agents[speechmatics]~=1.2" +``` + +### Authentication + +The SpeechmaticsSTTService requires an API key. +You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +Set the environment variable `SPEECHMATICS_API_KEY` in your .env file. + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +Use the Speechmatics STT in an AgentSession or as a standalone transcription service. + +```python +import os +from dotenv import load_dotenv +from livekit.agents import AgentSession, cli +from livekit.plugins import speechmatics + +# Load API keys from .env file +load_dotenv() + +# Initialize the agent with Speechmatics STT +async def run_agent(room): + session = AgentSession( + stt=speechmatics.STT( + enable_diarization=True, + end_of_utterance_silence_trigger=0.3 + ) + ) + + # Process incoming audio + @session.on("transcription_received") + async def on_transcription(event): + print(f"Speaker {event.speaker}: {event.text}") + + await session.start(room) + +if __name__ == "__main__": + cli.run_app(run_agent) +``` From f889d0725835678fb1bfc67e7ee0734f28ca1292 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 13:59:54 +0000 Subject: [PATCH 037/114] livekit sidebar update --- docs/integrations/livekit/sidebar.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts index de448919..a24766ac 100644 --- a/docs/integrations/livekit/sidebar.ts +++ b/docs/integrations/livekit/sidebar.ts @@ -8,11 +8,6 @@ export default { type: "doc", id: "integrations/livekit/integrations-livekit-livekit", label: "Overview", -}, -{ - type: "doc", - id: "integrations/livekit/integrations-livekit-speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", }, ], } as const; \ No newline at end of file From 957b4c6a457617fca73fa6e910878c7daba73757 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 14:00:39 +0000 Subject: [PATCH 038/114] small changes --- docs/integrations/vapi/vapi.mdx | 3 +-- sidebars.ts | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/vapi/vapi.mdx b/docs/integrations/vapi/vapi.mdx index 10198321..64221719 100644 --- a/docs/integrations/vapi/vapi.mdx +++ b/docs/integrations/vapi/vapi.mdx @@ -10,7 +10,6 @@ import TabItem from '@theme/TabItem'; # Vapi -Vapi is the developer platform for building voice AI agents. Vapi offers native integration with Speechmatics for real-time, highly accurate Speech-to-Text (STT) capabilities in AI voice agents. This integration is designed to handle real-world conversation complexities like background noise, diverse accents, and multiple speakers. ## Key Features @@ -25,7 +24,7 @@ The integration provides an accurate and low-latency input layer, crucial for na Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. ### Flexible Deployment: -The integration is available in the cloud via Vapi's managed SaaS, and Speechmatics also offers private cloud or on-premise deployment options for data privacy-sensitive use cases. +Speechmatics STT is available in Vapi's managed platform. ## Quickstart diff --git a/sidebars.ts b/sidebars.ts index ea405110..7d75b29a 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -6,6 +6,7 @@ import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; import integrationsSidebar from "./docs/integrations/sidebar"; + export default { docs: [ gettingStartedSidebar, From 2d57bc697d54203e6ca0c73cc1a5348541967052 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 14:01:22 +0000 Subject: [PATCH 039/114] remove separate stt plugin --- .../livekit/speechmatics-stt-plugin-guide.mdx | 85 ------------------- 1 file changed, 85 deletions(-) delete mode 100644 docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx diff --git a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx b/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx deleted file mode 100644 index da010958..00000000 --- a/docs/integrations/livekit/speechmatics-stt-plugin-guide.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -id: integrations-livekit-speechmatics-stt-plugin-guide -description: How to use the Speechmatics STT plugin for LiveKit Agents. ---- - -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Speechmatics STT plugin for LiveKit Agents - -The Speechmatics STT plugin for LiveKit Agents enables real-time speech transcription using Speechmatics as your STT provider for your voice agent. -With different configurations, you are able to tailor your application to your specific needs, whilst ensuring accurate, reliable and speedy results. - -## Features -Using Speechmatics STT you can: -- Obtain partial and final results, -- Incorporate speaker diarization, -- Turn detection (end of utterance detection) -- Noise robustness using VAD -- Global accent & dialect support -- Low latency for real-time transcription -- Contextual precision - -## Quickstart - -This section includes a basic example and some reference material. -For more detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). - -### Requirements - -- LiveKit >= 1.2 -- Speechmatics Account - -### Installation - -Install the plugin from PyPI: - -```python -uv add "livekit-agents[speechmatics]~=1.2" -``` - -### Authentication - -The SpeechmaticsSTTService requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). -Set the environment variable `SPEECHMATICS_API_KEY` in your .env file. - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` - -### Usage - -Use the Speechmatics STT in an AgentSession or as a standalone transcription service. - -```python -import os -from dotenv import load_dotenv -from livekit.agents import AgentSession, cli -from livekit.plugins import speechmatics - -# Load API keys from .env file -load_dotenv() - -# Initialize the agent with Speechmatics STT -async def run_agent(room): - session = AgentSession( - stt=speechmatics.STT( - enable_diarization=True, - end_of_utterance_silence_trigger=0.3 - ) - ) - - # Process incoming audio - @session.on("transcription_received") - async def on_transcription(event): - print(f"Speaker {event.speaker}: {event.text}") - - await session.start(room) - -if __name__ == "__main__": - cli.run_app(run_agent) -``` From 92f04992b8c30d08453f5d7736f62ef08cca5b8f Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 14:41:47 +0000 Subject: [PATCH 040/114] Link cards for integration partners --- docs/integrations/index.mdx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx index b0a31d73..899e16aa 100644 --- a/docs/integrations/index.mdx +++ b/docs/integrations/index.mdx @@ -2,6 +2,11 @@ id: integrations-overview description: Learn how to integrate Speechmatics STT with voice AI applications. --- + +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Flex, Grid } from "@radix-ui/themes"; +import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; + # Speechmatics Integrations Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. By ensuring the "ears" of your AI are industry-leading, you solve the most common failure point in voice bots: misunderstanding the user. @@ -23,31 +28,24 @@ Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward s ### Contextual Precision Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. -## Integration Options - -Speechmatics STT can be integrated into voice AI applications on a variety of platforms, including: - - LiveKit - - Pipecat - - Vapi - ## Explore integrations } href="/integrations/vapi/" /> } href="/integrations/livekit/" /> } href="/integrations/pipecat/" /> From dfaf0842123dc1246eb7028663ac4667930bf66e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 14:42:11 +0000 Subject: [PATCH 041/114] ux improvements --- docs/integrations/livekit/livekit.mdx | 3 +-- docs/integrations/vapi/vapi.mdx | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations/livekit/livekit.mdx index aebd6191..8f2a29c4 100644 --- a/docs/integrations/livekit/livekit.mdx +++ b/docs/integrations/livekit/livekit.mdx @@ -39,7 +39,7 @@ For more detailed examples, please see the [Speechmatics Academy](https://github ### Requirements - LiveKit >= 1.2 -- Speechmatics Account +- Speechmatics Account (https://portal.speechmatics.com) ### Installation @@ -48,7 +48,6 @@ Install the plugin from PyPI: ```python uv add "livekit-agents[speechmatics]~=1.2" ``` - ### Authentication The SpeechmaticsSTTService requires an API key. diff --git a/docs/integrations/vapi/vapi.mdx b/docs/integrations/vapi/vapi.mdx index 64221719..366ab0ea 100644 --- a/docs/integrations/vapi/vapi.mdx +++ b/docs/integrations/vapi/vapi.mdx @@ -37,13 +37,18 @@ Speechmatics STT is available in Vapi's managed platform. The Vapi UI provides a simple way to integrate Speechmatics STT into your voice AI agent. -1. Navigate to Assistants: In the Vapi dashboard, go to the Assistants tab. -2. Select or Create an Assistant: Choose an existing voice assistant or create a new one. -3. Open Transcriber Settings: Access the Transcriber tab or scroll down to the Transcriber module settings. -4. Select Speechmatics: In the Provider dropdown menu, select Speechmatics. +1. Navigate to assistants tab in the Vapi dashboard. +2. Choose an existing assistant or create a new one. +3. Access the transcriber tab or scroll down to the transcriber module settings. +4. Select Speechmatics in the provider dropdown menu. ### Best Practices -Operating Point – Select the Enhanced model for the best accuracy in real-time voice agents. -Region – Choose the region closest to your users to optimize latency. -Custom Vocabulary – Use this feature to add key terms (e.g., product names) and leverage the Sounds Like option for tricky pronunciations. \ No newline at end of file +#### Operating Point +Select the enhanced model for the best accuracy in real-time voice agents. + +#### Region +Choose the region closest to your users to optimize latency. + +#### Custom Vocabulary +Use this feature to add key terms (e.g., product names) and leverage the sounds-like option for tricky pronunciations. \ No newline at end of file From 09d5ca7a5941aea75f4ef6d98588cc334aae79aa Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 14:59:50 +0000 Subject: [PATCH 042/114] ui/ux improvements --- docs/integrations/index.mdx | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx index 899e16aa..4a56348c 100644 --- a/docs/integrations/index.mdx +++ b/docs/integrations/index.mdx @@ -11,42 +11,43 @@ import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. By ensuring the "ears" of your AI are industry-leading, you solve the most common failure point in voice bots: misunderstanding the user. -## Benefits -Speechmatics is built for real-world application, handling the nuances of natural human conversation. -### Unmatched Accuracy -Speechmatics is the most accurate real-time speech-to-text engine, delivering final transcripts in under one second without compromising accuracy. This balance of speed and precision is critical for voice agents that need to respond naturally to users while keeping the conversation flow intact. - -### Noise Robustness using VAD -Speechmatics STT uses VAD (Voice Activity Detection) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. - -### Global Accent & Dialect Support -With a single language pack (e.g., Global English), Speechmatics STT understands diverse accents without needing regional configuration. It supports 50+ languages globally. - -### Low Latency for Real-Time Transcription -Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. - -### Contextual Precision -Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. - ## Explore integrations } href="/integrations/vapi/" /> } href="/integrations/livekit/" /> } href="/integrations/pipecat/" /> + +## Benefits +Speechmatics is built for real-world application, handling the nuances of natural human conversation. +### Unmatched Accuracy +Speechmatics is the most accurate real-time speech-to-text engine, delivering final transcripts in under one second without compromising accuracy. This balance of speed and precision is critical for voice agents that need to respond naturally to users while keeping the conversation flow intact. + +### Noise Robustness using VAD +Speechmatics STT uses VAD (Voice Activity Detection) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. + +### Global Accent & Dialect Support +With a single language pack (e.g., Global English), Speechmatics STT understands diverse accents without needing regional configuration. It supports 50+ languages globally. + +### Low Latency for Real-Time Transcription +Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. + +### Contextual Precision +Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. + From 3de3a6a7e307d094fb76f3cc421393d26219bebc Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 15:00:45 +0000 Subject: [PATCH 043/114] Sidebar change --- docs/integrations/livekit/sidebar.ts | 13 ------------- docs/integrations/pipecat/sidebar.ts | 18 ------------------ docs/integrations/sidebar.ts | 5 ----- 3 files changed, 36 deletions(-) delete mode 100644 docs/integrations/livekit/sidebar.ts delete mode 100644 docs/integrations/pipecat/sidebar.ts diff --git a/docs/integrations/livekit/sidebar.ts b/docs/integrations/livekit/sidebar.ts deleted file mode 100644 index a24766ac..00000000 --- a/docs/integrations/livekit/sidebar.ts +++ /dev/null @@ -1,13 +0,0 @@ -export default { - type: "category", - label: "LiveKit", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations/livekit/integrations-livekit-livekit", - label: "Overview", -}, - ], -} as const; \ No newline at end of file diff --git a/docs/integrations/pipecat/sidebar.ts b/docs/integrations/pipecat/sidebar.ts deleted file mode 100644 index 9e268380..00000000 --- a/docs/integrations/pipecat/sidebar.ts +++ /dev/null @@ -1,18 +0,0 @@ -export default { - type: "category", - label: "Pipecat", - collapsible: true, - collapsed: true, - items: [ -{ - type: "doc", - id: "integrations/pipecat/integrations-pipecat-pipecat", - label: "Overview", -}, -{ - type: "doc", - id: "integrations/pipecat/integrations-pipecat-speechmatics-stt-plugin-guide", - label: "Speechmatics STT Plugin Guide", -}, - ], -} as const; diff --git a/docs/integrations/sidebar.ts b/docs/integrations/sidebar.ts index c5e47195..d1ff07dc 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations/sidebar.ts @@ -1,6 +1,3 @@ -import livekitSidebar from "./livekit/sidebar"; -import pipecatSidebar from "./pipecat/sidebar"; - export default { type: "category", label: "Integrations", @@ -21,7 +18,5 @@ export default { label: "Vapi", id: "integrations/vapi/integrations-vapi-vapi", }, - livekitSidebar, - pipecatSidebar, ], } as const; \ No newline at end of file From ac3cde7829ac4610b724a219f39da4bb1be43fcc Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 2 Dec 2025 16:59:37 +0000 Subject: [PATCH 044/114] Formatting, design and content upgrades!! --- docs/integrations-and-sdks/index.mdx | 54 +++++++++++ .../livekit.mdx | 10 +- docs/integrations-and-sdks/pipecat.mdx | 92 +++++++++++++++++++ docs/integrations-and-sdks/sdk/sidebar.ts | 18 ++++ .../sidebar.ts | 19 +++- docs/integrations-and-sdks/vapi.mdx | 62 +++++++++++++ docs/integrations/index.mdx | 53 ----------- .../pipecat-speechmatics-stt-plugin-guide.mdx | 65 ------------- docs/integrations/pipecat/pipecat.mdx | 34 ------- docs/integrations/vapi/vapi.mdx | 54 ----------- sidebars.ts | 2 +- 11 files changed, 243 insertions(+), 220 deletions(-) create mode 100644 docs/integrations-and-sdks/index.mdx rename docs/{integrations/livekit => integrations-and-sdks}/livekit.mdx (86%) create mode 100644 docs/integrations-and-sdks/pipecat.mdx create mode 100644 docs/integrations-and-sdks/sdk/sidebar.ts rename docs/{integrations => integrations-and-sdks}/sidebar.ts (56%) create mode 100644 docs/integrations-and-sdks/vapi.mdx delete mode 100644 docs/integrations/index.mdx delete mode 100644 docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx delete mode 100644 docs/integrations/pipecat/pipecat.mdx delete mode 100644 docs/integrations/vapi/vapi.mdx diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx new file mode 100644 index 00000000..fd649609 --- /dev/null +++ b/docs/integrations-and-sdks/index.mdx @@ -0,0 +1,54 @@ +--- +id: integrations-overview +description: Learn how to integrate Speechmatics STT with voice AI applications. +--- + +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Flex, Grid } from "@radix-ui/themes"; +import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; + +# Speechmatics Integrations + +Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. + +## Explore integrations + + + } + href="/integrations/integrations-vapi" + /> + } + href="/integrations/integrations-livekit" + /> + } + href="/integrations/integrations-pipecat" + /> + + +## Benefits +Speechmatics is built for real-world application, handling the nuances of natural human conversation. + +**Unmatched Accuracy**: +- The most accurate real-time sst engine, delivering final transcripts in less than 1s without compromising accuracy. +- This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. + +**Noise Robustness using VAD**: +- Voice Activity Detection to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. + +**Global Accent & Dialect Support**: +- Speechmatics STT understands diverse accents without needing regional configuration + +**Low Latency for Real-Time Transcription**: +- Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. + +**Contextual Precision**: +- Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file diff --git a/docs/integrations/livekit/livekit.mdx b/docs/integrations-and-sdks/livekit.mdx similarity index 86% rename from docs/integrations/livekit/livekit.mdx rename to docs/integrations-and-sdks/livekit.mdx index 8f2a29c4..cddf0eb0 100644 --- a/docs/integrations/livekit/livekit.mdx +++ b/docs/integrations-and-sdks/livekit.mdx @@ -1,13 +1,8 @@ --- -id: integrations-livekit-livekit +id: integrations-livekit description: Learn how to integrate Speechmatics STT with LiveKit Agents. --- -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - # LiveKit Agents LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. @@ -50,8 +45,7 @@ uv add "livekit-agents[speechmatics]~=1.2" ``` ### Authentication -The SpeechmaticsSTTService requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). +The Speechmatics STT plugin requires an API key. You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). Set the environment variable `SPEECHMATICS_API_KEY` in your .env file. ```bash diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx new file mode 100644 index 00000000..341151e5 --- /dev/null +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -0,0 +1,92 @@ +--- +id: integrations-pipecat +description: Learn how to integrate Speechmatics STT with Pipecat. +--- + +import CodeBlock from '@theme/CodeBlock'; + +# Pipecat + +Pipecat is an open-source framework for building vocal AI agents. When Speechmatics STT is integrated with Pipecat, you can build real-time voice and multimodal conversational agent specifically tailored to your needs. + +Pipecat is perfect for: + +- **Voice AI**: Voice assistants, chatbots, and IVR systems +- **Transcription**: Realtime transcription of live events or media +- **Accessibility applications**: Screen readers and assistive technologies +- **Content creation**: Podcasts, dubbing, audiobooks, and voice-overs +- **Media production**: News broadcasts and automated announcements + +## Features + +- Enhanced Conversational Dynamics - real-time transcription, speaker diarization, turn detection, noise robustness using VAD +- High accuracy and low latency +- Global accent & dialect support +- Contextual precision with custom dictionaries +- Flexible deployment, modular control + +## Quickstart + +### Requirements +- Python 3.10 or later +- uv package manager installed +- Pipecat >= 1.2 +- Speechmatics Account (https://portal.speechmatics.com) + +### Installation + +Install the plugin from PyPI: + +```python +pip install "pipecat-ai[speechmatics]" +``` + +### Authentication + +Speechmatics requires an API key, which you can generate in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). + +### Required environment variable: + +```bash +export SPEECHMATICS_API_KEY=your_api_key +``` + +### Usage + +```python +import os +import asyncio +from pipecat.services.speechmatics import SpeechmaticsSTTService +from pipecat.language_configs.language import Language + +async def main(): + # Initialize Speechmatics STT + stt = SpeechmaticsSTTService( + api_key=os.getenv("SPEECHMATICS_API_KEY"), + params=SpeechmaticsSTTService.InputParams( + language=Language.EN, + enable_diarization=True + ) + ) + + # Example audio processing + async def process_audio(): + # In a real app, this would be your audio stream + # For demo, we'll simulate a simple audio source + audio_chunks = [b"fake_audio_chunk_1", b"fake_audio_chunk_2"] + + async for transcript in stt.transcribe(audio_chunks): + speaker = f"Speaker {transcript.speaker}" if transcript.speaker else "Unknown" + print(f"{speaker}: {transcript.text}") + + await process_audio() + +if __name__ == "__main__": + asyncio.run(main()) +``` + +## Further reading + +[Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) + +[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) diff --git a/docs/integrations-and-sdks/sdk/sidebar.ts b/docs/integrations-and-sdks/sdk/sidebar.ts new file mode 100644 index 00000000..8fdba9b3 --- /dev/null +++ b/docs/integrations-and-sdks/sdk/sidebar.ts @@ -0,0 +1,18 @@ +export default { + type: "category", + label: "SDK", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations/sdk/sdk-stt", + label: "Overview", +}, +{ + type: "doc", + id: "integrations/sdk/sdk-tts", + label: "Overview", +}, + ], +} as const; \ No newline at end of file diff --git a/docs/integrations/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts similarity index 56% rename from docs/integrations/sidebar.ts rename to docs/integrations-and-sdks/sidebar.ts index d1ff07dc..f9985f09 100644 --- a/docs/integrations/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -7,16 +7,25 @@ export default { type: "generated-index", }, items: [ - // docs/integrations/sidebar.ts - { +{ type: "doc", label: "Overview", id: "integrations/integrations-overview", }, { type: "doc", - label: "Vapi", - id: "integrations/vapi/integrations-vapi-vapi", + label: "LiveKit", + id: "integrations/integrations-livekit", +}, +{ + type: "doc", + label: "Pipecat", + id: "integrations/integrations-pipecat", }, +{ + type: "doc", + label: "Vapi", + id: "integrations/integrations-vapi", +}, ], -} as const; \ No newline at end of file +} as const; diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx new file mode 100644 index 00000000..487d75ff --- /dev/null +++ b/docs/integrations-and-sdks/vapi.mdx @@ -0,0 +1,62 @@ +--- +id: integrations-vapi +description: Learn how to integrate Speechmatics STT with Vapi. +--- + +import CodeBlock from '@theme/CodeBlock'; + +# Vapi + +Vapi offers native integration with Speechmatics for real-time, highly accurate speech-to-text in AI voice agents. This integration is designed to handle real-world conversation complexities like background noise, diverse accents, and multiple speakers. + +Vapi is perfect for: + +- **Customer Service & Contact Centers**: Automating customer interactions with AI agents that can accurately understand and respond to diverse accents, background noise, and industry-specific jargon, leading to better customer experiences and call routing. +- **Healthcare & Medical**: Building agents for tasks like appointment booking, patient triage, and clinical note-taking (ambient AI) where precise transcription of medical terminology is critical for compliance and efficiency. +- **Multi-Lingual Communication**: Developing global voice agents that can operate in over 55 languages, automatically detecting the language spoken and providing accurate transcription and translation. +- **Meeting & Interview Platforms**: Creating AI assistants that can accurately transcribe multi-speaker conversations in real-time and identify who said what, providing full context for downstream tools and automated summaries. +- **Educational Tools**: Implementing interactive study partners that can quiz students, elaborate on topics, and provide immediate feedback through natural voice interactions. + +## Features + +- **Native Availability**: Speechmatics is a natively available transcriber option within the Vapi platform, simplifying the setup process for developers. +- **High Accuracy & Low Latency**: The integration provides an accurate and low-latency input layer, crucial for natural, real-time conversations with AI agents. +- **Speaker Diarization**: Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. +- **Flexible Deployment**: Speechmatics STT is available in Vapi's managed platform. + +## Quickstart + +### Requirements +- Vapi >= 1.2 +- Speechmatics Account (https://portal.speechmatics.com) + +### UI Integration + +The Vapi UI provides a simple way to integrate Speechmatics STT into your voice AI agent. + +1. Navigate to assistants tab in the Vapi dashboard. +2. Choose an existing assistant or create a new one. +3. Access the transcriber tab or scroll down to the transcriber module settings. +4. Select Speechmatics in the provider dropdown menu. + +### Python SDK +```python +from vapi import Vapi + +client = Vapi(token="YOUR_VAPI_API_KEY") + +assistant = client.assistants.create( + name="Support Agent", + transcriber={ + "provider": "speechmatics", + "model": "enhanced", + "language": "en" + }, +) +``` + +### Best Practices + +- **Operating Point** Select the enhanced model for the best accuracy in real-time voice agents. +- **Region** Choose the region closest to your users to optimize latency. +- **Custom Vocabulary** Use this feature to add key terms (e.g., product names) and leverage the sounds-like option for tricky pronunciations. \ No newline at end of file diff --git a/docs/integrations/index.mdx b/docs/integrations/index.mdx deleted file mode 100644 index 4a56348c..00000000 --- a/docs/integrations/index.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: integrations-overview -description: Learn how to integrate Speechmatics STT with voice AI applications. ---- - -import { LinkCard } from "@site/src/theme/LinkCard"; -import { Flex, Grid } from "@radix-ui/themes"; -import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; - -# Speechmatics Integrations - -Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. By ensuring the "ears" of your AI are industry-leading, you solve the most common failure point in voice bots: misunderstanding the user. - -## Explore integrations - - - } - href="/integrations/vapi/" - /> - } - href="/integrations/livekit/" - /> - } - href="/integrations/pipecat/" - /> - - -## Benefits -Speechmatics is built for real-world application, handling the nuances of natural human conversation. -### Unmatched Accuracy -Speechmatics is the most accurate real-time speech-to-text engine, delivering final transcripts in under one second without compromising accuracy. This balance of speed and precision is critical for voice agents that need to respond naturally to users while keeping the conversation flow intact. - -### Noise Robustness using VAD -Speechmatics STT uses VAD (Voice Activity Detection) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. - -### Global Accent & Dialect Support -With a single language pack (e.g., Global English), Speechmatics STT understands diverse accents without needing regional configuration. It supports 50+ languages globally. - -### Low Latency for Real-Time Transcription -Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. - -### Contextual Precision -Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. - diff --git a/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx b/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx deleted file mode 100644 index ee642a9e..00000000 --- a/docs/integrations/pipecat/pipecat-speechmatics-stt-plugin-guide.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: integrations-pipecat-speechmatics-stt-plugin-guide -description: How to integrate Speechmatics STT with Pipecat for real-time speech transcription. ---- - -## Getting started - -### Requirements -- Python 3.10 or later -- uv package manager installed -- Pipecat >= 1.2 -- Speechmatics Account (https://portal.speechmatics.com) - -### Installation - -Install the SpeechmaticsSTTService from PyPl: - -```bash -pip install "pipecat-ai[speechmatics]" -``` - -### Authentication - -The SpeechmaticsSTTService requires an API key. -You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). - -### Required environment variable: - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` - -### Usage - -```python -import os -import asyncio -from pipecat.services.speechmatics import SpeechmaticsSTTService -from pipecat.language_configs.language import Language - -async def main(): - # Initialize Speechmatics STT - stt = SpeechmaticsSTTService( - api_key=os.getenv("SPEECHMATICS_API_KEY"), - params=SpeechmaticsSTTService.InputParams( - language=Language.EN, - enable_diarization=True - ) - ) - - # Example audio processing - async def process_audio(): - # In a real app, this would be your audio stream - # For demo, we'll simulate a simple audio source - audio_chunks = [b"fake_audio_chunk_1", b"fake_audio_chunk_2"] - - async for transcript in stt.transcribe(audio_chunks): - speaker = f"Speaker {transcript.speaker}" if transcript.speaker else "Unknown" - print(f"{speaker}: {transcript.text}") - - await process_audio() - -if __name__ == "__main__": - asyncio.run(main()) -``` diff --git a/docs/integrations/pipecat/pipecat.mdx b/docs/integrations/pipecat/pipecat.mdx deleted file mode 100644 index ec559b04..00000000 --- a/docs/integrations/pipecat/pipecat.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: integrations-pipecat-pipecat -description: Learn how to integrate Speechmatics STT with Pipecat. ---- - -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Pipecat - -Pipecat is an open-source framework for building real-time voice and multimodal conversational agents. It orchestrates audio and video input/output, speech-to-text, large language models, and text-to-speech into a single, unified pipeline. - -SpeechmaticsSTTService enables real-time speech transcription using Speechmatics’ WebSocket API with partial and final results, speaker diarization, and end of utterance detection (VAD) for comprehensive conversation analysis. -When integrated with Pipecat, you can build real-time voice and multimodal conversational agents specifically tailored to your use case. - -## Quickstart - -### Use cases - -Pipecat is perfect for: - -- **Voice AI**: Voice assistants, chatbots, and IVR systems -- **Translation**: Realtime translation of live events or media -- **Accessibility applications**: Screen readers and assistive technologies -- **Content creation**: Podcasts, dubbing, audiobooks, and voice-overs -- **Media production**: News broadcasts and automated announcements - -## Further reading - -[Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) - -[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) diff --git a/docs/integrations/vapi/vapi.mdx b/docs/integrations/vapi/vapi.mdx deleted file mode 100644 index 366ab0ea..00000000 --- a/docs/integrations/vapi/vapi.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: integrations-vapi-vapi -description: Learn how to integrate Speechmatics STT with Vapi. ---- - -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Vapi - -Vapi offers native integration with Speechmatics for real-time, highly accurate Speech-to-Text (STT) capabilities in AI voice agents. This integration is designed to handle real-world conversation complexities like background noise, diverse accents, and multiple speakers. - -## Key Features - -### Native Availability: -Speechmatics is a natively available transcriber option within the Vapi platform, simplifying the setup process for developers. - -### High Accuracy & Low Latency: -The integration provides an accurate and low-latency input layer, crucial for natural, real-time conversations with AI agents. - -### Speaker Diarization: -Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. - -### Flexible Deployment: -Speechmatics STT is available in Vapi's managed platform. - - -## Quickstart - -### Requirements -- Vapi >= 1.2 -- Speechmatics Account (https://portal.speechmatics.com) - -### UI Integration - -The Vapi UI provides a simple way to integrate Speechmatics STT into your voice AI agent. - -1. Navigate to assistants tab in the Vapi dashboard. -2. Choose an existing assistant or create a new one. -3. Access the transcriber tab or scroll down to the transcriber module settings. -4. Select Speechmatics in the provider dropdown menu. - -### Best Practices - -#### Operating Point -Select the enhanced model for the best accuracy in real-time voice agents. - -#### Region -Choose the region closest to your users to optimize latency. - -#### Custom Vocabulary -Use this feature to add key terms (e.g., product names) and leverage the sounds-like option for tricky pronunciations. \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index 7d75b29a..308d13c5 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -4,7 +4,7 @@ import gettingStartedSidebar from "./docs/get-started/sidebar"; import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; -import integrationsSidebar from "./docs/integrations/sidebar"; +import integrationsSidebar from "./docs/integrations-and-sdks/sidebar"; export default { From 3831cbffe06e9f333f0856dd25fcf2748e1346ab Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 12:34:44 +0000 Subject: [PATCH 045/114] added sdk dropdown under integrations --- docs/integrations-and-sdks/sdks/sidebar.ts | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 docs/integrations-and-sdks/sdks/sidebar.ts diff --git a/docs/integrations-and-sdks/sdks/sidebar.ts b/docs/integrations-and-sdks/sdks/sidebar.ts new file mode 100644 index 00000000..3daf6c74 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/sidebar.ts @@ -0,0 +1,29 @@ +export default { + type: "category", + label: "SDKs", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + label: "Overview", + id: "integrations-and-sdks/sdks/overview", +}, +{ + type: "doc", + label: "Speech-to-Text SDK", + id: "integrations-and-sdks/sdks/sdk-stt", +}, + +{ + type: "doc", + label: "Text-to-Speech SDK", + id: "integrations-and-sdks/sdks/sdk-tts", +}, +{ + type: "doc", + label: "Voice SDK", + id: "integrations-and-sdks/sdks/voice-sdk", +}, +], +} as const; \ No newline at end of file From eb6f6b3ce0f87c7c997018feaa3a0a1750342235 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 12:35:10 +0000 Subject: [PATCH 046/114] added batch python sdk --- .../sdks/stt-sdk/batch-sdk.mdx | 0 .../sdks/stt-sdk/python/batch-stt-python.mdx | 268 ++++++++++++++++++ 2 files changed, 268 insertions(+) create mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx create mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx new file mode 100644 index 00000000..e69de29b diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx new file mode 100644 index 00000000..64da638d --- /dev/null +++ b/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx @@ -0,0 +1,268 @@ +--- +id: integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python +description: Learn how to use the Speechmatics Batch API Client in Python +--- + +# Speechmatics Batch API Client + +[![PyPI](https://img.shields.io/pypi/v/speechmatics-batch)](https://pypi.org/project/speechmatics-batch/) +![PythonSupport](https://img.shields.io/badge/Python-3.9%2B-green) + + +**Async Python client for Speechmatics Batch API.** + +## Installation +```bash +pip install speechmatics-batch +``` + +## Environment Variables +The client supports the following environment variables: + +- `SPEECHMATICS_API_KEY`: Your Speechmatics API key +- `SPEECHMATICS_BATCH_URL`: Custom API endpoint URL (optional) + +## Usage + +### Quickstart + +```python +import asyncio +from speechmatics.batch import AsyncClient + +async def main(): + # Create a client using environment variable SPEECHMATICS_API_KEY + async with AsyncClient() as client: + # Simple transcription + result = await client.transcribe("audio.wav") + print(result.transcript_text) + +asyncio.run(main()) +``` + +## JWT Authentication + +For enhanced security, use temporary JWT tokens instead of static API keys. +JWTs are short-lived (60 seconds default) and automatically refreshed: + +```python +from speechmatics.batch import AsyncClient, JWTAuth + +auth = JWTAuth("your-api-key", ttl=60) + +async with AsyncClient(auth=auth) as client: + # Tokens are cached and auto-refreshed automatically + result = await client.transcribe("audio.wav") + print(result.transcript_text) +``` + +Ideal for long-running applications or when minimizing API key exposure. +See the [authentication documentation](https://docs.speechmatics.com/introduction/authentication) for more details. + +### Basic Job Workflow + +```python +import asyncio +from speechmatics.batch import AsyncClient, JobConfig, JobType, TranscriptionConfig + +async def main(): + # Create client with explicit API key + async with AsyncClient(api_key="your-api-key") as client: + + # Configure transcription + config = JobConfig( + type=JobType.TRANSCRIPTION, + transcription_config=TranscriptionConfig( + language="en", + enable_entities=True, + diarization="speaker" + ) + ) + + # Submit job + job = await client.submit_job("audio.wav", config=config) + print(f"Job submitted: {job.id}") + + # Wait for completion + result = await client.wait_for_completion( + job.id, + polling_interval=2.0, + timeout=300.0 + ) + + # Access results + print(f"Transcript: {result.transcript_text}") + print(f"Confidence: {result.confidence}") + +asyncio.run(main()) +``` + +### Advanced Configuration + +```python +import asyncio +from speechmatics.batch import ( + AsyncClient, + JobConfig, + JobType, + OperatingPoint, + TranscriptionConfig, + TranslationConfig, + SummarizationConfig +) + +async def main(): + async with AsyncClient(api_key="your-api-key") as client: + + # Advanced job configuration + config = JobConfig( + type=JobType.TRANSCRIPTION, + transcription_config=TranscriptionConfig( + language="en", + operating_point=OperatingPoint.ENHANCED, + enable_entities=True, + diarization="speaker", + ), + translation_config=TranslationConfig(target_languages=["es", "fr"]), + summarization_config=SummarizationConfig( + content_type="conversational", summary_length="brief" + ), + ) + + result = await client.transcribe("audio.wav", config=config) + + # Access advanced features + if result.summary: + print(f"Summary: {result.summary}") + if result.translations: + print(f"Translations: {result.translations}") + +asyncio.run(main()) +``` + +### Manual Job Management + +```python +import asyncio +from speechmatics.batch import AsyncClient, JobStatus + +async def main(): + async with AsyncClient() as client: + + # Submit job + job = await client.submit_job("audio.wav") + + # Check job status + job_details = await client.get_job_info(job.id) + print(f"Status: {job_details.status}") + + # Wait for completion manually + while job_details.status == JobStatus.RUNNING: + await asyncio.sleep(5) + job_details = await client.get_job_info(job.id) + + if job_details.status == JobStatus.DONE: + # Get transcript + transcript = await client.get_transcript(job.id) + print(transcript.transcript_text) + else: + print(f"Job failed with status: {job_details.status}") + +asyncio.run(main()) +``` + +### Different Output Formats + +```python +import asyncio +from speechmatics.batch import AsyncClient, FormatType + +async def main(): + async with AsyncClient() as client: + job = await client.submit_job("audio.wav") + + # Get JSON format (default) + json_result = await client.get_transcript(job.id, format_type=FormatType.JSON) + print(json_result.transcript_text) + + # Get plain text + txt_result = await client.get_transcript(job.id, format_type=FormatType.TXT) + print(txt_result) + + # Get SRT subtitles + srt_result = await client.get_transcript(job.id, format_type=FormatType.SRT) + print(srt_result) + +asyncio.run(main()) +``` + +### Error Handling + +```python +import asyncio +from speechmatics.batch import ( + AsyncClient, + BatchError, + AuthenticationError, + JobError, + TimeoutError +) + +async def main(): + try: + async with AsyncClient() as client: + result = await client.transcribe("audio.wav", timeout=120.0) + print(result.transcript_text) + + except AuthenticationError: + print("Invalid API key") + except BatchError as e: + print(f"Job submission failed: {e}") + except JobError as e: + print(f"Job processing failed: {e}") + except TimeoutError as e: + print(f"Job timed out: {e}") + except FileNotFoundError: + print("Audio file not found") + +asyncio.run(main()) +``` + +### Connection Configuration + +```python +import asyncio +from speechmatics.batch import AsyncClient, ConnectionConfig + +async def main(): + # Custom connection settings + config = ConnectionConfig( + url="https://asr.api.speechmatics.com/v2", + api_key="your-api-key", + connect_timeout=30.0, + operation_timeout=600.0 + ) + + async with AsyncClient(conn_config=config) as client: + result = await client.transcribe("audio.wav") + print(result.transcript_text) + +asyncio.run(main()) +``` + +## Logging + +The client supports logging with job id tracing for debugging. To increase logging verbosity, set `DEBUG` level in your example code: + +```python +import logging +import sys + +logging.basicConfig( + level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(sys.stdout) + ] +) +``` \ No newline at end of file From 768fb49c59f4cf89c1da681f497d9cdc7daf8cc0 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 12:35:28 +0000 Subject: [PATCH 047/114] added rt python sdk --- .../sdks/stt-sdk/python/rt-stt-python.mdx | 117 ++++++++++++++++++ .../sdks/stt-sdk/rt-stt-sdk.mdx | 35 ++++++ 2 files changed, 152 insertions(+) create mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx create mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx new file mode 100644 index 00000000..1a3179d9 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx @@ -0,0 +1,117 @@ +--- +id: integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python +description: Learn how to use the Speechmatics Real-time API Client in Python +--- + +# Speechmatics Real-time API Client in Python + +## Installation +```bash +pip install speechmatics-rt +``` + +## Environment Variables +The client supports the following environment variables: + +- `SPEECHMATICS_API_KEY`: Your Speechmatics API key +- `SPEECHMATICS_RT_URL`: Custom API endpoint URL (optional) + +## Usage + +### Quick Start + +```python +import asyncio +from speechmatics.rt import AsyncClient, ServerMessageType + + +async def main(): + # Create a client using environment variable SPEECHMATICS_API_KEY + async with AsyncClient() as client: + # Register event handlers + @client.on(ServerMessageType.ADD_TRANSCRIPT) + def handle_final_transcript(msg): + print(f"Final: {msg['metadata']['transcript']}") + + # Transcribe audio file + with open("audio.wav", "rb") as audio_file: + await client.transcribe(audio_file) + +# Run the async function +asyncio.run(main()) +``` + +### Multi-Channel Transcription + +```python +import asyncio +from speechmatics.rt import AsyncMultiChannelClient, ServerMessageType, TranscriptionConfig + +async def main(): + # Prepare multiple audio sources + sources = { + "left": open("left.wav", "rb"), + "right": open("right.wav", "rb"), + } + + try: + async with AsyncMultiChannelClient() as client: + # Handle transcripts with channel identification + @client.on(ServerMessageType.ADD_TRANSCRIPT) + def handle_transcript(msg): + channel = msg["results"][0]["channel"] + transcript = msg["metadata"]["transcript"] + print(f"[{channel}]: {transcript}") + + # Start multi-channel transcription + await client.transcribe( + sources, + transcription_config=TranscriptionConfig( + language="en", + diarization="channel", + channel_diarization_labels=list(sources.keys()), + ) + ) + finally: + # Ensure all files are closed + for source in sources.values(): + source.close() + +asyncio.run(main()) +``` + +## JWT Authentication + +For enhanced security, use temporary JWT tokens instead of static API keys. +JWTs are short-lived (60 seconds by default). + +```python +from speechmatics.rt import AsyncClient, JWTAuth + +# Create JWT auth (requires: pip install 'speechmatics-rt[jwt]') +auth = JWTAuth("your-api-key", ttl=60) + +async with AsyncClient(auth=auth) as client: + pass +``` + +Ideal for browser applications or when minimizing API key exposure. +See the [authentication documentation](https://docs.speechmatics.com/introduction/authentication) for more details. + +## Logging + +The client supports logging with job id tracing for debugging. +To increase logging verbosity, set `DEBUG` level in your example code: + +```python +import logging +import sys + +logging.basicConfig( + level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(sys.stdout) + ] +) +``` diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx new file mode 100644 index 00000000..f4dfa416 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx @@ -0,0 +1,35 @@ +--- +title: Realtime STT SDK +pagination_prev: "integrations-and-sdks/sdks/overview" +pagination_next: "integrations-and-sdks/sdks/text-to-speech" +description: Learn how to use the Speechmatics Realtime STT SDK +--- + +## Realtime STT SDK + +The Speechmatics real-time STT SDK offers a straightforward and efficient method for integrating an STT service into applications, enabling the transcription of audio input in real-time. +It provides features such as speaker diarization, turn detection, noise robustness, and global accent support. + +### Developer quickstart +#### Python + +Grid columns={{initial: "1", md: "2", lg: "3"}} gap="3"> + } + href="/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk/rt-stt-sdk-python" + /> + } + href="/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk/rt-stt-sdk-javascript" + /> + } + href="/integrations-and-sdks/integrations-and-sdks-pipecat" + /> + \ No newline at end of file From 5010e21dd53c72b7df9bdbbdc69dfc38d00e9cd7 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 16:31:55 +0000 Subject: [PATCH 048/114] Updated file paths and IDs to use 'integrations-and-sdks' naming convention, added Custom Dictionary link, and reorganized SDK documentation structure --- docs/integrations-and-sdks/index.mdx | 10 +- docs/integrations-and-sdks/livekit.mdx | 4 +- docs/integrations-and-sdks/pipecat.mdx | 4 +- docs/integrations-and-sdks/sdk/sidebar.ts | 18 -- docs/integrations-and-sdks/sdks/index.mdx | 55 ++++ docs/integrations-and-sdks/sdks/sidebar.ts | 29 -- .../sdks/stt-sdk/batch-sdk.mdx | 0 .../sdks/stt-sdk/index.mdx | 59 ++++ .../sdks/stt-sdk/python/batch-stt-python.mdx | 268 ------------------ .../sdks/stt-sdk/python/rt-stt-python.mdx | 117 -------- .../sdks/stt-sdk/rt-stt-sdk.mdx | 35 --- .../sdks/tts-sdk/index.mdx | 28 ++ docs/integrations-and-sdks/sidebar.ts | 67 +++-- docs/integrations-and-sdks/vapi.mdx | 2 +- sidebars.ts | 4 +- 15 files changed, 195 insertions(+), 505 deletions(-) delete mode 100644 docs/integrations-and-sdks/sdk/sidebar.ts create mode 100644 docs/integrations-and-sdks/sdks/index.mdx delete mode 100644 docs/integrations-and-sdks/sdks/sidebar.ts delete mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx create mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/index.mdx delete mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx delete mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx delete mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx create mode 100644 docs/integrations-and-sdks/sdks/tts-sdk/index.mdx diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index fd649609..83e280e7 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,5 +1,5 @@ --- -id: integrations-overview +id: integrations-and-sdks-overview description: Learn how to integrate Speechmatics STT with voice AI applications. --- @@ -18,19 +18,19 @@ Integrating Speechmatics as your speech-to-text (STT) engine provides a foundati title="Vapi" description="Real-time transcription for voice AI in vapi" icon={} - href="/integrations/integrations-vapi" + href="/integrations-and-sdks/integrations-and-sdks-vapi" /> } - href="/integrations/integrations-livekit" + href="/integrations-and-sdks/integrations-and-sdks-livekit" /> } - href="/integrations/integrations-pipecat" + href="/integrations-and-sdks/integrations-and-sdks-pipecat" /> @@ -51,4 +51,4 @@ Speechmatics is built for real-world application, handling the nuances of natura - Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. **Contextual Precision**: -- Features like Custom Dictionary allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file +- Features like [Custom Dictionary](/speech-to-text/features/custom-dictionary) allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file diff --git a/docs/integrations-and-sdks/livekit.mdx b/docs/integrations-and-sdks/livekit.mdx index cddf0eb0..b4e668d8 100644 --- a/docs/integrations-and-sdks/livekit.mdx +++ b/docs/integrations-and-sdks/livekit.mdx @@ -1,5 +1,5 @@ --- -id: integrations-livekit +id: integrations-and-sdks-livekit description: Learn how to integrate Speechmatics STT with LiveKit Agents. --- @@ -83,4 +83,4 @@ async def run_agent(room): if __name__ == "__main__": cli.run_app(run_agent) -``` +``` \ No newline at end of file diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx index 341151e5..ec195244 100644 --- a/docs/integrations-and-sdks/pipecat.mdx +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -1,5 +1,5 @@ --- -id: integrations-pipecat +id: integrations-and-sdks-pipecat description: Learn how to integrate Speechmatics STT with Pipecat. --- @@ -89,4 +89,4 @@ if __name__ == "__main__": [Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) -[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) +[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdk/sidebar.ts b/docs/integrations-and-sdks/sdk/sidebar.ts deleted file mode 100644 index 8fdba9b3..00000000 --- a/docs/integrations-and-sdks/sdk/sidebar.ts +++ /dev/null @@ -1,18 +0,0 @@ -export default { - type: "category", - label: "SDK", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations/sdk/sdk-stt", - label: "Overview", -}, -{ - type: "doc", - id: "integrations/sdk/sdk-tts", - label: "Overview", -}, - ], -} as const; \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx new file mode 100644 index 00000000..9dca6054 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -0,0 +1,55 @@ +--- +title: SDKs +description: Learn how to use the Speechmatics SDKs +--- + +Speechmatics SDKs provide a simple and efficient way to integrate an STT or TTS service into applications. +It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. + +### Developer Quickstart + +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Flex, Grid } from "@radix-ui/themes"; +import { + ChevronsRightIcon, + FileAudio, + Languages, + Tags, + Globe, + BookPlus, + Speech, + ChartLine, +} from "lucide-react"; + +Use speech to text to transcribe using one of the modes: +- [Realtime processing](#realtime-processing): Stream audio from an input device or file and receive instant updates of the transcription as it happens +- [Batch processing](#batch-processing): Submit an audio file and receive a complete text transcription once the processing is finished +- [Text to speech](#text-to-speech): Convert text to speech and stream the audio to an output device or file + +## Developer quickstart + + + } + direction="column" + title="Transcribe in real-time" + description="Instantly convert streaming audio to text with Realtime processing" + href="/speech-to-text/realtime/quickstart" + /> + + } + direction="column" + title="Transcribe a file" + description="Submit an audio file and receive a complete text transcription once the processing is finished" + href="/speech-to-text/batch/quickstart" + /> + + } + direction="column" + title="Text to speech" + description="Submit an audio file and receive a complete text transcription once the processing is finished" + href="/integrations-and-sdks/sdks/tts-sdk" + /> + diff --git a/docs/integrations-and-sdks/sdks/sidebar.ts b/docs/integrations-and-sdks/sdks/sidebar.ts deleted file mode 100644 index 3daf6c74..00000000 --- a/docs/integrations-and-sdks/sdks/sidebar.ts +++ /dev/null @@ -1,29 +0,0 @@ -export default { - type: "category", - label: "SDKs", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - label: "Overview", - id: "integrations-and-sdks/sdks/overview", -}, -{ - type: "doc", - label: "Speech-to-Text SDK", - id: "integrations-and-sdks/sdks/sdk-stt", -}, - -{ - type: "doc", - label: "Text-to-Speech SDK", - id: "integrations-and-sdks/sdks/sdk-tts", -}, -{ - type: "doc", - label: "Voice SDK", - id: "integrations-and-sdks/sdks/voice-sdk", -}, -], -} as const; \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/batch-sdk.mdx deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx new file mode 100644 index 00000000..7d1fc8b3 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx @@ -0,0 +1,59 @@ +--- +title: Speech to text SDK Overview +description: Learn how to use the Speechmatics STT SDK +--- +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Flex, Grid } from "@radix-ui/themes"; +import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; + +## Speech to Text SDKs + +The Speechmatics speech-to-text SDKs provide a simple and efficient way to integrate an STT service into applications. +It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. + +**Real-time STT**: The real-time STT SDK allows you to transcribe audio in real-time, enabling you to respond to user input in real-time. + +**Batch STT**: The batch STT SDK allows you to transcribe audio files in batches, enabling you to transcribe large amounts of audio in a single request. + +**Other Programming Languages**: The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and Rust. + +### Explore our SDKs for Speech to Text transcription + + + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" + /> + + + + + +} + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + /> + } + href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" + /> + } + href="https://github.com/speechmatics/speechmatics-rust-sdk" + /> + + diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx deleted file mode 100644 index 64da638d..00000000 --- a/docs/integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python.mdx +++ /dev/null @@ -1,268 +0,0 @@ ---- -id: integrations-and-sdks/sdks/stt-sdk/python/batch-stt-python -description: Learn how to use the Speechmatics Batch API Client in Python ---- - -# Speechmatics Batch API Client - -[![PyPI](https://img.shields.io/pypi/v/speechmatics-batch)](https://pypi.org/project/speechmatics-batch/) -![PythonSupport](https://img.shields.io/badge/Python-3.9%2B-green) - - -**Async Python client for Speechmatics Batch API.** - -## Installation -```bash -pip install speechmatics-batch -``` - -## Environment Variables -The client supports the following environment variables: - -- `SPEECHMATICS_API_KEY`: Your Speechmatics API key -- `SPEECHMATICS_BATCH_URL`: Custom API endpoint URL (optional) - -## Usage - -### Quickstart - -```python -import asyncio -from speechmatics.batch import AsyncClient - -async def main(): - # Create a client using environment variable SPEECHMATICS_API_KEY - async with AsyncClient() as client: - # Simple transcription - result = await client.transcribe("audio.wav") - print(result.transcript_text) - -asyncio.run(main()) -``` - -## JWT Authentication - -For enhanced security, use temporary JWT tokens instead of static API keys. -JWTs are short-lived (60 seconds default) and automatically refreshed: - -```python -from speechmatics.batch import AsyncClient, JWTAuth - -auth = JWTAuth("your-api-key", ttl=60) - -async with AsyncClient(auth=auth) as client: - # Tokens are cached and auto-refreshed automatically - result = await client.transcribe("audio.wav") - print(result.transcript_text) -``` - -Ideal for long-running applications or when minimizing API key exposure. -See the [authentication documentation](https://docs.speechmatics.com/introduction/authentication) for more details. - -### Basic Job Workflow - -```python -import asyncio -from speechmatics.batch import AsyncClient, JobConfig, JobType, TranscriptionConfig - -async def main(): - # Create client with explicit API key - async with AsyncClient(api_key="your-api-key") as client: - - # Configure transcription - config = JobConfig( - type=JobType.TRANSCRIPTION, - transcription_config=TranscriptionConfig( - language="en", - enable_entities=True, - diarization="speaker" - ) - ) - - # Submit job - job = await client.submit_job("audio.wav", config=config) - print(f"Job submitted: {job.id}") - - # Wait for completion - result = await client.wait_for_completion( - job.id, - polling_interval=2.0, - timeout=300.0 - ) - - # Access results - print(f"Transcript: {result.transcript_text}") - print(f"Confidence: {result.confidence}") - -asyncio.run(main()) -``` - -### Advanced Configuration - -```python -import asyncio -from speechmatics.batch import ( - AsyncClient, - JobConfig, - JobType, - OperatingPoint, - TranscriptionConfig, - TranslationConfig, - SummarizationConfig -) - -async def main(): - async with AsyncClient(api_key="your-api-key") as client: - - # Advanced job configuration - config = JobConfig( - type=JobType.TRANSCRIPTION, - transcription_config=TranscriptionConfig( - language="en", - operating_point=OperatingPoint.ENHANCED, - enable_entities=True, - diarization="speaker", - ), - translation_config=TranslationConfig(target_languages=["es", "fr"]), - summarization_config=SummarizationConfig( - content_type="conversational", summary_length="brief" - ), - ) - - result = await client.transcribe("audio.wav", config=config) - - # Access advanced features - if result.summary: - print(f"Summary: {result.summary}") - if result.translations: - print(f"Translations: {result.translations}") - -asyncio.run(main()) -``` - -### Manual Job Management - -```python -import asyncio -from speechmatics.batch import AsyncClient, JobStatus - -async def main(): - async with AsyncClient() as client: - - # Submit job - job = await client.submit_job("audio.wav") - - # Check job status - job_details = await client.get_job_info(job.id) - print(f"Status: {job_details.status}") - - # Wait for completion manually - while job_details.status == JobStatus.RUNNING: - await asyncio.sleep(5) - job_details = await client.get_job_info(job.id) - - if job_details.status == JobStatus.DONE: - # Get transcript - transcript = await client.get_transcript(job.id) - print(transcript.transcript_text) - else: - print(f"Job failed with status: {job_details.status}") - -asyncio.run(main()) -``` - -### Different Output Formats - -```python -import asyncio -from speechmatics.batch import AsyncClient, FormatType - -async def main(): - async with AsyncClient() as client: - job = await client.submit_job("audio.wav") - - # Get JSON format (default) - json_result = await client.get_transcript(job.id, format_type=FormatType.JSON) - print(json_result.transcript_text) - - # Get plain text - txt_result = await client.get_transcript(job.id, format_type=FormatType.TXT) - print(txt_result) - - # Get SRT subtitles - srt_result = await client.get_transcript(job.id, format_type=FormatType.SRT) - print(srt_result) - -asyncio.run(main()) -``` - -### Error Handling - -```python -import asyncio -from speechmatics.batch import ( - AsyncClient, - BatchError, - AuthenticationError, - JobError, - TimeoutError -) - -async def main(): - try: - async with AsyncClient() as client: - result = await client.transcribe("audio.wav", timeout=120.0) - print(result.transcript_text) - - except AuthenticationError: - print("Invalid API key") - except BatchError as e: - print(f"Job submission failed: {e}") - except JobError as e: - print(f"Job processing failed: {e}") - except TimeoutError as e: - print(f"Job timed out: {e}") - except FileNotFoundError: - print("Audio file not found") - -asyncio.run(main()) -``` - -### Connection Configuration - -```python -import asyncio -from speechmatics.batch import AsyncClient, ConnectionConfig - -async def main(): - # Custom connection settings - config = ConnectionConfig( - url="https://asr.api.speechmatics.com/v2", - api_key="your-api-key", - connect_timeout=30.0, - operation_timeout=600.0 - ) - - async with AsyncClient(conn_config=config) as client: - result = await client.transcribe("audio.wav") - print(result.transcript_text) - -asyncio.run(main()) -``` - -## Logging - -The client supports logging with job id tracing for debugging. To increase logging verbosity, set `DEBUG` level in your example code: - -```python -import logging -import sys - -logging.basicConfig( - level=logging.DEBUG, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - handlers=[ - logging.StreamHandler(sys.stdout) - ] -) -``` \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx deleted file mode 100644 index 1a3179d9..00000000 --- a/docs/integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -id: integrations-and-sdks/sdks/stt-sdk/python/rt-stt-python -description: Learn how to use the Speechmatics Real-time API Client in Python ---- - -# Speechmatics Real-time API Client in Python - -## Installation -```bash -pip install speechmatics-rt -``` - -## Environment Variables -The client supports the following environment variables: - -- `SPEECHMATICS_API_KEY`: Your Speechmatics API key -- `SPEECHMATICS_RT_URL`: Custom API endpoint URL (optional) - -## Usage - -### Quick Start - -```python -import asyncio -from speechmatics.rt import AsyncClient, ServerMessageType - - -async def main(): - # Create a client using environment variable SPEECHMATICS_API_KEY - async with AsyncClient() as client: - # Register event handlers - @client.on(ServerMessageType.ADD_TRANSCRIPT) - def handle_final_transcript(msg): - print(f"Final: {msg['metadata']['transcript']}") - - # Transcribe audio file - with open("audio.wav", "rb") as audio_file: - await client.transcribe(audio_file) - -# Run the async function -asyncio.run(main()) -``` - -### Multi-Channel Transcription - -```python -import asyncio -from speechmatics.rt import AsyncMultiChannelClient, ServerMessageType, TranscriptionConfig - -async def main(): - # Prepare multiple audio sources - sources = { - "left": open("left.wav", "rb"), - "right": open("right.wav", "rb"), - } - - try: - async with AsyncMultiChannelClient() as client: - # Handle transcripts with channel identification - @client.on(ServerMessageType.ADD_TRANSCRIPT) - def handle_transcript(msg): - channel = msg["results"][0]["channel"] - transcript = msg["metadata"]["transcript"] - print(f"[{channel}]: {transcript}") - - # Start multi-channel transcription - await client.transcribe( - sources, - transcription_config=TranscriptionConfig( - language="en", - diarization="channel", - channel_diarization_labels=list(sources.keys()), - ) - ) - finally: - # Ensure all files are closed - for source in sources.values(): - source.close() - -asyncio.run(main()) -``` - -## JWT Authentication - -For enhanced security, use temporary JWT tokens instead of static API keys. -JWTs are short-lived (60 seconds by default). - -```python -from speechmatics.rt import AsyncClient, JWTAuth - -# Create JWT auth (requires: pip install 'speechmatics-rt[jwt]') -auth = JWTAuth("your-api-key", ttl=60) - -async with AsyncClient(auth=auth) as client: - pass -``` - -Ideal for browser applications or when minimizing API key exposure. -See the [authentication documentation](https://docs.speechmatics.com/introduction/authentication) for more details. - -## Logging - -The client supports logging with job id tracing for debugging. -To increase logging verbosity, set `DEBUG` level in your example code: - -```python -import logging -import sys - -logging.basicConfig( - level=logging.DEBUG, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - handlers=[ - logging.StreamHandler(sys.stdout) - ] -) -``` diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx deleted file mode 100644 index f4dfa416..00000000 --- a/docs/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Realtime STT SDK -pagination_prev: "integrations-and-sdks/sdks/overview" -pagination_next: "integrations-and-sdks/sdks/text-to-speech" -description: Learn how to use the Speechmatics Realtime STT SDK ---- - -## Realtime STT SDK - -The Speechmatics real-time STT SDK offers a straightforward and efficient method for integrating an STT service into applications, enabling the transcription of audio input in real-time. -It provides features such as speaker diarization, turn detection, noise robustness, and global accent support. - -### Developer quickstart -#### Python - -Grid columns={{initial: "1", md: "2", lg: "3"}} gap="3"> - } - href="/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk/rt-stt-sdk-python" - /> - } - href="/integrations-and-sdks/sdks/stt-sdk/rt-stt-sdk/rt-stt-sdk-javascript" - /> - } - href="/integrations-and-sdks/integrations-and-sdks-pipecat" - /> - \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx new file mode 100644 index 00000000..4976cfb5 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx @@ -0,0 +1,28 @@ +--- +title: Text to speech SDK +id: tts-sdk +description: Learn how to use the Speechmatics TTS SDK +--- + +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Flex, Grid } from "@radix-ui/themes"; +import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; + +## Text to speech SDKs + +The Speechmatics text-to-speech SDK provides a simple and efficient way to integrate a TTS service into applications. +It offers a fast way to convert text to speech and stream the audio to an output device or file, in a voice of your choosing. + +### Experiment with the TTS SDK available in Python: + + + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" + /> + + +Additional TTS SDKs in other programming languages are coming soon! + + diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index f9985f09..147f2bb6 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -1,31 +1,46 @@ export default { type: "category", - label: "Integrations", + label: "Integrations and SDKs", collapsible: false, collapsed: false, - link: { - type: "generated-index", - }, items: [ -{ - type: "doc", - label: "Overview", - id: "integrations/integrations-overview", -}, -{ - type: "doc", - label: "LiveKit", - id: "integrations/integrations-livekit", -}, -{ - type: "doc", - label: "Pipecat", - id: "integrations/integrations-pipecat", -}, -{ - type: "doc", - label: "Vapi", - id: "integrations/integrations-vapi", -}, - ], -} as const; + { + type: "doc", + id: "integrations-and-sdks/integrations-and-sdks-overview", + label: "Overview", + }, + { + type: "doc", + id: "integrations-and-sdks/integrations-and-sdks-vapi", + label: "Vapi", + }, + { + type: "doc", + id: "integrations-and-sdks/integrations-and-sdks-livekit", + label: "LiveKit", + }, + { + type: "doc", + id: "integrations-and-sdks/integrations-and-sdks-pipecat", + label: "Pipecat", + }, + { + type: "category", + label: "SDKs", + collapsible: true, + collapsed: true, + items: [ + { + type: "doc", + id: "integrations-and-sdks/sdks/stt-sdk/index", + label: "STT SDK", + }, + { + type: "doc", + id: "integrations-and-sdks/sdks/tts-sdk/tts-sdk", + label: "TTS SDK", + }, + ], + }, +] +} \ No newline at end of file diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 487d75ff..3691008e 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -1,5 +1,5 @@ --- -id: integrations-vapi +id: integrations-and-sdks-vapi description: Learn how to integrate Speechmatics STT with Vapi. --- diff --git a/sidebars.ts b/sidebars.ts index 308d13c5..2fbf4a4b 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -4,7 +4,7 @@ import gettingStartedSidebar from "./docs/get-started/sidebar"; import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; -import integrationsSidebar from "./docs/integrations-and-sdks/sidebar"; +import integrationsAndSDKSidebar from "./docs/integrations-and-sdks/sidebar"; export default { @@ -14,7 +14,7 @@ export default { textToSpeechSidebar, voiceAgentsFlowSidebar, deploymentsSidebar, - integrationsSidebar, + integrationsAndSDKSidebar, { type: "category", label: "Developer Resources", From b5eeb4ce320940557eb27b550505bc8955c8aa38 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 16:54:06 +0000 Subject: [PATCH 049/114] ux improvement --- docs/integrations-and-sdks/sidebar.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index 147f2bb6..df283a54 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -33,12 +33,12 @@ export default { { type: "doc", id: "integrations-and-sdks/sdks/stt-sdk/index", - label: "STT SDK", + label: "Speech to text SDKs", }, { type: "doc", id: "integrations-and-sdks/sdks/tts-sdk/tts-sdk", - label: "TTS SDK", + label: "Text to speech SDKs", }, ], }, From 7247690fc9ebd92ebb47ac6af46ddb37a6598c79 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 16:56:36 +0000 Subject: [PATCH 050/114] shuffle - improve visibility of integrations --- sidebars.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sidebars.ts b/sidebars.ts index 2fbf4a4b..d9f07dc9 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -12,9 +12,9 @@ export default { gettingStartedSidebar, speechToTextSidebar, textToSpeechSidebar, + integrationsAndSDKSidebar, voiceAgentsFlowSidebar, deploymentsSidebar, - integrationsAndSDKSidebar, { type: "category", label: "Developer Resources", From 773d27befa30ab4ccf90c54a7a12a7fa58b91e47 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 17:50:05 +0000 Subject: [PATCH 051/114] Remove sdk from under get started --- docs/get-started/sidebar.ts | 77 ------------------------------------- 1 file changed, 77 deletions(-) diff --git a/docs/get-started/sidebar.ts b/docs/get-started/sidebar.ts index efeae888..55816967 100644 --- a/docs/get-started/sidebar.ts +++ b/docs/get-started/sidebar.ts @@ -17,83 +17,6 @@ export default { type: "doc", id: "get-started/authentication", }, - { - type: "category", - label: "SDKs", - collapsible: true, - collapsed: true, - items: [ - { - type: "category", - label: "Speech to text", - collapsible: true, - collapsed: true, - items: [ - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt", - label: "Python (Realtime)", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch", - label: "Python (Batch)", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client", - label: "JavaScript (Realtime)", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client", - label: "JavaScript (Batch)", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-dotnet", - label: ".NET (Community)", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-rs", - label: "Rust (Community)", - }, - ], - }, - { - type: "category", - label: "Text to speech", - collapsible: true, - collapsed: true, - items: [ - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts", - label: "Python", - }, - ], - }, - { - type: "category", - label: "Voice agents – Flow", - collapsible: true, - collapsed: true, - items: [ - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/flow", - label: "Python", - }, - { - type: "link", - href: "https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/flow-client", - label: "JavaScript", - }, - ], - }, - ], - }, { type: "link", href: "https://speechmatics.featurebase.app/en/changelog", From 2360bf731759c41590222ce70d2139be25e6c5c9 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 17:50:37 +0000 Subject: [PATCH 052/114] Add Flow --- docs/integrations-and-sdks/sdks/index.mdx | 7 +++++ .../sdks/stt-sdk/index.mdx | 9 ++++-- .../sdks/tts-sdk/index.mdx | 2 +- .../sdks/voice-sdk/index.mdx | 29 +++++++++++++++++++ docs/integrations-and-sdks/sidebar.ts | 12 +++++++- 5 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 docs/integrations-and-sdks/sdks/voice-sdk/index.mdx diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index 9dca6054..d90622e5 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -52,4 +52,11 @@ Use speech to text to transcribe using one of the modes: description="Submit an audio file and receive a complete text transcription once the processing is finished" href="/integrations-and-sdks/sdks/tts-sdk" /> + } + direction="column" + title="Voice agents" + description="Build conversational AI voice agents with the Flow SDK" + href="/integrations-and-sdks/sdks/voice-sdk" + /> diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx index 7d1fc8b3..ed7e3650 100644 --- a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx +++ b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx @@ -11,11 +11,14 @@ import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; The Speechmatics speech-to-text SDKs provide a simple and efficient way to integrate an STT service into applications. It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. -**Real-time STT**: The real-time STT SDK allows you to transcribe audio in real-time, enabling you to respond to user input in real-time. +**Real-time STT**: +The real-time STT SDK allows you to transcribe audio in real-time, enabling you to respond to user input in real-time. -**Batch STT**: The batch STT SDK allows you to transcribe audio files in batches, enabling you to transcribe large amounts of audio in a single request. +**Batch STT**: +The batch STT SDK allows you to transcribe audio files in batches, enabling you to transcribe large amounts of audio in a single request. -**Other Programming Languages**: The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and Rust. +**Other Programming Languages**: +The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and Rust. ### Explore our SDKs for Speech to Text transcription diff --git a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx index 4976cfb5..3d0f8739 100644 --- a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx +++ b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx @@ -15,7 +15,7 @@ It offers a fast way to convert text to speech and stream the audio to an output ### Experiment with the TTS SDK available in Python: - + } diff --git a/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx b/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx new file mode 100644 index 00000000..fc087895 --- /dev/null +++ b/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx @@ -0,0 +1,29 @@ +--- +title: Voice agents - Flow +id: voice-sdk +description: Learn how to use the Speechmatics Voice agents SDK to build conversational AI agents +--- + +import { LinkCard } from "@site/src/theme/LinkCard"; +import { Grid } from "@radix-ui/themes"; +import { BotMessageSquare } from "lucide-react"; + +## Speechmatics Flow SDK + +Flow is the Speechmatics voice agent API that allows you to build responsive, interactive, and intelligent speech-to-speech interactions to any product. + +The voice SDK provides a simple and effective way to integrate natural and fluid conversational interactions, with the ability to handle interuptions, multiple speakers and the ability to understand different dialects and accents. + + + + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/flow" + /> + } + href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/flow-client" + /> + diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index df283a54..075cd4c3 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -30,6 +30,11 @@ export default { collapsible: true, collapsed: true, items: [ + { + type: "doc", + id: "integrations-and-sdks/sdks/index", + label: "Overview", + }, { type: "doc", id: "integrations-and-sdks/sdks/stt-sdk/index", @@ -38,7 +43,12 @@ export default { { type: "doc", id: "integrations-and-sdks/sdks/tts-sdk/tts-sdk", - label: "Text to speech SDKs", + label: "Text to speech SDK", + }, + { + type: "doc", + id: "integrations-and-sdks/sdks/voice-sdk/voice-sdk", + label: "Voice SDKs", }, ], }, From 4c57143e90c2d7ef70fa0c19ab5b69ce5f315d35 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 3 Dec 2025 18:01:01 +0000 Subject: [PATCH 053/114] tweaks --- docs/integrations-and-sdks/pipecat.mdx | 8 +------- docs/integrations-and-sdks/sdks/index.mdx | 5 +++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx index ec195244..e6fd4c72 100644 --- a/docs/integrations-and-sdks/pipecat.mdx +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -83,10 +83,4 @@ async def main(): if __name__ == "__main__": asyncio.run(main()) -``` - -## Further reading - -[Speechmatics STT Overview](https://docs.speechmatics.com/speech-to-text/) - -[SpeechmaticsSTTService](https://docs.speechmatics.com/api-ref/realtime-transcription-websocket) \ No newline at end of file +``` \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index d90622e5..bf87284b 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -19,6 +19,7 @@ import { BookPlus, Speech, ChartLine, + BotMessageSquare, } from "lucide-react"; Use speech to text to transcribe using one of the modes: @@ -38,7 +39,7 @@ Use speech to text to transcribe using one of the modes: /> } + icon={} direction="column" title="Transcribe a file" description="Submit an audio file and receive a complete text transcription once the processing is finished" @@ -53,7 +54,7 @@ Use speech to text to transcribe using one of the modes: href="/integrations-and-sdks/sdks/tts-sdk" /> } + icon={} direction="column" title="Voice agents" description="Build conversational AI voice agents with the Flow SDK" From 00580b08b994ec96b1a3ae418f09398829e62b62 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:37:40 +0000 Subject: [PATCH 054/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/sdks/stt-sdk/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx index ed7e3650..44538ac1 100644 --- a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx +++ b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx @@ -12,7 +12,7 @@ The Speechmatics speech-to-text SDKs provide a simple and efficient way to integ It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. **Real-time STT**: -The real-time STT SDK allows you to transcribe audio in real-time, enabling you to respond to user input in real-time. +The realtime STT SDK allows you to transcribe audio and respond to user input in real-time. **Batch STT**: The batch STT SDK allows you to transcribe audio files in batches, enabling you to transcribe large amounts of audio in a single request. From 4e761f639dda75fdb7cd48cdf1858fde1e94cfdc Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:43:48 +0000 Subject: [PATCH 055/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/sdks/tts-sdk/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx index 3d0f8739..0714a300 100644 --- a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx +++ b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx @@ -10,7 +10,7 @@ import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; ## Text to speech SDKs -The Speechmatics text-to-speech SDK provides a simple and efficient way to integrate a TTS service into applications. +The Speechmatics text to speech SDK provides a simple and efficient way to integrate a TTS service into applications. It offers a fast way to convert text to speech and stream the audio to an output device or file, in a voice of your choosing. ### Experiment with the TTS SDK available in Python: From a7bde84f460d337ea37299479687e765ccd4ec24 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:47:02 +0000 Subject: [PATCH 056/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index bf87284b..bf8ab65c 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -4,7 +4,7 @@ description: Learn how to use the Speechmatics SDKs --- Speechmatics SDKs provide a simple and efficient way to integrate an STT or TTS service into applications. -It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. +They offer a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. ### Developer Quickstart From e55041b3364f92ed3d78e09c97b23d71fdf374ed Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:47:19 +0000 Subject: [PATCH 057/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 83e280e7..4e57be42 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -7,7 +7,7 @@ import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; -# Speechmatics Integrations +# Speechmatics integrations Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. From 10d02c671a7e60b890fa4d799fca3c624e1d6eed Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:49:12 +0000 Subject: [PATCH 058/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 4e57be42..8528b5eb 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -42,7 +42,7 @@ Speechmatics is built for real-world application, handling the nuances of natura - This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. **Noise Robustness using VAD**: -- Voice Activity Detection to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. +- Voice activity detection (VAD) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. **Global Accent & Dialect Support**: - Speechmatics STT understands diverse accents without needing regional configuration From 562231c3a98d5fad934cd6e9ebe8fadc12a97530 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:49:40 +0000 Subject: [PATCH 059/114] Apply suggestion from @TudorCRL Co-authored-by: Tudor Evans <104087420+TudorCRL@users.noreply.github.com> --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 8528b5eb..c1479625 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -44,7 +44,7 @@ Speechmatics is built for real-world application, handling the nuances of natura **Noise Robustness using VAD**: - Voice activity detection (VAD) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. -**Global Accent & Dialect Support**: +**Global accent & dialect support**: - Speechmatics STT understands diverse accents without needing regional configuration **Low Latency for Real-Time Transcription**: From acfb55c1fd2df63f26868988c950c2a437860070 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 10:32:23 +0000 Subject: [PATCH 060/114] Correction: sst ->stt --- .../assets/usage-container-docker-compose.yml | 2 +- .../installation/download-and-import.mdx | 8 +- .../installation/system-requirements.mdx | 2 +- docs/integrations-and-sdks/index.mdx | 2 +- docs/integrations-and-sdks/pipecat.mdx | 6 +- docs/integrations-and-sdks/sdks/index.mdx | 15 +- .../sdks/stt-sdk/index.mdx | 4 +- docs/speech-to-text/batch/output.mdx | 4 +- .../voice-agents-flow/guides/nextjs-guide.mdx | 4 +- package-lock.json | 852 +++++++++--------- .../DocBreadcrumbs/StructuredData/index.tsx | 6 +- src/theme/DocBreadcrumbs/index.tsx | 4 +- 12 files changed, 457 insertions(+), 452 deletions(-) diff --git a/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml b/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml index 4faad706..a51bd35e 100644 --- a/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml +++ b/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml @@ -10,7 +10,7 @@ x-usage-template: &usage-template - "traefik.tcp.routers.usage.rule=HostSNI(`*`)" - "traefik.tcp.routers.usage.entrypoints=custom" - "traefik.tcp.routers.usage.tls=true" - - "traefik.tcp.routers.usage.tls.passthrough=true" + - "traefik.tcp.routers.usage.tls.pastthrough=true" - "traefik.tcp.routers.usage.service=telemeter" - "traefik.tcp.services.usage.loadbalancer.server.port=9090" depends_on: diff --git a/docs/deployments/virtual-appliance/installation/download-and-import.mdx b/docs/deployments/virtual-appliance/installation/download-and-import.mdx index 939e50b5..814ef64b 100644 --- a/docs/deployments/virtual-appliance/installation/download-and-import.mdx +++ b/docs/deployments/virtual-appliance/installation/download-and-import.mdx @@ -91,7 +91,7 @@ Once the import has finished, ensure the VM is configured to use our recommended Before booting the VM you may also wish to consult the [System Requirements](/deployments/virtual-appliance/installation/system-requirements#virtual-appliance-system-requirements) page and set your CPU and memory quantities as desired for your expected workload. -Note that VMware Workstation does not currently support PCI passthrough, which is a requirement for running GPU transcription. As such, only CPU transcription is possible. +Note that VMware Workstation does not currently support PCI pastthrough, which is a requirement for running GPU transcription. As such, only CPU transcription is possible. :::info **Note** When running on a Windows host we've observed that best performance is achieved by launching VMware Workstation using the `Run as administrator` option. @@ -350,7 +350,7 @@ qm set 123 -cores 6 -memory 24576 If you wish to enable GPU transcription you must carry out these additional steps. -GPU transcription requires PCIe passthrough of a [suitable graphics card](/deployments/container/gpu-speech-to-text#system-requirements) from the host to the virtual appliance. A prerequisite of this is to use a suitable virtual machine type along with a UEFI bios, like so: +GPU transcription requires PCIe pastthrough of a [suitable graphics card](/deployments/container/gpu-speech-to-text#system-requirements) from the host to the virtual appliance. A prerequisite of this is to use a suitable virtual machine type along with a UEFI bios, like so: ```bash qm set 123 -machine q35 -bios ovmf @@ -369,9 +369,9 @@ Next, in the web GUI, click on the VMs `Hardware` tab, then click `Add` -> `PCI An example is shown below: -![Proxmox PCI passthrough](/img/appliance-images/proxmox-gpu.png) +![Proxmox PCI pastthrough](/img/appliance-images/proxmox-gpu.png) -Note that you may require different values depending on your hardware. For more details see the [official documentation](https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_passthrough). +Note that you may require different values depending on your hardware. For more details see the [official documentation](https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_pastthrough). ### First boot diff --git a/docs/deployments/virtual-appliance/installation/system-requirements.mdx b/docs/deployments/virtual-appliance/installation/system-requirements.mdx index 891e3aa5..ecc80e97 100644 --- a/docs/deployments/virtual-appliance/installation/system-requirements.mdx +++ b/docs/deployments/virtual-appliance/installation/system-requirements.mdx @@ -15,7 +15,7 @@ The Speechmatics Virtual Appliance is supported on following hypervisors: For the Virtual Appliance to operate as required, the underlying hypervisor host must meet the requirements and provide the Virtual Appliance the resource requirements defined below. :::info **Note** -*VMware Workstation does not currently support PCI passthrough, which is a requirement for running GPU transcription. +*VMware Workstation does not currently support PCI pastthrough, which is a requirement for running GPU transcription. ::: ## Virtual Appliance system requirements diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index c1479625..f0dae00d 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -38,7 +38,7 @@ Integrating Speechmatics as your speech-to-text (STT) engine provides a foundati Speechmatics is built for real-world application, handling the nuances of natural human conversation. **Unmatched Accuracy**: -- The most accurate real-time sst engine, delivering final transcripts in less than 1s without compromising accuracy. +- The most accurate real-time stt engine, delivering final transcripts in less than 1s without compromising accuracy. - This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. **Noise Robustness using VAD**: diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx index e6fd4c72..7e21ed86 100644 --- a/docs/integrations-and-sdks/pipecat.mdx +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -56,14 +56,14 @@ export SPEECHMATICS_API_KEY=your_api_key ```python import os import asyncio -from pipecat.services.speechmatics import SpeechmaticsSTTService +from pipecat.services.speechmatics import SpeechmaticsttTService from pipecat.language_configs.language import Language async def main(): # Initialize Speechmatics STT - stt = SpeechmaticsSTTService( + stt = SpeechmaticsttTService( api_key=os.getenv("SPEECHMATICS_API_KEY"), - params=SpeechmaticsSTTService.InputParams( + params=SpeechmaticsttTService.InputParams( language=Language.EN, enable_diarization=True ) diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index bf8ab65c..84bd3095 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -22,10 +22,15 @@ import { BotMessageSquare, } from "lucide-react"; -Use speech to text to transcribe using one of the modes: -- [Realtime processing](#realtime-processing): Stream audio from an input device or file and receive instant updates of the transcription as it happens -- [Batch processing](#batch-processing): Submit an audio file and receive a complete text transcription once the processing is finished -- [Text to speech](#text-to-speech): Convert text to speech and stream the audio to an output device or file +Use speech to text to transcribe using one of the modes - +- Real-time stt processing: Stream audio from an input device or file and receive instant updates of the transcription as it happens +- Batch stt processing: Submit an audio file and receive a complete text transcription once the processing is finished + +Or, +- Convert text to speech and stream the audio to an output device or file + +Or, +- Build conversational AI voice agents with Flow SDK ## Developer quickstart @@ -50,7 +55,7 @@ Use speech to text to transcribe using one of the modes: icon={} direction="column" title="Text to speech" - description="Submit an audio file and receive a complete text transcription once the processing is finished" + description="Submit text to convert to speech and stream the audio to an output device or file" href="/integrations-and-sdks/sdks/tts-sdk" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> diff --git a/docs/speech-to-text/batch/output.mdx b/docs/speech-to-text/batch/output.mdx index 225d26fe..76e89cff 100644 --- a/docs/speech-to-text/batch/output.mdx +++ b/docs/speech-to-text/batch/output.mdx @@ -9,7 +9,7 @@ import CodeBlock from '@theme/CodeBlock' import SchemaNode from '@theme/Schema' import HTTPMethodBadge from '@site/src/theme/HTTPMethodBadge' import checkJobStatusUnixSample from './assets/check-job-status.sh' -import checkMultipleJobsStatusUnixSample from './assets/check-multiple-jobs-status.sh' +import checkMultipleJobsttatusUnixSample from './assets/check-multiple-jobs-status.sh' import batchSchema from "!openapi-schema-loader!@site/spec/batch.yaml" # Output @@ -37,7 +37,7 @@ You can make a GET request to check the status of a job as follows: - {checkMultipleJobsStatusUnixSample} + {checkMultipleJobsttatusUnixSample} diff --git a/docs/voice-agents-flow/guides/nextjs-guide.mdx b/docs/voice-agents-flow/guides/nextjs-guide.mdx index 3fe4b451..a10e2adf 100644 --- a/docs/voice-agents-flow/guides/nextjs-guide.mdx +++ b/docs/voice-agents-flow/guides/nextjs-guide.mdx @@ -14,7 +14,7 @@ import postcssConfigExample from "?url=https://raw.githubusercontent.com/speechm import globalsCssExampleStepOne from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-1/app/globals.css"; {/* -------------- Step 2 -------------- */} -import providersStepTwo from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/providers.tsx"; +import providersttepTwo from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/providers.tsx"; import useAudioContextsExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/hooks/useAudioContexts.ts"; import pageStepTwoExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/page.tsx"; import nextjsConfigExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/next.config.ts"; @@ -129,7 +129,7 @@ We'll start by creating a `providers.tsx` file in the `app` directory, and addin Here we add the 3 context providers to the app, passing the `AudioContext` instances to both the audio providers, and the `workletScriptURL` to `PCMAudioRecorderProvider`. - {providersStepTwo} + {providersttepTwo} :::info diff --git a/package-lock.json b/package-lock.json index 64144524..b0273d3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -784,7 +784,7 @@ "node_modules/@babel/helper-wrap-function": { "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCsttG2PYwRre0Qc2NNSCXbG+xc6g==", "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", @@ -1435,7 +1435,7 @@ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "integrity": "sha512-sttR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -2864,7 +2864,7 @@ "node_modules/@cspell/dict-software-terms": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.2.tgz", - "integrity": "sha512-MssT9yyInezB6mFqHTDNOIVjbMakORllIt7IJ91LrgiQOcDLzidR0gN9pE340s655TJ8U5MJNAfRfH0oRU14KQ==", + "integrity": "sha512-Mstt9yyInezB6mFqHTDNOIVjbMakORllIt7IJ91LrgiQOcDLzidR0gN9pE340s655TJ8U5MJNAfRfH0oRU14KQ==", "dev": true, "license": "MIT" }, @@ -2954,18 +2954,18 @@ "node": ">=18.0" } }, - "node_modules/@csstools/cascade-layer-name-parser": { + "node_modules/@csttools/cascade-layer-name-parser": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csttools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -2973,22 +2973,22 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csstools/color-helpers": { + "node_modules/@csttools/color-helpers": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/color-helpers/-/color-helpers-5.1.0.tgz", "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -2996,18 +2996,18 @@ "node": ">=18" } }, - "node_modules/@csstools/css-calc": { + "node_modules/@csttools/css-calc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/@csttools/css-calc/-/css-calc-2.1.4.tgz", "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -3015,49 +3015,49 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csstools/css-color-parser": { + "node_modules/@csttools/css-color-parser": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/css-color-parser/-/css-color-parser-3.1.0.tgz", "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" + "@csttools/color-helpers": "^5.1.0", + "@csttools/css-calc": "^2.1.4" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csstools/css-parser-algorithms": { + "node_modules/@csttools/css-parser-algorithms": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csttools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -3065,21 +3065,21 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csstools/css-tokenizer": { + "node_modules/@csttools/css-tokenizer": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csttools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -3087,18 +3087,18 @@ "node": ">=18" } }, - "node_modules/@csstools/media-query-list-parser": { + "node_modules/@csttools/media-query-list-parser": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csttools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -3106,31 +3106,31 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csstools/postcss-alpha-function": { + "node_modules/@csttools/postcss-alpha-function": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3139,23 +3139,23 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-cascade-layers": { + "node_modules/@csttools/postcss-cascade-layers": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/selector-specificity": "^5.0.0", + "@csttools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -3165,18 +3165,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "node_modules/@csttools/postcss-cascade-layers/node_modules/@csttools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3187,7 +3187,7 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "node_modules/@csttools/postcss-cascade-layers/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -3200,27 +3200,27 @@ "node": ">=4" } }, - "node_modules/@csstools/postcss-color-function": { + "node_modules/@csttools/postcss-color-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3229,27 +3229,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "node_modules/@csttools/postcss-color-function-display-p3-linear": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3258,27 +3258,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-color-mix-function": { + "node_modules/@csttools/postcss-color-mix-function": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3287,27 +3287,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "node_modules/@csttools/postcss-color-mix-variadic-function-arguments": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3316,26 +3316,26 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-content-alt-text": { + "node_modules/@csttools/postcss-content-alt-text": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3344,27 +3344,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-contrast-color-function": { + "node_modules/@csttools/postcss-contrast-color-function": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3373,25 +3373,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-exponential-functions": { + "node_modules/@csttools/postcss-exponential-functions": { "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3400,23 +3400,23 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-font-format-keywords": { + "node_modules/@csttools/postcss-font-format-keywords": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/utilities": "^2.0.0", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3426,25 +3426,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-gamut-mapping": { + "node_modules/@csttools/postcss-gamut-mapping": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3453,27 +3453,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-gradients-interpolation-method": { + "node_modules/@csttools/postcss-gradients-interpolation-method": { "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3482,27 +3482,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-hwb-function": { + "node_modules/@csttools/postcss-hwb-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3511,24 +3511,24 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-ic-unit": { + "node_modules/@csttools/postcss-ic-unit": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3538,18 +3538,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-initial": { + "node_modules/@csttools/postcss-initial": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-initial/-/postcss-initial-2.0.1.tgz", "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3560,23 +3560,23 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-is-pseudo-class": { + "node_modules/@csttools/postcss-is-pseudo-class": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/selector-specificity": "^5.0.0", + "@csttools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -3586,18 +3586,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "node_modules/@csttools/postcss-is-pseudo-class/node_modules/@csttools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3608,7 +3608,7 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "node_modules/@csttools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -3621,26 +3621,26 @@ "node": ">=4" } }, - "node_modules/@csstools/postcss-light-dark-function": { + "node_modules/@csttools/postcss-light-dark-function": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3649,18 +3649,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-float-and-clear": { + "node_modules/@csttools/postcss-logical-float-and-clear": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3671,18 +3671,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-overflow": { + "node_modules/@csttools/postcss-logical-overflow": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3693,18 +3693,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "node_modules/@csttools/postcss-logical-overscroll-behavior": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3715,18 +3715,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-resize": { + "node_modules/@csttools/postcss-logical-resize": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3740,24 +3740,24 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-viewport-units": { + "node_modules/@csttools/postcss-logical-viewport-units": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/utilities": "^2.0.0" + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3766,26 +3766,26 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-media-minmax": { + "node_modules/@csttools/postcss-media-minmax": { "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/media-query-list-parser": "^4.0.3" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -3794,25 +3794,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "node_modules/@csttools/postcss-media-queries-aspect-ratio-number-values": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/media-query-list-parser": "^4.0.3" + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -3821,23 +3821,23 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-nested-calc": { + "node_modules/@csttools/postcss-nested-calc": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/utilities": "^2.0.0", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3847,18 +3847,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-normalize-display-values": { + "node_modules/@csttools/postcss-normalize-display-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3872,27 +3872,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-oklab-function": { + "node_modules/@csttools/postcss-oklab-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3901,18 +3901,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-progressive-custom-properties": { + "node_modules/@csttools/postcss-progressive-custom-properties": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -3926,25 +3926,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-random-function": { + "node_modules/@csttools/postcss-random-function": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3953,27 +3953,27 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-relative-color-syntax": { + "node_modules/@csttools/postcss-relative-color-syntax": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3982,18 +3982,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-scope-pseudo-class": { + "node_modules/@csttools/postcss-scope-pseudo-class": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -4007,7 +4007,7 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "node_modules/@csttools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -4020,25 +4020,25 @@ "node": ">=4" } }, - "node_modules/@csstools/postcss-sign-functions": { + "node_modules/@csttools/postcss-sign-functions": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4047,25 +4047,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-stepped-value-functions": { + "node_modules/@csttools/postcss-stepped-value-functions": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4074,23 +4074,23 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { + "node_modules/@csttools/postcss-text-decoration-shorthand": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/color-helpers": "^5.1.0", + "@csttools/color-helpers": "^5.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -4100,25 +4100,25 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-trigonometric-functions": { + "node_modules/@csttools/postcss-trigonometric-functions": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csttools/css-calc": "^2.1.4", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4127,18 +4127,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-unset-value": { + "node_modules/@csttools/postcss-unset-value": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -4149,18 +4149,18 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/utilities": { + "node_modules/@csttools/utilities": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/utilities/-/utilities-2.0.0.tgz", "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -7495,7 +7495,7 @@ "node_modules/@radix-ui/react-radio-group": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.7.tgz", - "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsSTHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", + "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsttHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.2", @@ -9716,7 +9716,7 @@ "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csttype": "^3.0.2" } }, "node_modules/@types/react-redux": { @@ -12234,11 +12234,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -12284,16 +12284,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/selector-specificity": "^5.0.0", + "@csttools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, @@ -12304,18 +12304,18 @@ "postcss": "^8.4" } }, - "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "node_modules/css-has-pseudo/node_modules/@csttools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -12425,11 +12425,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -12504,11 +12504,11 @@ "funding": [ { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" }, { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" } ], "license": "MIT-0" @@ -12655,9 +12655,9 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, - "node_modules/csstype": { + "node_modules/csttype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/csttype/-/csttype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, @@ -13247,7 +13247,7 @@ "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosttTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -24210,11 +24210,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -24279,20 +24279,20 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -24308,16 +24308,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/utilities": "^2.0.0", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24334,16 +24334,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/utilities": "^2.0.0", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24394,19 +24394,19 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.5", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/media-query-list-parser": "^4.0.3" + "@csttools/cascade-layer-name-parser": "^2.0.5", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -24422,19 +24422,19 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.5", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/utilities": "^2.0.0", + "@csttools/cascade-layer-name-parser": "^2.0.5", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24451,18 +24451,18 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.5", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", + "@csttools/cascade-layer-name-parser": "^2.0.5", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -24492,11 +24492,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -24593,17 +24593,17 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24620,11 +24620,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -24658,11 +24658,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -24705,11 +24705,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -24727,16 +24727,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/utilities": "^2.0.0", + "@csttools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24753,20 +24753,20 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/utilities": "^2.0.0" + "@csttools/css-color-parser": "^3.1.0", + "@csttools/css-parser-algorithms": "^3.0.5", + "@csttools/css-tokenizer": "^3.0.4", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -24804,11 +24804,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25028,17 +25028,17 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/selector-resolve-nested": "^3.1.0", - "@csstools/selector-specificity": "^5.0.0", + "@csttools/selector-resolve-nested": "^3.1.0", + "@csttools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -25048,18 +25048,18 @@ "postcss": "^8.4" } }, - "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "node_modules/postcss-nesting/node_modules/@csttools/selector-resolve-nested": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25070,18 +25070,18 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "node_modules/postcss-nesting/node_modules/@csttools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25283,11 +25283,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25317,11 +25317,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25342,51 +25342,51 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-alpha-function": "^1.0.1", - "@csstools/postcss-cascade-layers": "^5.0.2", - "@csstools/postcss-color-function": "^4.0.12", - "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", - "@csstools/postcss-color-mix-function": "^3.0.12", - "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", - "@csstools/postcss-content-alt-text": "^2.0.8", - "@csstools/postcss-contrast-color-function": "^2.0.12", - "@csstools/postcss-exponential-functions": "^2.0.9", - "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.11", - "@csstools/postcss-gradients-interpolation-method": "^5.0.12", - "@csstools/postcss-hwb-function": "^4.0.12", - "@csstools/postcss-ic-unit": "^4.0.4", - "@csstools/postcss-initial": "^2.0.1", - "@csstools/postcss-is-pseudo-class": "^5.0.3", - "@csstools/postcss-light-dark-function": "^2.0.11", - "@csstools/postcss-logical-float-and-clear": "^3.0.0", - "@csstools/postcss-logical-overflow": "^2.0.0", - "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", - "@csstools/postcss-logical-resize": "^3.0.0", - "@csstools/postcss-logical-viewport-units": "^3.0.4", - "@csstools/postcss-media-minmax": "^2.0.9", - "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", - "@csstools/postcss-nested-calc": "^4.0.0", - "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.12", - "@csstools/postcss-progressive-custom-properties": "^4.2.1", - "@csstools/postcss-random-function": "^2.0.1", - "@csstools/postcss-relative-color-syntax": "^3.0.12", - "@csstools/postcss-scope-pseudo-class": "^4.0.1", - "@csstools/postcss-sign-functions": "^1.1.4", - "@csstools/postcss-stepped-value-functions": "^4.0.9", - "@csstools/postcss-text-decoration-shorthand": "^4.0.3", - "@csstools/postcss-trigonometric-functions": "^4.0.9", - "@csstools/postcss-unset-value": "^4.0.0", + "@csttools/postcss-alpha-function": "^1.0.1", + "@csttools/postcss-cascade-layers": "^5.0.2", + "@csttools/postcss-color-function": "^4.0.12", + "@csttools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csttools/postcss-color-mix-function": "^3.0.12", + "@csttools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csttools/postcss-content-alt-text": "^2.0.8", + "@csttools/postcss-contrast-color-function": "^2.0.12", + "@csttools/postcss-exponential-functions": "^2.0.9", + "@csttools/postcss-font-format-keywords": "^4.0.0", + "@csttools/postcss-gamut-mapping": "^2.0.11", + "@csttools/postcss-gradients-interpolation-method": "^5.0.12", + "@csttools/postcss-hwb-function": "^4.0.12", + "@csttools/postcss-ic-unit": "^4.0.4", + "@csttools/postcss-initial": "^2.0.1", + "@csttools/postcss-is-pseudo-class": "^5.0.3", + "@csttools/postcss-light-dark-function": "^2.0.11", + "@csttools/postcss-logical-float-and-clear": "^3.0.0", + "@csttools/postcss-logical-overflow": "^2.0.0", + "@csttools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csttools/postcss-logical-resize": "^3.0.0", + "@csttools/postcss-logical-viewport-units": "^3.0.4", + "@csttools/postcss-media-minmax": "^2.0.9", + "@csttools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csttools/postcss-nested-calc": "^4.0.0", + "@csttools/postcss-normalize-display-values": "^4.0.0", + "@csttools/postcss-oklab-function": "^4.0.12", + "@csttools/postcss-progressive-custom-properties": "^4.2.1", + "@csttools/postcss-random-function": "^2.0.1", + "@csttools/postcss-relative-color-syntax": "^3.0.12", + "@csttools/postcss-scope-pseudo-class": "^4.0.1", + "@csttools/postcss-sign-functions": "^1.1.4", + "@csttools/postcss-stepped-value-functions": "^4.0.9", + "@csttools/postcss-text-decoration-shorthand": "^4.0.3", + "@csttools/postcss-trigonometric-functions": "^4.0.9", + "@csttools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.21", "browserslist": "^4.26.0", "css-blank-pseudo": "^7.0.1", @@ -25433,11 +25433,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT-0", @@ -25526,11 +25526,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csstools" + "url": "https://github.com/sponsors/csttools" }, { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/csttools" } ], "license": "MIT", @@ -29064,7 +29064,7 @@ "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "integrity": "sha512-g9Q1haeby36Osttwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" diff --git a/src/theme/DocBreadcrumbs/StructuredData/index.tsx b/src/theme/DocBreadcrumbs/StructuredData/index.tsx index 6179703d..1c5d97b6 100644 --- a/src/theme/DocBreadcrumbs/StructuredData/index.tsx +++ b/src/theme/DocBreadcrumbs/StructuredData/index.tsx @@ -1,10 +1,10 @@ import Head from "@docusaurus/Head"; -import { useBreadcrumbsStructuredData } from "@docusaurus/plugin-content-docs/client"; +import { useBreadcrumbsttructuredData } from "@docusaurus/plugin-content-docs/client"; import type { Props } from "@theme/DocBreadcrumbs/StructuredData"; import React, { type ReactNode } from "react"; -export default function DocBreadcrumbsStructuredData(props: Props): ReactNode { - const structuredData = useBreadcrumbsStructuredData({ +export default function DocBreadcrumbsttructuredData(props: Props): ReactNode { + const structuredData = useBreadcrumbsttructuredData({ breadcrumbs: props.breadcrumbs, }); return ( diff --git a/src/theme/DocBreadcrumbs/index.tsx b/src/theme/DocBreadcrumbs/index.tsx index b98052fb..49bed866 100644 --- a/src/theme/DocBreadcrumbs/index.tsx +++ b/src/theme/DocBreadcrumbs/index.tsx @@ -1,5 +1,5 @@ import { useSidebarBreadcrumbs } from "@docusaurus/plugin-content-docs/client"; -import DocBreadcrumbsStructuredData from "@theme/DocBreadcrumbs/StructuredData"; +import DocBreadcrumbsttructuredData from "@theme/DocBreadcrumbs/StructuredData"; import React, { Fragment, type ReactNode } from "react"; import { Flex, Text } from "@radix-ui/themes"; @@ -19,7 +19,7 @@ export default function DocBreadcrumbs(): ReactNode { return ( <> - + {spliced.map((item, idx, { length }) => { if (item.type !== "category" && !item.docId?.includes("index")) { From 0eaf825aaa8120bd49fac61d7b166dd42bc76b61 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 11:13:30 +0000 Subject: [PATCH 061/114] Revert "Correction: sst ->stt" This reverts commit e48b82123a7293ca4f11b049149b65f64b16f545. --- .../assets/usage-container-docker-compose.yml | 2 +- .../installation/download-and-import.mdx | 8 +- .../installation/system-requirements.mdx | 2 +- docs/integrations-and-sdks/index.mdx | 2 +- docs/integrations-and-sdks/pipecat.mdx | 6 +- docs/integrations-and-sdks/sdks/index.mdx | 2 +- .../sdks/stt-sdk/index.mdx | 4 +- docs/speech-to-text/batch/output.mdx | 4 +- .../voice-agents-flow/guides/nextjs-guide.mdx | 4 +- package-lock.json | 852 +++++++++--------- .../DocBreadcrumbs/StructuredData/index.tsx | 6 +- src/theme/DocBreadcrumbs/index.tsx | 4 +- 12 files changed, 448 insertions(+), 448 deletions(-) diff --git a/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml b/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml index a51bd35e..4faad706 100644 --- a/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml +++ b/docs/deployments/usage-reporting/assets/usage-container-docker-compose.yml @@ -10,7 +10,7 @@ x-usage-template: &usage-template - "traefik.tcp.routers.usage.rule=HostSNI(`*`)" - "traefik.tcp.routers.usage.entrypoints=custom" - "traefik.tcp.routers.usage.tls=true" - - "traefik.tcp.routers.usage.tls.pastthrough=true" + - "traefik.tcp.routers.usage.tls.passthrough=true" - "traefik.tcp.routers.usage.service=telemeter" - "traefik.tcp.services.usage.loadbalancer.server.port=9090" depends_on: diff --git a/docs/deployments/virtual-appliance/installation/download-and-import.mdx b/docs/deployments/virtual-appliance/installation/download-and-import.mdx index 814ef64b..939e50b5 100644 --- a/docs/deployments/virtual-appliance/installation/download-and-import.mdx +++ b/docs/deployments/virtual-appliance/installation/download-and-import.mdx @@ -91,7 +91,7 @@ Once the import has finished, ensure the VM is configured to use our recommended Before booting the VM you may also wish to consult the [System Requirements](/deployments/virtual-appliance/installation/system-requirements#virtual-appliance-system-requirements) page and set your CPU and memory quantities as desired for your expected workload. -Note that VMware Workstation does not currently support PCI pastthrough, which is a requirement for running GPU transcription. As such, only CPU transcription is possible. +Note that VMware Workstation does not currently support PCI passthrough, which is a requirement for running GPU transcription. As such, only CPU transcription is possible. :::info **Note** When running on a Windows host we've observed that best performance is achieved by launching VMware Workstation using the `Run as administrator` option. @@ -350,7 +350,7 @@ qm set 123 -cores 6 -memory 24576 If you wish to enable GPU transcription you must carry out these additional steps. -GPU transcription requires PCIe pastthrough of a [suitable graphics card](/deployments/container/gpu-speech-to-text#system-requirements) from the host to the virtual appliance. A prerequisite of this is to use a suitable virtual machine type along with a UEFI bios, like so: +GPU transcription requires PCIe passthrough of a [suitable graphics card](/deployments/container/gpu-speech-to-text#system-requirements) from the host to the virtual appliance. A prerequisite of this is to use a suitable virtual machine type along with a UEFI bios, like so: ```bash qm set 123 -machine q35 -bios ovmf @@ -369,9 +369,9 @@ Next, in the web GUI, click on the VMs `Hardware` tab, then click `Add` -> `PCI An example is shown below: -![Proxmox PCI pastthrough](/img/appliance-images/proxmox-gpu.png) +![Proxmox PCI passthrough](/img/appliance-images/proxmox-gpu.png) -Note that you may require different values depending on your hardware. For more details see the [official documentation](https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_pastthrough). +Note that you may require different values depending on your hardware. For more details see the [official documentation](https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_passthrough). ### First boot diff --git a/docs/deployments/virtual-appliance/installation/system-requirements.mdx b/docs/deployments/virtual-appliance/installation/system-requirements.mdx index ecc80e97..891e3aa5 100644 --- a/docs/deployments/virtual-appliance/installation/system-requirements.mdx +++ b/docs/deployments/virtual-appliance/installation/system-requirements.mdx @@ -15,7 +15,7 @@ The Speechmatics Virtual Appliance is supported on following hypervisors: For the Virtual Appliance to operate as required, the underlying hypervisor host must meet the requirements and provide the Virtual Appliance the resource requirements defined below. :::info **Note** -*VMware Workstation does not currently support PCI pastthrough, which is a requirement for running GPU transcription. +*VMware Workstation does not currently support PCI passthrough, which is a requirement for running GPU transcription. ::: ## Virtual Appliance system requirements diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index f0dae00d..c1479625 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -38,7 +38,7 @@ Integrating Speechmatics as your speech-to-text (STT) engine provides a foundati Speechmatics is built for real-world application, handling the nuances of natural human conversation. **Unmatched Accuracy**: -- The most accurate real-time stt engine, delivering final transcripts in less than 1s without compromising accuracy. +- The most accurate real-time sst engine, delivering final transcripts in less than 1s without compromising accuracy. - This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. **Noise Robustness using VAD**: diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx index 7e21ed86..e6fd4c72 100644 --- a/docs/integrations-and-sdks/pipecat.mdx +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -56,14 +56,14 @@ export SPEECHMATICS_API_KEY=your_api_key ```python import os import asyncio -from pipecat.services.speechmatics import SpeechmaticsttTService +from pipecat.services.speechmatics import SpeechmaticsSTTService from pipecat.language_configs.language import Language async def main(): # Initialize Speechmatics STT - stt = SpeechmaticsttTService( + stt = SpeechmaticsSTTService( api_key=os.getenv("SPEECHMATICS_API_KEY"), - params=SpeechmaticsttTService.InputParams( + params=SpeechmaticsSTTService.InputParams( language=Language.EN, enable_diarization=True ) diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index 84bd3095..70309674 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -55,7 +55,7 @@ Or, icon={} direction="column" title="Text to speech" - description="Submit text to convert to speech and stream the audio to an output device or file" + description="Submit an audio file and receive a complete text transcription once the processing is finished" href="/integrations-and-sdks/sdks/tts-sdk" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> diff --git a/docs/speech-to-text/batch/output.mdx b/docs/speech-to-text/batch/output.mdx index 76e89cff..225d26fe 100644 --- a/docs/speech-to-text/batch/output.mdx +++ b/docs/speech-to-text/batch/output.mdx @@ -9,7 +9,7 @@ import CodeBlock from '@theme/CodeBlock' import SchemaNode from '@theme/Schema' import HTTPMethodBadge from '@site/src/theme/HTTPMethodBadge' import checkJobStatusUnixSample from './assets/check-job-status.sh' -import checkMultipleJobsttatusUnixSample from './assets/check-multiple-jobs-status.sh' +import checkMultipleJobsStatusUnixSample from './assets/check-multiple-jobs-status.sh' import batchSchema from "!openapi-schema-loader!@site/spec/batch.yaml" # Output @@ -37,7 +37,7 @@ You can make a GET request to check the status of a job as follows: - {checkMultipleJobsttatusUnixSample} + {checkMultipleJobsStatusUnixSample} diff --git a/docs/voice-agents-flow/guides/nextjs-guide.mdx b/docs/voice-agents-flow/guides/nextjs-guide.mdx index a10e2adf..3fe4b451 100644 --- a/docs/voice-agents-flow/guides/nextjs-guide.mdx +++ b/docs/voice-agents-flow/guides/nextjs-guide.mdx @@ -14,7 +14,7 @@ import postcssConfigExample from "?url=https://raw.githubusercontent.com/speechm import globalsCssExampleStepOne from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-1/app/globals.css"; {/* -------------- Step 2 -------------- */} -import providersttepTwo from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/providers.tsx"; +import providersStepTwo from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/providers.tsx"; import useAudioContextsExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/hooks/useAudioContexts.ts"; import pageStepTwoExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/app/page.tsx"; import nextjsConfigExample from "?url=https://raw.githubusercontent.com/speechmatics/nextjs-flow-guide/refs/heads/step-2/next.config.ts"; @@ -129,7 +129,7 @@ We'll start by creating a `providers.tsx` file in the `app` directory, and addin Here we add the 3 context providers to the app, passing the `AudioContext` instances to both the audio providers, and the `workletScriptURL` to `PCMAudioRecorderProvider`. - {providersttepTwo} + {providersStepTwo} :::info diff --git a/package-lock.json b/package-lock.json index b0273d3a..64144524 100644 --- a/package-lock.json +++ b/package-lock.json @@ -784,7 +784,7 @@ "node_modules/@babel/helper-wrap-function": { "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCsttG2PYwRre0Qc2NNSCXbG+xc6g==", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", @@ -1435,7 +1435,7 @@ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-sttR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -2864,7 +2864,7 @@ "node_modules/@cspell/dict-software-terms": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.2.tgz", - "integrity": "sha512-Mstt9yyInezB6mFqHTDNOIVjbMakORllIt7IJ91LrgiQOcDLzidR0gN9pE340s655TJ8U5MJNAfRfH0oRU14KQ==", + "integrity": "sha512-MssT9yyInezB6mFqHTDNOIVjbMakORllIt7IJ91LrgiQOcDLzidR0gN9pE340s655TJ8U5MJNAfRfH0oRU14KQ==", "dev": true, "license": "MIT" }, @@ -2954,18 +2954,18 @@ "node": ">=18.0" } }, - "node_modules/@csttools/cascade-layer-name-parser": { + "node_modules/@csstools/cascade-layer-name-parser": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@csttools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -2973,22 +2973,22 @@ "node": ">=18" }, "peerDependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csttools/color-helpers": { + "node_modules/@csstools/color-helpers": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csttools/color-helpers/-/color-helpers-5.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -2996,18 +2996,18 @@ "node": ">=18" } }, - "node_modules/@csttools/css-calc": { + "node_modules/@csstools/css-calc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csttools/css-calc/-/css-calc-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -3015,49 +3015,49 @@ "node": ">=18" }, "peerDependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csttools/css-color-parser": { + "node_modules/@csstools/css-color-parser": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csttools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/color-helpers": "^5.1.0", - "@csttools/css-calc": "^2.1.4" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csttools/css-parser-algorithms": { + "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csttools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -3065,21 +3065,21 @@ "node": ">=18" }, "peerDependencies": { - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csttools/css-tokenizer": { + "node_modules/@csstools/css-tokenizer": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csttools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -3087,18 +3087,18 @@ "node": ">=18" } }, - "node_modules/@csttools/media-query-list-parser": { + "node_modules/@csstools/media-query-list-parser": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csttools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -3106,31 +3106,31 @@ "node": ">=18" }, "peerDependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@csttools/postcss-alpha-function": { + "node_modules/@csstools/postcss-alpha-function": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3139,23 +3139,23 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-cascade-layers": { + "node_modules/@csstools/postcss-cascade-layers": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csttools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/selector-specificity": "^5.0.0", + "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -3165,18 +3165,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-cascade-layers/node_modules/@csttools/selector-specificity": { + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3187,7 +3187,7 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/@csttools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -3200,27 +3200,27 @@ "node": ">=4" } }, - "node_modules/@csttools/postcss-color-function": { + "node_modules/@csstools/postcss-color-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3229,27 +3229,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-color-function-display-p3-linear": { + "node_modules/@csstools/postcss-color-function-display-p3-linear": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3258,27 +3258,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-color-mix-function": { + "node_modules/@csstools/postcss-color-mix-function": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3287,27 +3287,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-color-mix-variadic-function-arguments": { + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csttools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3316,26 +3316,26 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-content-alt-text": { + "node_modules/@csstools/postcss-content-alt-text": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@csttools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3344,27 +3344,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-contrast-color-function": { + "node_modules/@csstools/postcss-contrast-color-function": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3373,25 +3373,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-exponential-functions": { + "node_modules/@csstools/postcss-exponential-functions": { "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csttools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3400,23 +3400,23 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-font-format-keywords": { + "node_modules/@csstools/postcss-font-format-keywords": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/utilities": "^2.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3426,25 +3426,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-gamut-mapping": { + "node_modules/@csstools/postcss-gamut-mapping": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csttools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3453,27 +3453,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-gradients-interpolation-method": { + "node_modules/@csstools/postcss-gradients-interpolation-method": { "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3482,27 +3482,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-hwb-function": { + "node_modules/@csstools/postcss-hwb-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3511,24 +3511,24 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-ic-unit": { + "node_modules/@csstools/postcss-ic-unit": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@csttools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3538,18 +3538,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-initial": { + "node_modules/@csstools/postcss-initial": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3560,23 +3560,23 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-is-pseudo-class": { + "node_modules/@csstools/postcss-is-pseudo-class": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@csttools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/selector-specificity": "^5.0.0", + "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -3586,18 +3586,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-is-pseudo-class/node_modules/@csttools/selector-specificity": { + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3608,7 +3608,7 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/@csttools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -3621,26 +3621,26 @@ "node": ">=4" } }, - "node_modules/@csttools/postcss-light-dark-function": { + "node_modules/@csstools/postcss-light-dark-function": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csttools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3649,18 +3649,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-logical-float-and-clear": { + "node_modules/@csstools/postcss-logical-float-and-clear": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3671,18 +3671,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-logical-overflow": { + "node_modules/@csstools/postcss-logical-overflow": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3693,18 +3693,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-logical-overscroll-behavior": { + "node_modules/@csstools/postcss-logical-overscroll-behavior": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3715,18 +3715,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-logical-resize": { + "node_modules/@csstools/postcss-logical-resize": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3740,24 +3740,24 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-logical-viewport-units": { + "node_modules/@csstools/postcss-logical-viewport-units": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csttools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/utilities": "^2.0.0" + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3766,26 +3766,26 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-media-minmax": { + "node_modules/@csstools/postcss-media-minmax": { "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csttools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/media-query-list-parser": "^4.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -3794,25 +3794,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-media-queries-aspect-ratio-number-values": { + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csttools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/media-query-list-parser": "^4.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -3821,23 +3821,23 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-nested-calc": { + "node_modules/@csstools/postcss-nested-calc": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/utilities": "^2.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3847,18 +3847,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-normalize-display-values": { + "node_modules/@csstools/postcss-normalize-display-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3872,27 +3872,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-oklab-function": { + "node_modules/@csstools/postcss-oklab-function": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3901,18 +3901,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-progressive-custom-properties": { + "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -3926,25 +3926,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-random-function": { + "node_modules/@csstools/postcss-random-function": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3953,27 +3953,27 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-relative-color-syntax": { + "node_modules/@csstools/postcss-relative-color-syntax": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@csttools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -3982,18 +3982,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-scope-pseudo-class": { + "node_modules/@csstools/postcss-scope-pseudo-class": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@csttools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -4007,7 +4007,7 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", @@ -4020,25 +4020,25 @@ "node": ">=4" } }, - "node_modules/@csttools/postcss-sign-functions": { + "node_modules/@csstools/postcss-sign-functions": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@csttools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4047,25 +4047,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-stepped-value-functions": { + "node_modules/@csstools/postcss-stepped-value-functions": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csttools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4074,23 +4074,23 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-text-decoration-shorthand": { + "node_modules/@csstools/postcss-text-decoration-shorthand": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csttools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/color-helpers": "^5.1.0", + "@csstools/color-helpers": "^5.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -4100,25 +4100,25 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-trigonometric-functions": { + "node_modules/@csstools/postcss-trigonometric-functions": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csttools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-calc": "^2.1.4", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -4127,18 +4127,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/postcss-unset-value": { + "node_modules/@csstools/postcss-unset-value": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csttools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -4149,18 +4149,18 @@ "postcss": "^8.4" } }, - "node_modules/@csttools/utilities": { + "node_modules/@csstools/utilities": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csttools/utilities/-/utilities-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -7495,7 +7495,7 @@ "node_modules/@radix-ui/react-radio-group": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.7.tgz", - "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsttHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", + "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsSTHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.2", @@ -9716,7 +9716,7 @@ "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", "license": "MIT", "dependencies": { - "csttype": "^3.0.2" + "csstype": "^3.0.2" } }, "node_modules/@types/react-redux": { @@ -12234,11 +12234,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -12284,16 +12284,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/selector-specificity": "^5.0.0", + "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, @@ -12304,18 +12304,18 @@ "postcss": "^8.4" } }, - "node_modules/css-has-pseudo/node_modules/@csttools/selector-specificity": { + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -12425,11 +12425,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -12504,11 +12504,11 @@ "funding": [ { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" }, { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" } ], "license": "MIT-0" @@ -12655,9 +12655,9 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, - "node_modules/csttype": { + "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csttype/-/csttype-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, @@ -13247,7 +13247,7 @@ "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosttTEBYQ==", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -24210,11 +24210,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -24279,20 +24279,20 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -24308,16 +24308,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/utilities": "^2.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24334,16 +24334,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/utilities": "^2.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24394,19 +24394,19 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/cascade-layer-name-parser": "^2.0.5", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/media-query-list-parser": "^4.0.3" + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -24422,19 +24422,19 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/cascade-layer-name-parser": "^2.0.5", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/utilities": "^2.0.0", + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24451,18 +24451,18 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "@csttools/cascade-layer-name-parser": "^2.0.5", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -24492,11 +24492,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -24593,17 +24593,17 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24620,11 +24620,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -24658,11 +24658,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -24705,11 +24705,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -24727,16 +24727,16 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/utilities": "^2.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -24753,20 +24753,20 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/css-color-parser": "^3.1.0", - "@csttools/css-parser-algorithms": "^3.0.5", - "@csttools/css-tokenizer": "^3.0.4", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/utilities": "^2.0.0" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" }, "engines": { "node": ">=18" @@ -24804,11 +24804,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25028,17 +25028,17 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/selector-resolve-nested": "^3.1.0", - "@csttools/selector-specificity": "^5.0.0", + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -25048,18 +25048,18 @@ "postcss": "^8.4" } }, - "node_modules/postcss-nesting/node_modules/@csttools/selector-resolve-nested": { + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csttools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25070,18 +25070,18 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/postcss-nesting/node_modules/@csttools/selector-specificity": { + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csttools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25283,11 +25283,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25317,11 +25317,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25342,51 +25342,51 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", "dependencies": { - "@csttools/postcss-alpha-function": "^1.0.1", - "@csttools/postcss-cascade-layers": "^5.0.2", - "@csttools/postcss-color-function": "^4.0.12", - "@csttools/postcss-color-function-display-p3-linear": "^1.0.1", - "@csttools/postcss-color-mix-function": "^3.0.12", - "@csttools/postcss-color-mix-variadic-function-arguments": "^1.0.2", - "@csttools/postcss-content-alt-text": "^2.0.8", - "@csttools/postcss-contrast-color-function": "^2.0.12", - "@csttools/postcss-exponential-functions": "^2.0.9", - "@csttools/postcss-font-format-keywords": "^4.0.0", - "@csttools/postcss-gamut-mapping": "^2.0.11", - "@csttools/postcss-gradients-interpolation-method": "^5.0.12", - "@csttools/postcss-hwb-function": "^4.0.12", - "@csttools/postcss-ic-unit": "^4.0.4", - "@csttools/postcss-initial": "^2.0.1", - "@csttools/postcss-is-pseudo-class": "^5.0.3", - "@csttools/postcss-light-dark-function": "^2.0.11", - "@csttools/postcss-logical-float-and-clear": "^3.0.0", - "@csttools/postcss-logical-overflow": "^2.0.0", - "@csttools/postcss-logical-overscroll-behavior": "^2.0.0", - "@csttools/postcss-logical-resize": "^3.0.0", - "@csttools/postcss-logical-viewport-units": "^3.0.4", - "@csttools/postcss-media-minmax": "^2.0.9", - "@csttools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", - "@csttools/postcss-nested-calc": "^4.0.0", - "@csttools/postcss-normalize-display-values": "^4.0.0", - "@csttools/postcss-oklab-function": "^4.0.12", - "@csttools/postcss-progressive-custom-properties": "^4.2.1", - "@csttools/postcss-random-function": "^2.0.1", - "@csttools/postcss-relative-color-syntax": "^3.0.12", - "@csttools/postcss-scope-pseudo-class": "^4.0.1", - "@csttools/postcss-sign-functions": "^1.1.4", - "@csttools/postcss-stepped-value-functions": "^4.0.9", - "@csttools/postcss-text-decoration-shorthand": "^4.0.3", - "@csttools/postcss-trigonometric-functions": "^4.0.9", - "@csttools/postcss-unset-value": "^4.0.0", + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.21", "browserslist": "^4.26.0", "css-blank-pseudo": "^7.0.1", @@ -25433,11 +25433,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT-0", @@ -25526,11 +25526,11 @@ "funding": [ { "type": "github", - "url": "https://github.com/sponsors/csttools" + "url": "https://github.com/sponsors/csstools" }, { "type": "opencollective", - "url": "https://opencollective.com/csttools" + "url": "https://opencollective.com/csstools" } ], "license": "MIT", @@ -29064,7 +29064,7 @@ "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36Osttwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" diff --git a/src/theme/DocBreadcrumbs/StructuredData/index.tsx b/src/theme/DocBreadcrumbs/StructuredData/index.tsx index 1c5d97b6..6179703d 100644 --- a/src/theme/DocBreadcrumbs/StructuredData/index.tsx +++ b/src/theme/DocBreadcrumbs/StructuredData/index.tsx @@ -1,10 +1,10 @@ import Head from "@docusaurus/Head"; -import { useBreadcrumbsttructuredData } from "@docusaurus/plugin-content-docs/client"; +import { useBreadcrumbsStructuredData } from "@docusaurus/plugin-content-docs/client"; import type { Props } from "@theme/DocBreadcrumbs/StructuredData"; import React, { type ReactNode } from "react"; -export default function DocBreadcrumbsttructuredData(props: Props): ReactNode { - const structuredData = useBreadcrumbsttructuredData({ +export default function DocBreadcrumbsStructuredData(props: Props): ReactNode { + const structuredData = useBreadcrumbsStructuredData({ breadcrumbs: props.breadcrumbs, }); return ( diff --git a/src/theme/DocBreadcrumbs/index.tsx b/src/theme/DocBreadcrumbs/index.tsx index 49bed866..b98052fb 100644 --- a/src/theme/DocBreadcrumbs/index.tsx +++ b/src/theme/DocBreadcrumbs/index.tsx @@ -1,5 +1,5 @@ import { useSidebarBreadcrumbs } from "@docusaurus/plugin-content-docs/client"; -import DocBreadcrumbsttructuredData from "@theme/DocBreadcrumbs/StructuredData"; +import DocBreadcrumbsStructuredData from "@theme/DocBreadcrumbs/StructuredData"; import React, { Fragment, type ReactNode } from "react"; import { Flex, Text } from "@radix-ui/themes"; @@ -19,7 +19,7 @@ export default function DocBreadcrumbs(): ReactNode { return ( <> - + {spliced.map((item, idx, { length }) => { if (item.type !== "category" && !item.docId?.includes("index")) { From 078b177017b863989589da2baff93efd89efe276 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 13:09:57 +0000 Subject: [PATCH 062/114] Update capitalization and formatting in Vapi integration docs --- docs/integrations-and-sdks/vapi.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 3691008e..d3d232db 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -57,6 +57,6 @@ assistant = client.assistants.create( ### Best Practices -- **Operating Point** Select the enhanced model for the best accuracy in real-time voice agents. +- **Operating point** Select the enhanced model for the best accuracy in real-time voice agents. - **Region** Choose the region closest to your users to optimize latency. -- **Custom Vocabulary** Use this feature to add key terms (e.g., product names) and leverage the sounds-like option for tricky pronunciations. \ No newline at end of file +- **Custom vocabulary** Use this feature to add key terms (e.g., product names) and leverage the "sounds like" option for tricky pronunciations. \ No newline at end of file From 615705f23d5313fde6c88287e6cd14a87f0c7215 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 13:22:27 +0000 Subject: [PATCH 063/114] Standardize terminology and capitalisation --- docs/integrations-and-sdks/index.mdx | 12 ++++++------ docs/integrations-and-sdks/sdks/stt-sdk/index.mdx | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index c1479625..117e498d 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -38,17 +38,17 @@ Integrating Speechmatics as your speech-to-text (STT) engine provides a foundati Speechmatics is built for real-world application, handling the nuances of natural human conversation. **Unmatched Accuracy**: -- The most accurate real-time sst engine, delivering final transcripts in less than 1s without compromising accuracy. +- The most accurate realtime STT API engine, delivering final transcripts in less than 1s without compromising accuracy. - This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. -**Noise Robustness using VAD**: -- Voice activity detection (VAD) to filter out background noise (cafes, call centers, wind), ensuring your agent doesn't hallucinate words due to static. +**Noise Robustness**: +- Our models are trained to understand speech in noisy environments, filter out background noise (cafes, call centers, wind), ensuring accurate and reliable transcriptions. **Global accent & dialect support**: - Speechmatics STT understands diverse accents without needing regional configuration -**Low Latency for Real-Time Transcription**: +**Low latency for realtime transcription**: - Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. -**Contextual Precision**: -- Features like [Custom Dictionary](/speech-to-text/features/custom-dictionary) allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file +**Contextual precision**: +- Features like [custom dictionary](/speech-to-text/features/custom-dictionary) allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx index 44538ac1..66a7ad3f 100644 --- a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx +++ b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx @@ -11,7 +11,7 @@ import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; The Speechmatics speech-to-text SDKs provide a simple and efficient way to integrate an STT service into applications. It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. -**Real-time STT**: +**Realtime STT**: The realtime STT SDK allows you to transcribe audio and respond to user input in real-time. **Batch STT**: @@ -24,12 +24,12 @@ The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> @@ -44,12 +44,12 @@ The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> From 3abc19c12afecf5ea2f650ebbc589bee3ac77787 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Thu, 4 Dec 2025 13:31:33 +0000 Subject: [PATCH 064/114] Standardise terminology and update LiveKit integration details --- docs/integrations-and-sdks/livekit.mdx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/integrations-and-sdks/livekit.mdx b/docs/integrations-and-sdks/livekit.mdx index b4e668d8..bfd9499e 100644 --- a/docs/integrations-and-sdks/livekit.mdx +++ b/docs/integrations-and-sdks/livekit.mdx @@ -11,7 +11,7 @@ With the Speechmatics STT plugin, you enable your voice agent to transcribe live LiveKit Agents is perfect for: - **Voice AI**: Voice assistants, chatbots, and IVR systems -- **Translation**: Real-time transcription of live events or recordings +- **Translation**: Realtime transcription of live events or recordings - **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets - **Media production**: News broadcasts, automated announcements @@ -21,10 +21,10 @@ Using Speechmatics STT you can: - Obtain partial and final results, - Incorporate speaker diarization, - Turn detection (end of utterance detection) -- Noise robustness using VAD +- Noise robustness - Global accent & dialect support -- Low latency for real-time transcription -- Contextual precision +- Low latency +- Custom dictionaries ## Quickstart @@ -34,7 +34,8 @@ For more detailed examples, please see the [Speechmatics Academy](https://github ### Requirements - LiveKit >= 1.2 -- Speechmatics Account (https://portal.speechmatics.com) +- Speechmatics API key. You can generate one [here](https://portal.speechmatics.com/settings/api-key). + ### Installation From 85fef4f6d39d02fdb7e6d5b67d5fb350127cb9b5 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 16:04:40 +0000 Subject: [PATCH 065/114] Update integrations overview page structure and standardise integration docs with consistent formatting, clearer quickstart sections, and simplified code examples. U pdate sidebar IDs to match new page structure and fix capitalisation inconsistencies. --- docs/integrations-and-sdks/index.mdx | 110 +++++++++++++++++----- docs/integrations-and-sdks/livekit.mdx | 72 +++++--------- docs/integrations-and-sdks/pipecat.mdx | 70 ++++++-------- docs/integrations-and-sdks/sdks/index.mdx | 2 +- docs/integrations-and-sdks/sidebar.ts | 8 +- docs/integrations-and-sdks/vapi.mdx | 61 ++++++------ 6 files changed, 178 insertions(+), 145 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 117e498d..811f34b5 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,54 +1,118 @@ --- -id: integrations-and-sdks-overview -description: Learn how to integrate Speechmatics STT with voice AI applications. +id: Overview +description: Discover how to connect to Speechmatics via integrations and SDKs. --- - import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; -# Speechmatics integrations +Discover which integrations and SDKs to use to add Speechmatics speech and voice agents to your stack. + +Use this page to quickly choose how you connect to Speechmatics: through popular voice agent platforms, or directly from your code using our SDKs. Start with the option that best matches your current stack, then follow its quickstart. -Integrating Speechmatics as your speech-to-text (STT) engine provides a foundational upgrade to any voice application. +## Voice agent orchestrator integrations -## Explore integrations +Choose an integration to build accurate, low-latency voice agents rapidly with the Speechmatics API available in these frameworks. } - href="/integrations-and-sdks/integrations-and-sdks-vapi" + href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/integrations-and-sdks-livekit" /> } href="/integrations-and-sdks/integrations-and-sdks-pipecat" /> -## Benefits -Speechmatics is built for real-world application, handling the nuances of natural human conversation. +## SDKs + +Use an SDK if you want to call Speechmatics directly from your own services or applications. -**Unmatched Accuracy**: -- The most accurate realtime STT API engine, delivering final transcripts in less than 1s without compromising accuracy. -- This balance of speed and precision is critical for voice agents, allowing them to respond naturally to users while keeping the conversation flow intact. +### Speech to text -**Noise Robustness**: -- Our models are trained to understand speech in noisy environments, filter out background noise (cafes, call centers, wind), ensuring accurate and reliable transcriptions. + + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" + /> + -**Global accent & dialect support**: -- Speechmatics STT understands diverse accents without needing regional configuration -**Low latency for realtime transcription**: -- Speechmatics STT delivers transcripts in milliseconds, preventing the "awkward silence" that breaks immersion in voice bots. -**Contextual precision**: -- Features like [custom dictionary](/speech-to-text/features/custom-dictionary) allow you to teach the AI brand names, acronyms, and domain-specific jargon (e.g., medical or legal terms) to ensure 100% recognition rates on high-value keywords. \ No newline at end of file + +} + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + /> + } + href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" + /> + } + href="https://github.com/speechmatics/speechmatics-rust-sdk" + /> + + + +### Text to speech + + +} + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" + /> + + +### Voice Agents + + +} + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" + /> + \ No newline at end of file diff --git a/docs/integrations-and-sdks/livekit.mdx b/docs/integrations-and-sdks/livekit.mdx index bfd9499e..e8d091da 100644 --- a/docs/integrations-and-sdks/livekit.mdx +++ b/docs/integrations-and-sdks/livekit.mdx @@ -1,87 +1,63 @@ --- -id: integrations-and-sdks-livekit +id: livekit description: Learn how to integrate Speechmatics STT with LiveKit Agents. --- -# LiveKit Agents +# LiveKit integration LiveKit Agents is a framework for building real-time, voice-enabled AI applications that connect with LiveKit rooms. With the Speechmatics STT plugin, you enable your voice agent to transcribe live audio in real-time, along with speaker diarization, turn detection and noise robustness. -LiveKit Agents is perfect for: +LiveKit integrations are perfect for: -- **Voice AI**: Voice assistants, chatbots, and IVR systems -- **Translation**: Realtime transcription of live events or recordings -- **Accessibility applications**: Screen readers and assistive technologies, in-app help widgets -- **Media production**: News broadcasts, automated announcements +- **Voice AI**: voice assistants, chatbots, and IVR systems +- **Transcription**: live events or recordings +- **Accessibility**: screen readers and assistive technologies, in-app help widgets +- **Media**: news broadcasts, automated announcements ## Features -Using Speechmatics STT you can: -- Obtain partial and final results, -- Incorporate speaker diarization, -- Turn detection (end of utterance detection) -- Noise robustness -- Global accent & dialect support -- Low latency -- Custom dictionaries +- **Realtime transcription**: instant, accurate speech-to-text +- **Speaker diarization**: identify and separate multiple speakers automatically +- **Turn detection**: detect natural speech boundaries and pauses +- **Noise robustness**: maintain accuracy in challenging environments +- **Global language support**: works with diverse accents and dialects +- **Partial results**: receive interim transcriptions for faster response times +- **High accuracy**: industry-leading word recognition for natural conversations ## Quickstart -This section includes a basic example and some reference material. -For more detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). - ### Requirements - LiveKit >= 1.2 -- Speechmatics API key. You can generate one [here](https://portal.speechmatics.com/settings/api-key). - +- [Speechmatics account](https://portal.speechmatics.com). +- Speechmatics API key. You can generate one in the [Portal](https://portal.speechmatics.com/settings/api-keys). ### Installation -Install the plugin from PyPI: - ```python uv add "livekit-agents[speechmatics]~=1.2" ``` -### Authentication - -The Speechmatics STT plugin requires an API key. You can generate your API key in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). -Set the environment variable `SPEECHMATICS_API_KEY` in your .env file. - -```bash -export SPEECHMATICS_API_KEY=your_api_key -``` ### Usage -Use the Speechmatics STT in an AgentSession or as a standalone transcription service. - ```python import os -from dotenv import load_dotenv +import asyncio + from livekit.agents import AgentSession, cli from livekit.plugins import speechmatics -# Load API keys from .env file -load_dotenv() - -# Initialize the agent with Speechmatics STT async def run_agent(room): session = AgentSession( stt=speechmatics.STT( - enable_diarization=True, - end_of_utterance_silence_trigger=0.3 - ) + api_key=os.environ["SPEECHMATICS_API_KEY"], + ), ) - - # Process incoming audio - @session.on("transcription_received") - async def on_transcription(event): - print(f"Speaker {event.speaker}: {event.text}") - - await session.start(room) + await session.join(room) if __name__ == "__main__": cli.run_app(run_agent) -``` \ No newline at end of file +``` + +For detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). diff --git a/docs/integrations-and-sdks/pipecat.mdx b/docs/integrations-and-sdks/pipecat.mdx index e6fd4c72..bf9935cd 100644 --- a/docs/integrations-and-sdks/pipecat.mdx +++ b/docs/integrations-and-sdks/pipecat.mdx @@ -1,13 +1,13 @@ --- -id: integrations-and-sdks-pipecat +id: pipecat description: Learn how to integrate Speechmatics STT with Pipecat. --- import CodeBlock from '@theme/CodeBlock'; -# Pipecat +# Pipecat integration -Pipecat is an open-source framework for building vocal AI agents. When Speechmatics STT is integrated with Pipecat, you can build real-time voice and multimodal conversational agent specifically tailored to your needs. +Pipecat is an open-source framework for building voice agents. When Speechmatics STT is integrated with Pipecat, you can build real-time voice and multimodal conversational agent specifically tailored to your needs. Pipecat is perfect for: @@ -19,68 +19,54 @@ Pipecat is perfect for: ## Features -- Enhanced Conversational Dynamics - real-time transcription, speaker diarization, turn detection, noise robustness using VAD -- High accuracy and low latency -- Global accent & dialect support -- Contextual precision with custom dictionaries -- Flexible deployment, modular control - +- **Realtime transcription**: low-latency speech-to-text for responsive agents +- **Speaker diarization**: track who’s speaking in multi-participant sessions +- **Turn detection**: capture natural speech boundaries automatically +- **Noise robustness**: maintain accuracy in challenging environments +- **Custom vocabularies**: boost recognition for domain-specific terms +- **Flexible deployment**: use on-device, cloud, or hybrid Pipecat setups ## Quickstart ### Requirements - Python 3.10 or later - uv package manager installed - Pipecat >= 1.2 -- Speechmatics Account (https://portal.speechmatics.com) - -### Installation - -Install the plugin from PyPI: +- Speechmatics account. You can create one [here](https://portal.speechmatics.com). +- Speechmatics API key. You can generate one in the [Portal](https://portal.speechmatics.com/settings/api-keys). +#### Installation ```python pip install "pipecat-ai[speechmatics]" ``` - -### Authentication - -Speechmatics requires an API key, which you can generate in the [Speechmatics Portal](https://portal.speechmatics.com/settings/api-keys). - -### Required environment variable: - +### Usage +Set the environment variable SPEECHMATICS_API_KEY to your Speechmatics API key. ```bash export SPEECHMATICS_API_KEY=your_api_key ``` -### Usage - ```python -import os import asyncio +import os + from pipecat.services.speechmatics import SpeechmaticsSTTService -from pipecat.language_configs.language import Language + async def main(): - # Initialize Speechmatics STT stt = SpeechmaticsSTTService( - api_key=os.getenv("SPEECHMATICS_API_KEY"), - params=SpeechmaticsSTTService.InputParams( - language=Language.EN, - enable_diarization=True - ) + api_key=os.environ["SPEECHMATICS_API_KEY"], ) - # Example audio processing - async def process_audio(): - # In a real app, this would be your audio stream - # For demo, we'll simulate a simple audio source - audio_chunks = [b"fake_audio_chunk_1", b"fake_audio_chunk_2"] - - async for transcript in stt.transcribe(audio_chunks): - speaker = f"Speaker {transcript.speaker}" if transcript.speaker else "Unknown" - print(f"{speaker}: {transcript.text}") + async def audio_stream(): + # Replace with your real audio source. + yield from [b"fake_audio_chunk_1", b"fake_audio_chunk_2"] + + async for result in stt.transcribe(audio_stream()): + speaker = f"Speaker {result.speaker}" if result.speaker else "Unknown" + print(f"{speaker}: {result.text}") - await process_audio() if __name__ == "__main__": asyncio.run(main()) -``` \ No newline at end of file +``` + +For detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index 70309674..a9c074eb 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -38,7 +38,7 @@ Or, } direction="column" - title="Transcribe in real-time" + title="Transcribe in realtime" description="Instantly convert streaming audio to text with Realtime processing" href="/speech-to-text/realtime/quickstart" /> diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index 075cd4c3..4f5e0ce3 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -6,22 +6,22 @@ export default { items: [ { type: "doc", - id: "integrations-and-sdks/integrations-and-sdks-overview", + id: "integrations-and-sdks/Overview", label: "Overview", }, { type: "doc", - id: "integrations-and-sdks/integrations-and-sdks-vapi", + id: "integrations-and-sdks/vapi", label: "Vapi", }, { type: "doc", - id: "integrations-and-sdks/integrations-and-sdks-livekit", + id: "integrations-and-sdks/livekit", label: "LiveKit", }, { type: "doc", - id: "integrations-and-sdks/integrations-and-sdks-pipecat", + id: "integrations-and-sdks/pipecat", label: "Pipecat", }, { diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index d3d232db..9e82d517 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -1,34 +1,36 @@ --- -id: integrations-and-sdks-vapi +id: vapi description: Learn how to integrate Speechmatics STT with Vapi. --- import CodeBlock from '@theme/CodeBlock'; -# Vapi +# Vapi integration -Vapi offers native integration with Speechmatics for real-time, highly accurate speech-to-text in AI voice agents. This integration is designed to handle real-world conversation complexities like background noise, diverse accents, and multiple speakers. +Vapi offers native integration with Speechmatics for real-time, highly accurate speech-to-text in AI voice agents. +This integration is designed for rapid deployment and handles real-world conversation complexities, such as background noise, diverse accents, and multiple speakers, with no code required. Vapi is perfect for: -- **Customer Service & Contact Centers**: Automating customer interactions with AI agents that can accurately understand and respond to diverse accents, background noise, and industry-specific jargon, leading to better customer experiences and call routing. -- **Healthcare & Medical**: Building agents for tasks like appointment booking, patient triage, and clinical note-taking (ambient AI) where precise transcription of medical terminology is critical for compliance and efficiency. -- **Multi-Lingual Communication**: Developing global voice agents that can operate in over 55 languages, automatically detecting the language spoken and providing accurate transcription and translation. -- **Meeting & Interview Platforms**: Creating AI assistants that can accurately transcribe multi-speaker conversations in real-time and identify who said what, providing full context for downstream tools and automated summaries. -- **Educational Tools**: Implementing interactive study partners that can quiz students, elaborate on topics, and provide immediate feedback through natural voice interactions. +- **Customer service & contact centers**: Automating customer interactions with AI agents that can accurately understand and respond to diverse accents, background noise, and industry-specific jargon, leading to better customer experiences and call routing. +- **Healthcare & medical**: Building agents for tasks like appointment booking, patient triage, and clinical note-taking (ambient AI) where precise transcription of medical terminology is critical for compliance and efficiency. +- **Multi-lingual communication**: Developing global voice agents that can operate in over 55 languages, automatically detecting the language spoken and providing accurate transcription and translation. +- **Meeting & interview platforms**: Creating AI assistants that can accurately transcribe multi-speaker conversations in real-time and identify who said what, providing full context for downstream tools and automated summaries. +- **Educational tools**: Implementing interactive study partners that can quiz students, elaborate on topics, and provide immediate feedback through natural voice interactions. ## Features -- **Native Availability**: Speechmatics is a natively available transcriber option within the Vapi platform, simplifying the setup process for developers. -- **High Accuracy & Low Latency**: The integration provides an accurate and low-latency input layer, crucial for natural, real-time conversations with AI agents. -- **Speaker Diarization**: Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. -- **Flexible Deployment**: Speechmatics STT is available in Vapi's managed platform. +- **Native availability and flexible deployment**: Speechmatics is embedded within the Vapi platform, simplifying the setup process. +- **High accuracy & low latency**: The Speechmatics integration provides an accurate and low-latency input layer, crucial for natural conversations with AI agents. +- **Speaker diarization**: Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. ## Quickstart ### Requirements -- Vapi >= 1.2 -- Speechmatics Account (https://portal.speechmatics.com) +[VAPI Account](https://vapi.ai) +[VAPI Private Key](https://dashboard.vapi.ai) +[Speechmatics Account](https://portal.speechmatics.com) +[Speechmatics API Key](https://portal.speechmatics.com/settings/api-keys): Add to VAPI Dashboard under Provider Keys ### UI Integration @@ -37,26 +39,31 @@ The Vapi UI provides a simple way to integrate Speechmatics STT into your voice 1. Navigate to assistants tab in the Vapi dashboard. 2. Choose an existing assistant or create a new one. 3. Access the transcriber tab or scroll down to the transcriber module settings. -4. Select Speechmatics in the provider dropdown menu. +4. Select Speechmatics in the provider dropdown menu, and add your Speechmatics API key, which can be generated in the [Portal](https://portal.speechmatics.com/settings/api-keys). -### Python SDK +### Usage ```python +import os from vapi import Vapi +from vapi.types import SpeechmaticsTranscriber -client = Vapi(token="YOUR_VAPI_API_KEY") +client = Vapi(token=os.environ["VAPI_API_KEY"]) assistant = client.assistants.create( - name="Support Agent", - transcriber={ - "provider": "speechmatics", - "model": "enhanced", - "language": "en" - }, + name="Speechmatics Quickstart", + transcriber=SpeechmaticsTranscriber( + provider="speechmatics", + language="en", + ), ) + +print(f"Assistant ID: {assistant.id}") ``` -### Best Practices +### Best practices + +- **Operating point**: Select the enhanced model for the best accuracy in real-time voice agents. +- **Region**: Choose the region closest to optimize latency. +- **Custom vocabulary**: add key terms (e.g., product names, medical terminology) and leverage the "sounds like" option for tricky pronunciations. -- **Operating point** Select the enhanced model for the best accuracy in real-time voice agents. -- **Region** Choose the region closest to your users to optimize latency. -- **Custom vocabulary** Use this feature to add key terms (e.g., product names) and leverage the "sounds like" option for tricky pronunciations. \ No newline at end of file +For detailed examples, please see the [Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). From a441e374c081b4168f4cde8ab5c1cc44f4def9ac Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 16:29:18 +0000 Subject: [PATCH 066/114] Reorganise SDK section to group Voice Agents with STT SDKs and add descriptions to all SDK cards --- docs/integrations-and-sdks/index.mdx | 38 ++++++++++------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 811f34b5..3b4e08ba 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -50,45 +50,46 @@ Use an SDK if you want to call Speechmatics directly from your own services or a ### Speech to text - + + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" + /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" /> - - - - - } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-rust-sdk" /> @@ -100,19 +101,8 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> - - -### Voice Agents - - -} - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" - /> \ No newline at end of file From 79f7d54be5ec1c85eed47d635e864194b2429c4a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 18:29:41 +0000 Subject: [PATCH 067/114] Update SDK documentation structure and fix integration formatting Consolidate SDK pages into single overview with categorised sections for STT, TTS, and Voice SDKs. Add quickstart links to SDK cards and improve descriptions. Fix bullet point formatting in integration cards to use consistent markdown syntax. Update sidebar to remove separate SDK subsections. Correct LiveKit href path and add missing Voice SDK section to main integrations page. --- docs/integrations-and-sdks/index.mdx | 42 ++++-- docs/integrations-and-sdks/sdks/index.mdx | 122 ++++++++++++------ .../sdks/stt-sdk/index.mdx | 62 --------- .../sdks/tts-sdk/index.mdx | 28 ---- .../sdks/voice-sdk/index.mdx | 29 ----- docs/integrations-and-sdks/sidebar.ts | 17 +-- docs/integrations-and-sdks/vapi.mdx | 10 +- 7 files changed, 114 insertions(+), 196 deletions(-) delete mode 100644 docs/integrations-and-sdks/sdks/stt-sdk/index.mdx delete mode 100644 docs/integrations-and-sdks/sdks/tts-sdk/index.mdx delete mode 100644 docs/integrations-and-sdks/sdks/voice-sdk/index.mdx diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 3b4e08ba..7bbf18ee 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -18,29 +18,32 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } - href="/integrations-and-sdks/integrations-and-sdks-livekit" + href="/integrations-and-sdks/livekit" /> } - href="/integrations-and-sdks/integrations-and-sdks-pipecat" + href="/integrations-and-sdks/pipecat" /> @@ -53,7 +56,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> @@ -95,7 +98,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a /> - + ### Text to speech @@ -105,4 +108,15 @@ Use an SDK if you want to call Speechmatics directly from your own services or a icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> + + +### Voice SDK + + +} + href="https://github.com/speechmatics/speechmatics-python-sdk/blob/main/sdk/voice/README.md" + /> \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index a9c074eb..df4a9cac 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -1,68 +1,106 @@ --- -title: SDKs +title: SDKs description: Learn how to use the Speechmatics SDKs --- -Speechmatics SDKs provide a simple and efficient way to integrate an STT or TTS service into applications. -They offer a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. - -### Developer Quickstart - import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, - Languages, - Tags, - Globe, - BookPlus, - Speech, - ChartLine, BotMessageSquare, } from "lucide-react"; -Use speech to text to transcribe using one of the modes - -- Real-time stt processing: Stream audio from an input device or file and receive instant updates of the transcription as it happens -- Batch stt processing: Submit an audio file and receive a complete text transcription once the processing is finished - -Or, -- Convert text to speech and stream the audio to an output device or file +Find the right Speechmatics SDK for your language and start building fast. -Or, -- Build conversational AI voice agents with Flow SDK +Each SDK card provides simple installation steps and practical examples to get you moving. Select your language and follow the quickstart to go from setup to working code with minimal friction. -## Developer quickstart +## Speech to text SDKs - + } - direction="column" - title="Transcribe in realtime" - description="Instantly convert streaming audio to text with Realtime processing" - href="/speech-to-text/realtime/quickstart" + quickstart="/voice-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" + /> + } + quickstart="/rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" + /> + } + quickstart="/js-rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" /> - } + quickstart="/dotnet-rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" + /> + } - direction="column" - title="Transcribe a file" - description="Submit an audio file and receive a complete text transcription once the processing is finished" - href="/speech-to-text/batch/quickstart" + quickstart="/python-batch-stt-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> - } + quickstart="/js-batch-stt-sdk" + href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client" + /> + } - direction="column" - title="Text to speech" - description="Submit an audio file and receive a complete text transcription once the processing is finished" - href="/integrations-and-sdks/sdks/tts-sdk" + quickstart="/rust-stt-sdk" + href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> - } - direction="column" - title="Voice agents" - description="Build conversational AI voice agents with the Flow SDK" - href="/integrations-and-sdks/sdks/voice-sdk" + + + + +## Text to speech SDKs + + + } + quickstart="/python-tts-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" + /> + + + +## Voice SDKs + + + } + quickstart="/python-voice-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/blob/main/sdk/voice/README.md" + /> + + + \ No newline at end of file diff --git a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx b/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx deleted file mode 100644 index 66a7ad3f..00000000 --- a/docs/integrations-and-sdks/sdks/stt-sdk/index.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Speech to text SDK Overview -description: Learn how to use the Speechmatics STT SDK ---- -import { LinkCard } from "@site/src/theme/LinkCard"; -import { Flex, Grid } from "@radix-ui/themes"; -import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; - -## Speech to Text SDKs - -The Speechmatics speech-to-text SDKs provide a simple and efficient way to integrate an STT service into applications. -It offers a range of features, including speaker diarization, turn detection, noise robustness, and global accent support. - -**Realtime STT**: -The realtime STT SDK allows you to transcribe audio and respond to user input in real-time. - -**Batch STT**: -The batch STT SDK allows you to transcribe audio files in batches, enabling you to transcribe large amounts of audio in a single request. - -**Other Programming Languages**: -The Speechmatics STT SDKs are available for use in Python, JavaScript, .NET, and Rust. - -### Explore our SDKs for Speech to Text transcription - - - } - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" - /> - } - href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" - /> - } - href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" - /> - - - - - -} - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" - /> - } - href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" - /> - } - href="https://github.com/speechmatics/speechmatics-rust-sdk" - /> - - diff --git a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx b/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx deleted file mode 100644 index 0714a300..00000000 --- a/docs/integrations-and-sdks/sdks/tts-sdk/index.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Text to speech SDK -id: tts-sdk -description: Learn how to use the Speechmatics TTS SDK ---- - -import { LinkCard } from "@site/src/theme/LinkCard"; -import { Flex, Grid } from "@radix-ui/themes"; -import { BotMessageSquare, ChevronsRightIcon, FileAudio } from "lucide-react"; - -## Text to speech SDKs - -The Speechmatics text to speech SDK provides a simple and efficient way to integrate a TTS service into applications. -It offers a fast way to convert text to speech and stream the audio to an output device or file, in a voice of your choosing. - -### Experiment with the TTS SDK available in Python: - - - } - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" - /> - - -Additional TTS SDKs in other programming languages are coming soon! - - diff --git a/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx b/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx deleted file mode 100644 index fc087895..00000000 --- a/docs/integrations-and-sdks/sdks/voice-sdk/index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Voice agents - Flow -id: voice-sdk -description: Learn how to use the Speechmatics Voice agents SDK to build conversational AI agents ---- - -import { LinkCard } from "@site/src/theme/LinkCard"; -import { Grid } from "@radix-ui/themes"; -import { BotMessageSquare } from "lucide-react"; - -## Speechmatics Flow SDK - -Flow is the Speechmatics voice agent API that allows you to build responsive, interactive, and intelligent speech-to-speech interactions to any product. - -The voice SDK provides a simple and effective way to integrate natural and fluid conversational interactions, with the ability to handle interuptions, multiple speakers and the ability to understand different dialects and accents. - - - - } - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/flow" - /> - } - href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/flow-client" - /> - diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index 4f5e0ce3..9ee2158b 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -34,22 +34,7 @@ export default { type: "doc", id: "integrations-and-sdks/sdks/index", label: "Overview", - }, - { - type: "doc", - id: "integrations-and-sdks/sdks/stt-sdk/index", - label: "Speech to text SDKs", - }, - { - type: "doc", - id: "integrations-and-sdks/sdks/tts-sdk/tts-sdk", - label: "Text to speech SDK", - }, - { - type: "doc", - id: "integrations-and-sdks/sdks/voice-sdk/voice-sdk", - label: "Voice SDKs", - }, + }, ], }, ] diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 9e82d517..49c02f0f 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -12,11 +12,11 @@ This integration is designed for rapid deployment and handles real-world convers Vapi is perfect for: -- **Customer service & contact centers**: Automating customer interactions with AI agents that can accurately understand and respond to diverse accents, background noise, and industry-specific jargon, leading to better customer experiences and call routing. -- **Healthcare & medical**: Building agents for tasks like appointment booking, patient triage, and clinical note-taking (ambient AI) where precise transcription of medical terminology is critical for compliance and efficiency. -- **Multi-lingual communication**: Developing global voice agents that can operate in over 55 languages, automatically detecting the language spoken and providing accurate transcription and translation. -- **Meeting & interview platforms**: Creating AI assistants that can accurately transcribe multi-speaker conversations in real-time and identify who said what, providing full context for downstream tools and automated summaries. -- **Educational tools**: Implementing interactive study partners that can quiz students, elaborate on topics, and provide immediate feedback through natural voice interactions. +- **Task Automation**: Offload routine voice-based tasks +- **Live Call Analysis**: Gain real-time insights from conversations +- **Hands-Free Control**: Build voice-driven application interfaces +- **Global Voice Support**: Deploy agents that speak any language +- **Interactive AI**: Create sophisticated conversational bots ## Features From a78dc2b6c2b03061f07fb878c6a775eaa65e52de Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 18:34:51 +0000 Subject: [PATCH 068/114] Standardise formatting in integration descriptions by consolidating multi-line text and using semicolons instead of bullet points --- docs/integrations-and-sdks/index.mdx | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 7bbf18ee..8964573c 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -18,30 +18,21 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/livekit" /> } href="/integrations-and-sdks/pipecat" /> From ec9ff7fa09df6ad9278da95132fff518b180419e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 18:38:05 +0000 Subject: [PATCH 069/114] Consolidate multi-line descriptions in voice agent integration cards to single lines --- docs/integrations-and-sdks/index.mdx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 8964573c..15c09f9a 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -17,22 +17,19 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/livekit" /> } href="/integrations-and-sdks/pipecat" /> From 5ceb4791ee528d05854c50ffe945a9d8c6da10c6 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 18:41:57 +0000 Subject: [PATCH 070/114] Best for cards --- docs/integrations-and-sdks/index.mdx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 15c09f9a..0f6ddf7f 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -33,6 +33,24 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t icon={} href="/integrations-and-sdks/pipecat" /> + } + href="/integrations-and-sdks/vapi" + /> + } + href="/integrations-and-sdks/livekit" + /> + } + href="/integrations-and-sdks/pipecat" + /> ## SDKs From 22eadb938a3ef0dd39c2593a18da1dbcdc9cb58c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 18:51:52 +0000 Subject: [PATCH 071/114] Remove "Best for" recommendations from voice agent integration card descriptions --- docs/integrations-and-sdks/index.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 0f6ddf7f..5d5d6036 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -17,19 +17,19 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/livekit" /> } href="/integrations-and-sdks/pipecat" /> From b4e8992eacd1a16b6d501fc17bc0d7a606d37387 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Fri, 5 Dec 2025 19:00:41 +0000 Subject: [PATCH 072/114] Monior a --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 5d5d6036..49825b44 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -47,7 +47,7 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t /> } href="/integrations-and-sdks/pipecat" /> From 59266bb981ad2864e483b0e7bfde42413dbb08e1 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 11:50:53 +0000 Subject: [PATCH 073/114] Add voice agents SDK documentation with quickstart guide and configuration reference --- docs/voice-agents/assets/basic-quickstart.py | 40 +++++ docs/voice-agents/assets/custom-config.py | 10 ++ docs/voice-agents/assets/presets.py | 19 +++ docs/voice-agents/features.mdx | 161 +++++++++++++++++++ docs/voice-agents/quickstart.mdx | 109 +++++++++++++ docs/voice-agents/sidebar.ts | 18 +++ sidebars.ts | 3 +- 7 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 docs/voice-agents/assets/basic-quickstart.py create mode 100644 docs/voice-agents/assets/custom-config.py create mode 100644 docs/voice-agents/assets/presets.py create mode 100644 docs/voice-agents/features.mdx create mode 100644 docs/voice-agents/quickstart.mdx create mode 100644 docs/voice-agents/sidebar.ts diff --git a/docs/voice-agents/assets/basic-quickstart.py b/docs/voice-agents/assets/basic-quickstart.py new file mode 100644 index 00000000..00544746 --- /dev/null +++ b/docs/voice-agents/assets/basic-quickstart.py @@ -0,0 +1,40 @@ +import asyncio +import os +from speechmatics.rt import Microphone +from speechmatics.voice import VoiceAgentClient, AgentServerMessageType + +async def main(): + # Create client with preset + client = VoiceAgentClient( + api_key=os.getenv("SPEECHMATICS_API_KEY"), + preset="scribe" + ) + + # Handle final segments + @client.on(AgentServerMessageType.ADD_SEGMENT) + def on_segment(message): + for segment in message["segments"]: + speaker = segment["speaker_id"] + text = segment["text"] + print(f"{speaker}: {text}") + + # Setup microphone + mic = Microphone(sample_rate=16000, chunk_size=320) + if not mic.start(): + print("Error: Microphone not available") + return + + # Connect and stream + await client.connect() + + try: + while True: + audio_chunk = await mic.read(320) + await client.send_audio(audio_chunk) + except KeyboardInterrupt: + pass + finally: + await client.disconnect() + +if __name__ == "__main__": + asyncio.run(main()) \ No newline at end of file diff --git a/docs/voice-agents/assets/custom-config.py b/docs/voice-agents/assets/custom-config.py new file mode 100644 index 00000000..87d60cdf --- /dev/null +++ b/docs/voice-agents/assets/custom-config.py @@ -0,0 +1,10 @@ +from speechmatics.voice import VoiceAgentClient, VoiceAgentConfig, EndOfUtteranceMode + +config = VoiceAgentConfig( + language="en", + enable_diarization=True, + max_delay=0.7, + end_of_utterance_mode=EndOfUtteranceMode.ADAPTIVE, +) + +client = VoiceAgentClient(api_key=api_key, config=config) \ No newline at end of file diff --git a/docs/voice-agents/assets/presets.py b/docs/voice-agents/assets/presets.py new file mode 100644 index 00000000..f73a0316 --- /dev/null +++ b/docs/voice-agents/assets/presets.py @@ -0,0 +1,19 @@ +# Presets provide optimized configurations for common use cases: + +# External end of turn preset - endpointing handled by the client +client = VoiceAgentClient(api_key=api_key, preset="external") + +# Scribe preset - for note-taking +client = VoiceAgentClient(api_key=api_key, preset="scribe") + +# Low latency preset - for fast responses +client = VoiceAgentClient(api_key=api_key, preset="low_latency") + +# Conversation preset - for natural dialogue +client = VoiceAgentClient(api_key=api_key, preset="conversation_adaptive") + +# Advanced conversation with ML turn detection +client = VoiceAgentClient(api_key=api_key, preset="conversation_smart_turn") + +# Captions preset - for live captioning +client = VoiceAgentClient(api_key=api_key, preset="captions") \ No newline at end of file diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx new file mode 100644 index 00000000..b593d0a9 --- /dev/null +++ b/docs/voice-agents/features.mdx @@ -0,0 +1,161 @@ +--- +title: Configuration Parameters +description: Learn about the configuration parameters of the Speechmatics voice agent SDK +--- +import CodeBlock from '@theme/CodeBlock'; + +## Configuration + +### Basic Parameters +**language** (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See supported languages. + +**operating_point** (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. + +**domain** (str, default: None) Domain-specific model (e.g., "finance", "medical"). See supported languages and domains. + +**output_locale** (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See supported languages and locales. + +**enable_diarization** (bool, default: False) Enable speaker diarization to identify and label different speakers. + +### Turn Detection Parameters +**end_of_utterance_mode** (EndOfUtteranceMode, default: FIXED) Controls how turn endings are detected: + +FIXED - Uses fixed silence threshold. Fast but may split slow speech. +ADAPTIVE - Adjusts delay based on speech rate, pauses, and disfluencies. Best for natural conversation. +SMART_TURN - Uses ML model to detect acoustic turn-taking cues. Requires [smart] extras. +EXTERNAL - Manual control via client.finalize(). For custom turn logic. +end_of_utterance_silence_trigger (float, default: 0.2) Silence duration in seconds to trigger turn end. + +end_of_utterance_max_delay (float, default: 10.0) Maximum delay before forcing turn end. + +max_delay (float, default: 0.7) Maximum transcription delay for word emission. + +### Speaker Configuration +**speaker_sensitivity** (float, default: 0.5) Diarization sensitivity between 0.0 and 1.0. Higher values detect more speakers. + +**max_speakers** (int, default: None) Limit maximum number of speakers to detect. + +**prefer_current_speaker** (bool, default: False) Give extra weight to current speaker for word grouping. + +**speaker_config** (SpeakerFocusConfig, default: SpeakerFocusConfig()) Configure speaker focus/ignore rules. + + +{ +`from speechmatics.voice import SpeakerFocusConfig, SpeakerFocusMode + +# Focus only on specific speakers +config = VoiceAgentConfig( + enable_diarization=True, + speaker_config=SpeakerFocusConfig( + focus_speakers=["S1", "S2"], + focus_mode=SpeakerFocusMode.RETAIN + ) +) + +# Ignore specific speakers +config = VoiceAgentConfig( + enable_diarization=True, + speaker_config=SpeakerFocusConfig( + ignore_speakers=["S3"], + focus_mode=SpeakerFocusMode.IGNORE + ) +)` +} + +**known_speakers** (list[SpeakerIdentifier], default: []) Pre-enrolled speaker identifiers for speaker identification. + + +{ +`from speechmatics.voice import SpeakerIdentifier + +config = VoiceAgentConfig( + enable_diarization=True, + known_speakers=[ + SpeakerIdentifier(label="Alice", speaker_identifiers=["XX...XX"]), + SpeakerIdentifier(label="Bob", speaker_identifiers=["YY...YY"]) + ] +)` +} + +### Language & Vocabulary +**additional_vocab** (list[AdditionalVocabEntry], default: []) Custom vocabulary for domain-specific terms. + + +{ +`from speechmatics.voice import AdditionalVocabEntry + +config = VoiceAgentConfig( + language="en", + additional_vocab=[ + AdditionalVocabEntry( + content="Speechmatics", + sounds_like=["speech matters", "speech matics"] + ), + AdditionalVocabEntry(content="API"), + ] +)` +} + +**punctuation_overrides** (dict, default: None) Custom punctuation rules. + +### Audio Parameters +**sample_rate** (int, default: 16000) Audio sample rate in Hz. + +**audio_encoding** (AudioEncoding, default: PCM_S16LE) Audio encoding format. + +### Advanced Parameters +**transcription_update_preset** (TranscriptionUpdatePreset, default: COMPLETE) Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. + +**speech_segment_config** (SpeechSegmentConfig, default: SpeechSegmentConfig()) Fine-tune segment generation and post-processing. + +**smart_turn_config** (SmartTurnConfig, default: None) Configure SMART_TURN behavior (buffer length, threshold). + +**include_results** (bool, default: False) Include word-level timing data in segments. + +**include_partials** (bool, default: True) Emit partial segments. Set to False for final-only output. + +### Configuration with Overlays +Use presets as a starting point and customize with overlays: + + +{ +`from speechmatics.voice import VoiceAgentConfigPreset, VoiceAgentConfig + +# Use preset with custom overrides +config = VoiceAgentConfigPreset.SCRIBE( + VoiceAgentConfig( + language="es", + max_delay=0.8 + ) +)` +} + + +### Available presets + +{ +`presets = VoiceAgentConfigPreset.list_presets() +# Output: ['low_latency', 'conversation_adaptive', 'conversation_smart_turn', 'scribe', 'captions']` +} + + +### Configuration Serialization +Export and import configurations as JSON: + + +{ +`from speechmatics.voice import VoiceAgentConfigPreset, VoiceAgentConfig + +# Export preset to JSON +config_json = VoiceAgentConfigPreset.SCRIBE().to_json() + +# Load from JSON +config = VoiceAgentConfig.from_json(config_json) + +# Or create from JSON string +config = VoiceAgentConfig.from_json('{"language": "en", "enable_diarization": true}')` +} + + + +For more information, see the [voice agent Python SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. diff --git a/docs/voice-agents/quickstart.mdx b/docs/voice-agents/quickstart.mdx new file mode 100644 index 00000000..cb17ac5b --- /dev/null +++ b/docs/voice-agents/quickstart.mdx @@ -0,0 +1,109 @@ +--- +title: Overview +description: Learn how to build voice-enabled applications with the Speechmatics realtime STT API +--- +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +import pythonVoiceQuickstart from "./assets/basic-quickstart.py?raw" +import pythonVoicePresets from "./assets/presets.py?raw" +import pythonVoiceCustomConfig from "./assets/custom-config.py?raw" + +The Voice SDK builds on our Real-Time API to provide features optimized for conversational AI: + +- **Intelligent segmentation**: groups words into meaningful speech segments per speaker. +- **Turn detection**: automatically detects when speakers finish talking. +- **Speaker management**: focus on or ignore specific speakers in multi-speaker scenarios. +- **Preset configurations**: offers ready-to-use settings for conversations, note-taking, and captions. +- **Simplified event handling**: delivers clean, structured segments instead of raw word-level events. + +### When to Use Voice SDK vs Real-Time SDK + +Use voice SDK when: + +- Building conversational AI or voice agents +- You need automatic turn detection +- You want speaker-focused transcription +- You need ready-to-use presets for common scenarios + +Use Real-Time SDK when: + +- You need the raw stream of word-by-word transcription data +- Building custom segmentation logic +- You want fine-grained control over every event +- Processing batch files or custom workflows + +## Getting started + +### 1. Get your API key + +[Create an API key in the portal](https://portal.speechmatics.com/settings/api-keys) to access the voice SDK. Store your key securely as a managed secret. + +### 2. Install dependencies + +```bash +# Standard installation +pip install speechmatics-voice + +# With SMART_TURN (ML-based turn detection) +pip install speechmatics-voice[smart] +``` + +### 3. Quickstart + +Replace `YOUR_API_KEY` with your actual API key from the portal: + + + + + {pythonVoiceQuickstart} + + + + + {pythonVoicePresets} + + + + + {pythonVoiceCustomConfig} + + + + +## FAQ + +### Implementation and deployment + +
+Can I deploy this in my own environment? + +Yes! The voice agent API can be consumed via our managed service or deployed in your own environment. To learn more about on-premises deployment options, [speak to sales](https://www.speechmatics.com/speak-to-sales). +
+ +### Support + +
+Where can I provide feedback or get help? + +You can submit feedback, bug reports, or feature requests through the Speechmatics [GitHub discussions](https://github.com/orgs/speechmatics/discussions). +
+ +## Next steps + +For more information, see the [voice agent Python SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. + +To learn more, check out [the Speechmatics academy](https://github.com/speechmatics/speechmatics-academy) + +Ready to build something amazing with our voice agent SDK? We'd love to hear about your project and help you succeed. + +**Get in touch with us:** +- Share your feedback and feature requests +- Ask questions about implementation +- Discuss enterprise pricing and custom voices +- Report any issues or bugs you encounter + +[Contact our team](https://support.speechmatics.com) or join our developer community (https://www.reddit.com/r/Speechmatics) to connect with other builders using text to speech. + diff --git a/docs/voice-agents/sidebar.ts b/docs/voice-agents/sidebar.ts new file mode 100644 index 00000000..6eedfcaf --- /dev/null +++ b/docs/voice-agents/sidebar.ts @@ -0,0 +1,18 @@ +export default { + type: "category", + label: "Voice agents", + collapsible: false, + collapsed: false, + items: [ + { + type: "doc", + id: "voice-agents/quickstart", + label: "Quickstart", + }, + { + type: "doc", + id: "voice-agents/features", + label: "Features", + }, + ], +} as const; \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index d9f07dc9..9a81597c 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -5,12 +5,13 @@ import speechToTextSidebar from "./docs/speech-to-text/sidebar"; import textToSpeechSidebar from "./docs/text-to-speech/sidebar"; import voiceAgentsFlowSidebar from "./docs/voice-agents-flow/sidebar"; import integrationsAndSDKSidebar from "./docs/integrations-and-sdks/sidebar"; - +import voiceAgentsSidebar from "./docs/voice-agents/sidebar"; export default { docs: [ gettingStartedSidebar, speechToTextSidebar, + voiceAgentsSidebar, textToSpeechSidebar, integrationsAndSDKSidebar, voiceAgentsFlowSidebar, From f86e0a833a1034cc950dfe55f460f16bf2589d63 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:19:13 +0000 Subject: [PATCH 074/114] Update docs/integrations-and-sdks/vapi.mdx Co-authored-by: BTaylor --- docs/integrations-and-sdks/vapi.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 49c02f0f..7334fd80 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -12,7 +12,7 @@ This integration is designed for rapid deployment and handles real-world convers Vapi is perfect for: -- **Task Automation**: Offload routine voice-based tasks +- **Task automation**: Offload routine voice-based tasks - **Live Call Analysis**: Gain real-time insights from conversations - **Hands-Free Control**: Build voice-driven application interfaces - **Global Voice Support**: Deploy agents that speak any language From 5a7c344a88e778228167884282652a0df58df45a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:19:20 +0000 Subject: [PATCH 075/114] Update docs/integrations-and-sdks/vapi.mdx Co-authored-by: BTaylor --- docs/integrations-and-sdks/vapi.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 7334fd80..4be27154 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -13,7 +13,7 @@ This integration is designed for rapid deployment and handles real-world convers Vapi is perfect for: - **Task automation**: Offload routine voice-based tasks -- **Live Call Analysis**: Gain real-time insights from conversations +- **Live call analysis**: Gain real-time insights from conversations - **Hands-Free Control**: Build voice-driven application interfaces - **Global Voice Support**: Deploy agents that speak any language - **Interactive AI**: Create sophisticated conversational bots From e54d88eb7e2d59a64edc1ac5c81bc9c03f5e864a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:20:37 +0000 Subject: [PATCH 076/114] capitalisation in Vapi feature list items to use sentence case --- docs/integrations-and-sdks/vapi.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 4be27154..cb6e9807 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -14,8 +14,8 @@ Vapi is perfect for: - **Task automation**: Offload routine voice-based tasks - **Live call analysis**: Gain real-time insights from conversations -- **Hands-Free Control**: Build voice-driven application interfaces -- **Global Voice Support**: Deploy agents that speak any language +- **Hands-free control**: Build voice-driven application interfaces +- **Global voice support**: Deploy agents that speak any language - **Interactive AI**: Create sophisticated conversational bots ## Features From a924f6192fc07d557479e17862924fb7192451de Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:22:04 +0000 Subject: [PATCH 077/114] Remove empty placeholder LinkCard --- docs/integrations-and-sdks/sdks/index.mdx | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks/index.mdx index df4a9cac..0d15cd66 100644 --- a/docs/integrations-and-sdks/sdks/index.mdx +++ b/docs/integrations-and-sdks/sdks/index.mdx @@ -67,10 +67,6 @@ Each SDK card provides simple installation steps and practical examples to get y quickstart="/rust-stt-sdk" href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> - -
## Text to speech SDKs @@ -83,10 +79,6 @@ Each SDK card provides simple installation steps and practical examples to get y quickstart="/python-tts-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> - -
## Voice SDKs @@ -99,8 +91,4 @@ Each SDK card provides simple installation steps and practical examples to get y quickstart="/python-voice-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/blob/main/sdk/voice/README.md" /> - -
\ No newline at end of file From 93944f539207b7934bf6c08ee5879c9f9365e89c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:31:21 +0000 Subject: [PATCH 078/114] Update voice SDK documentation titles and descriptions to use sentence case and improve consistency --- docs/voice-agents/features.mdx | 5 ++--- docs/voice-agents/quickstart.mdx | 11 ++++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index b593d0a9..3b432edd 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -1,10 +1,9 @@ --- -title: Configuration Parameters -description: Learn about the configuration parameters of the Speechmatics voice agent SDK +description: Learn about configuration parameters for the voice SDK --- import CodeBlock from '@theme/CodeBlock'; -## Configuration +# Configuration Parameters ### Basic Parameters **language** (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See supported languages. diff --git a/docs/voice-agents/quickstart.mdx b/docs/voice-agents/quickstart.mdx index cb17ac5b..a34d62a6 100644 --- a/docs/voice-agents/quickstart.mdx +++ b/docs/voice-agents/quickstart.mdx @@ -1,5 +1,4 @@ --- -title: Overview description: Learn how to build voice-enabled applications with the Speechmatics realtime STT API --- import Admonition from '@theme/Admonition'; @@ -11,7 +10,9 @@ import pythonVoiceQuickstart from "./assets/basic-quickstart.py?raw" import pythonVoicePresets from "./assets/presets.py?raw" import pythonVoiceCustomConfig from "./assets/custom-config.py?raw" -The Voice SDK builds on our Real-Time API to provide features optimized for conversational AI: +# Voice Agent Overview + +The voice SDK builds on our real-time API to provide features optimized for conversational AI: - **Intelligent segmentation**: groups words into meaningful speech segments per speaker. - **Turn detection**: automatically detects when speakers finish talking. @@ -19,16 +20,16 @@ The Voice SDK builds on our Real-Time API to provide features optimized for conv - **Preset configurations**: offers ready-to-use settings for conversations, note-taking, and captions. - **Simplified event handling**: delivers clean, structured segments instead of raw word-level events. -### When to Use Voice SDK vs Real-Time SDK +### When to use the voice SDK vs real-time SDK -Use voice SDK when: +Use the voice SDK when: - Building conversational AI or voice agents - You need automatic turn detection - You want speaker-focused transcription - You need ready-to-use presets for common scenarios -Use Real-Time SDK when: +Use the realtime SDK when: - You need the raw stream of word-by-word transcription data - Building custom segmentation logic From 5847d4e565e8c4f1774ba972de99842539eaad23 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:35:36 +0000 Subject: [PATCH 079/114] use consistent terminology for SDK and apply sentence case to heading --- docs/voice-agents/quickstart.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/voice-agents/quickstart.mdx b/docs/voice-agents/quickstart.mdx index a34d62a6..5b3dad73 100644 --- a/docs/voice-agents/quickstart.mdx +++ b/docs/voice-agents/quickstart.mdx @@ -1,5 +1,5 @@ --- -description: Learn how to build voice-enabled applications with the Speechmatics realtime STT API +description: Learn how to build voice-enabled applications with the Speechmatics voice SDK --- import Admonition from '@theme/Admonition'; import CodeBlock from '@theme/CodeBlock'; @@ -10,7 +10,7 @@ import pythonVoiceQuickstart from "./assets/basic-quickstart.py?raw" import pythonVoicePresets from "./assets/presets.py?raw" import pythonVoiceCustomConfig from "./assets/custom-config.py?raw" -# Voice Agent Overview +# Voice agent overview The voice SDK builds on our real-time API to provide features optimized for conversational AI: @@ -81,7 +81,7 @@ Replace `YOUR_API_KEY` with your actual API key from the portal:
Can I deploy this in my own environment? -Yes! The voice agent API can be consumed via our managed service or deployed in your own environment. To learn more about on-premises deployment options, [speak to sales](https://www.speechmatics.com/speak-to-sales). +Yes! The voice agent SDK can be consumed via our managed service or deployed in your own environment. To learn more about on-premises deployment options, [speak to sales](https://www.speechmatics.com/speak-to-sales).
### Support From ae7acd8756d313c3652a4f3682f7f74742820520 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 12:49:24 +0000 Subject: [PATCH 080/114] Remove trailing period from Vapi integration card description for consistency --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 49825b44..652e0290 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -17,7 +17,7 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> From 7e329108a157844cc37764bacb333fe72840fe2a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 13:01:15 +0000 Subject: [PATCH 081/114] Format requirements as bullet list and clarify optional API key configuration in Vapi integration --- docs/integrations-and-sdks/vapi.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index cb6e9807..7b42ffea 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -27,10 +27,9 @@ Vapi is perfect for: ## Quickstart ### Requirements -[VAPI Account](https://vapi.ai) -[VAPI Private Key](https://dashboard.vapi.ai) -[Speechmatics Account](https://portal.speechmatics.com) -[Speechmatics API Key](https://portal.speechmatics.com/settings/api-keys): Add to VAPI Dashboard under Provider Keys +- [VAPI Account](https://vapi.ai) +- [VAPI Private Key](https://dashboard.vapi.ai) +- [Speechmatics Account](https://portal.speechmatics.com) ### UI Integration @@ -39,7 +38,8 @@ The Vapi UI provides a simple way to integrate Speechmatics STT into your voice 1. Navigate to assistants tab in the Vapi dashboard. 2. Choose an existing assistant or create a new one. 3. Access the transcriber tab or scroll down to the transcriber module settings. -4. Select Speechmatics in the provider dropdown menu, and add your Speechmatics API key, which can be generated in the [Portal](https://portal.speechmatics.com/settings/api-keys). +4. Select Speechmatics in the provider dropdown menu +5. Optionally, you can add your Speechmatics API key, which can be generated in [the portal](https://portal.speechmatics.com/settings/api-keys), within the Vapi dashboard under [Provider Keys](https://dashboard.vapi.ai/settings/integrations/speechmatics) ### Usage ```python From 28ff0c4d6c5e5165759cbc65783da89249e50f67 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 13:06:38 +0000 Subject: [PATCH 082/114] Move SDKs doc from category to single doc page and flatten sidebar structure --- .../{sdks/index.mdx => sdks.mdx} | 0 docs/integrations-and-sdks/sidebar.ts | 14 +++----------- 2 files changed, 3 insertions(+), 11 deletions(-) rename docs/integrations-and-sdks/{sdks/index.mdx => sdks.mdx} (100%) diff --git a/docs/integrations-and-sdks/sdks/index.mdx b/docs/integrations-and-sdks/sdks.mdx similarity index 100% rename from docs/integrations-and-sdks/sdks/index.mdx rename to docs/integrations-and-sdks/sdks.mdx diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index 9ee2158b..4b9dc1f4 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -25,17 +25,9 @@ export default { label: "Pipecat", }, { - type: "category", + type: "doc", + id: "integrations-and-sdks/sdks", label: "SDKs", - collapsible: true, - collapsed: true, - items: [ - { - type: "doc", - id: "integrations-and-sdks/sdks/index", - label: "Overview", - }, - ], - }, + }, ] } \ No newline at end of file From 9e59ed2117ae7ae30ea959bbe1da4aaa3f28262e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 15:54:05 +0000 Subject: [PATCH 083/114] Update integrations overview page description and remove duplicate Voice SDK section --- docs/integrations-and-sdks/index.mdx | 33 ++++++++++------------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 652e0290..347b9ebd 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,12 +1,13 @@ --- id: Overview -description: Discover how to connect to Speechmatics via integrations and SDKs. +description: Discover which integrations and SDKs to use to add Speechmatics' services (STT, TTS or voice agents) to your stack. --- + import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; -Discover which integrations and SDKs to use to add Speechmatics speech and voice agents to your stack. +# Overview Use this page to quickly choose how you connect to Speechmatics: through popular voice agent platforms, or directly from your code using our SDKs. Start with the option that best matches your current stack, then follow its quickstart. @@ -53,6 +54,7 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t /> + ## SDKs Use an SDK if you want to call Speechmatics directly from your own services or applications. @@ -61,43 +63,43 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-rust-sdk" @@ -109,20 +111,9 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> - -### Voice SDK - - -} - href="https://github.com/speechmatics/speechmatics-python-sdk/blob/main/sdk/voice/README.md" - /> - \ No newline at end of file From a25244dc2239a8f6c6996dd6dc009f2ce45b4e47 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Mon, 8 Dec 2025 17:04:13 +0000 Subject: [PATCH 084/114] Update SDK card icons to use devicon library and reorganize SDK listings for better consistency --- docs/integrations-and-sdks/index.mdx | 80 ++++++++++++---------------- docs/integrations-and-sdks/sdks.mdx | 55 +++++++------------ package-lock.json | 7 +++ package.json | 1 + 4 files changed, 62 insertions(+), 81 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 347b9ebd..9c11fa64 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,11 +1,17 @@ --- id: Overview -description: Discover which integrations and SDKs to use to add Speechmatics' services (STT, TTS or voice agents) to your stack. +description: Discover which integrations and SDKs to add Speechmatics' STT, TTS or voice agents to your applications. --- import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; +import Head from '@docusaurus/Head'; + + + + + # Overview @@ -18,43 +24,27 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/livekit" /> } - href="/integrations-and-sdks/pipecat" - /> - } - href="/integrations-and-sdks/vapi" - /> - } - href="/integrations-and-sdks/livekit" - /> - } href="/integrations-and-sdks/pipecat" /> + + ## SDKs Use an SDK if you want to call Speechmatics directly from your own services or applications. @@ -63,47 +53,47 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> } - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" - /> - } + icon={} href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> } + icon={} href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" /> -} - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } + icon={} href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } + icon={} href="https://github.com/speechmatics/speechmatics-rust-sdk" /> +} + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + /> @@ -111,9 +101,9 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> diff --git a/docs/integrations-and-sdks/sdks.mdx b/docs/integrations-and-sdks/sdks.mdx index 0d15cd66..694803d7 100644 --- a/docs/integrations-and-sdks/sdks.mdx +++ b/docs/integrations-and-sdks/sdks.mdx @@ -5,11 +5,6 @@ description: Learn how to use the Speechmatics SDKs import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; -import { - ChevronsRightIcon, - FileAudio, - BotMessageSquare, -} from "lucide-react"; Find the right Speechmatics SDK for your language and start building fast. @@ -21,53 +16,53 @@ Each SDK card provides simple installation steps and practical examples to get y } + icon={} quickstart="/voice-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> - } - quickstart="/rt-stt-sdk" - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" - /> } + icon={} quickstart="/js-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" /> - } + icon={} quickstart="/dotnet-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" /> } - quickstart="/python-batch-stt-sdk" - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + title="Python SDK (Realtime)" + description="Stream audio and receive instant transcripts in Python" + icon={} + quickstart="/rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } + icon={} quickstart="/js-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client" /> } + icon={} quickstart="/rust-stt-sdk" href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> +} + quickstart="/python-batch-stt-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + /> ## Text to speech SDKs @@ -75,20 +70,8 @@ Each SDK card provides simple installation steps and practical examples to get y } + icon={} quickstart="/python-tts-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" />
- -## Voice SDKs - - - } - quickstart="/python-voice-sdk" - href="https://github.com/speechmatics/speechmatics-python-sdk/blob/main/sdk/voice/README.md" - /> - \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 64144524..4725e7ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@signalwire/docusaurus-plugin-llms-txt": "^1.2.1", "asyncapi-schema-loader": "^0.0.1", "clsx": "^2.0.0", + "devicon": "^2.17.0", "docusaurus-plugin-openapi-docs": "^4.4.0", "docusaurus-theme-openapi-docs": "^4.4.0", "lucide-react": "^0.512.0", @@ -13487,6 +13488,12 @@ "node": ">= 4.0.0" } }, + "node_modules/devicon": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/devicon/-/devicon-2.17.0.tgz", + "integrity": "sha512-2nKUdjobJlmRSaCHa50PGsVq0VDURnq9gVzQoJggsM/NKN0tLhC/Uq2zmy2pH36Q/1q3gvYwp/GjTgv/R0Ysbg==", + "license": "MIT" + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", diff --git a/package.json b/package.json index dd339700..8fcfa5f6 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@signalwire/docusaurus-plugin-llms-txt": "^1.2.1", "asyncapi-schema-loader": "^0.0.1", "clsx": "^2.0.0", + "devicon": "^2.17.0", "docusaurus-plugin-openapi-docs": "^4.4.0", "docusaurus-theme-openapi-docs": "^4.4.0", "lucide-react": "^0.512.0", From e769f4a2e59cf154463ba9e5c364ab7acbe632e2 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:16:50 +0000 Subject: [PATCH 085/114] Update homepage to reference Voice SDK instead of Flow service and update related links --- docs/index.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/index.mdx b/docs/index.mdx index b32fdfa6..913a6a87 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -31,7 +31,7 @@ With Speechmatics, you can: - Receive immediate and continuous text transcriptions from live audio streams or calls (real-time transcription) - Generate complete transcripts from recorded audio files (batch transcription) -- Build voice AI agents that naturally converse with your users (Flow service) +- Build and power your applications with responsive, real-time, voice AI using our Voice SDK - Choose flexible deployment options: use our managed SaaS platform or host Speechmatics APIs within your infrastructure (on-prem) ## Developer quickstart @@ -54,9 +54,9 @@ With Speechmatics, you can: } title="Build a voice agent" - description="Use our Flow service to build conversational AI agents with ease" + description="Use our Voice SDK to build voice agents with ease" direction="column" - href="/voice-agents-flow" + href="/voice-agents/overview" />
@@ -96,8 +96,8 @@ With Speechmatics, you can: Date: Tue, 9 Dec 2025 16:17:15 +0000 Subject: [PATCH 086/114] Updatw to use consistent formatting, add direction column prop, and reorganize SDK listings by language --- docs/integrations-and-sdks/index.mdx | 74 ++++++++++++------------ docs/integrations-and-sdks/sdks.mdx | 85 +++++++++++++++++----------- docs/integrations-and-sdks/vapi.mdx | 1 - 3 files changed, 88 insertions(+), 72 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 9c11fa64..81447eb3 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -5,7 +5,7 @@ description: Discover which integrations and SDKs to add Speechmatics' STT, TTS import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; -import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; +import { } from "lucide-react"; import Head from '@docusaurus/Head'; @@ -21,23 +21,23 @@ Use this page to quickly choose how you connect to Speechmatics: through popular Choose an integration to build accurate, low-latency voice agents rapidly with the Speechmatics API available in these frameworks. - + } + icon={Vapi logo} href="/integrations-and-sdks/vapi" /> } + icon={LiveKit logo} href="/integrations-and-sdks/livekit" /> } + icon={Pipecat logo} href="/integrations-and-sdks/pipecat" /> @@ -51,59 +51,59 @@ Use an SDK if you want to call Speechmatics directly from your own services or a ### Speech to text - + } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" + /> + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } + icon={} href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" + /> + } + href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } + icon={} href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" - /> - } - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" - /> - } - href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" - /> + /> } + icon={} href="https://github.com/speechmatics/speechmatics-rust-sdk" /> -} - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" - /> ### Text to speech - + } + title="TTS (python)" + description="Convert text to speech" + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> diff --git a/docs/integrations-and-sdks/sdks.mdx b/docs/integrations-and-sdks/sdks.mdx index 694803d7..be6bf0d0 100644 --- a/docs/integrations-and-sdks/sdks.mdx +++ b/docs/integrations-and-sdks/sdks.mdx @@ -1,10 +1,17 @@ --- -title: SDKs +id: sdks description: Learn how to use the Speechmatics SDKs --- import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; +import Head from '@docusaurus/Head'; + + + + + +# SDKs Find the right Speechmatics SDK for your language and start building fast. @@ -12,64 +19,74 @@ Each SDK card provides simple installation steps and practical examples to get y ## Speech to text SDKs - + + } quickstart="/voice-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" - /> - } - quickstart="/js-rt-stt-sdk" - href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" /> } - quickstart="/dotnet-rt-stt-sdk" - href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" - /> - } quickstart="/rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } + quickstart="/python-batch-stt-sdk" + href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" + /> + } + quickstart="/js-rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" + /> + } quickstart="/js-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client" + /> + } + quickstart="/dotnet-rt-stt-sdk" + href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" /> } quickstart="/rust-stt-sdk" href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> -} - quickstart="/python-batch-stt-sdk" - href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" - /> + ## Text to speech SDKs - + } quickstart="/python-tts-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" diff --git a/docs/integrations-and-sdks/vapi.mdx b/docs/integrations-and-sdks/vapi.mdx index 7b42ffea..3ba41864 100644 --- a/docs/integrations-and-sdks/vapi.mdx +++ b/docs/integrations-and-sdks/vapi.mdx @@ -25,7 +25,6 @@ Vapi is perfect for: - **Speaker diarization**: Speechmatics is the only transcriber on Vapi that provides speaker diarization, which identifies and labels who said what in multi-speaker scenarios. ## Quickstart - ### Requirements - [VAPI Account](https://vapi.ai) - [VAPI Private Key](https://dashboard.vapi.ai) From ce33ed98a5c5dbcf742f05c186cf0e5eaf2b253d Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:18:06 +0000 Subject: [PATCH 087/114] Update sidebar to reference overview page instead of quickstart and adjust label accordingly --- docs/voice-agents/sidebar.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/voice-agents/sidebar.ts b/docs/voice-agents/sidebar.ts index 6eedfcaf..412e29bc 100644 --- a/docs/voice-agents/sidebar.ts +++ b/docs/voice-agents/sidebar.ts @@ -6,8 +6,8 @@ export default { items: [ { type: "doc", - id: "voice-agents/quickstart", - label: "Quickstart", + id: "voice-agents/overview", + label: "Overview", }, { type: "doc", From 88208a2015edf25d32b7824ed59c3e8fdbdee922 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:18:17 +0000 Subject: [PATCH 088/114] Update features page to use sentence case headings and consistent code formatting for parameters --- docs/voice-agents/features.mdx | 77 +++++++++++++++++----------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index 3b432edd..5b39bdfd 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -1,42 +1,43 @@ --- -description: Learn about configuration parameters for the voice SDK +description: Learn about configuration parameters for the Voice SDK --- import CodeBlock from '@theme/CodeBlock'; -# Configuration Parameters +# Features -### Basic Parameters -**language** (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See supported languages. +### Basic parameters +`language` (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See supported languages. -**operating_point** (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. +`operating_point` (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. -**domain** (str, default: None) Domain-specific model (e.g., "finance", "medical"). See supported languages and domains. +`domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See supported languages and domains. -**output_locale** (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See supported languages and locales. +`output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See supported languages and locales. -**enable_diarization** (bool, default: False) Enable speaker diarization to identify and label different speakers. +`enable_diarization` (bool, default: False) Enable speaker diarization to identify and label different speakers. -### Turn Detection Parameters -**end_of_utterance_mode** (EndOfUtteranceMode, default: FIXED) Controls how turn endings are detected: +### Turn detection +`end_of_utterance_mode` (EndOfUtteranceMode, default: FIXED) Controls how turn endings are detected: -FIXED - Uses fixed silence threshold. Fast but may split slow speech. -ADAPTIVE - Adjusts delay based on speech rate, pauses, and disfluencies. Best for natural conversation. -SMART_TURN - Uses ML model to detect acoustic turn-taking cues. Requires [smart] extras. -EXTERNAL - Manual control via client.finalize(). For custom turn logic. -end_of_utterance_silence_trigger (float, default: 0.2) Silence duration in seconds to trigger turn end. +- `FIXED`: Uses fixed silence threshold. Fast but may split slow speech. +- `ADAPTIVE`: Adjusts delay based on speech rate, pauses, and disfluencies. Best for natural conversation. +- `SMART_TURN`: Uses ML model to detect acoustic turn-taking cues. Requires [smart] extras. +- `EXTERNAL`: Manual control via client.finalize(). For custom turn logic. -end_of_utterance_max_delay (float, default: 10.0) Maximum delay before forcing turn end. +`end_of_utterance_silence_trigger` (float, default: 0.2) Silence duration in seconds to trigger turn end. -max_delay (float, default: 0.7) Maximum transcription delay for word emission. +`end_of_utterance_max_delay` (float, default: 10.0) Maximum delay before forcing turn end. -### Speaker Configuration -**speaker_sensitivity** (float, default: 0.5) Diarization sensitivity between 0.0 and 1.0. Higher values detect more speakers. +`max_delay` (float, default: 0.7) Maximum transcription delay for word emission. -**max_speakers** (int, default: None) Limit maximum number of speakers to detect. +### Speaker configuration +`speaker_sensitivity` (float, default: 0.5) Diarization sensitivity between 0.0 and 1.0. Higher values detect more speakers. -**prefer_current_speaker** (bool, default: False) Give extra weight to current speaker for word grouping. +`max_speakers` (int, default: None) Limit maximum number of speakers to detect. -**speaker_config** (SpeakerFocusConfig, default: SpeakerFocusConfig()) Configure speaker focus/ignore rules. +`prefer_current_speaker` (bool, default: False) Give extra weight to current speaker for word grouping. + +`speaker_config` (SpeakerFocusConfig, default: SpeakerFocusConfig()) Configure speaker focus/ignore rules. { @@ -61,7 +62,7 @@ config = VoiceAgentConfig( )` } -**known_speakers** (list[SpeakerIdentifier], default: []) Pre-enrolled speaker identifiers for speaker identification. +`known_speakers` (list[SpeakerIdentifier], default: []) Pre-enrolled speaker identifiers for speaker identification. { @@ -76,8 +77,8 @@ config = VoiceAgentConfig( )` } -### Language & Vocabulary -**additional_vocab** (list[AdditionalVocabEntry], default: []) Custom vocabulary for domain-specific terms. +### Language & vocabulary +`additional_vocab` (list[AdditionalVocabEntry], default: []) Custom vocabulary for domain-specific terms. { @@ -95,25 +96,25 @@ config = VoiceAgentConfig( )` } -**punctuation_overrides** (dict, default: None) Custom punctuation rules. +`punctuation_overrides` (dict, default: None) Custom punctuation rules. -### Audio Parameters -**sample_rate** (int, default: 16000) Audio sample rate in Hz. +### Audio parameters +`sample_rate` (int, default: 16000) Audio sample rate in Hz. -**audio_encoding** (AudioEncoding, default: PCM_S16LE) Audio encoding format. +`audio_encoding` (AudioEncoding, default: PCM_S16LE) Audio encoding format. -### Advanced Parameters -**transcription_update_preset** (TranscriptionUpdatePreset, default: COMPLETE) Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. +### Advanced parameters +`transcription_update_preset` (TranscriptionUpdatePreset, default: COMPLETE) Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. -**speech_segment_config** (SpeechSegmentConfig, default: SpeechSegmentConfig()) Fine-tune segment generation and post-processing. +`speech_segment_config` (SpeechSegmentConfig, default: SpeechSegmentConfig()) Fine-tune segment generation and post-processing. -**smart_turn_config** (SmartTurnConfig, default: None) Configure SMART_TURN behavior (buffer length, threshold). +`smart_turn_config` (SmartTurnConfig, default: None) Configure SMART_TURN behavior (buffer length, threshold). -**include_results** (bool, default: False) Include word-level timing data in segments. +`include_results` (bool, default: False) Include word-level timing data in segments. -**include_partials** (bool, default: True) Emit partial segments. Set to False for final-only output. +`include_partials` (bool, default: True) Emit partial segments. Set to False for final-only output. -### Configuration with Overlays +### Configuration with overlays Use presets as a starting point and customize with overlays: @@ -138,7 +139,7 @@ config = VoiceAgentConfigPreset.SCRIBE( } -### Configuration Serialization +### Configuration serialization Export and import configurations as JSON: @@ -157,4 +158,4 @@ config = VoiceAgentConfig.from_json('{"language": "en", "enable_diarization": tr -For more information, see the [voice agent Python SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. +For more information, see the [Voice SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. From e527e53d1ad7b5fa25fdbe190440e14d637d164d Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:18:26 +0000 Subject: [PATCH 089/114] Add voice agents overview page with Voice SDK quickstart guide and configuration examples --- docs/voice-agents/overview.mdx | 109 +++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 docs/voice-agents/overview.mdx diff --git a/docs/voice-agents/overview.mdx b/docs/voice-agents/overview.mdx new file mode 100644 index 00000000..e5bf6c05 --- /dev/null +++ b/docs/voice-agents/overview.mdx @@ -0,0 +1,109 @@ +--- +description: Learn how to build voice-enabled applications with the Speechmatics Voice SDK +--- +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +import pythonVoiceQuickstart from "./assets/basic-quickstart.py?raw" +import pythonVoicePresets from "./assets/presets.py?raw" +import pythonVoiceCustomConfig from "./assets/custom-config.py?raw" + +# Voice agents overview +The Voice SDK builds on our Realtime API to provide features optimized for conversational AI: + +- **Intelligent segmentation**: groups words into meaningful speech segments per speaker. +- **Turn detection**: automatically detects when speakers finish talking. +- **Speaker management**: focus on or ignore specific speakers in multi-speaker scenarios. +- **Preset configurations**: offers ready-to-use settings for conversations, note-taking, and captions. +- **Simplified event handling**: delivers clean, structured segments instead of raw word-level events. + +### When to use the Voice SDK vs Realtime SDK + +Use the Voice SDK when: + +- Building conversational AI or voice agents +- You need automatic turn detection +- You want speaker-focused transcription +- You need ready-to-use presets for common scenarios + +Use the Realtime SDK when: + +- You need the raw stream of word-by-word transcription data +- Building custom segmentation logic +- You want fine-grained control over every event +- Processing audio files or custom workflows + +## Getting started + +### 1. Create an API key + +[Create an API key in the portal](https://portal.speechmatics.com/settings/api-keys) to access the Voice SDK. Store your key securely as a managed secret. + +### 2. Install dependencies + +```bash +# Standard installation +pip install speechmatics-voice + +# With SMART_TURN (ML-based turn detection) +pip install speechmatics-voice[smart] +``` + +### 3. Configure + +Replace `YOUR_API_KEY` with your actual API key from the portal: + + + + + {pythonVoiceQuickstart} + + + + + {pythonVoicePresets} + + + + + {pythonVoiceCustomConfig} + + + + +## FAQ + +### Implementation and deployment + +
+Can I deploy this in my own environment? + +Yes! The Voice SDK can be consumed via our managed service or deployed in your own environment. To learn more about on-premises deployment options, [speak to sales](https://www.speechmatics.com/speak-to-sales). +
+ +### Support + +
+Where can I provide feedback or get help? + +You can submit feedback, bug reports, or feature requests through the Speechmatics [GitHub discussions](https://github.com/orgs/speechmatics/discussions). +
+ +## Next steps + +For more information, see the [Voice SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. + +To learn more, check out [the Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). + +Ready to build something amazing with our Voice SDK? We'd love to hear about your project and help you succeed. + +**Get in touch with us:** +- Share your feedback and feature requests +- Ask questions about implementation +- Discuss enterprise pricing and custom voices +- Report any issues or bugs you encounter + +[Contact our team](https://support.speechmatics.com) or join our developer community (https://www.reddit.com/r/Speechmatics) to connect with other builders using text to speech. + From 99bd12d977e28b85b321e8e30bdf2a38c070b8d0 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:18:33 +0000 Subject: [PATCH 090/114] Remove quickstart page as content has been consolidated into overview page --- docs/voice-agents/quickstart.mdx | 110 ------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 docs/voice-agents/quickstart.mdx diff --git a/docs/voice-agents/quickstart.mdx b/docs/voice-agents/quickstart.mdx deleted file mode 100644 index 5b3dad73..00000000 --- a/docs/voice-agents/quickstart.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -description: Learn how to build voice-enabled applications with the Speechmatics voice SDK ---- -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -import pythonVoiceQuickstart from "./assets/basic-quickstart.py?raw" -import pythonVoicePresets from "./assets/presets.py?raw" -import pythonVoiceCustomConfig from "./assets/custom-config.py?raw" - -# Voice agent overview - -The voice SDK builds on our real-time API to provide features optimized for conversational AI: - -- **Intelligent segmentation**: groups words into meaningful speech segments per speaker. -- **Turn detection**: automatically detects when speakers finish talking. -- **Speaker management**: focus on or ignore specific speakers in multi-speaker scenarios. -- **Preset configurations**: offers ready-to-use settings for conversations, note-taking, and captions. -- **Simplified event handling**: delivers clean, structured segments instead of raw word-level events. - -### When to use the voice SDK vs real-time SDK - -Use the voice SDK when: - -- Building conversational AI or voice agents -- You need automatic turn detection -- You want speaker-focused transcription -- You need ready-to-use presets for common scenarios - -Use the realtime SDK when: - -- You need the raw stream of word-by-word transcription data -- Building custom segmentation logic -- You want fine-grained control over every event -- Processing batch files or custom workflows - -## Getting started - -### 1. Get your API key - -[Create an API key in the portal](https://portal.speechmatics.com/settings/api-keys) to access the voice SDK. Store your key securely as a managed secret. - -### 2. Install dependencies - -```bash -# Standard installation -pip install speechmatics-voice - -# With SMART_TURN (ML-based turn detection) -pip install speechmatics-voice[smart] -``` - -### 3. Quickstart - -Replace `YOUR_API_KEY` with your actual API key from the portal: - - - - - {pythonVoiceQuickstart} - - - - - {pythonVoicePresets} - - - - - {pythonVoiceCustomConfig} - - - - -## FAQ - -### Implementation and deployment - -
-Can I deploy this in my own environment? - -Yes! The voice agent SDK can be consumed via our managed service or deployed in your own environment. To learn more about on-premises deployment options, [speak to sales](https://www.speechmatics.com/speak-to-sales). -
- -### Support - -
-Where can I provide feedback or get help? - -You can submit feedback, bug reports, or feature requests through the Speechmatics [GitHub discussions](https://github.com/orgs/speechmatics/discussions). -
- -## Next steps - -For more information, see the [voice agent Python SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. - -To learn more, check out [the Speechmatics academy](https://github.com/speechmatics/speechmatics-academy) - -Ready to build something amazing with our voice agent SDK? We'd love to hear about your project and help you succeed. - -**Get in touch with us:** -- Share your feedback and feature requests -- Ask questions about implementation -- Discuss enterprise pricing and custom voices -- Report any issues or bugs you encounter - -[Contact our team](https://support.speechmatics.com) or join our developer community (https://www.reddit.com/r/Speechmatics) to connect with other builders using text to speech. - From a5c5472f1a94581baad7348e3589123499170126 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:19:02 +0000 Subject: [PATCH 091/114] Move external link icon from title to top-right corner of card and restructure layout with flex containers --- src/theme/LinkCard.tsx | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/theme/LinkCard.tsx b/src/theme/LinkCard.tsx index 464de198..26be8f0f 100644 --- a/src/theme/LinkCard.tsx +++ b/src/theme/LinkCard.tsx @@ -45,12 +45,10 @@ const LinkCardTitle = forwardRef( }, ref: React.Ref, ) => { - const isExternal = props.href?.startsWith("http"); return ( {children} - {isExternal ? : null} ); @@ -136,16 +134,22 @@ const LinkCardComposite = forwardRef( ref: React.Ref, ) => { const href = "href" in props ? props.href : undefined; + const isExternal = href?.startsWith("http"); return ( - {!icon ? null : {icon}} - - - {title} - {badgeText ? {badgeText} : null} - - {description} - + + + {!icon ?
: {icon}} + {isExternal ? : null} + + + + {title} + {badgeText ? {badgeText} : null} + + {description} + + ); }, From 0dd83b91cef5e9c09391514569dc7e3d15d11bbd Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:19:24 +0000 Subject: [PATCH 092/114] Add LiveKit, pipecat and vapi logo images --- static/img/integration-logos/livekit.png | Bin 0 -> 1011 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/img/integration-logos/livekit.png diff --git a/static/img/integration-logos/livekit.png b/static/img/integration-logos/livekit.png new file mode 100644 index 0000000000000000000000000000000000000000..0d28ba22442e773f44e93b099933ff5e073fa903 GIT binary patch literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^DImh8Qb{0P56OwOOVQ6?TVfs1`pB`zSoSLRQ1GQscc&{ww zc8-m_abc;o+QtoPsfrp#^P*2z^&P8zuK(G;XeOgy)xV#1e(KD=g+})_>3DxB2)%x& z;$>fS0#j}6pKZnKifz!Q_SkFFhpY(3tlWiXBEGn<>n-TqeJ*#8um#XMbxdtcB znpszyZdWUDEPowwY44x?Y1h*a*{y7;{c=I%{Da5A95X_=a9YP%wLI?2PP6NLOFutc zu6gX-ac`ktdUu3cgp(GEY;1Epgwnk{Uu30#tV}tHmjU!H) zNxZEtExDPlieg@Z*=q0nYX2)t{&zh-&4t^1^|D(}KE3eO_1UV}t>$;)xBu}+@rp?| zt@M|tre@v>;tD>zTt`B*z9|52h|Jt!{q@+_ReLIIQV-2|H`gQk?}?DzyKGcF*Zzo~ z?=x@0&MuQ@dNUOMpIz-2Htn1<$3xR2OU&W~TaP5?zH(7i^ZD4Np(2+Ztj=Ya*cI-g z_%UL(RbU5a@E#?u&f~YPbUOLWcqHn0XC;3-d(r=cpX%*jOK+Dub?o--Wyf>({wn-- zKkBfHQ+M0pg*7j8qfVbK{r>Kr;Oo;3v$F61ye5^lNmc8KDT|L;YXFA?;|7a4=uv*4 z<->o8CeDW~IOK^-5)51~n^Luk=j@w5;e4tZL)p9B|K?v^oO55VYHrnzo^!>reC;Cn zZ(q-dmo80JW+>S=Z*RH6;_h8uk~c4&pS|nXKj}M*1YTrKpSG^@y~FoU($bX;m$p?} Q3xP76r>mdKI;Vst04dCxlK=n! literal 0 HcmV?d00001 From 19154de7c3d65c86b6d85625cd7e360114aec8f4 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Tue, 9 Dec 2025 16:19:35 +0000 Subject: [PATCH 093/114] Add pipecat and vapi integration logo images --- static/img/integration-logos/pipecat.png | Bin 0 -> 1511 bytes static/img/integration-logos/vapi.png | Bin 0 -> 1894 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/img/integration-logos/pipecat.png create mode 100644 static/img/integration-logos/vapi.png diff --git a/static/img/integration-logos/pipecat.png b/static/img/integration-logos/pipecat.png new file mode 100644 index 0000000000000000000000000000000000000000..656050ec00263eacd5ac0e3c3f6805cbbb402a1d GIT binary patch literal 1511 zcmbu9eLT|%9LIk%O$qZDTUK*jF661^`Js7!D9lp0Y)u&BI2B=$8QGDLc`UR^LLtLh zIS;Emi*%k1g$Z?*JS3BDUU#p%|L^|zeBa-P&+GeoegF9;VVvzG#o^)r07yF6TVsXv z-O+A{FosTNxd{QfjJ2}_Dtna|goU-AhXc{c2~Zd2y8#f51c>ffgn|nN0AL0P01FA) z=`lq9nffxo|K>YJ?S@GU0NCZ~U~SWe4Br5RY-IMSY|PPlYtGmiNRnr zc2fsM6D%tr#n<&?A8#VDH^iw7TPBhXSHbF(@O7zb)Ul>qML8zavtzEY*d^x2zIx&Z zV$JcZ6M1HzPkvTr=XLhp6-@9A{Fizg=?NTcW;bt*HKy(N8GGxx%?(6u_6n5dZ74e^ zcfp1b);V1!e^hf7al|p}s^}?Qkz+p`40EXd_zvw_K3RR1HN$?y@Yo0kaBa;@AnLHj z_}9Sdu^i=Gk#yE5XQl;yK&?bnN=cgazJ;PBeN3!l)+6!%a%(D1ekoN{OzJ>+=CekD z?@K4`cbgw89LLFNF$yVWo0?zu1ocsdDXe6g&kQemxV^jU&BAfdf=NLX#N{q-NWXT? z+57v`xV%YLTbnyxmz^AXree;+%S&R@IYtAf+f)RTqti9aPp)w6NK#kK*2iw%u?WFw z8AeS94O<1QgC)3y_`aUtkuy|LSI+>+wGXE@uQ;#oaml<4byu) z+L^O&FCtK7ZHHjE+#K@?*Hz`OEIl80J%xwBLI;mZYfe2|7&*frU^4U|VogwTnzAdX zXoxnuvR@rzyb^VG>iwcf3UmA5Vn|RcEf9?~r)JPoJSCZu;KEX%Gki;oP>24quw^vZ z^NSV+fz&Hl8`8WJZ&DwdgnFe}g=>^uEihcN$#HyuukxEPIYBq)#Yx-`y&0qu&wS|~ z38q3K_*-t*iae~PO1Z3}uAfFnK;YLShX&2uD6{UPH8l0O+g)yyfdNvpsv!X_+p}EV zN!bWBV>*K~2&rjK>S$x0_d{0#OT3D4C4?&<7TeU|r#+Idul3vI)>U%G zO1z3{2Hd8`WkQME9J>5T@ViehVvS>(qUHz7?XH4Q!sSmvQ7Z|lPvjMUPK0o6QwqMd z9<1aN@45O!IM}{$l5LD!ce72ZfwAsJn!*H^S{s=8{UfT=-&xG*?_aqbYlJAj)a{6+ zCbn@}F7}<@&I{WR3qDCk)EWnw&lkh^9}xChIi|tyUw>nhGf+_anSD*Gl(^u;x`rhmb@rzVQ^ zPO)C6_&rIT83>P?w~~ZDf~tr}sX<;)(v8rn?N3fuA-<^u(UO%Vq4_4^S^Lf%9-=+Q zfrrZIGP-|n%vSkp^M7Xox}*bDSCdcj?co3M0q`8BE#rsCGHZ^Gih1lS^wSd0LucS$ zmg{Sy(=snK7@-I7kx&R9pDA}l!T6KF09#Vcv22Y~E93dAnY5s@Ip;)^`5|Ewf@?cZ N*1^Wvy3&$B{S(!XqeTD! literal 0 HcmV?d00001 diff --git a/static/img/integration-logos/vapi.png b/static/img/integration-logos/vapi.png new file mode 100644 index 0000000000000000000000000000000000000000..1c848bd6a191d0ff8c571ad60ecd72c712f40971 GIT binary patch literal 1894 zcmZ`)X;_kp7XCmkVksgzLz)yAgu1FU-!p*-t(UGKIi;8&&l+lJ8SJR*aHB7 z7L7__?r`WXV9=cytt?>e5Ga=EOa|@_8_w?tN|-n8yqg{@nUumb>4 zs{jFNI}F;bRe=BQhE}NklkXZWTP8^W03D@KNUV#X4}NYLhE94PY4(=Q;ox^}#;DlL zzM&*(cw?F0awCXD`0JZROfUsP8h@k%39|jSgTr{SAw;`{;peV0O|UwEj&2*6w69y( zzfPK%u=y-e@pwc3J;0SzFH0t+3)1?>cbXF7yOTdGEF7$SzMtF5jrIsqSc6Z>zqr)D z@O^XqhjN5|BWs(g?$Wpd(=?s2GdkbP-zK5X&lBFkld)+;UcNl0gdSbY%L0DU|GJVP zFy=0iA2xfhs6m=Yz3p9j+F<7;TDLU_e42WGx)Wwawsyoca(~3`NLXlLj;RdRr5bisOwQG-FFhBIF!}00iOy2? zu|L|{+JdLcoVyj%3t6vkehHZR?)}Wvrt*CWDy!SP=vrcjWfXm8JxLkGY^~N?72m9zLgC~YR>2(OiM_n~LIN#Usu|90-%*4L-#YRY(X*)in3xbU_|n~TQj zLXLkYY;t2Okznf4jm)#ONow4D^{{L4IGh#pVbykzCbZ^g8}G_7K=cLK(Xfudy>Wzs zgHJg2kTn-C_c~S2Ju%hiVREHo@aO(kb$-ax$E8|)@QYIz7EGj4~dgOwK~GFk?7npqH$1P+YTZkJB^ z1^cLh8t$`{INVwbL~W@eNc9|&7UD8+=VjH0PIp&4olGCy3V1@O&n=sHAW!ylheMV5 zWlKm~7Dw)pc|+he7hsWg?PRw>$MF5Jn6<(A$Akwj{Ora~?6tfgmeG2<(=G)W4E=KV zFL4e0y%nwcoELHE2liUVCXuiBoge5*j@7L@Vf0`uIZCtUY;2z5#s&%h)>mw&K}sEW zcz#bMmV2s01v1Gcs%m44TJ(wcAqNlnU8Zs<| zj&*sbNviS?CX_Sy@e-}g(?jUG!seGJC6`F}eM#*KD$GF6%6tk3enpx~%Ri#aQAPGn z%i%OrBZ@CxD8mtns?lvvi#{!)y_4(b{}>xVa!Soe2@P|V@b@v@N1Q@9t7kKd1ut33 z%ABwsI!SZ%+2eLI9o-ZNhtXFhPNgj~GEvxOaVS&X#orLivIK@KYqlzoS!K3(xGJ*X z$I=tUh#Hqxjd>=%et0Oe<5zC;yL_S|qu`P5j6Sn{{!yEyR!!gw<;U z;fNVA{BR8o-^B+ibo;fvVxRFuBS0?${j&OS0YopLqwz%KbLlIub;RZFN=d)Ulb3j<0JB^|@JEV_n@rxTuy4>+L*wwe;%x zH@6TqY!R771-HV9Ggye$1u4XmM{gPXZ0CC&;a1>)Zr7d{c_&6{3m&rrt|M?# zkr2VtgpRPM$Kn$%lA10^_z_|p1^rg<=H>eRF=OyIEBe1p)RdZGBkVo#Sk)ALv$p>c z-AfcXRim52h+j@!Pu*&!4uro>aJEB0Q%Cx1{cKk^m%{&0TxA(U7=UCU;$H$Q)zoBN z;%b=ivrP_)nMhSr*hCxr)`!JmUUaPiao@jFOuSD;&TMY8oBSSrG#sF{%5z_v_w^Cn zNctAmf=DT!unz-uhcD$S0)3vC$6j)fy_KsYMEp!MIYdcek`ErjVaJ6Yr!ycTKJhe_ z{3rfaHbTQi<4U$*_a^kQ$b971KCDJpA>W#eGr_M|k&!7!HNyB*50|$gd>q6V*$>OB z$RF*2(O^xu{QtKA6Y8ssAkq-yAnYl;Mi>bPtDS1D4Vl^G=bWQyEwia1_Sg7a1iM%H^* Q=(|6T=0vC5B?qSb4=}`5*#H0l literal 0 HcmV?d00001 From c7be23ba06da2cfea5ae94d0bb36ad4dfafb1eff Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 10:21:55 +0000 Subject: [PATCH 094/114] Fix typo in Voice SDK title and add consistent icon sizing across SDK cards --- docs/integrations-and-sdks/index.mdx | 2 +- docs/integrations-and-sdks/sdks.mdx | 16 ++++++++-------- docs/voice-agents/features.mdx | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 81447eb3..d6efbb26 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -53,7 +53,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" diff --git a/docs/integrations-and-sdks/sdks.mdx b/docs/integrations-and-sdks/sdks.mdx index be6bf0d0..5ef4a57d 100644 --- a/docs/integrations-and-sdks/sdks.mdx +++ b/docs/integrations-and-sdks/sdks.mdx @@ -25,7 +25,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Voice (Python)" description="Add voice features to your agentic workflows" - icon={} + icon={} quickstart="/voice-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> @@ -33,7 +33,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (Python)" description="Stream audio and receive a transcription" - icon={} + icon={} quickstart="/rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> @@ -41,7 +41,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Batch (Python)" description="Input audio files and output transcription" - icon={} + icon={} quickstart="/python-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> @@ -49,7 +49,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (JavaScript)" description="Stream audio and receive instant transcripts" - icon={} + icon={} quickstart="/js-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" /> @@ -57,7 +57,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Batch (JavaScript)" description="Input audio files and output transcription" - icon={} + icon={} quickstart="/js-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client" /> @@ -65,7 +65,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (.NET)" description="Stream audio and receive a transcription" - icon={} + icon={} quickstart="/dotnet-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" /> @@ -73,7 +73,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime & Batch (Rust)" description="Input audio streams or files and receive transcription" - icon={} + icon={} quickstart="/rust-stt-sdk" href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> @@ -87,7 +87,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="TTS (Python)" description="Convert text to speech" - icon={} + icon={} quickstart="/python-tts-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index 5b39bdfd..89cf79c3 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -6,11 +6,11 @@ import CodeBlock from '@theme/CodeBlock'; # Features ### Basic parameters -`language` (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See supported languages. +`language` (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See [supported languages](/speech-to-text/languages). `operating_point` (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. -`domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See supported languages and domains. +`domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See [supported languages and domains](/speech-to-text/languages). `output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See supported languages and locales. From 1f642549903a5ffa79cca6a5850eec8d8997074b Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 10:54:33 +0000 Subject: [PATCH 095/114] Add link to supported languages --- docs/voice-agents/features.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index 89cf79c3..e158b710 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -12,7 +12,7 @@ import CodeBlock from '@theme/CodeBlock'; `domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See [supported languages and domains](/speech-to-text/languages). -`output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See supported languages and locales. +`output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See [supported languages and locales](/speech-to-text/languages). `enable_diarization` (bool, default: False) Enable speaker diarization to identify and label different speakers. From 2c1cc92ee8b22b4527a9e7c21ffbd0ede971a1e6 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 11:05:51 +0000 Subject: [PATCH 096/114] Update welcome page to include text-to-speech capabilities and add TTS quickstart card --- docs/index.mdx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/index.mdx b/docs/index.mdx index 913a6a87..6b5d6975 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -1,14 +1,14 @@ --- sidebar_position: 1 title: Welcome -description: Enterprise-grade APIs for speech-to-text and voice AI agents. +description: Enterprise-grade APIs for speech-to-text, text-to-speech, and voice AI agents. hide_table_of_contents: true pagination_prev: null pagination_next: null --- import { LinkCard } from "@site/src/theme/LinkCard"; -import { ChevronsRightIcon, FileAudio, BotMessageSquare, } from "lucide-react"; +import { ChevronsRightIcon, FileAudio, BotMessageSquare, Speech } from "lucide-react"; import { Box, Flex, Card, Grid, Inset } from "@radix-ui/themes"; # Welcome to Speechmatics @@ -32,6 +32,7 @@ With Speechmatics, you can: - Receive immediate and continuous text transcriptions from live audio streams or calls (real-time transcription) - Generate complete transcripts from recorded audio files (batch transcription) - Build and power your applications with responsive, real-time, voice AI using our Voice SDK +- Generate speech from text (text-to-speech) - Choose flexible deployment options: use our managed SaaS platform or host Speechmatics APIs within your infrastructure (on-prem) ## Developer quickstart @@ -58,6 +59,13 @@ With Speechmatics, you can: direction="column" href="/voice-agents/overview" /> + } + title="Generate speech from text" + description="Use our TTS API to generate speech from text" + direction="column" + href="/text-to-speech/quickstart" + /> ## Most popular From dc580103300f39d04a5c9a8dbe2e436a190f94d8 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 11:06:04 +0000 Subject: [PATCH 097/114] Add TTS quickstart card and update voice agent link to overview page --- docs/get-started/quickstart.mdx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/get-started/quickstart.mdx b/docs/get-started/quickstart.mdx index f88bffe0..92c764af 100644 --- a/docs/get-started/quickstart.mdx +++ b/docs/get-started/quickstart.mdx @@ -5,7 +5,7 @@ description: Take your first steps with the Speechmatics API. --- import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; -import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces } from "lucide-react"; +import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces, Speech } from "lucide-react"; # Quickstart @@ -32,7 +32,13 @@ The easiest way to try our products is via the [web portal](https://portal.speec title="Build a voice agent" description="Build conversational AI agents with ease using the Flow API" icon={} - href="/voice-agents-flow/" + href="/voice-agents/overview" + /> + } + href="/text-to-speech/quickstart" /> From 42afc243c55577bc7594341a5c461cbaf5cc9d3c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 11:19:35 +0000 Subject: [PATCH 098/114] Update voice agents overview page with improved heading structure and fixed community link formatting --- docs/voice-agents/overview.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/voice-agents/overview.mdx b/docs/voice-agents/overview.mdx index e5bf6c05..4f7dced0 100644 --- a/docs/voice-agents/overview.mdx +++ b/docs/voice-agents/overview.mdx @@ -19,7 +19,7 @@ The Voice SDK builds on our Realtime API to provide features optimized for conve - **Preset configurations**: offers ready-to-use settings for conversations, note-taking, and captions. - **Simplified event handling**: delivers clean, structured segments instead of raw word-level events. -### When to use the Voice SDK vs Realtime SDK +### Voice SDK vs Realtime SDK Use the Voice SDK when: @@ -97,7 +97,9 @@ For more information, see the [Voice SDK](https://github.com/speechmatics/speech To learn more, check out [the Speechmatics Academy](https://github.com/speechmatics/speechmatics-academy). -Ready to build something amazing with our Voice SDK? We'd love to hear about your project and help you succeed. +### Building something amazing + +We'd love to hear about your project and help you succeed. **Get in touch with us:** - Share your feedback and feature requests @@ -105,5 +107,5 @@ Ready to build something amazing with our Voice SDK? We'd love to hear about you - Discuss enterprise pricing and custom voices - Report any issues or bugs you encounter -[Contact our team](https://support.speechmatics.com) or join our developer community (https://www.reddit.com/r/Speechmatics) to connect with other builders using text to speech. +[Contact our team](https://support.speechmatics.com) or [join our developer community](https://www.reddit.com/r/Speechmatics) to connect with other builders in voice AI. From 82a9541c7a0362632d64dea94b100896d42e6e77 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 11:20:25 +0000 Subject: [PATCH 099/114] Update Voice SDK code examples to use consistent environment variable pattern for API key retrieval --- docs/voice-agents/assets/basic-quickstart.py | 2 +- docs/voice-agents/assets/custom-config.py | 2 +- docs/voice-agents/assets/presets.py | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/voice-agents/assets/basic-quickstart.py b/docs/voice-agents/assets/basic-quickstart.py index 00544746..e649dbec 100644 --- a/docs/voice-agents/assets/basic-quickstart.py +++ b/docs/voice-agents/assets/basic-quickstart.py @@ -6,7 +6,7 @@ async def main(): # Create client with preset client = VoiceAgentClient( - api_key=os.getenv("SPEECHMATICS_API_KEY"), + api_key=os.getenv("YOUR_API_KEY"), preset="scribe" ) diff --git a/docs/voice-agents/assets/custom-config.py b/docs/voice-agents/assets/custom-config.py index 87d60cdf..f63df472 100644 --- a/docs/voice-agents/assets/custom-config.py +++ b/docs/voice-agents/assets/custom-config.py @@ -7,4 +7,4 @@ end_of_utterance_mode=EndOfUtteranceMode.ADAPTIVE, ) -client = VoiceAgentClient(api_key=api_key, config=config) \ No newline at end of file +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), config=config) \ No newline at end of file diff --git a/docs/voice-agents/assets/presets.py b/docs/voice-agents/assets/presets.py index f73a0316..ce87740e 100644 --- a/docs/voice-agents/assets/presets.py +++ b/docs/voice-agents/assets/presets.py @@ -1,19 +1,19 @@ # Presets provide optimized configurations for common use cases: # External end of turn preset - endpointing handled by the client -client = VoiceAgentClient(api_key=api_key, preset="external") +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="external") # Scribe preset - for note-taking -client = VoiceAgentClient(api_key=api_key, preset="scribe") +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="scribe") # Low latency preset - for fast responses -client = VoiceAgentClient(api_key=api_key, preset="low_latency") +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="low_latency") # Conversation preset - for natural dialogue -client = VoiceAgentClient(api_key=api_key, preset="conversation_adaptive") +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="conversation_adaptive") # Advanced conversation with ML turn detection -client = VoiceAgentClient(api_key=api_key, preset="conversation_smart_turn") +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="conversation_smart_turn") # Captions preset - for live captioning -client = VoiceAgentClient(api_key=api_key, preset="captions") \ No newline at end of file +client = VoiceAgentClient(api_key=os.getenv("YOUR_API_KEY"), preset="captions") \ No newline at end of file From 7d6ce9b892a3e2ec6d21abc044f9b95a11cbb7e0 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 13:54:44 +0000 Subject: [PATCH 100/114] Update text-to-speech description --- docs/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.mdx b/docs/index.mdx index 6b5d6975..8c79d209 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -32,7 +32,7 @@ With Speechmatics, you can: - Receive immediate and continuous text transcriptions from live audio streams or calls (real-time transcription) - Generate complete transcripts from recorded audio files (batch transcription) - Build and power your applications with responsive, real-time, voice AI using our Voice SDK -- Generate speech from text (text-to-speech) +- Transform your text into speech using our Text-to-Speech API - Choose flexible deployment options: use our managed SaaS platform or host Speechmatics APIs within your infrastructure (on-prem) ## Developer quickstart From ade5840f520d68ea0405de0e1fe41222bf181bd3 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 13:54:59 +0000 Subject: [PATCH 101/114] Add Python SDK and Academy cards to quickstart page, update voice agent description and add devicon stylesheet --- docs/get-started/quickstart.mdx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/get-started/quickstart.mdx b/docs/get-started/quickstart.mdx index 92c764af..073b22fe 100644 --- a/docs/get-started/quickstart.mdx +++ b/docs/get-started/quickstart.mdx @@ -5,7 +5,12 @@ description: Take your first steps with the Speechmatics API. --- import { LinkCard } from "@site/src/theme/LinkCard"; import { Flex, Grid } from "@radix-ui/themes"; -import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces, Speech } from "lucide-react"; +import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces, Speech, GraduationCap } from "lucide-react"; +import Head from '@docusaurus/Head'; + + + + # Quickstart @@ -30,7 +35,7 @@ The easiest way to try our products is via the [web portal](https://portal.speec /> } href="/voice-agents/overview" /> @@ -57,4 +62,16 @@ The easiest way to try our products is via the [web portal](https://portal.speec icon={} href="https://github.com/speechmatics/speechmatics-js-sdk" /> + } + href="https://github.com/speechmatics/speechmatics-python-sdk" + /> + } + href="https://github.com/speechmatics/speechmatics-academy" + /> \ No newline at end of file From 62b1eadfa3ca8c74d541e444a20d64695119cc81 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 13:55:09 +0000 Subject: [PATCH 102/114] Add label to quickstart sidebar item for consistent navigation display --- docs/get-started/sidebar.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/get-started/sidebar.ts b/docs/get-started/sidebar.ts index 55816967..817736f4 100644 --- a/docs/get-started/sidebar.ts +++ b/docs/get-started/sidebar.ts @@ -12,6 +12,7 @@ export default { { type: "doc", id: "get-started/quickstart", + label: "Quickstart", }, { type: "doc", From 8933c9fe0bf67eb3b3c0e9d7826a78e90145f79f Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 13:55:24 +0000 Subject: [PATCH 103/114] Improve voice agent features documentation formatting by breaking parameter descriptions into multiple lines for better readability --- docs/voice-agents/features.mdx | 80 +++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index e158b710..8e16c352 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -6,38 +6,60 @@ import CodeBlock from '@theme/CodeBlock'; # Features ### Basic parameters -`language` (str, default: "en") Language code for transcription (e.g., "en", "es", "fr"). See [supported languages](/speech-to-text/languages). +`language` (str, default: "en") +Language code for transcription (e.g., "en", "es", "fr"). +See [supported languages](/speech-to-text/languages). -`operating_point` (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. +`operating_point` (OperatingPoint, default: ENHANCED) +Balance accuracy vs latency. +Options: STANDARD or ENHANCED. -`domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See [supported languages and domains](/speech-to-text/languages). +`domain` (str, default: None) +Domain-specific model (e.g., "finance", "medical"). +See [supported languages and domains](/speech-to-text/languages). -`output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See [supported languages and locales](/speech-to-text/languages). +`output_locale` (str, default: None) +Output locale for formatting (e.g., "en-GB", "en-US"). +See [supported languages and locales](/speech-to-text/languages). -`enable_diarization` (bool, default: False) Enable speaker diarization to identify and label different speakers. +`enable_diarization` (bool, default: False) +Enable speaker diarization to identify and label different speakers. ### Turn detection -`end_of_utterance_mode` (EndOfUtteranceMode, default: FIXED) Controls how turn endings are detected: +`end_of_utterance_mode` (EndOfUtteranceMode, default: FIXED) +Controls how turn endings are detected: -- `FIXED`: Uses fixed silence threshold. Fast but may split slow speech. -- `ADAPTIVE`: Adjusts delay based on speech rate, pauses, and disfluencies. Best for natural conversation. -- `SMART_TURN`: Uses ML model to detect acoustic turn-taking cues. Requires [smart] extras. -- `EXTERNAL`: Manual control via client.finalize(). For custom turn logic. +- `FIXED`: Uses fixed silence threshold. +Fast but may split slow speech. +- `ADAPTIVE`: Adjusts delay based on speech rate, pauses, and disfluencies. +Best for natural conversation. +- `SMART_TURN`: Uses ML model to detect acoustic turn-taking cues. +Requires [smart] extras. +- `EXTERNAL`: Manual control via client.finalize(). +For custom turn logic. -`end_of_utterance_silence_trigger` (float, default: 0.2) Silence duration in seconds to trigger turn end. +`end_of_utterance_silence_trigger` (float, default: 0.2) +Silence duration in seconds to trigger turn end. -`end_of_utterance_max_delay` (float, default: 10.0) Maximum delay before forcing turn end. +`end_of_utterance_max_delay` (float, default: 10.0) +Maximum delay before forcing turn end. -`max_delay` (float, default: 0.7) Maximum transcription delay for word emission. +`max_delay` (float, default: 0.7) +Maximum transcription delay for word emission. ### Speaker configuration -`speaker_sensitivity` (float, default: 0.5) Diarization sensitivity between 0.0 and 1.0. Higher values detect more speakers. +`speaker_sensitivity` (float, default: 0.5) +Diarization sensitivity between 0.0 and 1.0. +Higher values detect more speakers. -`max_speakers` (int, default: None) Limit maximum number of speakers to detect. +`max_speakers` (int, default: None) +Limit maximum number of speakers to detect. -`prefer_current_speaker` (bool, default: False) Give extra weight to current speaker for word grouping. +`prefer_current_speaker` (bool, default: False) +Give extra weight to current speaker for word grouping. -`speaker_config` (SpeakerFocusConfig, default: SpeakerFocusConfig()) Configure speaker focus/ignore rules. +`speaker_config` (SpeakerFocusConfig, default: SpeakerFocusConfig()) +Configure speaker focus/ignore rules. { @@ -96,23 +118,31 @@ config = VoiceAgentConfig( )` } -`punctuation_overrides` (dict, default: None) Custom punctuation rules. +`punctuation_overrides` (dict, default: None) +Custom punctuation rules. ### Audio parameters -`sample_rate` (int, default: 16000) Audio sample rate in Hz. +`sample_rate` (int, default: 16000) +Audio sample rate in Hz. -`audio_encoding` (AudioEncoding, default: PCM_S16LE) Audio encoding format. +`audio_encoding` (AudioEncoding, default: PCM_S16LE) +Audio encoding format. ### Advanced parameters -`transcription_update_preset` (TranscriptionUpdatePreset, default: COMPLETE) Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. +`transcription_update_preset` (TranscriptionUpdatePreset, default: COMPLETE) +Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. -`speech_segment_config` (SpeechSegmentConfig, default: SpeechSegmentConfig()) Fine-tune segment generation and post-processing. +`speech_segment_config` (SpeechSegmentConfig, default: SpeechSegmentConfig()) +Fine-tune segment generation and post-processing. -`smart_turn_config` (SmartTurnConfig, default: None) Configure SMART_TURN behavior (buffer length, threshold). +`smart_turn_config` (SmartTurnConfig, default: None) +Configure SMART_TURN behavior (buffer length, threshold). -`include_results` (bool, default: False) Include word-level timing data in segments. +`include_results` (bool, default: False) +Include word-level timing data in segments. -`include_partials` (bool, default: True) Emit partial segments. Set to False for final-only output. +`include_partials` (bool, default: True) +Emit partial segments. Set to False for final-only output. ### Configuration with overlays Use presets as a starting point and customize with overlays: From b6413cfd9df9432e363906211c030c97439aee04 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 13:56:56 +0000 Subject: [PATCH 104/114] Replace & with and --- docs/voice-agents/features.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index 8e16c352..c789d5f3 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -99,7 +99,7 @@ config = VoiceAgentConfig( )` } -### Language & vocabulary +### Language and vocabulary `additional_vocab` (list[AdditionalVocabEntry], default: []) Custom vocabulary for domain-specific terms. From 4f3cbb41aad6961bd2ae1b9a4a66fafec9da534c Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 14:01:20 +0000 Subject: [PATCH 105/114] Standardise SDK card descriptions and language capitalization across integration pages --- docs/integrations-and-sdks/index.mdx | 28 ++++++++++++++-------------- docs/integrations-and-sdks/sdks.mdx | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index d6efbb26..c6fbed77 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -24,19 +24,19 @@ Choose an integration to build accurate, low-latency voice agents rapidly with t } href="/integrations-and-sdks/vapi" /> } href="/integrations-and-sdks/livekit" /> } href="/integrations-and-sdks/pipecat" /> @@ -53,44 +53,44 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> } href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" /> } href="https://github.com/speechmatics/speechmatics-rust-sdk" /> @@ -101,7 +101,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" diff --git a/docs/integrations-and-sdks/sdks.mdx b/docs/integrations-and-sdks/sdks.mdx index 5ef4a57d..46aa31b8 100644 --- a/docs/integrations-and-sdks/sdks.mdx +++ b/docs/integrations-and-sdks/sdks.mdx @@ -71,7 +71,7 @@ Each SDK card provides simple installation steps and practical examples to get y /> } quickstart="/rust-stt-sdk" From a618668544bb537137478ead5eaca79ecd96dbd3 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 14:27:49 +0000 Subject: [PATCH 106/114] Fix trailing whitespace and formatting inconsistencies in voice agent features documentation --- docs/voice-agents/features.mdx | 60 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/docs/voice-agents/features.mdx b/docs/voice-agents/features.mdx index c789d5f3..e0cd850a 100644 --- a/docs/voice-agents/features.mdx +++ b/docs/voice-agents/features.mdx @@ -6,59 +6,59 @@ import CodeBlock from '@theme/CodeBlock'; # Features ### Basic parameters -`language` (str, default: "en") -Language code for transcription (e.g., "en", "es", "fr"). +`language` (str, default: "en") +Language code for transcription (e.g., "en", "es", "fr"). See [supported languages](/speech-to-text/languages). -`operating_point` (OperatingPoint, default: ENHANCED) +`operating_point` (OperatingPoint, default: ENHANCED) Balance accuracy vs latency. Options: STANDARD or ENHANCED. -`domain` (str, default: None) +`domain` (str, default: None) Domain-specific model (e.g., "finance", "medical"). See [supported languages and domains](/speech-to-text/languages). -`output_locale` (str, default: None) +`output_locale` (str, default: None) Output locale for formatting (e.g., "en-GB", "en-US"). See [supported languages and locales](/speech-to-text/languages). -`enable_diarization` (bool, default: False) +`enable_diarization` (bool, default: False) Enable speaker diarization to identify and label different speakers. ### Turn detection -`end_of_utterance_mode` (EndOfUtteranceMode, default: FIXED) +`end_of_utterance_mode` (EndOfUtteranceMode, default: FIXED) Controls how turn endings are detected: -- `FIXED`: Uses fixed silence threshold. +- `FIXED`: Uses fixed silence threshold. Fast but may split slow speech. -- `ADAPTIVE`: Adjusts delay based on speech rate, pauses, and disfluencies. +- `ADAPTIVE`: Adjusts delay based on speech rate, pauses, and disfluencies. Best for natural conversation. -- `SMART_TURN`: Uses ML model to detect acoustic turn-taking cues. +- `SMART_TURN`: Uses ML model to detect acoustic turn-taking cues. Requires [smart] extras. -- `EXTERNAL`: Manual control via client.finalize(). +- `EXTERNAL`: Manual control via client.finalize(). For custom turn logic. -`end_of_utterance_silence_trigger` (float, default: 0.2) +`end_of_utterance_silence_trigger` (float, default: 0.2) Silence duration in seconds to trigger turn end. -`end_of_utterance_max_delay` (float, default: 10.0) +`end_of_utterance_max_delay` (float, default: 10.0) Maximum delay before forcing turn end. -`max_delay` (float, default: 0.7) +`max_delay` (float, default: 0.7) Maximum transcription delay for word emission. ### Speaker configuration -`speaker_sensitivity` (float, default: 0.5) +`speaker_sensitivity` (float, default: 0.5) Diarization sensitivity between 0.0 and 1.0. Higher values detect more speakers. -`max_speakers` (int, default: None) +`max_speakers` (int, default: None) Limit maximum number of speakers to detect. -`prefer_current_speaker` (bool, default: False) +`prefer_current_speaker` (bool, default: False) Give extra weight to current speaker for word grouping. -`speaker_config` (SpeakerFocusConfig, default: SpeakerFocusConfig()) +`speaker_config` (SpeakerFocusConfig, default: SpeakerFocusConfig()) Configure speaker focus/ignore rules. @@ -84,7 +84,8 @@ config = VoiceAgentConfig( )` } -`known_speakers` (list[SpeakerIdentifier], default: []) Pre-enrolled speaker identifiers for speaker identification. +`known_speakers` (list[SpeakerIdentifier], default: []) +Pre-enrolled speaker identifiers for speaker identification. { @@ -100,7 +101,9 @@ config = VoiceAgentConfig( } ### Language and vocabulary -`additional_vocab` (list[AdditionalVocabEntry], default: []) Custom vocabulary for domain-specific terms. +`additional_vocab` (list[AdditionalVocabEntry], default: []) + +Custom vocabulary for domain-specific terms. { @@ -122,29 +125,29 @@ config = VoiceAgentConfig( Custom punctuation rules. ### Audio parameters -`sample_rate` (int, default: 16000) +`sample_rate` (int, default: 16000) Audio sample rate in Hz. -`audio_encoding` (AudioEncoding, default: PCM_S16LE) +`audio_encoding` (AudioEncoding, default: PCM_S16LE) Audio encoding format. ### Advanced parameters -`transcription_update_preset` (TranscriptionUpdatePreset, default: COMPLETE) +`transcription_update_preset` (TranscriptionUpdatePreset, default: COMPLETE) Controls when to emit updates: COMPLETE, COMPLETE_PLUS_TIMING, WORDS, WORDS_PLUS_TIMING, or TIMING. -`speech_segment_config` (SpeechSegmentConfig, default: SpeechSegmentConfig()) +`speech_segment_config` (SpeechSegmentConfig, default: SpeechSegmentConfig()) Fine-tune segment generation and post-processing. -`smart_turn_config` (SmartTurnConfig, default: None) +`smart_turn_config` (SmartTurnConfig, default: None) Configure SMART_TURN behavior (buffer length, threshold). -`include_results` (bool, default: False) +`include_results` (bool, default: False) Include word-level timing data in segments. -`include_partials` (bool, default: True) +`include_partials` (bool, default: True) Emit partial segments. Set to False for final-only output. -### Configuration with overlays +### Configuration with overlays. Use presets as a starting point and customize with overlays: @@ -189,3 +192,4 @@ config = VoiceAgentConfig.from_json('{"language": "en", "enable_diarization": tr For more information, see the [Voice SDK](https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice) on github. +` \ No newline at end of file From d51fa30b21b7f1853ba29a79d287f86cd5ce27d7 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 14:28:05 +0000 Subject: [PATCH 107/114] Update Voice SDK description to emphasize responsive voice agent capabilities --- docs/integrations-and-sdks/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index c6fbed77..392e11ea 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -54,7 +54,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> From aa7e35bb7fa3f302761c625deb5abe84956aae44 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 14:41:52 +0000 Subject: [PATCH 108/114] replace & --- docs/speech-to-text/languages.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/speech-to-text/languages.mdx b/docs/speech-to-text/languages.mdx index 0f1b496a..84ac75f8 100644 --- a/docs/speech-to-text/languages.mdx +++ b/docs/speech-to-text/languages.mdx @@ -27,7 +27,7 @@ keywords: ] --- -# Languages & Models +# Languages and Models ### Operating points From c500b049262256e07e568a9da8f8ab692f337b6a Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 15:06:11 +0000 Subject: [PATCH 109/114] Update docs/integrations-and-sdks/index.mdx Co-authored-by: Matt Nemitz --- docs/integrations-and-sdks/index.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index 392e11ea..4cc9bad8 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,5 +1,4 @@ --- -id: Overview description: Discover which integrations and SDKs to add Speechmatics' STT, TTS or voice agents to your applications. --- From 33efd4e2852fffb68b699cb1cda8b3164b686238 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 15:59:46 +0000 Subject: [PATCH 110/114] Add DevIcon component in src --- src/components/devicon.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/components/devicon.tsx diff --git a/src/components/devicon.tsx b/src/components/devicon.tsx new file mode 100644 index 00000000..bf2d19bf --- /dev/null +++ b/src/components/devicon.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +interface DevIconProps { + name: string; + size?: number; +} + +const DevIcon: React.FC = ({ name, size = 24 }) => { + const style = { fontSize: `${size}px` }; + return ; +}; + +export default DevIcon; + + + From 79dfdf9d9d5871129219ca23163ad00556d48d7e Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 16:00:32 +0000 Subject: [PATCH 111/114] Replace inline devicon elements with DevIcon component across SDKs --- docs/get-started/quickstart.mdx | 3 ++- docs/integrations-and-sdks/index.mdx | 18 ++++++++++-------- docs/integrations-and-sdks/sdks.mdx | 17 +++++++++-------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/get-started/quickstart.mdx b/docs/get-started/quickstart.mdx index 073b22fe..235d1ec6 100644 --- a/docs/get-started/quickstart.mdx +++ b/docs/get-started/quickstart.mdx @@ -4,6 +4,7 @@ pagination_next: null description: Take your first steps with the Speechmatics API. --- import { LinkCard } from "@site/src/theme/LinkCard"; +import DevIcon from '@site/src/components/devicon'; import { Flex, Grid } from "@radix-ui/themes"; import { ChevronsRightIcon, FileAudio, BotMessageSquare, BookOpen, Braces, Speech, GraduationCap } from "lucide-react"; import Head from '@docusaurus/Head'; @@ -65,7 +66,7 @@ The easiest way to try our products is via the [web portal](https://portal.speec } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk" /> } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> } + icon={} href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/rt" /> } + icon={} href="https://github.com/speechmatics/speechmatics-javascript-sdk/tree/main/sdk/batch" /> } + icon={} href="https://github.com/speechmatics/speechmatics-dotnet-community-sdk" /> } + icon={} href="https://github.com/speechmatics/speechmatics-rust-sdk" /> @@ -102,7 +104,7 @@ Use an SDK if you want to call Speechmatics directly from your own services or a } + icon={} href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> diff --git a/docs/integrations-and-sdks/sdks.mdx b/docs/integrations-and-sdks/sdks.mdx index 46aa31b8..0e18110e 100644 --- a/docs/integrations-and-sdks/sdks.mdx +++ b/docs/integrations-and-sdks/sdks.mdx @@ -4,6 +4,7 @@ description: Learn how to use the Speechmatics SDKs --- import { LinkCard } from "@site/src/theme/LinkCard"; +import DevIcon from '@site/src/components/devicon'; import { Flex, Grid } from "@radix-ui/themes"; import Head from '@docusaurus/Head'; @@ -25,7 +26,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Voice (Python)" description="Add voice features to your agentic workflows" - icon={} + icon={} quickstart="/voice-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/voice" /> @@ -33,7 +34,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (Python)" description="Stream audio and receive a transcription" - icon={} + icon={} quickstart="/rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/rt" /> @@ -41,7 +42,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Batch (Python)" description="Input audio files and output transcription" - icon={} + icon={} quickstart="/python-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/batch" /> @@ -49,7 +50,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (JavaScript)" description="Stream audio and receive instant transcripts" - icon={} + icon={} quickstart="/js-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/real-time-client" /> @@ -57,7 +58,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Batch (JavaScript)" description="Input audio files and output transcription" - icon={} + icon={} quickstart="/js-batch-stt-sdk" href="https://github.com/speechmatics/speechmatics-js-sdk/tree/main/packages/batch-client" /> @@ -65,7 +66,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime (.NET)" description="Stream audio and receive a transcription" - icon={} + icon={} quickstart="/dotnet-rt-stt-sdk" href="https://github.com/speechmatics/speechmatics-dotnet/blob/main/README.md" /> @@ -73,7 +74,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="Realtime and Batch (Rust)" description="Input audio streams or files and receive transcription" - icon={} + icon={} quickstart="/rust-stt-sdk" href="https://github.com/speechmatics/speechmatics-rs/blob/main/README.md" /> @@ -87,7 +88,7 @@ Each SDK card provides simple installation steps and practical examples to get y direction="column" title="TTS (Python)" description="Convert text to speech" - icon={} + icon={} quickstart="/python-tts-sdk" href="https://github.com/speechmatics/speechmatics-python-sdk/tree/main/sdk/tts" /> From 9b0051b2ec6e06cc85e288ede991633f3c11a728 Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 16:01:01 +0000 Subject: [PATCH 112/114] Repair sidebar build --- docs/integrations-and-sdks/sidebar.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index 4b9dc1f4..eaad5e57 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -6,7 +6,7 @@ export default { items: [ { type: "doc", - id: "integrations-and-sdks/Overview", + id: "integrations-and-sdks/overview", label: "Overview", }, { From 615140f1662030e128b5a39f7473fb89fc4ddcfb Mon Sep 17 00:00:00 2001 From: lgavincrl Date: Wed, 10 Dec 2025 16:12:37 +0000 Subject: [PATCH 113/114] Remove id field from integrations-and-sdks index frontmatter and update sidebar reference --- docs/integrations-and-sdks/index.mdx | 1 - docs/integrations-and-sdks/sidebar.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/integrations-and-sdks/index.mdx b/docs/integrations-and-sdks/index.mdx index a2527676..53ae3cb6 100644 --- a/docs/integrations-and-sdks/index.mdx +++ b/docs/integrations-and-sdks/index.mdx @@ -1,5 +1,4 @@ --- -id: overview description: Discover which integrations and SDKs to add Speechmatics' STT, TTS or voice agents to your applications. --- diff --git a/docs/integrations-and-sdks/sidebar.ts b/docs/integrations-and-sdks/sidebar.ts index eaad5e57..337d99a5 100644 --- a/docs/integrations-and-sdks/sidebar.ts +++ b/docs/integrations-and-sdks/sidebar.ts @@ -6,7 +6,7 @@ export default { items: [ { type: "doc", - id: "integrations-and-sdks/overview", + id: "integrations-and-sdks/index", label: "Overview", }, { From 2ff248c1970982bd5623b8bc5b0ce0450cf67447 Mon Sep 17 00:00:00 2001 From: Matt Nemitz Date: Wed, 17 Dec 2025 13:11:06 +0000 Subject: [PATCH 114/114] Absolutely position external link icon --- src/theme/LinkCard.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/theme/LinkCard.tsx b/src/theme/LinkCard.tsx index 26be8f0f..cd4507d6 100644 --- a/src/theme/LinkCard.tsx +++ b/src/theme/LinkCard.tsx @@ -137,10 +137,14 @@ const LinkCardComposite = forwardRef( const isExternal = href?.startsWith("http"); return ( - + {!icon ?
: {icon}} - {isExternal ? : null} + {isExternal ? ( + + + + ) : null}