From b36b225375d6d046fdfc9771a2d113d35131d41f Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Thu, 1 Oct 2026 15:26:35 -0700 Subject: [PATCH 1/7] feat(livekit): add persistent memory for LiveKit Agents (#1702) Co-authored-by: Ishaan Gupta --- .github/workflows/ci-python.yml | 58 ++ .../workflows/publish-livekit-sdk-python.yml | 44 ++ apps/docs/docs.json | 6 + apps/docs/images/livekit-dark.svg | 18 + apps/docs/images/livekit.svg | 18 + apps/docs/integrations/livekit.mdx | 193 ++++++ apps/docs/style.css | 4 + packages/livekit-sdk-python/README.md | 120 ++++ .../livekit-sdk-python/examples/.env.example | 14 + .../livekit-sdk-python/examples/README.md | 38 ++ .../examples/voice_agent.py | 71 ++ packages/livekit-sdk-python/pyproject.toml | 56 ++ .../src/supermemory_livekit/__init__.py | 29 + .../src/supermemory_livekit/agent.py | 43 ++ .../src/supermemory_livekit/exceptions.py | 19 + .../src/supermemory_livekit/identifiers.py | 22 + .../src/supermemory_livekit/memory.py | 527 +++++++++++++++ .../src/supermemory_livekit/tools.py | 43 ++ .../src/supermemory_livekit/utils.py | 215 ++++++ .../livekit-sdk-python/tests/test_memory.py | 620 ++++++++++++++++++ 20 files changed, 2158 insertions(+) create mode 100644 .github/workflows/publish-livekit-sdk-python.yml create mode 100644 apps/docs/images/livekit-dark.svg create mode 100644 apps/docs/images/livekit.svg create mode 100644 apps/docs/integrations/livekit.mdx create mode 100644 packages/livekit-sdk-python/README.md create mode 100644 packages/livekit-sdk-python/examples/.env.example create mode 100644 packages/livekit-sdk-python/examples/README.md create mode 100644 packages/livekit-sdk-python/examples/voice_agent.py create mode 100644 packages/livekit-sdk-python/pyproject.toml create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/__init__.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/agent.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/exceptions.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/identifiers.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/memory.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/tools.py create mode 100644 packages/livekit-sdk-python/src/supermemory_livekit/utils.py create mode 100644 packages/livekit-sdk-python/tests/test_memory.py diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 0743bd25..e2942b80 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -7,6 +7,7 @@ on: - "packages/cartesia-sdk-python/**" - "packages/openai-sdk-python/**" - "packages/pipecat-sdk-python/**" + - "packages/livekit-sdk-python/**" - ".github/workflows/ci-python.yml" permissions: @@ -255,3 +256,60 @@ jobs: assert 'site-packages' in Path(supermemory_pipecat.__file__).parts; result = pytest.main(['-W', 'ignore::pytest.PytestAssertRewriteWarning', 'tests']); raise SystemExit(result)" + + livekit-sdk-python: + name: livekit-sdk-python (${{ matrix.dependency-lane }}, Python ${{ matrix.python-version }}) + runs-on: ubuntu-latest + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + include: + - python-version: "3.10" + dependency-lane: minimum-dependencies + supermemory-version: "3.50.0" + livekit-agents-version: "1.3.6" + - python-version: "3.12" + dependency-lane: current-dependencies + supermemory-version: "3.59.0" + livekit-agents-version: "1.8.3" + defaults: + run: + working-directory: packages/livekit-sdk-python + steps: + - name: Checkout code + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 + with: + python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: packages/livekit-sdk-python/pyproject.toml + + - name: Install build and test tools + run: python -m pip install build pytest + + - name: Build wheel + run: python -m build --wheel --outdir "$RUNNER_TEMP/wheels" + + - name: Install wheel and tested runtime dependencies + run: >- + python -m pip install "$RUNNER_TEMP"/wheels/*.whl + "supermemory==${{ matrix.supermemory-version }}" + "livekit-agents==${{ matrix.livekit-agents-version }}" + + - name: Check dependency compatibility + run: python -m pip check + + - name: Verify real LiveKit integration and run tests + run: >- + python -c "from importlib.metadata import version; + from pathlib import Path; import livekit.agents, pytest, supermemory_livekit; + assert version('supermemory') == '${{ matrix.supermemory-version }}'; + assert version('livekit-agents') == '${{ matrix.livekit-agents-version }}'; + assert 'site-packages' in Path(supermemory_livekit.__file__).parts; + result = pytest.main(['-W', 'ignore::pytest.PytestAssertRewriteWarning', 'tests']); + raise SystemExit(result)" diff --git a/.github/workflows/publish-livekit-sdk-python.yml b/.github/workflows/publish-livekit-sdk-python.yml new file mode 100644 index 00000000..a1b4f27e --- /dev/null +++ b/.github/workflows/publish-livekit-sdk-python.yml @@ -0,0 +1,44 @@ +name: Publish LiveKit SDK Python + +on: + push: + branches: + - main + paths: + - "packages/livekit-sdk-python/pyproject.toml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +jobs: + publish: + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + contents: read + id-token: write + defaults: + run: + working-directory: ./packages/livekit-sdk-python + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 + with: + python-version: "3.12" + + - name: Install build dependencies + run: python -m pip install hatchling build + + - name: Build package + run: python -m build + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 + with: + packages-dir: packages/livekit-sdk-python/dist/ diff --git a/apps/docs/docs.json b/apps/docs/docs.json index c75b5007..367132cc 100644 --- a/apps/docs/docs.json +++ b/apps/docs/docs.json @@ -275,6 +275,7 @@ "integrations/claude-memory", "integrations/pipecat", "integrations/cartesia", + "integrations/livekit", "integrations/n8n", "integrations/viasocket", "integrations/zapier", @@ -542,6 +543,11 @@ "permanent": true, "source": "/voice-realtime/pipecat" }, + { + "destination": "/integrations/livekit", + "permanent": true, + "source": "/voice-realtime/livekit" + }, { "destination": "/integrations/n8n", "permanent": true, diff --git a/apps/docs/images/livekit-dark.svg b/apps/docs/images/livekit-dark.svg new file mode 100644 index 00000000..00738bff --- /dev/null +++ b/apps/docs/images/livekit-dark.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/docs/images/livekit.svg b/apps/docs/images/livekit.svg new file mode 100644 index 00000000..cf1d004f --- /dev/null +++ b/apps/docs/images/livekit.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/docs/integrations/livekit.mdx b/apps/docs/integrations/livekit.mdx new file mode 100644 index 00000000..585fa5ee --- /dev/null +++ b/apps/docs/integrations/livekit.mdx @@ -0,0 +1,193 @@ +--- +title: "LiveKit" +sidebarTitle: "LiveKit (Voice)" +description: "Add persistent memory to LiveKit Agents voice sessions" +icon: "/images/livekit.svg" +--- + +Supermemory integrates with [LiveKit Agents](https://docs.livekit.io/agents/), so a voice agent can remember a caller across sessions and use that context on the next turn. Recall runs before the model replies. Completed turns are stored automatically. The model can also search, remember, and forget explicitly. + +A Supermemory timeout or outage is skipped. It does not end the call. + +## Installation + +```bash +pip install supermemory-livekit +``` + +```bash +export SUPERMEMORY_API_KEY=your_supermemory_api_key +``` + +Create a key at [console.supermemory.ai](https://console.supermemory.ai). For a self-hosted API, pass `base_url` to `SupermemoryLiveKit`. + +## Scope + +Memory is isolated by container tag. Use a stable caller id, the same one you use in the rest of your app, so a LiveKit call and a chat session share one profile. + +Container tags may only contain letters, numbers, `_`, `-`, and `:`, and must be 100 characters or fewer. Two ways to set it: + +- Pass `container_tag` yourself, usually from [job metadata](https://docs.livekit.io/agents/build/external-data/). +- Let the plugin read the participant attribute `supermemory_container_tag`, or fall back to the participant identity. + +Identities that are not valid container tags are sanitized to a stable tag. Set the attribute when the identity is an email, phone number, or SIP address and you already have memories under a different id. + +Set the attribute in the access token your backend issues. Do not grant the caller `canUpdateOwnMetadata`, or they could change the attribute and read another caller's memory. + +One call is stored as a single document. Pass the LiveKit room name as `session_id`. The session id is the document's custom id, so a later update with the same id appends to that call instead of creating another. + +Use one `SupermemoryLiveKit` per call. If you do rebind it, turns already captured stay with the caller who said them, and memory from the earlier caller is never shown to the new one. + +## Quick start + +Create one `SupermemoryLiveKit` inside the job. A worker handles many calls, and each call needs its own scope. + +```python +import json +import os + +from livekit import agents +from livekit.agents import AgentServer, AgentSession, ChatContext, JobContext +from supermemory_livekit import SupermemoryAgent, SupermemoryLiveKit + +server = AgentServer() + + +@server.rtc_session(agent_name="memory-agent") +async def entrypoint(ctx: JobContext): + memory = SupermemoryLiveKit(api_key=os.environ["SUPERMEMORY_API_KEY"]) + metadata = json.loads(ctx.job.metadata or "{}") + container_tag = metadata.get("container_tag") + if container_tag: + memory.bind(container_tag=container_tag, session_id=ctx.room.name) + + chat_ctx = ChatContext() + if container_tag: + await memory.preload(chat_ctx) + + await ctx.connect() + if not container_tag: + participant = await ctx.wait_for_participant() + memory.bind(participant=participant, session_id=ctx.room.name) + + session = AgentSession( + stt="deepgram/nova-3:en", + llm="openai/gpt-4.1-mini", + tts="cartesia/sonic-3", + ) + memory.attach(session) + await session.start( + room=ctx.room, + agent=SupermemoryAgent( + memory, + chat_ctx=chat_ctx, + instructions=( + "You are a helpful voice assistant. You remember this caller across calls. " + "Use that naturally, and do not mention the memory system." + ), + ), + ) + + +if __name__ == "__main__": + agents.cli.run_app(server) +``` + +`preload` puts the caller's profile into the first turn, so the greeting can use it. `attach` stores the conversation after each agent reply, and stores anything left when the session closes, including a caller who hangs up mid-turn. `SupermemoryAgent` recalls inside `llm_node` before each reply and adds the memory tools. That covers voice turns, text turns from `generate_reply` or `session.run`, and LiveKit's preemptive generation. Each user message is recalled once, and tool follow-ups reuse it. + +A runnable version, with a greeting that uses the caller's memory, is in the [example agent](https://github.com/supermemoryai/supermemory/tree/main/packages/livekit-sdk-python/examples). + +`agent_name` turns on explicit dispatch, which is how job metadata reaches the agent. Remove it to join every new room automatically, for example when testing in the [Agents Playground](https://agents-playground.livekit.io). + +## Your own agent + +If you already subclass `Agent`, keep that class. Pass the tools in, and recall from `llm_node`. + +```python +from livekit.agents import Agent +from supermemory_livekit import SupermemoryLiveKit + + +class Assistant(Agent): + def __init__(self, memory: SupermemoryLiveKit) -> None: + super().__init__( + instructions="You are a helpful voice assistant.", + tools=memory.tools(), + ) + self.memory = memory + + async def llm_node(self, chat_ctx, tools, model_settings): + await self.memory.enrich(chat_ctx) + return Agent.default.llm_node(self, chat_ctx, tools, model_settings) +``` + +Call `memory.attach(session)` before `session.start`. + +Recall in `llm_node` rather than `on_user_turn_completed`. Changing the turn context in that hook makes LiveKit discard its preemptive generation, which adds latency to every turn. + +Realtime models skip `llm_node`. With a realtime model, call `await self.memory.on_user_turn_completed(turn_ctx, new_message)` from `on_user_turn_completed` instead. That hook only runs when turn detection runs in your agent, not inside the model. See [LiveKit's external data guide](https://docs.livekit.io/agents/build/external-data/). `SupermemoryAgent` picks the right hook for you. Turn capture still listens for `conversation_item_added`. + +## What gets recalled + +| Mode | Static profile | Dynamic profile | Search | Use when | +| --- | --- | --- | --- | --- | +| `profile` | Yes | Yes | No | Durable facts are enough | +| `query` | No | No | Yes | Only this turn's related memories | +| `full` | Yes | Yes | Yes | Default | + +```python +from supermemory_livekit import InputParams, SupermemoryLiveKit + +memory = SupermemoryLiveKit( + container_tag="user_123", + params=InputParams( + mode="full", + search_limit=10, + search_threshold=0.1, + recall_timeout=2.0, + capture="always", + capture_dreaming="instant", + ), +) +``` + +Recall waits at most `recall_timeout` seconds (default 2). If the profile call is slower than that, or fails, the turn falls back to the profile loaded by `preload` at the start of the call, or proceeds without memory if there was none. In our tests most recalls took 0.4 to 1.4 seconds, with occasional calls near 3 seconds. Raise `recall_timeout` if you would rather wait than miss memory on a slow turn. Retrieved text is inserted immediately before the user message and is not stored back as something the agent said. + +| Parameter | Default | Description | +| --- | --- | --- | +| `search_limit` | `10` | Maximum search results merged into the turn | +| `search_threshold` | `0.1` | Minimum similarity, from 0 to 1 | +| `mode` | `"full"` | `profile`, `query`, or `full` | +| `recall_timeout` | `2.0` | Seconds to wait before skipping recall | +| `capture` | `"always"` | `never` disables storing the call | +| `capture_dreaming` | `"instant"` | How the call transcript becomes memories. See below. | + +## Tools + +`SupermemoryAgent` adds these tools. They are scoped to the bound container tag, so the model cannot read or write another caller. + +| Tool | Used for | +| --- | --- | +| `search_memories` | Look up facts and past calls when the automatic recall is not enough | +| `remember` | Save one explicit fact, preference, or correction | +| `forget` | Forget one fact by id from `search_memories`, or by exact text | + +`remember` stores a standalone fact and processes it immediately (`dreaming="instant"`), so it is usually recallable within a minute. If your organization has no balance for instant processing, it is saved on the default schedule instead. It is not appended to the call transcript. Automatic capture is what records the conversation. + +### When a call becomes recallable + +Captured turns are written after each agent reply, but they become memories on Supermemory's processing schedule: + +- With the default `capture_dreaming="instant"`, each write is processed on its own and is usually recallable within a minute, so a caller who rings back is recalled from the last call. Each write bills one extra operation, and the call is written after every agent reply. If your organization has no balance for instant processing, the call is saved on the `dynamic` schedule instead. +- With `capture_dreaming="dynamic"`, related documents are processed together at no extra cost. In our tests this took 10 to 20 minutes, so a caller who rings back right away is not recalled from the last call yet. +- In both modes, `search_memories` finds the raw call text as soon as it is stored, so the model can still look up a recent call. + +## Self-hosting + +```python +memory = SupermemoryLiveKit( + api_key=os.environ["SUPERMEMORY_API_KEY"], + base_url="http://localhost:6767", + container_tag="user_123", +) +``` diff --git a/apps/docs/style.css b/apps/docs/style.css index a1b4271c..11df8550 100644 --- a/apps/docs/style.css +++ b/apps/docs/style.css @@ -661,6 +661,10 @@ a.nav-tabs-item > div, content: url("/images/opencode-logo-dark.svg"); } +.dark img[src*="livekit.svg"] { + content: url("/images/livekit-dark.svg"); +} + .eve-memory-video { display: block; width: 100%; diff --git a/packages/livekit-sdk-python/README.md b/packages/livekit-sdk-python/README.md new file mode 100644 index 00000000..0b7904a4 --- /dev/null +++ b/packages/livekit-sdk-python/README.md @@ -0,0 +1,120 @@ +# Supermemory LiveKit SDK + +Persistent memory for [LiveKit Agents](https://docs.livekit.io/agents/) voice sessions, powered by [Supermemory](https://supermemory.ai). + +The plugin recalls the caller's profile and relevant memories before each reply, stores the call as one conversation, and gives the model tools to search, remember, and forget. A Supermemory outage does not end the call. + +## Installation + +```bash +pip install supermemory-livekit +``` + +```bash +export SUPERMEMORY_API_KEY=your_supermemory_api_key +``` + +Create a key at [console.supermemory.ai](https://console.supermemory.ai). + +## Quick start + +Scope memory with a stable caller id. A LiveKit participant identity works when it is already a container tag (`letters`, `numbers`, `_`, `-`, `:`). Otherwise set the participant attribute `supermemory_container_tag`. + +```python +import json +import os + +from livekit import agents +from livekit.agents import AgentServer, AgentSession, ChatContext, JobContext +from supermemory_livekit import SupermemoryAgent, SupermemoryLiveKit + +server = AgentServer() + + +@server.rtc_session(agent_name="memory-agent") +async def entrypoint(ctx: JobContext): + memory = SupermemoryLiveKit(api_key=os.getenv("SUPERMEMORY_API_KEY")) + metadata = json.loads(ctx.job.metadata or "{}") + container_tag = metadata.get("container_tag") + if container_tag: + memory.bind(container_tag=container_tag, session_id=ctx.room.name) + + chat_ctx = ChatContext() + if container_tag: + await memory.preload(chat_ctx) + + await ctx.connect() + if not container_tag: + participant = await ctx.wait_for_participant() + memory.bind(participant=participant, session_id=ctx.room.name) + + session = AgentSession( + stt="deepgram/nova-3:en", + llm="openai/gpt-4.1-mini", + tts="cartesia/sonic-3", + ) + memory.attach(session) + await session.start( + room=ctx.room, + agent=SupermemoryAgent( + memory, + chat_ctx=chat_ctx, + instructions=( + "You are a helpful voice assistant. You remember this caller across calls. " + "Use that naturally, and do not mention the memory system." + ), + ), + ) + + +if __name__ == "__main__": + agents.cli.run_app(server) +``` + +A runnable version with a greeting that uses memory is in [examples/](examples/). + +If you already have an `Agent` subclass, pass `tools=memory.tools()` and recall from `llm_node`: + +```python +async def llm_node(self, chat_ctx, tools, model_settings): + await memory.enrich(chat_ctx) + return Agent.default.llm_node(self, chat_ctx, tools, model_settings) +``` + +Recall in `llm_node`, not `on_user_turn_completed`: changing the turn context in that hook makes LiveKit discard its preemptive generation. Realtime models skip `llm_node`, so with one call `await memory.on_user_turn_completed(turn_ctx, new_message)` from `on_user_turn_completed`. `SupermemoryAgent` picks the right hook for you. Call capture listens to `conversation_item_added`. + +## Configuration + +```python +from supermemory_livekit import InputParams, SupermemoryLiveKit + +memory = SupermemoryLiveKit( + container_tag="user_123", + session_id="room-123", + params=InputParams( + mode="full", # "profile" | "query" | "full" + search_limit=10, + search_threshold=0.1, + recall_timeout=2.0, # seconds; a slow recall falls back to the preloaded profile + capture="always", # "always" | "never" + capture_dreaming="instant", # see "When a call becomes recallable" below + ), +) +``` + +| Mode | Profile | Search | Use when | +| --- | --- | --- | --- | +| `profile` | Yes | No | You only need durable facts | +| `query` | No | Yes | You only need memories related to this turn | +| `full` | Yes | Yes | Default | + +One call is stored as a single document whose custom id is the session id, so a reconnect with the same session id updates that document instead of creating another. Explicit `remember` calls are separate facts, processed immediately (usually recallable within a minute), and are not tied to the call document. + +### When a call becomes recallable + +With the default `capture_dreaming="instant"`, a captured call is usually recallable within a minute. Each write bills one extra operation, and the call is written after every agent reply. If your organization has no balance for instant processing, the call falls back to the `dynamic` schedule. `capture_dreaming="dynamic"` costs nothing extra but took 10 to 20 minutes to become memories in our tests. In both modes `search_memories` finds the raw call text as soon as it is stored. + +## Links + +- [Docs](https://supermemory.ai/docs/integrations/livekit) +- [LiveKit Agents](https://docs.livekit.io/agents/) diff --git a/packages/livekit-sdk-python/examples/.env.example b/packages/livekit-sdk-python/examples/.env.example new file mode 100644 index 00000000..3bda6f73 --- /dev/null +++ b/packages/livekit-sdk-python/examples/.env.example @@ -0,0 +1,14 @@ +# LiveKit Cloud project: Settings > API keys. The same keys cover STT, LLM, and TTS +# through LiveKit Inference. +LIVEKIT_URL=wss://your-project.livekit.cloud +LIVEKIT_API_KEY= +LIVEKIT_API_SECRET= + +# https://console.supermemory.ai +SUPERMEMORY_API_KEY= + +# Optional: pin every call to one caller while testing. +# SUPERMEMORY_CONTAINER_TAG=demo_caller + +# Optional: require explicit dispatch, so your backend can pass {"container_tag": ...}. +# LIVEKIT_AGENT_NAME=memory-agent diff --git a/packages/livekit-sdk-python/examples/README.md b/packages/livekit-sdk-python/examples/README.md new file mode 100644 index 00000000..6d01f2fa --- /dev/null +++ b/packages/livekit-sdk-python/examples/README.md @@ -0,0 +1,38 @@ +# Voice agent example + +A LiveKit voice agent that remembers each caller. Tell it something on one call, hang up, and it knows it on the next. + +## Setup + +```bash +pip install supermemory-livekit python-dotenv +cp .env.example .env +``` + +Fill in `.env` with your LiveKit Cloud project keys and a [Supermemory API key](https://console.supermemory.ai). LiveKit Inference provides speech-to-text, the LLM, and text-to-speech, so no other keys are needed. + +From a checkout of this repo, install the local package instead: `pip install -e .. python-dotenv`. + +## Talk to it + +In your terminal, through your mic: + +```bash +python voice_agent.py console +``` + +In the browser: run `python voice_agent.py dev`, open the [Agents Playground](https://agents-playground.livekit.io), and connect to your project. + +## Try memory + +1. Say "My name is Priya, and please remember I'm vegetarian." +2. Hang up and start a new call. +3. The agent welcomes you back. Ask "What should I order for dinner?" + +Memory is scoped per caller: + +- Console mode uses the container tag `console_user`. +- In rooms, the agent uses the participant attribute `supermemory_container_tag`, or else the participant identity. The Playground gives each session a new identity, so set `SUPERMEMORY_CONTAINER_TAG` in `.env` to keep one caller across Playground calls. +- In production, dispatch the agent from your backend with `{"container_tag": ""}` as job metadata, and set `LIVEKIT_AGENT_NAME`. + +Each call is stored as one document and is usually recallable within a minute, see [when a call becomes recallable](https://supermemory.ai/docs/integrations/livekit#when-a-call-becomes-recallable). See the [integration docs](https://supermemory.ai/docs/integrations/livekit) for configuration. diff --git a/packages/livekit-sdk-python/examples/voice_agent.py b/packages/livekit-sdk-python/examples/voice_agent.py new file mode 100644 index 00000000..f6d4a7cf --- /dev/null +++ b/packages/livekit-sdk-python/examples/voice_agent.py @@ -0,0 +1,71 @@ +"""Voice agent that remembers each caller across calls. + +Run from this folder after filling in .env (see README.md): + + python voice_agent.py console # talk through your mic in the terminal + python voice_agent.py dev # join LiveKit rooms, e.g. from the Agents Playground +""" + +import json +import logging +import os + +from dotenv import load_dotenv +from livekit import agents +from livekit.agents import AgentServer, AgentSession, ChatContext, JobContext +from supermemory_livekit import SupermemoryAgent, SupermemoryLiveKit + +load_dotenv() +logger = logging.getLogger("voice-agent") + +INSTRUCTIONS = ( + "You are a friendly voice assistant. You remember this caller across calls. " + "Use what you know naturally, and do not mention the memory system. " + "When the caller asks you to remember something, call remember. Keep replies short." +) + +server = AgentServer() + + +# An agent_name turns on explicit dispatch, which is how job metadata reaches the agent. +# Leave it empty to join every new room, which the Agents Playground needs. +@server.rtc_session(agent_name=os.getenv("LIVEKIT_AGENT_NAME", "")) +async def entrypoint(ctx: JobContext): + memory = SupermemoryLiveKit(api_key=os.environ["SUPERMEMORY_API_KEY"]) + + # Your backend can pass the caller id in dispatch metadata. SUPERMEMORY_CONTAINER_TAG + # pins every call to one caller while testing. Console mode has no remote participant. + metadata = json.loads(ctx.job.metadata or "{}") + container_tag = metadata.get("container_tag") or os.getenv("SUPERMEMORY_CONTAINER_TAG") + if not container_tag and ctx.is_fake_job(): + container_tag = "console_user" + + await ctx.connect() + if container_tag: + memory.bind(container_tag=container_tag, session_id=ctx.room.name) + else: + participant = await ctx.wait_for_participant() + memory.bind(participant=participant, session_id=ctx.room.name) + logger.info("memory scoped to container tag %s", memory.container_tag) + + # The caller's profile goes into the first turn, so the greeting can use it. + chat_ctx = ChatContext() + await memory.preload(chat_ctx) + + session = AgentSession( + stt="deepgram/nova-3:en", + llm="openai/gpt-4.1-mini", + tts="cartesia/sonic-3", + ) + memory.attach(session) + await session.start( + room=ctx.room, + agent=SupermemoryAgent(memory, chat_ctx=chat_ctx, instructions=INSTRUCTIONS), + ) + await session.generate_reply( + instructions="Greet the caller. If you already know them, welcome them back by name." + ) + + +if __name__ == "__main__": + agents.cli.run_app(server) diff --git a/packages/livekit-sdk-python/pyproject.toml b/packages/livekit-sdk-python/pyproject.toml new file mode 100644 index 00000000..f699f894 --- /dev/null +++ b/packages/livekit-sdk-python/pyproject.toml @@ -0,0 +1,56 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "supermemory-livekit" +version = "0.1.0" +description = "Supermemory integration for LiveKit Agents — persistent memory for voice AI" +readme = "README.md" +license = "MIT" +requires-python = ">=3.10" +authors = [ + { name = "Supermemory", email = "support@supermemory.ai" } +] +keywords = [ + "supermemory", + "livekit", + "memory", + "voice-ai", + "agents", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering :: Artificial Intelligence", +] +dependencies = [ + "livekit-agents>=1.3.6,<2", + "pydantic>=2.10.0", + "supermemory>=3.50.0", +] + +[project.optional-dependencies] +dev = [ + "pytest>=8.3.5", +] + +[project.urls] +Homepage = "https://supermemory.ai" +Documentation = "https://supermemory.ai/docs/integrations/livekit" +Repository = "https://github.com/supermemoryai/supermemory" + +[tool.hatch.build.targets.wheel] +packages = ["src/supermemory_livekit"] + +[tool.hatch.build.targets.sdist] +include = [ + "/src", + "/tests", + "/README.md", +] diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/__init__.py b/packages/livekit-sdk-python/src/supermemory_livekit/__init__.py new file mode 100644 index 00000000..b2a1894a --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/__init__.py @@ -0,0 +1,29 @@ +"""Supermemory for LiveKit Agents.""" + +from importlib.metadata import PackageNotFoundError, version +from typing import Any + +from .exceptions import ConfigurationError, SupermemoryLiveKitError +from .memory import InputParams, SupermemoryLiveKit + +try: + __version__ = version("supermemory-livekit") +except PackageNotFoundError: + __version__ = "0.1.0" + + +def __getattr__(name: str) -> Any: + if name == "SupermemoryAgent": + from .agent import SupermemoryAgent + + return SupermemoryAgent + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") + + +__all__ = [ + "ConfigurationError", + "InputParams", + "SupermemoryAgent", + "SupermemoryLiveKit", + "SupermemoryLiveKitError", +] diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/agent.py b/packages/livekit-sdk-python/src/supermemory_livekit/agent.py new file mode 100644 index 00000000..cab249bc --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/agent.py @@ -0,0 +1,43 @@ +"""Agent subclass that recalls memory before each reply.""" + +from typing import Any + +from livekit.agents import Agent, llm + +from .memory import SupermemoryLiveKit + + +class SupermemoryAgent(Agent): + """LiveKit agent that injects Supermemory before each reply. + + Recall runs in ``llm_node``, so voice and text turns both get memory and + LiveKit's preemptive generation is kept. Realtime models skip ``llm_node``, + so for those it runs in ``on_user_turn_completed``. + + Pass any extra tools through ``tools``. Memory tools are added for you. + Override ``llm_node`` or ``on_user_turn_completed`` and call ``super()`` if you + also need those hooks. + """ + + def __init__(self, memory: SupermemoryLiveKit, **kwargs: Any) -> None: + tools = list(kwargs.pop("tools", None) or []) + tools.extend(memory.tools()) + super().__init__(tools=tools, **kwargs) + self.memory = memory + + async def on_user_turn_completed(self, turn_ctx: Any, new_message: Any) -> None: + if self._uses_realtime_model(): + await self.memory.on_user_turn_completed(turn_ctx, new_message) + + async def llm_node(self, chat_ctx: Any, tools: list[Any], model_settings: Any) -> Any: + await self.memory.enrich(chat_ctx) + return Agent.default.llm_node(self, chat_ctx, tools, model_settings) + + def _uses_realtime_model(self) -> bool: + model = self.llm + if not isinstance(model, (llm.LLM, llm.RealtimeModel)): + try: + model = self.session.llm + except RuntimeError: + return False + return isinstance(model, llm.RealtimeModel) diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/exceptions.py b/packages/livekit-sdk-python/src/supermemory_livekit/exceptions.py new file mode 100644 index 00000000..44dbc635 --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/exceptions.py @@ -0,0 +1,19 @@ +"""Errors raised while configuring the LiveKit integration.""" + +from typing import Optional + + +class SupermemoryLiveKitError(Exception): + def __init__(self, message: str, original_error: Optional[Exception] = None): + super().__init__(message) + self.message = message + self.original_error = original_error + + def __str__(self) -> str: + if self.original_error: + return f"{self.message}: {self.original_error}" + return self.message + + +class ConfigurationError(SupermemoryLiveKitError): + """Raised when the integration cannot start, for example a missing API key.""" diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/identifiers.py b/packages/livekit-sdk-python/src/supermemory_livekit/identifiers.py new file mode 100644 index 00000000..24b6f4d2 --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/identifiers.py @@ -0,0 +1,22 @@ +"""Map LiveKit identities onto Supermemory container tags and custom ids.""" + +import hashlib +import re + +_INVALID = re.compile(r"[^a-zA-Z0-9_:-]+") +_MAX_LEN = 100 + + +def to_identifier(value: str) -> str: + """Return a stable container tag or custom id, hashing only when sanitizing.""" + raw = value.strip() + if not raw: + raise ValueError("identifier is empty") + + cleaned = _INVALID.sub("_", raw).strip("_") or "id" + if cleaned == raw and len(cleaned) <= _MAX_LEN: + return cleaned + + digest = hashlib.sha256(raw.encode()).hexdigest()[:8] + head = cleaned[: _MAX_LEN - len(digest) - 1].strip("_") or "id" + return f"{head}_{digest}"[:_MAX_LEN] diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/memory.py b/packages/livekit-sdk-python/src/supermemory_livekit/memory.py new file mode 100644 index 00000000..dde920dd --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/memory.py @@ -0,0 +1,527 @@ +"""Recall and capture memory for a LiveKit voice session.""" + +from __future__ import annotations + +import asyncio +import logging +import os +from typing import Any, Literal, Optional +from uuid import uuid4 + +from pydantic import BaseModel, Field + +from .exceptions import ConfigurationError +from .identifiers import to_identifier +from .utils import ( + _field, + deduplicate_memories, + format_memories_to_text, + format_tool_results, + is_injected_memory, + message_role, + message_text, + wrap_memory, +) + +logger = logging.getLogger("supermemory_livekit") + +_UNAVAILABLE = "I couldn't reach memory just now." +_ATTRIBUTE = "supermemory_container_tag" +_STORE_TIMEOUT = 10.0 +_MAX_DOCUMENT_CHARS = 100_000 +_MAX_BUFFERED = 2_000 + + +def _log_flush_failure(task: "asyncio.Task[None]") -> None: + if not task.cancelled() and task.exception() is not None: + logger.warning("memory capture failed; will retry", exc_info=task.exception()) + + +class InputParams(BaseModel): + search_limit: int = Field(default=10, ge=1, le=20) + search_threshold: float = Field(default=0.1, ge=0.0, le=1.0) + system_prompt: str = Field(default="Relevant memory for this caller:\n\n") + mode: Literal["profile", "query", "full"] = "full" + recall_timeout: float = Field(default=2.0, gt=0.0, le=8.0) + capture: Literal["always", "never"] = "always" + capture_dreaming: Literal["dynamic", "instant"] = "instant" + + +class SupermemoryLiveKit: + """Persistent memory for a LiveKit Agents session. + + Call ``enrich`` from ``llm_node`` before the LLM replies, and ``attach`` the + session so completed turns are stored. ``tools()`` exposes search, remember, + and forget to the model. A Supermemory outage never fails the call. + """ + + InputParams = InputParams + + def __init__( + self, + *, + api_key: Optional[str] = None, + container_tag: Optional[str] = None, + session_id: Optional[str] = None, + params: Optional[InputParams] = None, + base_url: Optional[str] = None, + client: Any = None, + ) -> None: + self.api_key = api_key or os.getenv("SUPERMEMORY_API_KEY") + if not self.api_key and client is None: + raise ConfigurationError( + "API key is required. Pass api_key or set SUPERMEMORY_API_KEY." + ) + + self.params = params or InputParams() + self.container_tag: Optional[str] = None + self.session_id: Optional[str] = None + self._generated_session = f"session-{uuid4().hex[:12]}" + self._client = client if client is not None else self._build_client(base_url) + self._seen: set[str] = set() + # Each captured turn keeps the scope it was spoken in, so a rebind cannot move it. + self._buffer: list[dict[str, Optional[str]]] = [] + self._lock = asyncio.Lock() + self._flush_task: Optional[asyncio.Task[None]] = None + self._recall: Optional[tuple[tuple[Optional[str], str], asyncio.Future[Optional[str]]]] = None + self._preloaded: Optional[tuple[str, str]] = None + self._instant_unavailable = False + self._session: Any = None + self._shutdown_registered = False + + if container_tag or session_id: + self.bind(container_tag=container_tag, session_id=session_id) + + def _build_client(self, base_url: Optional[str]) -> Any: + try: + import supermemory + except ImportError as exc: + raise ConfigurationError( + "supermemory is not installed. Install with: pip install supermemory-livekit" + ) from exc + kwargs: dict[str, Any] = {"api_key": self.api_key} + if base_url: + kwargs["base_url"] = base_url + return supermemory.AsyncSupermemory(**kwargs) + + def bind( + self, + *, + container_tag: Optional[str] = None, + session_id: Optional[str] = None, + participant: Any = None, + ) -> None: + """Scope memory to a container tag, or to a LiveKit participant identity.""" + if participant is not None and not container_tag: + attributes = getattr(participant, "attributes", None) or {} + if isinstance(attributes, dict) and attributes.get(_ATTRIBUTE): + container_tag = str(attributes[_ATTRIBUTE]) + else: + container_tag = getattr(participant, "identity", None) + + if container_tag is not None: + raw = str(container_tag).strip() + if not raw: + if participant is None: + raise ConfigurationError("container_tag is empty") + else: + scoped = to_identifier(raw) + if scoped != raw: + logger.info("scoped memory to container tag %s", scoped) + self.container_tag = scoped + if session_id: + self.session_id = str(session_id) + if self.container_tag: + custom_id = self._custom_id() + for message in self._buffer: + if message["tag"] is None: + message["tag"], message["custom_id"] = self.container_tag, custom_id + self._schedule_flush() + + def tools(self) -> list[Any]: + from .tools import build_tools + + return build_tools(self) + + async def preload(self, chat_ctx: Any) -> bool: + """Inject the caller profile into the initial chat context. Returns whether anything was added.""" + tag = self.container_tag + text = await self._recall_text(query=None) + if not text or tag is None or tag != self.container_tag: + return False + self._preloaded = (tag, text) + self._inject(chat_ctx, text, created_at=None) + return True + + async def enrich(self, chat_ctx: Any) -> None: + """Recall for the latest user message and insert it just before that message. + + Call from ``llm_node``. That covers voice and text turns, and runs during + LiveKit's preemptive generation instead of invalidating it. Each user message + is recalled once; tool follow-ups and preemptive retries reuse the result. + """ + user = self._last_user_item(chat_ctx) + if user is not None: + await self._recall_into(chat_ctx, user) + elif not self._preload_matches(): + self._strip_injected(chat_ctx) + + async def on_user_turn_completed(self, turn_ctx: Any, new_message: Any) -> None: + """Recall from the turn hook, for realtime models that skip ``llm_node``. + + With an STT-LLM-TTS pipeline use ``enrich`` from ``llm_node`` instead. Editing + the turn context here discards LiveKit's preemptive generation. + """ + await self._recall_into(turn_ctx, new_message) + + async def _recall_into(self, chat_ctx: Any, user: Any) -> None: + query = message_text(user) + if not query: + return + tag = self.container_tag + # Drop earlier injections first, so a failed recall leaves no memory rather than stale + # or foreign memory. The caller's own call-start profile is the fallback. + self._strip_injected(chat_ctx) + text: Optional[str] = None + try: + text = await self._recall_once(user, query) + except Exception: + logger.warning("memory recall failed", exc_info=True) + if tag != self.container_tag: + return + if not text and self._preload_matches(): + text = self._preloaded[1] if self._preloaded else None + if not text: + return + created_at = getattr(user, "created_at", None) + before = created_at - 0.001 if isinstance(created_at, (int, float)) else None + try: + self._inject(chat_ctx, text, created_at=before) + except Exception: + logger.warning("memory inject failed", exc_info=True) + + async def _recall_once(self, user: Any, query: str) -> Optional[str]: + # Keyed on the user message, so retries and tool follow-ups of one turn share a recall + # while a later turn with the same words recalls again. + key = (self.container_tag, str(getattr(user, "id", None) or query)) + if self._recall is None or self._recall[0] != key: + self._recall = (key, asyncio.ensure_future(self._recall_text(query=query))) + # A cancelled preemptive generation must not cancel a recall the next attempt reuses. + return await asyncio.shield(self._recall[1]) + + def _preload_matches(self) -> bool: + return self._preloaded is not None and self._preloaded[0] == self.container_tag + + def attach( + self, + session: Any, + *, + container_tag: Optional[str] = None, + session_id: Optional[str] = None, + ) -> None: + """Store completed user and assistant turns from this session.""" + if container_tag or session_id: + self.bind(container_tag=container_tag, session_id=session_id) + if self._session is not session: + self._detach() + session.on("conversation_item_added", self._on_conversation_item) + session.on("close", self._on_close) + self._session = session + self._register_shutdown() + + async def aclose(self) -> None: + """Flush captured turns. Safe to call more than once.""" + task = self._flush_task + if task is not None and not task.done(): + try: + await task + except Exception: + logger.warning("memory capture failed while closing", exc_info=True) + for _ in range(2): + if not self._buffer: + return + try: + await self._flush() + return + except Exception: + logger.warning("memory capture failed while closing", exc_info=True) + + async def search(self, query: str) -> str: + tag = self.container_tag + if not tag: + return "Memory is not scoped to a caller yet." + if not query.strip(): + return "No matching memories." + try: + response = await asyncio.wait_for( + self._client.search.memories( + q=query, + container_tag=tag, + limit=self.params.search_limit, + threshold=self.params.search_threshold, + search_mode="hybrid", + ), + timeout=4.0, + ) + except Exception: + logger.warning("memory search failed", exc_info=True) + return _UNAVAILABLE + results = list(_field(response, "results", default=[]) or []) + return format_tool_results(results[: self.params.search_limit]) + + async def remember(self, memory_text: str) -> str: + tag = self.container_tag + text = memory_text.strip() + if not tag: + return "Memory is not scoped to a caller yet." + if not text: + return "Nothing to remember." + try: + await asyncio.wait_for( + self._add( + "instant", + content=text, + container_tag=tag, + metadata={"platform": "livekit", "kind": "explicit"}, + ), + timeout=4.0, + ) + except Exception: + logger.warning("memory remember failed", exc_info=True) + return _UNAVAILABLE + return "Saved." + + async def forget(self, *, memory_id: str = "", memory_text: str = "") -> str: + tag = self.container_tag + if not tag: + return "Memory is not scoped to a caller yet." + memory_id = memory_id.strip() + memory_text = memory_text.strip() + if not memory_id and not memory_text: + return "Pass a memory id from search_memories, or the exact memory text." + kwargs: dict[str, Any] = {"container_tag": tag} + if memory_id: + kwargs["id"] = memory_id + if memory_text: + kwargs["content"] = memory_text + try: + await asyncio.wait_for(self._client.memories.forget(**kwargs), timeout=4.0) + except Exception: + logger.warning("memory forget failed", exc_info=True) + return _UNAVAILABLE + return "Forgotten." + + async def _recall_text(self, *, query: Optional[str]) -> Optional[str]: + if not self.container_tag or self._client is None: + return None + include_profile = self.params.mode in ("profile", "full") + include_search = self.params.mode in ("query", "full") and bool(query) + if self.params.mode == "profile": + include_search = False + if not include_profile and not include_search: + return None + try: + memories = await asyncio.wait_for( + self._retrieve(query if include_search else None), + timeout=self.params.recall_timeout, + ) + except asyncio.TimeoutError: + logger.warning("memory recall timed out after %.2fs", self.params.recall_timeout) + return None + except Exception: + logger.warning("memory recall failed", exc_info=True) + return None + + profile = memories["profile"] + deduped = deduplicate_memories( + static=profile["static"] if include_profile else [], + dynamic=profile["dynamic"] if include_profile else [], + search_results=memories["search_results"] if include_search else [], + ) + text = format_memories_to_text( + deduped, + system_prompt=self.params.system_prompt, + include_static=include_profile, + include_dynamic=include_profile, + include_search=include_search, + ) + return text or None + + async def _retrieve(self, query: Optional[str]) -> dict[str, Any]: + kwargs: dict[str, Any] = { + "container_tag": self.container_tag, + "timeout": self.params.recall_timeout, + } + if query: + kwargs["q"] = query + kwargs["threshold"] = self.params.search_threshold + response = await self._client.profile(**kwargs) + profile = _field(response, "profile") + search_response = _field(response, "search_results", "searchResults") + raw_results = list(_field(search_response, "results", default=[]) or []) + return { + "profile": { + "static": list(_field(profile, "static", default=[]) or []), + "dynamic": list(_field(profile, "dynamic", default=[]) or []), + }, + "search_results": raw_results[: self.params.search_limit], + } + + # LiveKit orders the user turn by timestamp, so a late add would land after it. + def _inject(self, chat_ctx: Any, text: str, *, created_at: Optional[float]) -> None: + wrapped = wrap_memory(text) + if created_at is None: + chat_ctx.add_message(role="assistant", content=wrapped) + return + try: + chat_ctx.add_message(role="assistant", content=wrapped, created_at=created_at) + except TypeError: + chat_ctx.add_message(role="assistant", content=wrapped) + + def _last_user_item(self, chat_ctx: Any) -> Any: + for item in reversed(list(getattr(chat_ctx, "items", []) or [])): + if message_role(item) == "user" and message_text(item): + return item + return None + + def _strip_injected(self, chat_ctx: Any) -> None: + items = list(getattr(chat_ctx, "items", []) or []) + for item in items: + text = message_text(item) + if message_role(item) != "assistant" or not text or not is_injected_memory(text): + continue + item_id = getattr(item, "id", None) + if item_id is not None and hasattr(chat_ctx, "remove"): + chat_ctx.remove(item_id) + elif hasattr(chat_ctx, "items") and item in chat_ctx.items: + chat_ctx.items.remove(item) + + def _on_conversation_item(self, event: Any) -> None: + item = getattr(event, "item", event) + role = message_role(item) + if role not in ("user", "assistant"): + return + text = message_text(item) + if not text or is_injected_memory(text): + return + item_id = getattr(item, "id", None) or f"anon-{id(item)}" + if item_id in self._seen: + return + self._seen.add(item_id) + tag = self.container_tag + self._buffer.append( + { + "role": role, + "content": text, + "tag": tag, + "custom_id": self._custom_id() if tag else None, + } + ) + if len(self._buffer) > _MAX_BUFFERED: + del self._buffer[: len(self._buffer) - _MAX_BUFFERED] + logger.warning("memory capture buffer full; dropped the oldest turns") + if role == "assistant": + self._schedule_flush() + + def _on_close(self, _event: Any = None) -> None: + self._schedule_flush() + + def _schedule_flush(self) -> None: + if self.params.capture != "always" or not self._buffer or self._buffer[0]["tag"] is None: + return + try: + loop = asyncio.get_running_loop() + except RuntimeError: + return + if self._flush_task is not None and not self._flush_task.done(): + return + self._flush_task = loop.create_task(self._flush()) + self._flush_task.add_done_callback(_log_flush_failure) + + async def _flush(self) -> None: + while True: + async with self._lock: + if self.params.capture != "always": + return + batch = self._take_batch() + if not batch: + return + try: + await asyncio.wait_for(self._store(batch), timeout=_STORE_TIMEOUT) + except BaseException: + async with self._lock: + self._buffer = batch + self._buffer + raise + + def _take_batch(self) -> list[dict[str, Optional[str]]]: + """Take the leading turns that share one scope, capped in size.""" + if not self._buffer or self._buffer[0]["tag"] is None: + return [] + scope = (self._buffer[0]["tag"], self._buffer[0]["custom_id"]) + count, size = 0, 0 + for message in self._buffer: + length = len(message["content"] or "") + if (message["tag"], message["custom_id"]) != scope: + break + if count and size + length > _MAX_DOCUMENT_CHARS: + break + count, size = count + 1, size + length + batch, self._buffer = self._buffer[:count], self._buffer[count:] + return batch + + async def _store(self, messages: list[dict[str, Optional[str]]]) -> None: + lines = [ + f"{'User' if message['role'] == 'user' else 'Assistant'}: {message['content']}" + for message in messages + ] + await self._add( + self.params.capture_dreaming, + content="\n".join(lines), + container_tag=messages[0]["tag"], + custom_id=messages[0]["custom_id"], + metadata={"platform": "livekit", "kind": "conversation"}, + ) + + async def _add(self, dreaming: str, **kwargs: Any) -> None: + """Add a document, on the default schedule when instant processing is not available.""" + if dreaming == "instant" and not self._instant_unavailable: + try: + await self._client.add(**kwargs, dreaming="instant") + return + except Exception as exc: + if getattr(exc, "status_code", None) != 402: + raise + # No balance for instant processing: use the default schedule for the rest of the call. + self._instant_unavailable = True + logger.warning("instant memory processing unavailable; using the default schedule") + await self._client.add(**kwargs) + + def _custom_id(self) -> str: + raw = self.session_id or self._generated_session + return to_identifier(raw) + + def _detach(self) -> None: + session = self._session + if session is None or not hasattr(session, "off"): + self._session = None + return + session.off("conversation_item_added", self._on_conversation_item) + session.off("close", self._on_close) + self._session = None + + def _register_shutdown(self) -> None: + if self._shutdown_registered: + return + try: + from livekit.agents import get_job_context + + try: + ctx = get_job_context(required=False) + except TypeError: + ctx = get_job_context() + except Exception: + return + if ctx is None or not hasattr(ctx, "add_shutdown_callback"): + return + ctx.add_shutdown_callback(self.aclose) + self._shutdown_registered = True diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/tools.py b/packages/livekit-sdk-python/src/supermemory_livekit/tools.py new file mode 100644 index 00000000..e07f1189 --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/tools.py @@ -0,0 +1,43 @@ +"""LiveKit function tools bound to one memory scope.""" + +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from .memory import SupermemoryLiveKit + + +def build_tools(memory: "SupermemoryLiveKit") -> list[Any]: + from livekit.agents import RunContext, function_tool + + @function_tool() + async def search_memories(context: RunContext, query: str) -> str: + """Search long-term memory for facts, preferences, and past calls. + + Args: + query: What to look up, using the caller's words, names, or topic. + """ + del context + return await memory.search(query) + + @function_tool() + async def remember(context: RunContext, fact: str) -> str: + """Save one durable fact the caller asked you to remember. + + Args: + fact: A single sentence fact, preference, decision, or correction. + """ + del context + return await memory.remember(fact) + + @function_tool() + async def forget(context: RunContext, memory_id: str = "", fact: str = "") -> str: + """Forget one learned fact. Pass a memory id from search_memories, or the exact text. + + Args: + memory_id: Id from a search_memories result. Leave empty to match text instead. + fact: Exact memory text to forget when you do not have an id. + """ + del context + return await memory.forget(memory_id=memory_id, memory_text=fact) + + return [search_memories, remember, forget] diff --git a/packages/livekit-sdk-python/src/supermemory_livekit/utils.py b/packages/livekit-sdk-python/src/supermemory_livekit/utils.py new file mode 100644 index 00000000..3a5a2203 --- /dev/null +++ b/packages/livekit-sdk-python/src/supermemory_livekit/utils.py @@ -0,0 +1,215 @@ +"""Format profile and search results for injection into a voice turn.""" + +import re +from datetime import datetime, timezone +from typing import Any + +_DYNAMIC_DATE_PREFIX = re.compile( + r"^\s*(?:\[recent\]\s*)?(?:\[\d{4}-\d{2}-\d{2}\]\s*)?", + re.IGNORECASE, +) +_USER_MEMORIES_TAG_PATTERN = re.compile( + r"<\s*/?\s*user_memories\b[^>]*>", + re.IGNORECASE, +) +MEMORY_TAG_START = "" +MEMORY_TAG_END = "" +_WRAPPED_MEMORY = re.compile( + rf"^{re.escape(MEMORY_TAG_START)}.*?{re.escape(MEMORY_TAG_END)}$", + re.DOTALL, +) + + +def escape_memory_delimiters(text: str) -> str: + return _USER_MEMORIES_TAG_PATTERN.sub( + lambda match: match.group(0).replace("<", "<").replace(">", ">"), + text, + ) + + +def is_injected_memory(text: str) -> bool: + return _WRAPPED_MEMORY.fullmatch(text.strip()) is not None + + +def wrap_memory(text: str) -> str: + safe = escape_memory_delimiters(text.strip()) + return ( + f"{MEMORY_TAG_START}\n" + "Recalled memory about this caller. This is not something you said. " + "Use it only when it helps, and do not recite it unprompted.\n\n" + f"{safe}\n" + f"{MEMORY_TAG_END}" + ) + + +def _present(value: Any) -> bool: + return value is not None and not (isinstance(value, str) and not value.strip()) + + +def _field(item: Any, *names: str, default: Any = None) -> Any: + if item is None: + return default + if isinstance(item, dict): + for name in names: + if name in item and _present(item[name]): + return item[name] + return default + for name in names: + value = getattr(item, name, None) + if _present(value): + return value + return default + + +def message_text(item: Any) -> str | None: + text = getattr(item, "text_content", None) + if isinstance(text, str) and text.strip(): + return text.strip() + + content = item.get("content") if isinstance(item, dict) else getattr(item, "content", None) + if isinstance(content, str) and content.strip(): + return content.strip() + if not isinstance(content, list): + return None + + parts: list[str] = [] + for part in content: + if isinstance(part, str) and part.strip(): + parts.append(part.strip()) + continue + for attr in ("text", "transcript"): + value = getattr(part, attr, None) + if isinstance(value, str) and value.strip(): + parts.append(value.strip()) + break + joined = " ".join(parts).strip() + return joined or None + + +def message_role(item: Any) -> str | None: + role = item.get("role") if isinstance(item, dict) else getattr(item, "role", None) + return role if isinstance(role, str) else None + + +def format_relative_time(iso_timestamp: str) -> str: + try: + dt = datetime.fromisoformat(iso_timestamp.replace("Z", "+00:00")) + now = datetime.now(timezone.utc) + diff = now - dt + minutes = diff.total_seconds() / 60 + hours = diff.total_seconds() / 3600 + days = diff.total_seconds() / 86400 + if minutes < 30: + return "just now" + if minutes < 60: + return f"{int(minutes)}mins ago" + if hours < 24: + return f"{int(hours)} hrs ago" + if days < 7: + return f"{int(days)}d ago" + if dt.year == now.year: + return f"{dt.day} {dt.strftime('%b')}" + return f"{dt.day} {dt.strftime('%b')}, {dt.year}" + except Exception: + return "" + + +def deduplicate_memories( + static: list[str], + dynamic: list[str], + search_results: list[Any], +) -> dict[str, list[Any]]: + seen: set[str] = set() + + def comparison_key(memory: str) -> str: + without_prefix = _DYNAMIC_DATE_PREFIX.sub("", memory.strip()) + return " ".join(without_prefix.split()).casefold() + + def unique_strings(memories: list[str]) -> list[str]: + out: list[str] = [] + for memory in memories: + if not isinstance(memory, str): + continue + key = comparison_key(memory) + if key and key not in seen: + seen.add(key) + out.append(memory) + return out + + def unique_search(results: list[Any]) -> list[Any]: + out: list[Any] = [] + for result in results: + memory = ( + result + if isinstance(result, str) + else _field(result, "memory", "chunk", "content", default="") + ) + if not isinstance(memory, str): + memory = "" + key = comparison_key(memory) + if key and key not in seen: + seen.add(key) + out.append(result) + return out + + return { + "static": unique_strings(static), + "dynamic": unique_strings(dynamic), + "search_results": unique_search(search_results), + } + + +def format_memories_to_text( + memories: dict[str, list[Any]], + *, + system_prompt: str, + include_static: bool, + include_dynamic: bool, + include_search: bool, +) -> str: + sections: list[str] = [] + static = memories["static"] + dynamic = memories["dynamic"] + search_results = memories["search_results"] + + if include_static and static: + sections.append("## User Profile\n" + "\n".join(f"- {item}" for item in static)) + if include_dynamic and dynamic: + sections.append("## Recent Context\n" + "\n".join(f"- {item}" for item in dynamic)) + if include_search and search_results: + lines: list[str] = [] + for item in search_results: + if isinstance(item, str): + lines.append(f"- {item}") + continue + memory = _field(item, "memory", "chunk", "content", default="") + updated_at = _field(item, "updatedAt", "updated_at", default="") + time_str = format_relative_time(updated_at) if isinstance(updated_at, str) else "" + prefix = f"[{time_str}] " if time_str else "" + if isinstance(memory, str) and memory.strip(): + lines.append(f"- {prefix}{memory.strip()}") + if lines: + sections.append("## Relevant Memories\n" + "\n".join(lines)) + + if not sections: + return "" + return f"{system_prompt}\n" + "\n\n".join(sections) + + +def format_tool_results(results: list[Any]) -> str: + lines: list[str] = [] + for item in results: + if isinstance(item, str) and item.strip(): + lines.append(f"- {item.strip()}") + continue + memory = _field(item, "memory") + chunk = _field(item, "chunk", "content", default="") + text = memory if isinstance(memory, str) and memory.strip() else chunk + if not isinstance(text, str) or not text.strip(): + continue + memory_id = _field(item, "id") + if isinstance(memory, str) and memory.strip() and isinstance(memory_id, str) and memory_id: + lines.append(f"- {memory.strip()} (id: {memory_id})") + else: + lines.append(f"- {text.strip()}") + return "\n".join(lines) if lines else "No matching memories." diff --git a/packages/livekit-sdk-python/tests/test_memory.py b/packages/livekit-sdk-python/tests/test_memory.py new file mode 100644 index 00000000..41af028d --- /dev/null +++ b/packages/livekit-sdk-python/tests/test_memory.py @@ -0,0 +1,620 @@ +from __future__ import annotations + +import asyncio +import sys +import types +import unittest +from types import SimpleNamespace + +from supermemory_livekit import ConfigurationError, InputParams, SupermemoryLiveKit +from supermemory_livekit import memory as memory_module +from supermemory_livekit.identifiers import to_identifier +from supermemory_livekit.utils import format_tool_results, is_injected_memory, wrap_memory + + +class FakeProfile: + def __init__(self, static=None, dynamic=None, results=None, delay=0): + self.static = static + self.dynamic = dynamic + self.results = results or [] + self.delay = delay + self.calls = [] + + async def __call__(self, **kwargs): + self.calls.append(kwargs) + if self.delay: + await asyncio.sleep(self.delay) + return SimpleNamespace( + profile=None + if self.static is None and self.dynamic is None + else SimpleNamespace(static=self.static or [], dynamic=self.dynamic or []), + search_results=SimpleNamespace(results=self.results), + ) + + +class FakeSearch: + def __init__(self): + self.calls = [] + + async def memories(self, **kwargs): + self.calls.append(kwargs) + return SimpleNamespace( + results=[ + SimpleNamespace(id="mem_1", memory="Likes short answers"), + SimpleNamespace(id="chunk_1", chunk="raw transcript", memory=None), + ] + ) + + +class FakeMemories: + def __init__(self): + self.calls = [] + + async def forget(self, **kwargs): + self.calls.append(kwargs) + + +class FakeClient: + def __init__(self, profile=None): + self.profile = profile or FakeProfile(static=[], dynamic=[]) + self.search = FakeSearch() + self.memories = FakeMemories() + self.added = [] + + async def add(self, **kwargs): + self.added.append(kwargs) + return SimpleNamespace(id="doc_1") + + +class ChatCtx: + def __init__(self): + self.items = [] + + def add_message(self, *, role, content, created_at=None): + item = SimpleNamespace( + id=f"item_{len(self.items)}", + role=role, + content=content, + text_content=content, + created_at=created_at, + ) + self.items.append(item) + return item + + def remove(self, item_id): + self.items = [item for item in self.items if item.id != item_id] + + +class Session: + def __init__(self): + self.handlers = {} + + def on(self, event, callback): + self.handlers.setdefault(event, []).append(callback) + + def off(self, event, callback): + self.handlers[event] = [cb for cb in self.handlers.get(event, []) if cb is not callback] + + def emit(self, event, payload): + for callback in list(self.handlers.get(event, [])): + callback(payload) + + +def memory(client, **kwargs): + return SupermemoryLiveKit(api_key="sm_test", client=client, **kwargs) + + +class MemoryTests(unittest.TestCase): + def test_missing_api_key(self): + with self.assertRaises(ConfigurationError): + SupermemoryLiveKit(api_key="", client=None) + + def test_empty_container_tag(self): + with self.assertRaises(ConfigurationError): + memory(FakeClient(), container_tag=" ") + + def test_empty_profile_does_not_inject(self): + client = FakeClient(FakeProfile(static=[], dynamic=[])) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + + added = asyncio.run(plugin.on_user_turn_completed(ctx, SimpleNamespace(text_content="hi", created_at=10))) + + self.assertIsNone(added) + self.assertEqual(ctx.items, []) + self.assertEqual(client.profile.calls[0]["q"], "hi") + + def test_null_profile_is_empty(self): + client = FakeClient(FakeProfile()) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + + asyncio.run(plugin.preload(ctx)) + + self.assertEqual(ctx.items, []) + + def test_recall_inserts_before_user_timestamp_and_replaces_previous(self): + client = FakeClient( + FakeProfile( + static=["Name is Ada"], + dynamic=["Working on voice agents"], + results=[SimpleNamespace(memory="Prefers concise replies", updatedAt="2026-09-20T00:00:00Z")], + ) + ) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + ctx.add_message(role="assistant", content=wrap_memory("stale"), created_at=1) + user = SimpleNamespace(text_content="what do you remember?", created_at=20.0) + + asyncio.run(plugin.on_user_turn_completed(ctx, user)) + + self.assertEqual(len(ctx.items), 1) + injected = ctx.items[0] + self.assertEqual(injected.role, "assistant") + self.assertAlmostEqual(injected.created_at, 19.999) + self.assertIn("Name is Ada", injected.content) + self.assertIn("Prefers concise replies", injected.content) + self.assertNotIn("stale", injected.content) + self.assertTrue(is_injected_memory(injected.content)) + self.assertEqual(client.profile.calls[0]["q"], "what do you remember?") + self.assertEqual(client.profile.calls[0]["container_tag"], "user_1") + + def test_query_mode_skips_profile_sections(self): + client = FakeClient( + FakeProfile(static=["Name is Ada"], results=[SimpleNamespace(memory="Lives in Lisbon")]) + ) + plugin = memory( + client, + container_tag="user_1", + params=InputParams(mode="query"), + ) + ctx = ChatCtx() + + asyncio.run(plugin.on_user_turn_completed(ctx, SimpleNamespace(text_content="where?", created_at=2))) + + self.assertIn("Lives in Lisbon", ctx.items[0].content) + self.assertNotIn("Name is Ada", ctx.items[0].content) + + def test_enrich_injects_when_the_user_message_is_already_present(self): + client = FakeClient(FakeProfile(static=["The secret word is kelp"])) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + ctx.add_message(role="user", content="what is the secret word?", created_at=8.0) + + asyncio.run(plugin.enrich(ctx)) + + self.assertEqual(len(ctx.items), 2) + self.assertIn("kelp", ctx.items[1].content) + self.assertAlmostEqual(ctx.items[1].created_at, 7.999) + asyncio.run(plugin.enrich(ctx)) + self.assertEqual(len(client.profile.calls), 1) + self.assertEqual(len(ctx.items), 2) + + def test_enrich_replaces_preloaded_profile_each_turn(self): + client = FakeClient( + FakeProfile(static=["Name is Ada"], results=[SimpleNamespace(memory="Owns a dog named Biscuit")]) + ) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + + asyncio.run(plugin.preload(ctx)) + ctx.add_message(role="user", content="what is my dog called?", created_at=30.0) + asyncio.run(plugin.enrich(ctx)) + + injected = [item for item in ctx.items if is_injected_memory(item.content)] + self.assertEqual(len(injected), 1) + self.assertIn("Biscuit", injected[0].content) + self.assertEqual(client.profile.calls[-1]["q"], "what is my dog called?") + + def test_one_recall_per_user_message(self): + client = FakeClient(FakeProfile(static=[], dynamic=[], delay=0.05)) + plugin = memory(client, container_tag="user_1") + + async def run(): + first, second = ChatCtx(), ChatCtx() + for ctx in (first, second): + ctx.add_message(role="user", content="hi, first time calling", created_at=5.0) + # A cancelled attempt must not cancel the recall a follow-up of the same turn reuses. + preemptive = asyncio.ensure_future(plugin.enrich(first)) + await asyncio.sleep(0.01) + preemptive.cancel() + await plugin.enrich(second) + await plugin.enrich(second) + + asyncio.run(run()) + + self.assertEqual(len(client.profile.calls), 1) + + def test_same_words_in_a_later_turn_recall_again(self): + client = FakeClient(FakeProfile(static=["Name is Ada"])) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + + ctx.add_message(role="user", content="what's my name?", created_at=1.0) + asyncio.run(plugin.enrich(ctx)) + ctx.add_message(role="user", content="what's my name?", created_at=2.0) + asyncio.run(plugin.enrich(ctx)) + + self.assertEqual(len(client.profile.calls), 2) + + def test_failed_recall_never_shows_another_callers_memory(self): + class ScopedProfile: + def __init__(self): + self.calls = [] + + async def __call__(self, **kwargs): + self.calls.append(kwargs) + if kwargs["container_tag"] == "bob": + raise RuntimeError("down") + return SimpleNamespace( + profile=SimpleNamespace(static=["Alice's door code is 4471"], dynamic=[]), + search_results=SimpleNamespace(results=[]), + ) + + plugin = memory(FakeClient(ScopedProfile()), container_tag="alice") + ctx = ChatCtx() + asyncio.run(plugin.preload(ctx)) + plugin.bind(container_tag="bob") + ctx.add_message(role="user", content="what's my door code?", created_at=50.0) + + asyncio.run(plugin.enrich(ctx)) + + self.assertFalse(any("4471" in item.content for item in ctx.items)) + + def test_slow_recall_falls_back_to_the_callers_call_start_profile(self): + profile = FakeProfile(static=["Name is Ada"]) + plugin = memory(FakeClient(profile), container_tag="user_1", params=InputParams(recall_timeout=0.01)) + ctx = ChatCtx() + asyncio.run(plugin.preload(ctx)) + profile.delay = 0.05 + ctx.add_message(role="user", content="what's my name?", created_at=50.0) + + asyncio.run(plugin.enrich(ctx)) + + injected = [item for item in ctx.items if is_injected_memory(item.content)] + self.assertEqual(len(injected), 1) + self.assertIn("Name is Ada", injected[0].content) + + def test_new_user_message_recalls_again(self): + client = FakeClient(FakeProfile(static=["Name is Ada"])) + plugin = memory(client, container_tag="user_1") + ctx = ChatCtx() + + ctx.add_message(role="user", content="hello", created_at=1.0) + asyncio.run(plugin.enrich(ctx)) + ctx.add_message(role="user", content="what's my name?", created_at=2.0) + asyncio.run(plugin.enrich(ctx)) + + self.assertEqual([call["q"] for call in client.profile.calls], ["hello", "what's my name?"]) + self.assertEqual(sum(is_injected_memory(item.content) for item in ctx.items), 1) + + def test_timeout_and_errors_do_not_fail_the_turn(self): + slow = FakeClient(FakeProfile(static=["Name is Ada"], delay=0.05)) + plugin = memory(slow, container_tag="user_1", params=InputParams(recall_timeout=0.01)) + ctx = ChatCtx() + asyncio.run(plugin.on_user_turn_completed(ctx, SimpleNamespace(text_content="hi", created_at=1))) + self.assertEqual(ctx.items, []) + + class Boom: + async def __call__(self, **kwargs): + raise RuntimeError("down") + + broken = FakeClient() + broken.profile = Boom() + plugin = memory(broken, container_tag="user_1") + asyncio.run(plugin.on_user_turn_completed(ctx, SimpleNamespace(text_content="hi", created_at=1))) + self.assertEqual(ctx.items, []) + + def test_participant_attribute_beats_identity_and_sanitizes(self): + plugin = memory(FakeClient()) + plugin.bind( + participant=SimpleNamespace( + identity="sip:+15551212", + attributes={"supermemory_container_tag": "user_42"}, + ) + ) + self.assertEqual(plugin.container_tag, "user_42") + + plugin.bind(participant=SimpleNamespace(identity="user@example.com", attributes={})) + self.assertNotEqual(plugin.container_tag, "user@example.com") + self.assertEqual(plugin.container_tag, to_identifier("user@example.com")) + self.assertLessEqual(len(plugin.container_tag), 100) + + def test_explicit_tag_beats_participant(self): + plugin = memory(FakeClient()) + plugin.bind( + container_tag="user_9", + participant=SimpleNamespace(identity="other", attributes={}), + ) + self.assertEqual(plugin.container_tag, "user_9") + + def test_capture_groups_new_turns_and_skips_injection(self): + client = FakeClient() + plugin = memory(client, container_tag="user_1", session_id="room 1") + session = Session() + plugin.attach(session) + + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="u1", role="user", text_content="I like tea")), + ) + session.emit( + "conversation_item_added", + SimpleNamespace( + item=SimpleNamespace(id="a0", role="assistant", text_content=wrap_memory("secret")) + ), + ) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="a1", role="assistant", text_content="Noted.")), + ) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="a1", role="assistant", text_content="Noted.")), + ) + asyncio.run(plugin.aclose()) + + self.assertEqual(len(client.added), 1) + stored = client.added[0] + self.assertEqual(stored["content"], "User: I like tea\nAssistant: Noted.") + self.assertEqual(stored["container_tag"], "user_1") + self.assertEqual(stored["custom_id"], to_identifier("room 1")) + self.assertNotIn("secret", stored["content"]) + self.assertEqual(stored["metadata"]["platform"], "livekit") + self.assertEqual(stored["dreaming"], "instant") + + def test_close_flushes_a_trailing_user_turn(self): + client = FakeClient() + plugin = memory(client, container_tag="user_1", session_id="room-2") + session = Session() + + async def scenario(): + plugin.attach(session) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="u1", role="user", text_content="still here")), + ) + session.emit("close", SimpleNamespace()) + await asyncio.sleep(0) + + asyncio.run(scenario()) + self.assertEqual(client.added[0]["content"], "User: still here") + + def test_capture_never_does_not_store(self): + client = FakeClient() + plugin = memory( + client, + container_tag="user_1", + params=InputParams(capture="never"), + ) + session = Session() + plugin.attach(session) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="u1", role="user", text_content="hi")), + ) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="a1", role="assistant", text_content="hello")), + ) + asyncio.run(plugin.aclose()) + self.assertEqual(client.added, []) + + def test_store_failure_is_retried_on_close(self): + client = FakeClient() + calls = {"n": 0} + + async def flaky(**kwargs): + calls["n"] += 1 + if calls["n"] == 1: + raise RuntimeError("blip") + client.added.append(kwargs) + + client.add = flaky + plugin = memory(client, container_tag="user_1", session_id="room-3") + session = Session() + plugin.attach(session) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="u1", role="user", text_content="hi")), + ) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="a1", role="assistant", text_content="hello")), + ) + asyncio.run(asyncio.sleep(0)) + asyncio.run(plugin.aclose()) + self.assertEqual(calls["n"], 2) + self.assertIn("User: hi", client.added[0]["content"]) + + def test_tools_search_remember_forget(self): + client = FakeClient() + plugin = memory(client, container_tag="user_1") + + found = asyncio.run(plugin.search("tea")) + saved = asyncio.run(plugin.remember("Likes tea")) + forgotten = asyncio.run(plugin.forget(memory_id="mem_1")) + missing = asyncio.run(plugin.forget()) + + self.assertIn("Likes short answers (id: mem_1)", found) + self.assertIn("raw transcript", found) + self.assertNotIn("chunk_1", found) + self.assertEqual(saved, "Saved.") + self.assertEqual(client.added[0]["metadata"]["kind"], "explicit") + self.assertEqual(client.added[0]["dreaming"], "instant") + self.assertNotIn("custom_id", client.added[0]) + self.assertEqual(forgotten, "Forgotten.") + self.assertEqual(client.memories.calls[0]["id"], "mem_1") + self.assertEqual(client.memories.calls[0]["container_tag"], "user_1") + self.assertIn("memory id", missing) + + def test_remember_falls_back_when_instant_is_not_available(self): + class NoBalance(Exception): + status_code = 402 + + client = FakeClient() + original = client.add + + async def add(**kwargs): + if kwargs.get("dreaming") == "instant": + raise NoBalance("insufficient_balance") + return await original(**kwargs) + + client.add = add + plugin = memory(client, container_tag="user_1") + + self.assertEqual(asyncio.run(plugin.remember("Likes tea")), "Saved.") + self.assertEqual(len(client.added), 1) + self.assertNotIn("dreaming", client.added[0]) + + def test_capture_falls_back_once_when_instant_is_not_available(self): + class NoBalance(Exception): + status_code = 402 + + client = FakeClient() + original = client.add + attempts = [] + + async def add(**kwargs): + attempts.append(kwargs.get("dreaming")) + if kwargs.get("dreaming") == "instant": + raise NoBalance("insufficient_balance") + return await original(**kwargs) + + client.add = add + plugin = memory(client, container_tag="user_1", session_id="room-5") + session = Session() + plugin.attach(session) + + async def run(): + for index, role in enumerate(["user", "assistant", "user", "assistant"]): + item = SimpleNamespace(id=f"m{index}", role=role, text_content=f"turn {index}") + session.emit("conversation_item_added", SimpleNamespace(item=item)) + await asyncio.sleep(0) + if plugin._flush_task: + await plugin._flush_task + await plugin.aclose() + + asyncio.run(run()) + + self.assertEqual(attempts, ["instant", None, None]) + self.assertEqual(len(client.added), 2) + + def test_rebind_keeps_captured_turns_in_the_callers_scope(self): + client = FakeClient() + plugin = memory(client, session_id="room-1") + session = Session() + plugin.attach(session) + + def say(item_id, role, text): + item = SimpleNamespace(id=item_id, role=role, text_content=text) + session.emit("conversation_item_added", SimpleNamespace(item=item)) + + say("u0", "user", "hello before we know who you are") + plugin.bind(container_tag="alice") + say("u1", "user", "Alice secret: door code 4471") + plugin.bind(container_tag="bob") + say("u2", "user", "Bob here") + asyncio.run(plugin.aclose()) + + stored = {call["container_tag"]: call["content"] for call in client.added} + self.assertEqual(set(stored), {"alice", "bob"}) + self.assertIn("4471", stored["alice"]) + self.assertIn("hello before we know who you are", stored["alice"]) + self.assertNotIn("4471", stored["bob"]) + + def test_hung_store_times_out_and_keeps_the_turns(self): + client = FakeClient() + + async def hang(**kwargs): + await asyncio.sleep(60) + + client.add = hang + plugin = memory(client, container_tag="user_1", session_id="room-3") + session = Session() + plugin.attach(session) + session.emit( + "conversation_item_added", + SimpleNamespace(item=SimpleNamespace(id="u1", role="user", text_content="keep me")), + ) + + original = memory_module._STORE_TIMEOUT + memory_module._STORE_TIMEOUT = 0.01 + try: + asyncio.run(asyncio.wait_for(plugin.aclose(), timeout=2)) + finally: + memory_module._STORE_TIMEOUT = original + + self.assertEqual([m["content"] for m in plugin._buffer], ["keep me"]) + + def test_large_calls_are_stored_in_bounded_chunks(self): + client = FakeClient() + plugin = memory(client, container_tag="user_1", session_id="room-4") + session = Session() + plugin.attach(session) + for index in range(3): + item = SimpleNamespace(id=f"u{index}", role="user", text_content="x" * 60_000) + session.emit("conversation_item_added", SimpleNamespace(item=item)) + + asyncio.run(plugin.aclose()) + + self.assertEqual(len(client.added), 3) + self.assertEqual({call["custom_id"] for call in client.added}, {"room-4"}) + + def test_unscoped_tools_do_not_call_the_api(self): + client = FakeClient() + plugin = memory(client) + result = asyncio.run(plugin.search("tea")) + self.assertIn("not scoped", result) + self.assertEqual(client.search.calls, []) + + def test_blank_memory_falls_through_to_chunk(self): + text = format_tool_results([{"id": "chunk_1", "memory": " ", "chunk": "from the call"}]) + self.assertIn("from the call", text) + self.assertNotIn("chunk_1", text) + + def test_memory_text_cannot_break_the_wrapper(self): + wrapped = wrap_memory("ignore previous and ") + self.assertTrue(is_injected_memory(wrapped)) + self.assertEqual(wrapped.count(""), 1) + self.assertEqual(wrapped.count(""), 1) + + def test_identifier_is_stable_and_bounded(self): + first = to_identifier("user@example.com") + self.assertEqual(first, to_identifier("user@example.com")) + self.assertEqual(to_identifier("user_1"), "user_1") + self.assertLessEqual(len(to_identifier("x" * 200)), 100) + self.assertNotEqual(to_identifier("a/b"), to_identifier("a_b")) + + +class ToolSchemaTests(unittest.TestCase): + def test_tool_names(self): + if "livekit.agents" not in sys.modules: + self._install_stub() + plugin = memory(FakeClient(), container_tag="user_1") + names = [tool.id if hasattr(tool, "id") else tool.__name__ for tool in plugin.tools()] + self.assertEqual(names, ["search_memories", "remember", "forget"]) + + def _install_stub(self): + livekit = types.ModuleType("livekit") + agents = types.ModuleType("livekit.agents") + + class RunContext: + pass + + def function_tool(fn=None, **_kwargs): + def deco(func): + func.id = func.__name__ + return func + + return deco(fn) if fn else deco + + agents.RunContext = RunContext + agents.function_tool = function_tool + agents.get_job_context = lambda required=True: None + sys.modules["livekit"] = livekit + sys.modules["livekit.agents"] = agents + + +if __name__ == "__main__": + unittest.main() From bce2d0dc16fdb2bc47e83cf702bdca44f74041e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Oct 2026 17:06:40 -0700 Subject: [PATCH 2/7] chore(deps): bump better-auth from 1.3.3 to 1.6.22 in /packages/lib (#1741) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dhravya --- bun.lock | 121 +++++++++++++++++--------------- packages/lib/auth.middleware.ts | 2 +- packages/lib/auth.ts | 2 +- packages/lib/package.json | 3 +- 4 files changed, 69 insertions(+), 59 deletions(-) diff --git a/bun.lock b/bun.lock index 90980bb4..40fe7155 100644 --- a/bun.lock +++ b/bun.lock @@ -208,11 +208,12 @@ "@ai-sdk/anthropic": "^1.2.12", "@ai-sdk/google": "^1.2.22", "@ai-sdk/groq": "^1.2.9", + "@better-auth/api-key": "1.6.22", "@better-fetch/fetch": "^1.1.18", "@tanstack/react-query": "^5.90.14", "@tanstack/react-query-devtools": "^5.84.2", "ai-gateway-provider": "^0.0.11", - "better-auth": "1.3.3", + "better-auth": "1.6.22", "clsx": "^2.1.1", "posthog-js": "^1.336.0", "sonner": "^2.0.5", @@ -601,12 +602,20 @@ "@base-ui/utils": ["@base-ui/utils@0.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@floating-ui/utils": "^0.2.12", "reselect": "^5.2.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-bO9fz25kKtPf+aZVyfQrC0PDmJdmVni31W2hCS5/Owb+inwdIL3XU26pCPRPlt4LSxZrBgLwubXQXQlKaFEZzw=="], + "@better-auth/api-key": ["@better-auth/api-key@1.6.22", "", { "dependencies": { "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "better-auth": "^1.6.22", "better-call": "1.3.7" } }, "sha512-HDiiLYF0ov0zqhKv4CMTyLwpjTZ3UWl2dug451uTw40VM9zGxWSNxwILDcMDZ6hS5evaTHmmk7R5gciskEk2nQ=="], + "@better-auth/core": ["@better-auth/core@1.5.3", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.3.1", "@better-fetch/fetch": "1.1.21", "@cloudflare/workers-types": ">=4", "better-call": "1.3.2", "jose": "^6.1.0", "kysely": "^0.28.5", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types"] }, "sha512-fORsQjNZ6BQ7o96xMe7elz3Y4Y8DsqXmQrdyzt289G9rmzX4auwBCPTtE2cXTRTYGiVvH9bv0b97t1Uo/OWynQ=="], + "@better-auth/drizzle-adapter": ["@better-auth/drizzle-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "drizzle-orm": "^0.45.2" }, "optionalPeers": ["drizzle-orm"] }, "sha512-uNa9qH53CfxBmuKP8kbLWxY90oIRwUPn5BcHhO+szK05e2yh6EYwSNNivDSqV3YG5HPfjtPHulklInjq1wtm3w=="], + "@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.5.3", "", { "peerDependencies": { "@better-auth/core": "1.5.3", "@better-auth/utils": "^0.3.0", "kysely": "^0.27.0 || ^0.28.0" } }, "sha512-eAm1KPrlPXkH/qXUXnGBcHPDgCX153b6BSlc2QJ2IeqmiWym9D/6XORqBIZOl71JiP0Cifzocr2GLpnz0gt31Q=="], "@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.5.3", "", { "peerDependencies": { "@better-auth/core": "1.5.3", "@better-auth/utils": "^0.3.0" } }, "sha512-QdeTI3bvUmaPkHsjcSMfroXyuGsgnxobv7wZVl57e+ox6yQVR1j4VKbqmCILP6PL6Rr2gpcBH/liHr8v5gqY5Q=="], + "@better-auth/mongo-adapter": ["@better-auth/mongo-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "mongodb": "^6.0.0 || ^7.0.0" }, "optionalPeers": ["mongodb"] }, "sha512-OYnfySHlVkIx7y6XNBsCHjKhl6IYGprRkFwifc/TAuPBVjoRKhLKRAXuzMdWTQYFt4FYb6holbhjNUrXxPIWcw=="], + + "@better-auth/prisma-adapter": ["@better-auth/prisma-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@prisma/client", "prisma"] }, "sha512-I6lWQwLva732V600u5dLM2kRcQ94pRZOVVfZ87+Ow9RBxMUnV+I+YQ5h2yggdN2tmsmITacZTy1DSZbDxGu0LQ=="], + "@better-auth/telemetry": ["@better-auth/telemetry@1.5.3", "", { "dependencies": { "@better-auth/utils": "0.3.1", "@better-fetch/fetch": "1.1.21" }, "peerDependencies": { "@better-auth/core": "1.5.3" } }, "sha512-ZX/r8AsWdB6BwH+Rb7H/SyJnGtPN6EDWrNxBQEDsqRrBJVcDLwAIz165P57RXci0WwtY872T0guKq+XVyy5rkA=="], "@better-auth/utils": ["@better-auth/utils@0.3.1", "", {}, "sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg=="], @@ -755,8 +764,6 @@ "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], - "@hexagon/base64": ["@hexagon/base64@1.1.28", "", {}, "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw=="], - "@hono/node-server": ["@hono/node-server@1.19.11", "", { "peerDependencies": { "hono": "^4" } }, "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g=="], "@hono/zod-validator": ["@hono/zod-validator@0.7.6", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Io1B6d011Gj1KknV4rXYz4le5+5EubcWEU/speUjuw9XMMIaP3n78yXLhjd2A3PXaXaUwEAluOiAyLqhBEJgsw=="], @@ -877,8 +884,6 @@ "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], - "@levischuck/tiny-cbor": ["@levischuck/tiny-cbor@0.2.11", "", {}, "sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow=="], - "@lukeed/csprng": ["@lukeed/csprng@1.1.0", "", {}, "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA=="], "@lukeed/uuid": ["@lukeed/uuid@2.0.1", "", { "dependencies": { "@lukeed/csprng": "^1.1.0" } }, "sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w=="], @@ -1039,30 +1044,6 @@ "@oxc-project/types": ["@oxc-project/types@0.115.0", "", {}, "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw=="], - "@peculiar/asn1-android": ["@peculiar/asn1-android@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ=="], - - "@peculiar/asn1-cms": ["@peculiar/asn1-cms@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "@peculiar/asn1-x509-attr": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw=="], - - "@peculiar/asn1-csr": ["@peculiar/asn1-csr@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w=="], - - "@peculiar/asn1-ecc": ["@peculiar/asn1-ecc@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g=="], - - "@peculiar/asn1-pfx": ["@peculiar/asn1-pfx@2.6.1", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.1", "@peculiar/asn1-pkcs8": "^2.6.1", "@peculiar/asn1-rsa": "^2.6.1", "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw=="], - - "@peculiar/asn1-pkcs8": ["@peculiar/asn1-pkcs8@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw=="], - - "@peculiar/asn1-pkcs9": ["@peculiar/asn1-pkcs9@2.6.1", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.1", "@peculiar/asn1-pfx": "^2.6.1", "@peculiar/asn1-pkcs8": "^2.6.1", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "@peculiar/asn1-x509-attr": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw=="], - - "@peculiar/asn1-rsa": ["@peculiar/asn1-rsa@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA=="], - - "@peculiar/asn1-schema": ["@peculiar/asn1-schema@2.6.0", "", { "dependencies": { "asn1js": "^3.0.6", "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg=="], - - "@peculiar/asn1-x509": ["@peculiar/asn1-x509@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA=="], - - "@peculiar/asn1-x509-attr": ["@peculiar/asn1-x509-attr@2.6.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ=="], - - "@peculiar/x509": ["@peculiar/x509@1.14.3", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.0", "@peculiar/asn1-csr": "^2.6.0", "@peculiar/asn1-ecc": "^2.6.0", "@peculiar/asn1-pkcs9": "^2.6.0", "@peculiar/asn1-rsa": "^2.6.0", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "pvtsutils": "^1.3.6", "reflect-metadata": "^0.2.2", "tslib": "^2.8.1", "tsyringe": "^4.10.0" } }, "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA=="], - "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], @@ -1369,10 +1350,6 @@ "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - "@simplewebauthn/browser": ["@simplewebauthn/browser@13.2.2", "", {}, "sha512-FNW1oLQpTJyqG5kkDg5ZsotvWgmBaC6jCHR7Ej0qUNep36Wl9tj2eZu7J5rP+uhXgHaLk+QQ3lqcw2vS5MX1IA=="], - - "@simplewebauthn/server": ["@simplewebauthn/server@13.2.3", "", { "dependencies": { "@hexagon/base64": "^1.1.27", "@levischuck/tiny-cbor": "^0.2.2", "@peculiar/asn1-android": "^2.6.0", "@peculiar/asn1-ecc": "^2.6.1", "@peculiar/asn1-rsa": "^2.6.1", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "@peculiar/x509": "^1.14.3" } }, "sha512-ZhcVBOw63birYx9jVfbhK6rTehckVes8PeWV324zpmdxr0BUfylospwMzcrxrdMcOi48MHWj2LCA+S528LnGvg=="], - "@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], @@ -1825,8 +1802,6 @@ "asn1": ["asn1@0.2.6", "", { "dependencies": { "safer-buffer": "~2.1.0" } }, "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ=="], - "asn1js": ["asn1js@3.0.7", "", { "dependencies": { "pvtsutils": "^1.3.6", "pvutils": "^1.1.3", "tslib": "^2.8.1" } }, "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ=="], - "assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="], "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], @@ -3247,10 +3222,6 @@ "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], - "pvtsutils": ["pvtsutils@1.3.6", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg=="], - - "pvutils": ["pvutils@1.1.5", "", {}, "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA=="], - "qs": ["qs@6.14.2", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q=="], "quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="], @@ -3319,8 +3290,6 @@ "redent": ["redent@3.0.0", "", { "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" } }, "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg=="], - "reflect-metadata": ["reflect-metadata@0.2.2", "", {}, "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="], - "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], @@ -3657,8 +3626,6 @@ "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], - "tsyringe": ["tsyringe@4.10.0", "", { "dependencies": { "tslib": "^1.9.3" } }, "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw=="], - "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="], "turbo": ["turbo@2.8.13", "", { "optionalDependencies": { "turbo-darwin-64": "2.8.13", "turbo-darwin-arm64": "2.8.13", "turbo-linux-64": "2.8.13", "turbo-linux-arm64": "2.8.13", "turbo-windows-64": "2.8.13", "turbo-windows-arm64": "2.8.13" }, "bin": { "turbo": "bin/turbo" } }, "sha512-nyM99hwFB9/DHaFyKEqatdayGjsMNYsQ/XBNO6MITc7roncZetKb97MpHxWf3uiU+LB9c9HUlU3Jp2Ixei2k1A=="], @@ -3705,8 +3672,6 @@ "unconfig-core": ["unconfig-core@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w=="], - "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], - "undici": ["undici@7.18.2", "", {}, "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], @@ -4051,8 +4016,28 @@ "@base-ui/utils/@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], + "@better-auth/api-key/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + + "@better-auth/api-key/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + + "@better-auth/api-key/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], + + "@better-auth/api-key/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@better-auth/core/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "@better-auth/drizzle-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + + "@better-auth/drizzle-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + + "@better-auth/mongo-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + + "@better-auth/mongo-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + + "@better-auth/prisma-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + + "@better-auth/prisma-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + "@cloudflare/ai-chat/agents": ["agents@0.4.1", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/sdk": "1.26.0", "cron-schedule": "^6.0.0", "escape-html": "^1.0.3", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "mimetext": "^3.0.28", "nanoid": "^5.1.6", "partyserver": "^0.1.4", "partysocket": "1.1.13", "yargs": "^18.0.0" }, "peerDependencies": { "@ai-sdk/openai": "^3.0.0", "@ai-sdk/react": "^3.0.0", "@cloudflare/ai-chat": "^0.0.8", "@cloudflare/codemode": "^0.0.7", "@x402/core": "^2.0.0", "@x402/evm": "^2.0.0", "ai": "^6.0.0", "react": "^19.0.0", "viem": ">=2.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@ai-sdk/openai", "@ai-sdk/react", "@x402/core", "@x402/evm", "viem"], "bin": { "agents": "dist/cli/index.js" } }, "sha512-1ARZ5AXpPEn1+Wv/Dt++nH3iLStDxlci7Bm47sfE6qLlJpY9oG5nzyH2TRKwFFt9bMAgYz177i6p2NiEd/coVQ=="], "@cloudflare/codemode/agents": ["agents@0.4.1", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/sdk": "1.26.0", "cron-schedule": "^6.0.0", "escape-html": "^1.0.3", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "mimetext": "^3.0.28", "nanoid": "^5.1.6", "partyserver": "^0.1.4", "partysocket": "1.1.13", "yargs": "^18.0.0" }, "peerDependencies": { "@ai-sdk/openai": "^3.0.0", "@ai-sdk/react": "^3.0.0", "@cloudflare/ai-chat": "^0.0.8", "@cloudflare/codemode": "^0.0.7", "@x402/core": "^2.0.0", "@x402/evm": "^2.0.0", "ai": "^6.0.0", "react": "^19.0.0", "viem": ">=2.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@ai-sdk/openai", "@ai-sdk/react", "@x402/core", "@x402/evm", "viem"], "bin": { "agents": "dist/cli/index.js" } }, "sha512-1ARZ5AXpPEn1+Wv/Dt++nH3iLStDxlci7Bm47sfE6qLlJpY9oG5nzyH2TRKwFFt9bMAgYz177i6p2NiEd/coVQ=="], @@ -4291,7 +4276,7 @@ "@repo/docs/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "@repo/lib/better-auth": ["better-auth@1.3.3", "", { "dependencies": { "@better-auth/utils": "0.2.5", "@better-fetch/fetch": "^1.1.18", "@noble/ciphers": "^0.6.0", "@noble/hashes": "^1.8.0", "@simplewebauthn/browser": "^13.0.0", "@simplewebauthn/server": "^13.0.0", "better-call": "^1.0.12", "defu": "^6.1.4", "jose": "^5.9.6", "kysely": "^0.28.1", "nanostores": "^0.11.3", "zod": "^4.0.5" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-q1aD2nNpGfEI2ckYu+pBjN+23CIRctOpmREkWyJDJdoYW1q9EPs1Xdb+KhFztg2rMmsoUN8I9Xm5mUWMxiWuLw=="], + "@repo/lib/better-auth": ["better-auth@1.6.22", "", { "dependencies": { "@better-auth/core": "1.6.22", "@better-auth/drizzle-adapter": "1.6.22", "@better-auth/kysely-adapter": "1.6.22", "@better-auth/memory-adapter": "1.6.22", "@better-auth/mongo-adapter": "1.6.22", "@better-auth/prisma-adapter": "1.6.22", "@better-auth/telemetry": "1.6.22", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.3.7", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.17 || ^0.29.0", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": "^0.45.2", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-B5s6+lPsDWp8rGLRnvNyr5h9tftG9zLRjNrlkEJdYRhcuhPhJiw9b8o6ibgxEFpSAdUqoDaP5/FLqfu8QsXIVg=="], "@repo/web/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], @@ -4685,8 +4670,6 @@ "tsx/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], - "tsyringe/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - "verror/core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="], "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], @@ -4823,6 +4806,28 @@ "@base-ui/react/@floating-ui/react-dom/@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], + "@better-auth/api-key/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@better-auth/api-key/better-call/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@better-auth/drizzle-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@better-auth/drizzle-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], + + "@better-auth/drizzle-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@better-auth/mongo-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@better-auth/mongo-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], + + "@better-auth/mongo-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@better-auth/prisma-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@better-auth/prisma-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], + + "@better-auth/prisma-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@cloudflare/ai-chat/agents/@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.26.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg=="], "@cloudflare/ai-chat/agents/partyserver": ["partyserver@0.1.5", "", { "dependencies": { "nanoid": "^5.1.6" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20240729.0" } }, "sha512-kaE3GYaYWFc70EJQDQEhyYbO2Wczz/NgsFXerfjRo0t2s7ZxL1XggWT+HkMrdEyqbZOv3b66CV93WG0Lcg/ThQ=="], @@ -5111,17 +5116,23 @@ "@posthog/mcp/@posthog/core/@posthog/types": ["@posthog/types@1.412.4", "", {}, "sha512-Q7lV9O9TbLngjOYw1ucm3bS3tn48xb1B4ZQdDy8gv7yfKe99hCTeWYG4xZ36nJM80VxpTF9TriiJt5hngDOkBg=="], - "@repo/lib/better-auth/@better-auth/utils": ["@better-auth/utils@0.2.5", "", { "dependencies": { "typescript": "^5.8.2", "uncrypto": "^0.1.3" } }, "sha512-uI2+/8h/zVsH8RrYdG8eUErbuGBk16rZKQfz8CjxQOyCE6v7BqFYEbFwvOkvl1KbUdxhqOnXp78+uE5h8qVEgQ=="], + "@repo/lib/better-auth/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], - "@repo/lib/better-auth/@noble/ciphers": ["@noble/ciphers@0.6.0", "", {}, "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ=="], + "@repo/lib/better-auth/@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "kysely": "^0.28.17 || ^0.29.0" }, "optionalPeers": ["kysely"] }, "sha512-4k/07lPRizlQi+B+uOE5CwTfH3w+Lq8ZDX1nDN1+e+glRVKAIfHoLvC9cfAVcCbio3DDrl0RTbwjLwjEhG0LxA=="], - "@repo/lib/better-auth/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@repo/lib/better-auth/@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2" } }, "sha512-rbepe/gHhWs0aF4fAu6+l+wNPJxT9XN4U+Hqa1Y/5HhjtT9y5evo3INrSWlkIOymsMaQ0cBPrSL5pm9Z195hcA=="], - "@repo/lib/better-auth/jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], + "@repo/lib/better-auth/@better-auth/telemetry": ["@better-auth/telemetry@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1" } }, "sha512-glq/oEk9qP+zGh9k/WUH5+pwvBCMolNNhaAVBCtYQrkADFee2gP3VoPs1YeO9coNuOmBhc+AYSIHs+fL9DoJnw=="], - "@repo/lib/better-auth/nanostores": ["nanostores@0.11.4", "", {}, "sha512-k1oiVNN4hDK8NcNERSZLQiMfRzEGtfnvZvdBvey3SQbgn8Dcrk0h1I6vpxApjb10PFUflZrgJ2WEZyJQ+5v7YQ=="], + "@repo/lib/better-auth/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], - "@repo/lib/better-auth/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "@repo/lib/better-auth/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + + "@repo/lib/better-auth/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], + + "@repo/lib/better-auth/kysely": ["kysely@0.29.6", "", {}, "sha512-hHaB8C/rfzDDtr/t8YZwxAuPJTT0zHyaPoVzcXwDYhYNAgH/4sIfVhi/XLLIY+bL/FqaIJnjATDbi8ObSELmxg=="], + + "@repo/lib/better-auth/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@sap-cloud-sdk/util/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -5713,8 +5724,6 @@ "@opennextjs/cloudflare/glob/minimatch/brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="], - "@repo/lib/better-auth/@better-auth/utils/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "@so-ric/colorspace/color/color-convert/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], "@so-ric/colorspace/color/color-string/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], diff --git a/packages/lib/auth.middleware.ts b/packages/lib/auth.middleware.ts index 3b1f1f40..c456b8cd 100644 --- a/packages/lib/auth.middleware.ts +++ b/packages/lib/auth.middleware.ts @@ -1,8 +1,8 @@ +import { apiKeyClient } from "@better-auth/api-key/client" import { createAuthClient } from "better-auth/client" import { adminClient, anonymousClient, - apiKeyClient, emailOTPClient, magicLinkClient, organizationClient, diff --git a/packages/lib/auth.ts b/packages/lib/auth.ts index af0e989b..ff954f75 100644 --- a/packages/lib/auth.ts +++ b/packages/lib/auth.ts @@ -1,7 +1,7 @@ +import { apiKeyClient } from "@better-auth/api-key/client" import { adminClient, anonymousClient, - apiKeyClient, emailOTPClient, genericOAuthClient, magicLinkClient, diff --git a/packages/lib/package.json b/packages/lib/package.json index c83e27db..b0938c39 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -13,11 +13,12 @@ "@ai-sdk/anthropic": "^1.2.12", "@ai-sdk/google": "^1.2.22", "@ai-sdk/groq": "^1.2.9", + "@better-auth/api-key": "1.6.22", "@better-fetch/fetch": "^1.1.18", "@tanstack/react-query": "^5.90.14", "@tanstack/react-query-devtools": "^5.84.2", "ai-gateway-provider": "^0.0.11", - "better-auth": "1.3.3", + "better-auth": "1.6.22", "clsx": "^2.1.1", "posthog-js": "^1.336.0", "sonner": "^2.0.5", From b85a1bf9bf1ab153ed8ba426e7dab164fb290dbd Mon Sep 17 00:00:00 2001 From: Anirudh Parmar Date: Sat, 3 Oct 2026 00:38:14 +0530 Subject: [PATCH 3/7] fix(CI): add missing read permission and force color (#1750) --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ccdb7a1..1a81e979 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,12 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +permissions: + contents: read + +env: + FORCE_COLOR: 1 + jobs: quality-checks: name: Quality Checks From 7187b538cce8246bc41cf5bf8c050b8a35f46c54 Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Fri, 2 Oct 2026 16:59:55 -0700 Subject: [PATCH 4/7] docs: add team invitation guide with console screenshots (#1754) --- apps/docs/docs.json | 1 + apps/docs/images/team/invite-member.png | Bin 0 -> 28070 bytes apps/docs/images/team/team-settings.png | Bin 0 -> 58085 bytes apps/docs/invite-team-members.mdx | 66 ++++++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 apps/docs/images/team/invite-member.png create mode 100644 apps/docs/images/team/team-settings.png create mode 100644 apps/docs/invite-team-members.mdx diff --git a/apps/docs/docs.json b/apps/docs/docs.json index 367132cc..f481ab7a 100644 --- a/apps/docs/docs.json +++ b/apps/docs/docs.json @@ -140,6 +140,7 @@ "pages": [ "using-supermemory", "authentication", + "invite-team-members", "concepts/customization", { "group": "Ingestion", diff --git a/apps/docs/images/team/invite-member.png b/apps/docs/images/team/invite-member.png new file mode 100644 index 0000000000000000000000000000000000000000..450e4c4406fcd541d6edb8ef6a582288eb973d82 GIT binary patch literal 28070 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 literal 0 HcmV?d00001 diff --git a/apps/docs/images/team/team-settings.png b/apps/docs/images/team/team-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..3c60c3897d144ff9d4dbb6a41588a513714c0580 GIT binary patch literal 58085 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

E?C85uf-#6{8uvlmkhlElxzIGPJxK6#P| z=vTK{2U@puHTpT^=>dt-;kVOqLr;Mt7xILSF>$Dm*ljopPTK!g-I+!um4{*6<(QsI zZE;JJ#>yw$-=?LB~3-8LTf5YC3ka6!!xB$8DcKcBIcf0qL!MLp;>C8<_2m5 zra3051*W-_G0b~$W@;(DJ6)gJS6_Mmf- z+t@21d+URUG*@oAfE;)>|0Fl3h~-e+&l=kug-Hg+LXzx^%`qQOhkdH!Gu{PT*NqBp zmZ(y!wU2W+-uk=rs!rZlF+-m^<{Pn>b?)_RpOM!aK*>Xyjar@5G&~tr`SAlVyYTDYivwPPKJu~}i|SyqRAy%7;|R?CS*@wt$h*oAno@0Jo!5iNt9qtVGoVm@)*w^77N|7u>ej3>=gMYwfS4tH{Ks7MSCr4~i`-lm zRgxecfzCo*vOX3VSPGmNDM}@dJbtAqJv|)=5w3xUHZbI5mT78g!d(Qxq8)(6Vj%&L znJ}L@_{S9Y*IU~!9VzC}-7v{3svzq0T=&iN^J+~6&CRt+rLXW2a zj3K1c8z`tw1RYfxIF~PTHbX@wPW?7JrGLN2Nec2V!tI#woR+s$y!`iBKW*ra}9=?}Zv2 z9pucg{CbMP8+m@o>h-l|76y(=5SZYfTcgP1y$A)>@F_3F2OJPG!aY#(_!$}6*?D6a zIPF-cTU|{=V{eB)*-{JZxunbX>y}&Rcow^()jL;0lP$7y!_dU-*kZrB>^p=_=Mhem zejaBBj255@2RPsiuvx5?vX})e?B~kL3zd{rN=i#tSR8E!>J-SB5Gg7?ymo!N2%Osh z^#f1+I-!wSM~&l5teqP@!I4lM<$=ZOp9VXH4F8%>_(+gPr64s0gr{Tb`ZEgHi%0UnG)Y*XO?=Rj1!MJ6!<(G`r!G(S2jE z>x!cv0i!5-?I+IlDV}8RrC~k_N#WG?Mc$*3+F=&ytG4ou5v}=iRCVz+k#KlWIIT$w z*F4#HgU{x~H!}OmCZDuvK(OUIi)iQtO80cO0^qI61`5nDM0g!@!}ngpH#zVOhW#7* z! + + Open the [console](https://console.supermemory.ai) and select your organization from the top-left organization menu. Open **Settings** → **Team**. + + + Acme Team settings with Invite member above Members and a Pending invitations table containing an invite link. + + + + Click **Invite member**. Enter the email address your colleague uses to sign in. + + + Select a role: + + - **Member**: Use this role for workspace access without team or billing administration. + - **Admin**: Use this role for full access, including members, billing, and settings. + + For a **Member**, keep **Full access** to include all containers. On Scale or Enterprise, choose **Restricted** to limit access to selected [container tags](/concepts/container-tags). Add at least one tag and select **Read** or **Write** for each tag. + + + Invite member dialog with jordan@example.com entered, Member and Full access selected, and the Send invite button enabled. + + + + Click **Send invite**. Find your colleague’s email under **Pending invitations**. Click their link in the **Invite link** column to copy it, then share it privately with that colleague. + + The invitation expires after seven days. To cancel it, click the **×** at the end of its row. + + + +## Accept the invitation + +Ask your colleague to complete these steps: + +1. Open the invitation link you shared. +2. Log in or create an account with the email address you invited. +3. Check the organization name and role, then click **ACCEPT**. + +If they see **This invitation is not for you**, ask them to click **LOG IN WITH A DIFFERENT ACCOUNT**. They need to sign in with the invited email address. If the invitation has expired or you canceled it, create a new invitation and share its new link. + +Return to **Settings** → **Team** and confirm your colleague appears under **Members**. Their invitation no longer appears under **Pending invitations** after they accept. From 1245d73b6bb91dd637b782b21830e419eaaac79c Mon Sep 17 00:00:00 2001 From: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com> Date: Sat, 3 Oct 2026 00:02:10 +0000 Subject: [PATCH 5/7] fix(mcp): clear out-of-credits error and keep it out of error rate (#1753) - 402 now tells the agent the org is out of credits and links to console.supermemory.ai/billing (the old message said "memory limit" and pointed at the retired app). - PostHog MCP analytics tags these calls `$mcp_error_type: out_of_credits` with `$mcp_is_error: false`, so an empty balance no longer inflates the MCP error rate. --- apps/mcp/src/server/analytics.ts | 10 ++++++++++ apps/mcp/src/server/client/index.ts | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/mcp/src/server/analytics.ts b/apps/mcp/src/server/analytics.ts index c2b30c0b..3c629926 100644 --- a/apps/mcp/src/server/analytics.ts +++ b/apps/mcp/src/server/analytics.ts @@ -1,6 +1,7 @@ import type { McpServer } from "@modelcontextprotocol/server" import { instrument, type MCPAnalyticsOptions } from "@posthog/mcp" import { PostHog } from "posthog-node" +import { OUT_OF_CREDITS_MESSAGE } from "./client" import type { ActorContext, ServerEnv } from "./types" const DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com" @@ -68,6 +69,11 @@ const metadataOnlyMcpEvent: NonNullable = ( return null } + const errorMessage = event.properties.$mcp_error_message + const outOfCredits = + typeof errorMessage === "string" && + errorMessage.includes(OUT_OF_CREDITS_MESSAGE) + return { ...event, properties: { @@ -76,6 +82,10 @@ const metadataOnlyMcpEvent: NonNullable = ( (key) => event.properties[key] !== undefined, ).map((key) => [key, event.properties[key]]), ), + // Billing state, not a server bug, so keep it out of the error rate. + ...(outOfCredits + ? { $mcp_is_error: false, $mcp_error_type: "out_of_credits" } + : {}), $process_person_profile: false, }, } diff --git a/apps/mcp/src/server/client/index.ts b/apps/mcp/src/server/client/index.ts index a2ccc8e7..1b575e15 100644 --- a/apps/mcp/src/server/client/index.ts +++ b/apps/mcp/src/server/client/index.ts @@ -21,6 +21,9 @@ const MAX_CHARS = 200000 export const DEFAULT_PROJECT_ID = "sm_project_default" const FETCH_TIMEOUT_MS = 30_000 const MCP_SOURCE = "supermemory-mcp" +// Analytics matches on this text to tag quota errors, keep them in sync. +export const OUT_OF_CREDITS_MESSAGE = + "Out of credits. Top up or upgrade at https://console.supermemory.ai/billing" export type { ContainerTag, @@ -457,7 +460,7 @@ export class SupermemoryClient { case 401: throw new Error("Authentication failed. Please re-authenticate.") case 402: - throw new Error("Memory limit reached. Upgrade at supermemory.ai") + throw new Error(OUT_OF_CREDITS_MESSAGE) case 403: throw new Error( message || From 62cc57eda67213dba351144246f1bbbdd330a347 Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Fri, 2 Oct 2026 17:05:13 -0700 Subject: [PATCH 6/7] fix(auth): upgrade Better Auth to patched 1.7.6 (#1719) Co-authored-by: Mahesh Sanikommu --- apps/web/next.config.ts | 1 + apps/web/package.json | 6 +- bun.lock | 966 ++++++++++++++--------------- package.json | 30 +- packages/ai-sdk/package.json | 2 +- packages/lib/auth.ts | 2 - packages/lib/package.json | 4 +- packages/memory-graph/package.json | 4 +- packages/tools/package.json | 2 +- 9 files changed, 509 insertions(+), 508 deletions(-) diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts index 2723513e..3118b272 100644 --- a/apps/web/next.config.ts +++ b/apps/web/next.config.ts @@ -4,6 +4,7 @@ import type { NextConfig } from "next" const nextConfig: NextConfig = { poweredByHeader: false, skipTrailingSlashRedirect: true, + agentRules: false, } export default nextConfig diff --git a/apps/web/package.json b/apps/web/package.json index 162eb325..1b5d79d1 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -19,8 +19,8 @@ "cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts" }, "dependencies": { - "@opennextjs/cloudflare": "^1.12.0", - "next": "^16.0.11", + "@opennextjs/cloudflare": "^1.20.8", + "next": "16.3.8", "react": "^19.2.4", "react-dom": "^19.2.4" }, @@ -31,7 +31,7 @@ "@types/react": "^19.2.9", "@types/react-dom": "^19.2.3", "typescript": "^5.8.3", - "wrangler": "^4.26.0" + "wrangler": "^4.125.0" }, "overrides": { "@types/react": "^19.2.9", diff --git a/bun.lock b/bun.lock index 40fe7155..26a338d9 100644 --- a/bun.lock +++ b/bun.lock @@ -19,17 +19,17 @@ "ai": "^5.0.59", "alchemy": "^0.81.4", "atmn": "^0.0.16", - "better-auth": "^1.3.3", + "better-auth": "1.7.6", "boxen": "^8.0.1", "cloudflare": "^4.5.0", "compromise": "^14.14.4", "dedent": "^1.6.0", "destr": "^2.0.5", - "drizzle-orm": "^0.44.3", + "drizzle-orm": "0.45.2", "drizzle-zod": "~0.7.1", "file-type": "^21.0.0", "hono-openapi": "^0.4.8", - "nanoid": "^5.1.5", + "nanoid": "^5.1.16", "neverthrow": "^8.2.0", "pg": "^8.16.3", "pino": "^9.7.0", @@ -149,8 +149,8 @@ "name": "@repo/web", "version": "0.1.0", "dependencies": { - "@opennextjs/cloudflare": "^1.12.0", - "next": "^16.0.11", + "@opennextjs/cloudflare": "^1.20.8", + "next": "16.3.8", "react": "^19.2.4", "react-dom": "^19.2.4", }, @@ -161,7 +161,7 @@ "@types/react": "^19.2.9", "@types/react-dom": "^19.2.3", "typescript": "^5.8.3", - "wrangler": "^4.26.0", + "wrangler": "^4.125.0", }, }, "packages/ai-sdk": { @@ -179,7 +179,7 @@ "@types/bun": "^1.2.21", "tsdown": "^0.14.2", "typescript": "^5.9.2", - "vitest": "^3.2.4", + "vitest": "3.2.6", }, }, "packages/docs-test": { @@ -208,12 +208,12 @@ "@ai-sdk/anthropic": "^1.2.12", "@ai-sdk/google": "^1.2.22", "@ai-sdk/groq": "^1.2.9", - "@better-auth/api-key": "1.6.22", + "@better-auth/api-key": "1.7.6", "@better-fetch/fetch": "^1.1.18", "@tanstack/react-query": "^5.90.14", "@tanstack/react-query-devtools": "^5.84.2", "ai-gateway-provider": "^0.0.11", - "better-auth": "1.6.22", + "better-auth": "1.7.6", "clsx": "^2.1.1", "posthog-js": "^1.336.0", "sonner": "^2.0.5", @@ -236,8 +236,8 @@ "@vitejs/plugin-react": "^5.1.0", "happy-dom": "^20.9.0", "typescript": "^5.9.3", - "vite": "^7.2.1", - "vitest": "^3.2.4", + "vite": "7.3.5", + "vitest": "3.2.6", }, "peerDependencies": { "react": ">=18.0.0", @@ -266,7 +266,7 @@ "dotenv": "^16.6.1", "tsdown": "^0.14.2", "typescript": "^5.9.2", - "vitest": "^3.2.4", + "vitest": "3.2.6", }, "peerDependencies": { "@ai-sdk/provider": "^2.0.0 || ^3.0.0", @@ -322,6 +322,28 @@ "overrides": { "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", + "@xmldom/xmldom": "0.8.15", + "adm-zip": "0.6.1", + "axios": "1.20.0", + "basic-ftp": "6.2.1", + "browserslist": "4.28.7", + "defu": "6.1.5", + "engine.io": "6.6.11", + "fast-uri": "3.1.8", + "fast-xml-builder": "1.3.1", + "fast-xml-parser": "5.7.3", + "form-data": "4.0.6", + "hono": "4.13.12", + "ip-address": "10.7.3", + "jsondiffpatch": "0.7.6", + "lodash": "4.18.1", + "node-forge": "1.4.0", + "postcss": "8.5.23", + "protobufjs": "7.6.6", + "sharp": "0.35.4", + "socket.io-parser": "4.2.7", + "undici": "7.29.1", + "ws": "8.21.3", }, "packages": { "@a2a-js/sdk": ["@a2a-js/sdk@0.2.5", "", { "dependencies": { "@types/cors": "^2.8.17", "@types/express": "^4.17.23", "body-parser": "^2.2.0", "cors": "^2.8.5", "express": "^4.21.2", "uuid": "^11.1.0" } }, "sha512-VTDuRS5V0ATbJ/LkaQlisMnTAeYKXAK6scMguVBstf+KIBQ7HIuKhiXLv+G/hvejkV+THoXzoNifInAkU81P1g=="], @@ -602,25 +624,25 @@ "@base-ui/utils": ["@base-ui/utils@0.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@floating-ui/utils": "^0.2.12", "reselect": "^5.2.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-bO9fz25kKtPf+aZVyfQrC0PDmJdmVni31W2hCS5/Owb+inwdIL3XU26pCPRPlt4LSxZrBgLwubXQXQlKaFEZzw=="], - "@better-auth/api-key": ["@better-auth/api-key@1.6.22", "", { "dependencies": { "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "better-auth": "^1.6.22", "better-call": "1.3.7" } }, "sha512-HDiiLYF0ov0zqhKv4CMTyLwpjTZ3UWl2dug451uTw40VM9zGxWSNxwILDcMDZ6hS5evaTHmmk7R5gciskEk2nQ=="], + "@better-auth/api-key": ["@better-auth/api-key@1.7.6", "", { "dependencies": { "zod": "^4.5.4" }, "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "better-auth": "^1.7.6", "better-call": "1.4.0" } }, "sha512-BDoi3iUZpUioB3bSdzOZ7Nd9850vv5zFu0QxlZma9nwgMcNtUNsO0ky9toeDFY2h5vxNpdaIVBDRKUJ31RSCDg=="], - "@better-auth/core": ["@better-auth/core@1.5.3", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.3.1", "@better-fetch/fetch": "1.1.21", "@cloudflare/workers-types": ">=4", "better-call": "1.3.2", "jose": "^6.1.0", "kysely": "^0.28.5", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types"] }, "sha512-fORsQjNZ6BQ7o96xMe7elz3Y4Y8DsqXmQrdyzt289G9rmzX4auwBCPTtE2cXTRTYGiVvH9bv0b97t1Uo/OWynQ=="], + "@better-auth/core": ["@better-auth/core@1.7.6", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.41.1", "@standard-schema/spec": "^1.1.0", "zod": "^4.5.4" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.2", "@opentelemetry/api": "^1.9.0", "better-call": "1.4.0", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-yBDDO0J4VCHT1qEZtzj6aMexX4etyLesitoxehcWHzPrzYqrFHwe/hgskye+imlGhQVOysuljMg8M8BA6GrtIg=="], - "@better-auth/drizzle-adapter": ["@better-auth/drizzle-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "drizzle-orm": "^0.45.2" }, "optionalPeers": ["drizzle-orm"] }, "sha512-uNa9qH53CfxBmuKP8kbLWxY90oIRwUPn5BcHhO+szK05e2yh6EYwSNNivDSqV3YG5HPfjtPHulklInjq1wtm3w=="], + "@better-auth/drizzle-adapter": ["@better-auth/drizzle-adapter@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "drizzle-orm": "^0.45.2 || >=1.0.0-rc.1 <2.0.0" }, "optionalPeers": ["drizzle-orm"] }, "sha512-ENlhwC7kkTjquuiel3Efggik0hC4vtD7ppJ8FhsiHhRJA8K6RT4hbhzkfm6keNvjdnAeWwCejm7FmMO4GoSGpA=="], - "@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.5.3", "", { "peerDependencies": { "@better-auth/core": "1.5.3", "@better-auth/utils": "^0.3.0", "kysely": "^0.27.0 || ^0.28.0" } }, "sha512-eAm1KPrlPXkH/qXUXnGBcHPDgCX153b6BSlc2QJ2IeqmiWym9D/6XORqBIZOl71JiP0Cifzocr2GLpnz0gt31Q=="], + "@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "kysely": "^0.28.17 || ^0.29.0" }, "optionalPeers": ["kysely"] }, "sha512-BV+DX2/z/6ozNC9DYSge78wjLerq6Bxd/lSPjzzuq9eEutkQDAJTuiaETzgGYqNV5LlEWi8TZFAQTEq/wavOEQ=="], - "@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.5.3", "", { "peerDependencies": { "@better-auth/core": "1.5.3", "@better-auth/utils": "^0.3.0" } }, "sha512-QdeTI3bvUmaPkHsjcSMfroXyuGsgnxobv7wZVl57e+ox6yQVR1j4VKbqmCILP6PL6Rr2gpcBH/liHr8v5gqY5Q=="], + "@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2" } }, "sha512-ng1xv8k2JsEIjnqzJzdoVOQrnoCLRuk4EiQL9yYAThyg6zYzV00LynlhH+O9OMUZ+yGVpGqGZmr5xcTiUSV2uA=="], - "@better-auth/mongo-adapter": ["@better-auth/mongo-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "mongodb": "^6.0.0 || ^7.0.0" }, "optionalPeers": ["mongodb"] }, "sha512-OYnfySHlVkIx7y6XNBsCHjKhl6IYGprRkFwifc/TAuPBVjoRKhLKRAXuzMdWTQYFt4FYb6holbhjNUrXxPIWcw=="], + "@better-auth/mongo-adapter": ["@better-auth/mongo-adapter@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "mongodb": "^6.0.0 || ^7.0.0" }, "optionalPeers": ["mongodb"] }, "sha512-GvBwZli8i4XINMAj9tlW7eV9E8Dr+JWqavXjUs2o81GZt/Vh8wiX+31KK1jQ4iOuejfjpLoXcoFtlIPgf/pVog=="], - "@better-auth/prisma-adapter": ["@better-auth/prisma-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@prisma/client", "prisma"] }, "sha512-I6lWQwLva732V600u5dLM2kRcQ94pRZOVVfZ87+Ow9RBxMUnV+I+YQ5h2yggdN2tmsmITacZTy1DSZbDxGu0LQ=="], + "@better-auth/prisma-adapter": ["@better-auth/prisma-adapter@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@prisma/client", "prisma"] }, "sha512-31rz2OXIx2Q1L4Jhd5F71dafIWqder/Bo6vJ+eCgO5iZ0gvnv7fUmM95DvbVUoPC69XYpcIM/6PJmQ3M6RydWg=="], - "@better-auth/telemetry": ["@better-auth/telemetry@1.5.3", "", { "dependencies": { "@better-auth/utils": "0.3.1", "@better-fetch/fetch": "1.1.21" }, "peerDependencies": { "@better-auth/core": "1.5.3" } }, "sha512-ZX/r8AsWdB6BwH+Rb7H/SyJnGtPN6EDWrNxBQEDsqRrBJVcDLwAIz165P57RXci0WwtY872T0guKq+XVyy5rkA=="], + "@better-auth/telemetry": ["@better-auth/telemetry@1.7.6", "", { "peerDependencies": { "@better-auth/core": "^1.7.6", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.2" } }, "sha512-xgRwPja2wTJtcu+OQZR2IiNpAmviddnW3n5Do5umXRugJFW3v9KlSmYjYm580mVsPnU4upvZkvSRl9v8DgSDtA=="], - "@better-auth/utils": ["@better-auth/utils@0.3.1", "", {}, "sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg=="], + "@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], - "@better-fetch/fetch": ["@better-fetch/fetch@1.1.21", "", {}, "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A=="], + "@better-fetch/fetch": ["@better-fetch/fetch@1.3.2", "", {}, "sha512-Gs7n99b5tqUC6cQAPbV0uED3IraHB6xQbHLQ/C3l7ZFafHScOx9pQ+DYmP5blbLFShVWLqxNUlI9wi4xU/X+ow=="], "@biomejs/biome": ["@biomejs/biome@2.4.6", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.4.6", "@biomejs/cli-darwin-x64": "2.4.6", "@biomejs/cli-linux-arm64": "2.4.6", "@biomejs/cli-linux-arm64-musl": "2.4.6", "@biomejs/cli-linux-x64": "2.4.6", "@biomejs/cli-linux-x64-musl": "2.4.6", "@biomejs/cli-win32-arm64": "2.4.6", "@biomejs/cli-win32-x64": "2.4.6" }, "bin": { "biome": "bin/biome" } }, "sha512-QnHe81PMslpy3mnpL8DnO2M4S4ZnYPkjlGCLWBZT/3R9M6b5daArWMMtEfP52/n174RKnwRIf3oT8+wc9ihSfQ=="], @@ -674,6 +696,8 @@ "@dabh/diagnostics": ["@dabh/diagnostics@2.0.8", "", { "dependencies": { "@so-ric/colorspace": "^1.1.6", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q=="], + "@dmsnell/diff-match-patch": ["@dmsnell/diff-match-patch@1.1.0", "", {}, "sha512-yejLPmM5pjsGvxS9gXablUSbInW7H976c/FJ4iQxWIm7/38xBySRemTPDe34lhg1gVLbJntX0+sH0jYfU+PN9A=="], + "@dotenvx/dotenvx": ["@dotenvx/dotenvx@1.31.0", "", { "dependencies": { "commander": "^11.1.0", "dotenv": "^16.4.5", "eciesjs": "^0.4.10", "execa": "^5.1.1", "fdir": "^6.2.0", "ignore": "^5.3.0", "object-treeify": "1.1.33", "picomatch": "^4.0.2", "which": "^4.0.0" }, "bin": { "dotenvx": "src/cli/dotenvx.js", "git-dotenvx": "src/cli/dotenvx.js" } }, "sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA=="], "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], @@ -682,7 +706,7 @@ "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], - "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + "@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], @@ -772,57 +796,57 @@ "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA=="], - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.3" }, "os": "darwin", "cpu": "x64" }, "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw=="], "@img/sharp-freebsd-wasm32": ["@img/sharp-freebsd-wasm32@0.35.4", "", { "dependencies": { "@img/sharp-wasm32": "0.35.4" }, "os": "freebsd" }, "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A=="], - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w=="], - "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.3", "", { "os": "linux", "cpu": "none" }, "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.3" }, "os": "linux", "cpu": "arm" }, "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ=="], - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ=="], - "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.3" }, "os": "linux", "cpu": "none" }, "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.3" }, "os": "linux", "cpu": "s390x" }, "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.4", "", { "dependencies": { "@emnapi/runtime": "^1.11.3" } }, "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA=="], "@img/sharp-webcontainers-wasm32": ["@img/sharp-webcontainers-wasm32@0.35.4", "", { "dependencies": { "@img/sharp-wasm32": "0.35.4" }, "cpu": "none" }, "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA=="], - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.4", "", { "os": "win32", "cpu": "x64" }, "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg=="], "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], @@ -930,29 +954,29 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], - "@next/env": ["@next/env@16.1.6", "", {}, "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ=="], + "@next/env": ["@next/env@16.3.8", "", {}, "sha512-Al9zqHVV7TJv0eFuOU4U7Lvv74PTih4Ch63sk2xCIpSTkE3udFnaOcnzP2lQVymiL7yS9Cj2iClUXlR3EQ5sEw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-2JPRMh2nmQG5CiL7cXGL9AGwnPWJQ//cTtAUCT+w511QHk79SYz3LGv/pc5X643B/WEO0rvu3Yww0hqwt3kgeA=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-GZtCCOBKJ4leVIT/Th0llWKhD1ca92lzbQiS5R5ON9QkoiFnilFsebDae1JU2a3HWoKMEmEZWGs1AGLavVM72Q=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-O659ygeQYqneJ1fBKMpFxIFqYkYswu8IAS1OCKK/4f3ZgJJm1dRz4fVJZRi/kLLWjnBKnebOePA4WNv+sV1pVA=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-dSjKSyWpzxoO1d3DIZZcP4XJcNaKeLmxQMFOiYl5vuBRMmweIqnAhty8tAmRsvTss779cK1FtYnDMj40e4TQlg=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.8", "", { "os": "linux", "cpu": "x64" }, "sha512-lbqOuz3RPRcv+o9msNsJw5x4+Y1ZwPTs6vmL6DCf7i0fZfvng/F59wyeDwqHIvV0mK//RBy/jJkZ+nCKsSMXjQ=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.8", "", { "os": "linux", "cpu": "x64" }, "sha512-+316WswI8ScVgZeUd+1KGaXkHhaYQzCjvH/05TZSpJ8zBizb1a4G7DtO7F12jcBIqMOtsz9ji1t48fmKtzqsGA=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-ji0gd4kMYUxO+1fJBIbiBVRCjzG/lloiyCccnlebvb1ZJ5qXCPZqYg4Jl1DrrixnWNMKylzgpmMWx0yNDYXlzw=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.8", "", { "os": "win32", "cpu": "x64" }, "sha512-WcTlaKt/TWkh5kUjdJcUmB1XgZ+1c6fz4Y9fDHL73YNSdGaUWjceeWrrlwF0nv19iABYWC4iAq1oX1w4Bn0vfg=="], - "@noble/ciphers": ["@noble/ciphers@2.1.1", "", {}, "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw=="], + "@noble/ciphers": ["@noble/ciphers@2.4.0", "", {}, "sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw=="], "@noble/curves": ["@noble/curves@1.9.7", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="], - "@noble/hashes": ["@noble/hashes@2.0.1", "", {}, "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw=="], + "@noble/hashes": ["@noble/hashes@2.4.0", "", {}, "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA=="], "@nodable/entities": ["@nodable/entities@2.2.0", "", {}, "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg=="], @@ -1010,9 +1034,9 @@ "@openapi-contrib/openapi-schema-to-json-schema": ["@openapi-contrib/openapi-schema-to-json-schema@3.2.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" } }, "sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw=="], - "@opennextjs/aws": ["@opennextjs/aws@3.9.16", "", { "dependencies": { "@ast-grep/napi": "^0.40.5", "@aws-sdk/client-cloudfront": "3.984.0", "@aws-sdk/client-dynamodb": "3.984.0", "@aws-sdk/client-lambda": "3.984.0", "@aws-sdk/client-s3": "3.984.0", "@aws-sdk/client-sqs": "3.984.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.3", "aws4fetch": "^1.0.20", "chalk": "^5.6.2", "cookie": "^1.0.2", "esbuild": "0.25.4", "express": "^5.1.0", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.1.0", "yaml": "^2.8.1" }, "peerDependencies": { "next": "~15.0.8 || ~15.1.12 || ~15.2.9 || ~15.3.9 || ~15.4.11 || ~15.5.10 || ~16.0.11 || ^16.1.5" }, "bin": { "open-next": "dist/index.js" } }, "sha512-jQQStCysIllNCPqz5W2KSguXpr+ETlOcD8SyNu+h9zwpRVYk4uEPQge+ErG3avI5xsT8vKA7EGLYG59dhj/B6Q=="], + "@opennextjs/aws": ["@opennextjs/aws@4.1.7", "", { "dependencies": { "@ast-grep/napi": "^0.40.5", "@aws-sdk/client-cloudfront": "3.984.0", "@aws-sdk/client-dynamodb": "3.984.0", "@aws-sdk/client-lambda": "3.984.0", "@aws-sdk/client-s3": "3.984.0", "@aws-sdk/client-sqs": "3.984.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.3", "aws4fetch": "^1.0.20", "chalk": "^5.6.2", "cookie": "^1.0.2", "esbuild": "0.25.4", "express": "^5.1.0", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.1.0", "yaml": "^2.8.1" }, "peerDependencies": { "next": ">=15.5.27 <16 || >=16.3.8" }, "bin": { "open-next": "dist/index.js" } }, "sha512-ELezSARrTfxp/76cz41eQjki1AV0CuBUKOznU3w/tOk7i87x867RkkYho+gDkog9gpnGzefHdJu463o9VaabNQ=="], - "@opennextjs/cloudflare": ["@opennextjs/cloudflare@1.17.1", "", { "dependencies": { "@ast-grep/napi": "^0.40.5", "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "3.9.16", "cloudflare": "^4.4.1", "comment-json": "^4.5.1", "enquirer": "^2.4.1", "glob": "^12.0.0", "ts-tqdm": "^0.8.6", "yargs": "^18.0.0" }, "peerDependencies": { "next": "~15.0.8 || ~15.1.12 || ~15.2.9 || ~15.3.9 || ~15.4.11 || ~15.5.10 || ~16.0.11 || ^16.1.5", "wrangler": "^4.65.0" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-TtmjhXUEpSbnb9kgr7IQtmlQugOeX0cHiLc/e6NYAnmqQVro3yN49WvzaclSGFZod/lJFW7pOJ0NGT6JpqypAw=="], + "@opennextjs/cloudflare": ["@opennextjs/cloudflare@1.20.8", "", { "dependencies": { "@ast-grep/napi": "^0.40.5", "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "4.1.7", "ci-info": "^4.2.0", "cloudflare": "^4.4.1", "comment-json": "^4.5.1", "enquirer": "^2.4.1", "glob": "^12.0.0", "ts-tqdm": "^0.8.6", "yargs": "^18.0.0" }, "peerDependencies": { "next": ">=15.5.27 <16 || >=16.3.8", "rclone.js": "^0.6.6", "wrangler": "^4.125.0" }, "optionalPeers": ["rclone.js"], "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-7rrsBqd234GBBnHITobS0gagT4/fSfHJwm+ogYTyUb7ubg3PGC06biJgL9l4DZabFeu/ucqvml80sBr5torBgg=="], "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], @@ -1070,21 +1094,19 @@ "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], - "@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="], + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], - "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], - "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - "@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="], - "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], "@quansync/fs": ["@quansync/fs@1.0.0", "", { "dependencies": { "quansync": "^1.0.0" } }, "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ=="], @@ -1510,7 +1532,7 @@ "@supermemory/tools": ["@supermemory/tools@workspace:packages/tools"], - "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + "@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], "@szmarczak/http-timer": ["@szmarczak/http-timer@5.0.1", "", { "dependencies": { "defer-to-connect": "^2.0.1" } }, "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw=="], @@ -1584,7 +1606,7 @@ "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], - "@types/bun": ["@types/bun@1.3.10", "", { "dependencies": { "bun-types": "1.3.10" } }, "sha512-0+rlrUrOrTSskibryHbvQkDOWRJwJZqZlxrUs1u4oOoTln8+WIXBPmAuCF35SWB2z4Zl3E84Nl/D0P7803nigQ=="], + "@types/bun": ["@types/bun@1.4.2", "", { "dependencies": { "bun-types": "1.4.2" } }, "sha512-GimotNn7+ZV0uVArItBbriZsR1oNf0+WTzPkdcFrzShI7k2norL0uzEaJT8T33dWr7O/c9ZDuAFQrctKCi72oQ=="], "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], @@ -1616,8 +1638,6 @@ "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], - "@types/diff-match-patch": ["@types/diff-match-patch@1.0.36", "", {}, "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg=="], - "@types/earcut": ["@types/earcut@3.0.0", "", {}, "sha512-k/9fOUGO39yd2sCjrbAJvGDEQvRwRnQIZlBz43roGwUZo5SHAmyVvSFyaVVZkicRVCaDXPKlbxrUcBuJoSWunQ=="], "@types/es-aggregate-error": ["@types/es-aggregate-error@1.0.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg=="], @@ -1704,19 +1724,19 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.4", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA=="], - "@vitest/expect": ["@vitest/expect@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig=="], + "@vitest/expect": ["@vitest/expect@3.2.6", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.6", "@vitest/utils": "3.2.6", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-1+7q9BtaKzEmO+fmNT3kYvoNn5Y71XWAx2Q5HRim4tTVRQVRv4uJFAQ5FbK0OPUeNP/WmVCpxYxoJdvuHVjzBQ=="], - "@vitest/mocker": ["@vitest/mocker@3.2.4", "", { "dependencies": { "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ=="], + "@vitest/mocker": ["@vitest/mocker@3.2.6", "", { "dependencies": { "@vitest/spy": "3.2.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-EZOrpDbkKotFAP7wPAQV1UIyoGOk4oX7ynWhBhLB7v+meMHbQhU16oPpIYGTTe4oFlhpryGpgpcZP/sin3hYuw=="], - "@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], + "@vitest/pretty-format": ["@vitest/pretty-format@3.2.7", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA=="], - "@vitest/runner": ["@vitest/runner@3.2.4", "", { "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ=="], + "@vitest/runner": ["@vitest/runner@3.2.6", "", { "dependencies": { "@vitest/utils": "3.2.6", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-HYcoSj1w5tcgUnzoF0HcyaAQjpA1gj9ftUJ7iSJSuipc02jW9gKkigwZbjFldAfYHA1fa8UZVRftdMY5msWM9Q=="], - "@vitest/snapshot": ["@vitest/snapshot@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ=="], + "@vitest/snapshot": ["@vitest/snapshot@3.2.6", "", { "dependencies": { "@vitest/pretty-format": "3.2.6", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-H+ZjNTWGpObenh0YnlBctAPnJSI20P81PL8BPzWpx54YXLLTm8hEsWawtcYLMrwvpK48hGxLLbCS+1KRXhsKhw=="], - "@vitest/spy": ["@vitest/spy@3.2.4", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="], + "@vitest/spy": ["@vitest/spy@3.2.6", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-oq6BbH68WzcWmwtBrU9nqLeaXTR4XwJF7FSLkKEZo4i6eoXcrxjcwSuTvWBIRUTC6VC72nXYunzqgZA+IKdtxg=="], - "@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], + "@vitest/utils": ["@vitest/utils@3.2.6", "", { "dependencies": { "@vitest/pretty-format": "3.2.6", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-lI23nIs4bnT3T8NIoh+vFaz5s2/DdP0Jgt2jxwgWljvwn82cLJtyi/If+fjFyoLMGIOz0U/fKvWE0d4jsNQEfg=="], "@voltagent/core": ["@voltagent/core@2.6.12", "", { "dependencies": { "@ai-sdk/amazon-bedrock": "^3.0.0", "@ai-sdk/anthropic": "^3.0.0", "@ai-sdk/azure": "^3.0.12", "@ai-sdk/cerebras": "^2.0.14", "@ai-sdk/cohere": "^3.0.8", "@ai-sdk/deepinfra": "^2.0.13", "@ai-sdk/gateway": "^3.0.16", "@ai-sdk/google": "^3.0.0", "@ai-sdk/google-vertex": "^3.0.25", "@ai-sdk/groq": "^3.0.0", "@ai-sdk/mistral": "^3.0.0", "@ai-sdk/openai": "^3.0.0", "@ai-sdk/openai-compatible": "^2.0.13", "@ai-sdk/perplexity": "^3.0.8", "@ai-sdk/togetherai": "^2.0.13", "@ai-sdk/vercel": "^2.0.13", "@ai-sdk/xai": "^3.0.26", "@aihubmix/ai-sdk-provider": "^1.0.1", "@gitlab/gitlab-ai-provider": "^3.1.1", "@modelcontextprotocol/sdk": "^1.12.1", "@mymediset/sap-ai-provider": "^2.1.0", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.204.0", "@opentelemetry/context-async-hooks": "^2.2.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/exporter-logs-otlp-http": "^0.204.0", "@opentelemetry/exporter-trace-otlp-http": "^0.203.0", "@opentelemetry/otlp-transformer": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@voltagent/internal": "^1.0.3", "fast-glob": "^3.3.3", "gray-matter": "^4.0.3", "micromatch": "^4.0.8", "ollama-ai-provider-v2": "^1.5.3", "ts-pattern": "^5.7.1", "type-fest": "^4.41.0", "uuid": "^9.0.1", "workers-ai-provider": "^3.0.2", "zod-from-json-schema": "^0.5.0", "zod-from-json-schema-v3": "npm:zod-from-json-schema@^0.0.5" }, "peerDependencies": { "@ai-sdk/provider-utils": "4.x", "@voltagent/logger": "2.0.2", "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@voltagent/logger"] }, "sha512-kbgUdXXojxcMmrdSDkZsjkyKMXWbKNiYu+Rbw8lrsmqEETKNUS8Hr8PNqtGg2H50o+mu/wSJAsLtTt+sFM9qrw=="], @@ -1724,7 +1744,9 @@ "@webgpu/types": ["@webgpu/types@0.1.69", "", {}, "sha512-RPmm6kgRbI8e98zSD3RVACvnuktIja5+yLgDAkTmxLr90BEwdTXRQWNLF3ETTTyH/8mKhznZuN5AveXYFEsMGQ=="], - "@xmldom/xmldom": ["@xmldom/xmldom@0.8.11", "", {}, "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw=="], + "@workflow/serde": ["@workflow/serde@4.1.0", "", {}, "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ=="], + + "@xmldom/xmldom": ["@xmldom/xmldom@0.8.15", "", {}, "sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA=="], "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], @@ -1830,7 +1852,7 @@ "aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="], - "axios": ["axios@1.13.2", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA=="], + "axios": ["axios@1.20.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg=="], "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], @@ -1842,13 +1864,13 @@ "base64id": ["base64id@2.0.0", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.0", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.26", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ=="], "before-after-hook": ["before-after-hook@3.0.2", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="], - "better-auth": ["better-auth@1.5.3", "", { "dependencies": { "@better-auth/core": "1.5.3", "@better-auth/kysely-adapter": "1.5.3", "@better-auth/memory-adapter": "1.5.3", "@better-auth/telemetry": "1.5.3", "@better-auth/utils": "0.3.1", "@better-fetch/fetch": "1.1.21", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.3.2", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.11", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/drizzle-adapter": "1.5.3", "@better-auth/mongo-adapter": "1.5.3", "@better-auth/prisma-adapter": "1.5.3", "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": ">=0.41.0", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@better-auth/drizzle-adapter", "@better-auth/mongo-adapter", "@better-auth/prisma-adapter", "@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-E+9kA9GMX1+gT3FfMCqRz0NufT4X/+tNhpOsHW1jLmyPZKinkHtfZkUffSBnG5qGkvfBaH/slT5c1fKttnmF5w=="], + "better-auth": ["better-auth@1.7.6", "", { "dependencies": { "@better-auth/core": "1.7.6", "@better-auth/drizzle-adapter": "1.7.6", "@better-auth/kysely-adapter": "1.7.6", "@better-auth/memory-adapter": "1.7.6", "@better-auth/mongo-adapter": "1.7.6", "@better-auth/prisma-adapter": "1.7.6", "@better-auth/telemetry": "1.7.6", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.2", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "better-call": "1.4.0", "defu": "^6.1.4", "jose": "^6.2.3", "kysely": "^0.28.17 || ^0.29.0", "nanostores": "^1.3.0", "zod": "^4.5.4" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "drizzle-kit": ">=0.31.4 || >=1.0.0-beta.1", "drizzle-orm": "^0.45.2 || >=1.0.0-rc.1 <2.0.0", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-WTMqOpmTTj+oBoX7zzPOzL85342Upyf+/v0IkH1kvGRA85lV4JGRFIYMIRKqvjZ6ShsuL5VX/c9C13jtoZXcKA=="], - "better-call": ["better-call@1.3.2", "", { "dependencies": { "@better-auth/utils": "^0.3.1", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-4cZIfrerDsNTn3cm+MhLbUePN0gdwkhSXEuG7r/zuQ8c/H7iU0/jSK5TD3FW7U0MgKHce/8jGpPYNO4Ve+4NBw=="], + "better-call": ["better-call@1.4.0", "", { "dependencies": { "@better-auth/utils": "^0.5.0", "@better-fetch/fetch": "^1.3.1", "rou3": "^0.9.1", "set-cookie-parser": "^3.1.2" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-bBKOT4vv1kZLDgxVePdilk/Jwkn+dtRRsmi3DzHcDP+WnswyVl6dR59l2HEeP/0cB+bDoopASAesWDPIdd/zZA=="], "better-opn": ["better-opn@3.0.2", "", { "dependencies": { "open": "^8.0.4" } }, "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ=="], @@ -1872,7 +1894,7 @@ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + "browserslist": ["browserslist@4.28.7", "", { "dependencies": { "baseline-browser-mapping": "^2.10.44", "caniuse-lite": "^1.0.30001806", "electron-to-chromium": "^1.5.393", "node-releases": "^2.0.51", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw=="], "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], @@ -1880,7 +1902,7 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - "bun-types": ["bun-types@1.3.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-tcpfCCl6XWo6nCVnpcVrxQ+9AYN1iqMIzgrSKYMB/fjLtV2eyAVEg7AxQJuCq/26R6HpKWykQXuSOq/21RYcbg=="], + "bun-types": ["bun-types@1.4.2", "", { "dependencies": { "@types/node": "*" } }, "sha512-bxV1FgK7yBIzjRe5zBozIM4Bem11ZJcCXSrjWRG3YWLt8yFDePu4cLjpebO8OvPeIE9trbyPF4fuj3Cia4Fj3w=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -1902,7 +1924,7 @@ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001776", "", {}, "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001813", "", {}, "sha512-zfjJo4rM0+fUomGDBW/xcDjhIwz/210DGvip2MAMDZ8KHcRPnOHmEgHPZP0UHlZoxr8fYKVJOqcORhYQcG4FKQ=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -1926,6 +1948,8 @@ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], "clean-stack": ["clean-stack@4.2.0", "", { "dependencies": { "escape-string-regexp": "5.0.0" } }, "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg=="], @@ -2084,7 +2108,7 @@ "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + "defu": ["defu@6.1.5", "", {}, "sha512-pwdBJxJuJXmqrLO6s0VBmfbRz+G7FUzkjldAsdi9Yrv86mPyzq0ll1o8+8gB4Gsr6GJHbK1Lh3ngllgTInDCjA=="], "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], @@ -2110,8 +2134,6 @@ "diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], - "diff-match-patch": ["diff-match-patch@1.0.5", "", {}, "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="], - "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], @@ -2138,7 +2160,7 @@ "drizzle-kit": ["drizzle-kit@0.31.9", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg=="], - "drizzle-orm": ["drizzle-orm@0.44.7", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ=="], + "drizzle-orm": ["drizzle-orm@0.45.2", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q=="], "drizzle-zod": ["drizzle-zod@0.7.1", "", { "peerDependencies": { "drizzle-orm": ">=0.36.0", "zod": ">=3.0.0" } }, "sha512-nZzALOdz44/AL2U005UlmMqaQ1qe5JfanvLujiTHiiT8+vZJTBFhj3pY4Vk+L6UWyKFfNmLhk602Hn4kCTynKQ=="], @@ -2160,7 +2182,7 @@ "efrt": ["efrt@2.7.0", "", {}, "sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ=="], - "electron-to-chromium": ["electron-to-chromium@1.5.307", "", {}, "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg=="], + "electron-to-chromium": ["electron-to-chromium@1.5.441", "", {}, "sha512-b84H5dyxtHtXYbJRJPLvbS+iud4ys2GVZ61BH7/9lJrfCcIL+Sk+Vh2AW6beaErTdstvjZLgEwkE2j0fZlmwRA=="], "embla-carousel": ["embla-carousel@8.6.0", "", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="], @@ -2288,11 +2310,11 @@ "fast-sha256": ["fast-sha256@1.3.0", "", {}, "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ=="], - "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + "fast-uri": ["fast-uri@3.1.8", "", {}, "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg=="], - "fast-xml-builder": ["fast-xml-builder@1.0.0", "", {}, "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ=="], + "fast-xml-builder": ["fast-xml-builder@1.3.1", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug=="], - "fast-xml-parser": ["fast-xml-parser@5.4.2", "", { "dependencies": { "fast-xml-builder": "^1.0.0", "strnum": "^2.1.2" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ=="], + "fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], @@ -2320,13 +2342,13 @@ "fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="], - "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], + "follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="], @@ -2430,7 +2452,7 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], "hast-util-embedded": ["hast-util-embedded@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-is-element": "^3.0.0" } }, "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA=="], @@ -2470,7 +2492,7 @@ "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], - "hono": ["hono@4.12.5", "", {}, "sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg=="], + "hono": ["hono@4.13.12", "", {}, "sha512-6E2QDAc9Ick9Sq77ZrGS/dk2WUYni91aufTw6LJKpV7w8kW5/GxVUc650FOADOmlwg3K+f7Pun6XlV+pYmW6gw=="], "hono-openapi": ["hono-openapi@0.4.8", "", { "dependencies": { "json-schema-walker": "^2.0.0" }, "peerDependencies": { "@hono/arktype-validator": "^2.0.0", "@hono/effect-validator": "^1.2.0", "@hono/typebox-validator": "^0.2.0 || ^0.3.0", "@hono/valibot-validator": "^0.5.1", "@hono/zod-validator": "^0.4.1", "@sinclair/typebox": "^0.34.9", "@valibot/to-json-schema": "^1.0.0-beta.3", "arktype": "^2.0.0", "effect": "^3.11.3", "hono": "^4.6.13", "openapi-types": "^12.1.3", "valibot": "^1.0.0-beta.9", "zod": "^3.23.8", "zod-openapi": "^4.0.0" }, "optionalPeers": ["@hono/arktype-validator", "@hono/effect-validator", "@hono/typebox-validator", "@hono/valibot-validator", "@hono/zod-validator", "@sinclair/typebox", "@valibot/to-json-schema", "arktype", "effect", "hono", "valibot", "zod", "zod-openapi"] }, "sha512-LYr5xdtD49M7hEAduV1PftOMzuT8ZNvkyWfh1DThkLsIr4RkvDb12UxgIiFbwrJB6FLtFXLoOZL9x4IeDk2+VA=="], @@ -2526,7 +2548,7 @@ "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], - "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], + "ip-address": ["ip-address@10.7.3", "", {}, "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg=="], "ip-regex": ["ip-regex@4.3.0", "", {}, "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q=="], @@ -2638,7 +2660,7 @@ "jks-js": ["jks-js@1.1.5", "", { "dependencies": { "node-forge": "^1.3.2", "node-int64": "^0.4.0", "node-rsa": "^1.1.1" } }, "sha512-Kdl/twc+Nk8jPWqH3jCp3YE8jlG4Q7ijbAhhG65chfNnkQxOyXY60xLryz1Fnew8MV64rcXLtIT1PuTW0B15eA=="], - "jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "jose": ["jose@6.2.12", "", {}, "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw=="], "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="], @@ -2678,7 +2700,7 @@ "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], - "jsondiffpatch": ["jsondiffpatch@0.6.0", "", { "dependencies": { "@types/diff-match-patch": "^1.0.36", "chalk": "^5.3.0", "diff-match-patch": "^1.0.5" }, "bin": { "jsondiffpatch": "bin/jsondiffpatch.js" } }, "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ=="], + "jsondiffpatch": ["jsondiffpatch@0.7.6", "", { "dependencies": { "@dmsnell/diff-match-patch": "^1.1.0" }, "bin": { "jsondiffpatch": "bin/jsondiffpatch.js" } }, "sha512-zE9+AXFq+MkTolDor2Cw1nJzLC0aleqPkYf52Kb4Kn4mJcka/gFHpGI2JBVEJCfWOvBl0OoxZS+wuLdislQcqg=="], "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], @@ -2708,7 +2730,7 @@ "kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="], - "kysely": ["kysely@0.28.11", "", {}, "sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg=="], + "kysely": ["kysely@0.29.6", "", {}, "sha512-hHaB8C/rfzDDtr/t8YZwxAuPJTT0zHyaPoVzcXwDYhYNAgH/4sIfVhi/XLLIY+bL/FqaIJnjATDbi8ObSELmxg=="], "lcm": ["lcm@0.0.3", "", { "dependencies": { "gcd": "^0.0.1" } }, "sha512-TB+ZjoillV6B26Vspf9l2L/vKaRY/4ep3hahcyVkCGFgsTNRUQdc24bQeNFiZeoxH0vr5+7SfNRMQuPHv/1IrQ=="], @@ -2750,7 +2772,7 @@ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], + "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], @@ -2970,9 +2992,9 @@ "nanoevents": ["nanoevents@7.0.1", "", {}, "sha512-o6lpKiCxLeijK4hgsqfR6CNToPyRU3keKyyI6uwuHRvpRTbZ0wXw51WRgyldVugZqoJfkGFrjrIenYH3bfEO3Q=="], - "nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + "nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], - "nanostores": ["nanostores@1.1.1", "", {}, "sha512-EYJqS25r2iBeTtGQCHidXl1VfZ1jXM7Q04zXJOrMlxVVmD0ptxJaNux92n1mJ7c5lN3zTq12MhH/8x59nP+qmg=="], + "nanostores": ["nanostores@1.5.4", "", {}, "sha512-4UXY7OAJEK0Y6V3SudBU7cXjAzTDc189R78dDOh0Xbm19gpKYto6WizSg58LJf12lTsRxKSLGyE117OiLpM4DQ=="], "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="], @@ -2982,7 +3004,7 @@ "neverthrow": ["neverthrow@8.2.0", "", { "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "^4.24.0" } }, "sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ=="], - "next": ["next@16.1.6", "", { "dependencies": { "@next/env": "16.1.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.6", "@next/swc-darwin-x64": "16.1.6", "@next/swc-linux-arm64-gnu": "16.1.6", "@next/swc-linux-arm64-musl": "16.1.6", "@next/swc-linux-x64-gnu": "16.1.6", "@next/swc-linux-x64-musl": "16.1.6", "@next/swc-win32-arm64-msvc": "16.1.6", "@next/swc-win32-x64-msvc": "16.1.6", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw=="], + "next": ["next@16.3.8", "", { "dependencies": { "@next/env": "16.3.8", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.8", "@next/swc-darwin-x64": "16.3.8", "@next/swc-linux-arm64-gnu": "16.3.8", "@next/swc-linux-arm64-musl": "16.3.8", "@next/swc-linux-x64-gnu": "16.3.8", "@next/swc-linux-x64-musl": "16.3.8", "@next/swc-win32-arm64-msvc": "16.3.8", "@next/swc-win32-x64-msvc": "16.3.8", "sharp": "^0.35.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-U7QEZaTini6wKrb8A8hqLLqYQyCetegKjCpJOyxk642vWoMoU1x5PyZCJFvgYgiptA8xc5j/9xYlZFO7w9Sjmw=="], "next-mdx-remote-client": ["next-mdx-remote-client@2.1.12", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@mdx-js/mdx": "^3.1.1", "@mdx-js/react": "^3.1.1", "@types/mdx": "^2.0.14", "remark-mdx-remove-esm": "^1.3.2", "serialize-error": "^13.0.1", "vfile": "^6.0.3", "vfile-matter": "^5.0.1" }, "peerDependencies": { "react": ">= 19.1.0", "react-dom": ">= 19.1.0" } }, "sha512-KDfhIk5aEM0kkZ0xQ8XBkmo4O5xmJeGWUomm40Ac/xhkt5sIDOTmTU/QFfmJGLJUJipD5o0BAHqVSIZKuXgNEw=="], @@ -3002,11 +3024,11 @@ "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - "node-forge": ["node-forge@1.3.3", "", {}, "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg=="], + "node-forge": ["node-forge@1.4.0", "", {}, "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ=="], "node-int64": ["node-int64@0.4.0", "", {}, "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="], - "node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="], + "node-releases": ["node-releases@2.0.57", "", {}, "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw=="], "node-rsa": ["node-rsa@1.1.1", "", { "dependencies": { "asn1": "^0.2.4" } }, "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw=="], @@ -3140,7 +3162,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], @@ -3160,7 +3182,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + "postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], @@ -3212,7 +3234,7 @@ "prosemirror-model": ["prosemirror-model@1.25.12", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-Ue2gTmXMa7EhpLNhC7J+h4+ykD8ha12K6rrZFFKKJHBForfIStw5gJ6Zrf1mqqAa9NmpmEB4wp9bKmA4eUVjWg=="], - "protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="], + "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], @@ -3368,7 +3390,7 @@ "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], - "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], + "rou3": ["rou3@0.9.2", "", {}, "sha512-3SOzvaAg8rkHrXtRjpCvCvbyO5to9oOO27Z/XqHEYXfMRVSw/qMIVdmaOk9W2lcRLtR6dlqTjo9hDeJk70QBYQ=="], "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], @@ -3412,7 +3434,7 @@ "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], - "set-cookie-parser": ["set-cookie-parser@3.0.1", "", {}, "sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q=="], + "set-cookie-parser": ["set-cookie-parser@3.1.2", "", {}, "sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw=="], "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], @@ -3424,7 +3446,7 @@ "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + "sharp": ["sharp@0.35.4", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.4", "@img/sharp-darwin-x64": "0.35.4", "@img/sharp-freebsd-wasm32": "0.35.4", "@img/sharp-libvips-darwin-arm64": "1.3.3", "@img/sharp-libvips-darwin-x64": "1.3.3", "@img/sharp-libvips-linux-arm": "1.3.3", "@img/sharp-libvips-linux-arm64": "1.3.3", "@img/sharp-libvips-linux-ppc64": "1.3.3", "@img/sharp-libvips-linux-riscv64": "1.3.3", "@img/sharp-libvips-linux-s390x": "1.3.3", "@img/sharp-libvips-linux-x64": "1.3.3", "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", "@img/sharp-libvips-linuxmusl-x64": "1.3.3", "@img/sharp-linux-arm": "0.35.4", "@img/sharp-linux-arm64": "0.35.4", "@img/sharp-linux-ppc64": "0.35.4", "@img/sharp-linux-riscv64": "0.35.4", "@img/sharp-linux-s390x": "0.35.4", "@img/sharp-linux-x64": "0.35.4", "@img/sharp-linuxmusl-arm64": "0.35.4", "@img/sharp-linuxmusl-x64": "0.35.4", "@img/sharp-webcontainers-wasm32": "0.35.4", "@img/sharp-win32-arm64": "0.35.4", "@img/sharp-win32-ia32": "0.35.4", "@img/sharp-win32-x64": "0.35.4" } }, "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA=="], "sharp-ico": ["sharp-ico@0.1.5", "", { "dependencies": { "decode-ico": "*", "ico-endec": "*", "sharp": "*" } }, "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q=="], @@ -3464,7 +3486,7 @@ "socket.io-client": ["socket.io-client@4.8.3", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g=="], - "socket.io-parser": ["socket.io-parser@4.2.5", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ=="], + "socket.io-parser": ["socket.io-parser@4.2.7", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-IH/iSeO9T6gz1KkFleGDWkG9N3dl4jXVYUtMhIqH10Md0ttMer8nUNWiP1DKuNrybD2xBrixLJdCC9J6ECoYkg=="], "sonic-boom": ["sonic-boom@4.2.1", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q=="], @@ -3524,7 +3546,7 @@ "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], - "strnum": ["strnum@2.2.0", "", {}, "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg=="], + "strnum": ["strnum@2.4.2", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw=="], "strtok3": ["strtok3@10.3.4", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg=="], @@ -3672,7 +3694,7 @@ "unconfig-core": ["unconfig-core@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w=="], - "undici": ["undici@7.18.2", "", {}, "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw=="], + "undici": ["undici@7.29.1", "", {}, "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], @@ -3752,13 +3774,13 @@ "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], - "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], + "vite": ["vite@7.3.5", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww=="], "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], "vite-plugin-singlefile": ["vite-plugin-singlefile@2.3.0", "", { "dependencies": { "micromatch": "^4.0.8" }, "peerDependencies": { "rollup": "^4.44.1", "vite": "^5.4.11 || ^6.0.0 || ^7.0.0" } }, "sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A=="], - "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], + "vitest": ["vitest@3.2.6", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.6", "@vitest/mocker": "3.2.6", "@vitest/pretty-format": "^3.2.6", "@vitest/runner": "3.2.6", "@vitest/snapshot": "3.2.6", "@vitest/spy": "3.2.6", "@vitest/utils": "3.2.6", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.6", "@vitest/ui": "3.2.6", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-xejya+bT/j/+R/AGa1XOfRxLmNUlLtlwjRsFUILF+xHfzElmGcmFydy2gqqIrd62ptIEfwVMofd19uNWD9L7Nw=="], "voca": ["voca@1.4.1", "", {}, "sha512-NJC/BzESaHT1p4B5k4JykxedeltmNbau4cummStd4RjFojgq/kLew5TzYge9N2geeWyI2w8T30wUET5v+F7ZHA=="], @@ -3806,7 +3828,7 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], @@ -3972,8 +3994,6 @@ "@aws-sdk/nested-clients/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.996.4", "", { "dependencies": { "@aws-sdk/types": "^3.973.5", "@smithy/types": "^4.13.0", "@smithy/url-parser": "^4.2.11", "@smithy/util-endpoints": "^3.3.2", "tslib": "^2.6.2" } }, "sha512-Hek90FBmd4joCFj+Vc98KLJh73Zqj3s2W56gjAcTkrNLMDI5nIFkG9YpfcJiVI1YlE2Ne1uOQNe+IgQ/Vz2XRA=="], - "@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.4.1", "", { "dependencies": { "fast-xml-builder": "^1.0.0", "strnum": "^2.1.2" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A=="], - "@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -4016,27 +4036,11 @@ "@base-ui/utils/@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], - "@better-auth/api-key/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + "@better-auth/api-key/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], - "@better-auth/api-key/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + "@better-auth/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.43.0", "", {}, "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg=="], - "@better-auth/api-key/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], - - "@better-auth/api-key/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - - "@better-auth/core/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - - "@better-auth/drizzle-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], - - "@better-auth/drizzle-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], - - "@better-auth/mongo-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], - - "@better-auth/mongo-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], - - "@better-auth/prisma-adapter/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], - - "@better-auth/prisma-adapter/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + "@better-auth/core/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], "@cloudflare/ai-chat/agents": ["agents@0.4.1", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/sdk": "1.26.0", "cron-schedule": "^6.0.0", "escape-html": "^1.0.3", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "mimetext": "^3.0.28", "nanoid": "^5.1.6", "partyserver": "^0.1.4", "partysocket": "1.1.13", "yargs": "^18.0.0" }, "peerDependencies": { "@ai-sdk/openai": "^3.0.0", "@ai-sdk/react": "^3.0.0", "@cloudflare/ai-chat": "^0.0.8", "@cloudflare/codemode": "^0.0.7", "@x402/core": "^2.0.0", "@x402/evm": "^2.0.0", "ai": "^6.0.0", "react": "^19.0.0", "viem": ">=2.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@ai-sdk/openai", "@ai-sdk/react", "@x402/core", "@x402/evm", "viem"], "bin": { "agents": "dist/cli/index.js" } }, "sha512-1ARZ5AXpPEn1+Wv/Dt++nH3iLStDxlci7Bm47sfE6qLlJpY9oG5nzyH2TRKwFFt9bMAgYz177i6p2NiEd/coVQ=="], @@ -4048,6 +4052,8 @@ "@dotenvx/dotenvx/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "@dotenvx/dotenvx/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "@dotenvx/dotenvx/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], "@ecies/ciphers/@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -4060,10 +4066,6 @@ "@gitlab/gitlab-ai-provider/openai": ["openai@6.27.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-osTKySlrdYrLYTt0zjhY8yp0JUBmWDCN+Q+QxsV4xMQnnoVFpylgKGgxwN8sSdTNw0G4y+WUXs4eCMWpyDNWZQ=="], - "@img/sharp-freebsd-wasm32/@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.4", "", { "dependencies": { "@emnapi/runtime": "^1.11.3" } }, "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA=="], - - "@img/sharp-webcontainers-wasm32/@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.4", "", { "dependencies": { "@emnapi/runtime": "^1.11.3" } }, "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA=="], - "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], @@ -4084,6 +4086,8 @@ "@mastra/core/p-retry": ["p-retry@7.1.1", "", { "dependencies": { "is-network-error": "^1.1.0" } }, "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w=="], + "@mastra/core/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "@mdx-js/mdx/@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], "@mdx-js/mdx/remark-mdx": ["remark-mdx@3.1.0", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="], @@ -4116,12 +4120,8 @@ "@mintlify/common/acorn": ["acorn@8.11.2", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w=="], - "@mintlify/common/lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], - "@mintlify/common/mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.1.3", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ=="], - "@mintlify/common/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], - "@mintlify/common/remark-gfm": ["remark-gfm@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA=="], "@mintlify/common/remark-mdx": ["remark-mdx@3.1.0", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="], @@ -4132,16 +4132,12 @@ "@mintlify/mdx/mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], - "@mintlify/models/axios": ["axios@1.18.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw=="], - "@mintlify/prebuild/chalk": ["chalk@5.3.0", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="], "@mintlify/prebuild/fflate": ["fflate@0.8.3", "", {}, "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA=="], "@mintlify/prebuild/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], - "@mintlify/prebuild/sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], - "@mintlify/prebuild/uuid": ["uuid@11.1.1", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ=="], "@mintlify/previewing/chalk": ["chalk@5.2.0", "", {}, "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA=="], @@ -4156,8 +4152,6 @@ "@mintlify/previewing/yargs": ["yargs@17.7.1", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw=="], - "@mintlify/scraping/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], - "@mintlify/scraping/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="], "@mintlify/scraping/graphql": ["graphql@16.11.0", "", {}, "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw=="], @@ -4172,18 +4166,20 @@ "@mintlify/scraping/zod": ["zod@3.24.0", "", {}, "sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w=="], - "@mintlify/validation/lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], - "@mintlify/validation/uuid": ["uuid@11.1.1", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ=="], "@mintlify/validation/zod": ["zod@3.24.0", "", {}, "sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w=="], "@mintlify/validation/zod-to-json-schema": ["zod-to-json-schema@3.20.4", "", { "peerDependencies": { "zod": "^3.20.0" } }, "sha512-Un9+kInJ2Zt63n6Z7mLqBifzzPcOyX+b+Exuzf7L1+xqck9Q2EPByyTRduV3kmSPaXaRer1JCsucubpgL1fipg=="], + "@modelcontextprotocol/client/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@modelcontextprotocol/client/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@modelcontextprotocol/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@modelcontextprotocol/sdk/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@modelcontextprotocol/sdk/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "@modelcontextprotocol/server/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], @@ -4194,6 +4190,8 @@ "@mymediset/sap-ai-provider/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + "@noble/curves/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], "@node-minify/core/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="], @@ -4204,6 +4202,8 @@ "@opennextjs/aws/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="], + "@opennextjs/aws/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + "@opennextjs/cloudflare/glob": ["glob@12.0.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw=="], "@opentelemetry/exporter-logs-otlp-http/@opentelemetry/core": ["@opentelemetry/core@2.2.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw=="], @@ -4276,26 +4276,18 @@ "@repo/docs/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "@repo/lib/better-auth": ["better-auth@1.6.22", "", { "dependencies": { "@better-auth/core": "1.6.22", "@better-auth/drizzle-adapter": "1.6.22", "@better-auth/kysely-adapter": "1.6.22", "@better-auth/memory-adapter": "1.6.22", "@better-auth/mongo-adapter": "1.6.22", "@better-auth/prisma-adapter": "1.6.22", "@better-auth/telemetry": "1.6.22", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.3.7", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.17 || ^0.29.0", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": "^0.45.2", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-B5s6+lPsDWp8rGLRnvNyr5h9tftG9zLRjNrlkEJdYRhcuhPhJiw9b8o6ibgxEFpSAdUqoDaP5/FLqfu8QsXIVg=="], - "@repo/web/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "@rolldown/plugin-babel/picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], + "@repo/web/wrangler": ["wrangler@4.147.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.2", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "5.20261001.0-alpha", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20261001.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20261001.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-pQYRoiq8PTAxphaG69z8+GC1DkSGd19EDZehQ8zxjo/Ko3mRB6Qs1mTrd8ZuKAarLklIjTqr1lUdCK9r4q2hUg=="], + + "@rolldown/plugin-babel/vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], "@sap-ai-sdk/prompt-registry/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "@sap-cloud-sdk/connectivity/axios": ["axios@1.13.6", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ=="], - - "@sap-cloud-sdk/http-client/axios": ["axios@1.13.6", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ=="], - - "@sap-cloud-sdk/openapi/axios": ["axios@1.13.6", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ=="], - - "@sap-cloud-sdk/resilience/axios": ["axios@1.13.6", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ=="], - - "@sap-cloud-sdk/util/axios": ["axios@1.13.6", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ=="], - "@sap-cloud-sdk/util/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "@scalar/types/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + "@scalar/types/type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="], "@scalar/types/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], @@ -4342,7 +4334,7 @@ "@supermemory/tools/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "@supermemory/tools/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@supermemory/tools/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], @@ -4356,8 +4348,6 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@tailwindcss/postcss/postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], - "@testing-library/dom/aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], "@testing-library/dom/dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], @@ -4366,6 +4356,10 @@ "@vanilla-extract/css/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "@vitest/snapshot/@vitest/pretty-format": ["@vitest/pretty-format@3.2.6", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-lb7XXXzmm2h2ASzFnRvQpDo6onT1NmMJA3tkGTWiBFtRJ9lxGY3d3mm/Apt36gej2bkkOVLL/yTOtufDaFa/jA=="], + + "@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.2.6", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-lb7XXXzmm2h2ASzFnRvQpDo6onT1NmMJA3tkGTWiBFtRJ9lxGY3d3mm/Apt36gej2bkkOVLL/yTOtufDaFa/jA=="], + "@voltagent/core/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.58", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/53SACgmVukO4bkms4dpxpRlYhW8Ct6QZRe6sj1Pi5H00hYhxIrqfiLbZBGxkdRvjsBQeP/4TVGsXgH5rQeb8Q=="], "@voltagent/core/@ai-sdk/cerebras": ["@ai-sdk/cerebras@2.0.41", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.37", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kDMEpjaRdRXIUi1EH8WHwLRahyDTYv9SAJnP6VCCeq8X+tVqZbMLCqqxSG5dRknrI65ucjvzQt+FiDKTAa7AHg=="], @@ -4392,8 +4386,6 @@ "agents/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], - "agents/nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], - "agents/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], "aggregate-error/indent-string": ["indent-string@5.0.0", "", {}, "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="], @@ -4414,7 +4406,11 @@ "atmn/dotenv": ["dotenv@17.3.1", "", {}, "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA=="], - "better-auth/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "axios/proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], + + "better-auth/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], + + "better-call/@better-auth/utils": ["@better-auth/utils@0.5.0", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-BL8W4EfIZFwlu0r54m3v1ztjDhu6dDe/amLTm0xybmbZaNgYUqhD3SjpAsnq0q8YD6/ki4iwIgxJNLP/N3TxiA=="], "better-opn/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], @@ -4438,19 +4434,19 @@ "docs-test/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.58", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.19" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/53SACgmVukO4bkms4dpxpRlYhW8Ct6QZRe6sj1Pi5H00hYhxIrqfiLbZBGxkdRvjsBQeP/4TVGsXgH5rQeb8Q=="], - "docs-test/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="], + "docs-test/@ai-sdk/openai": ["@ai-sdk/openai@4.0.83", "", { "dependencies": { "@ai-sdk/provider": "4.0.21", "@ai-sdk/provider-utils": "5.0.53" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-NgqZVWoya7hfmtLkWyIjX9THbyYMLfxFqpShdAmvMnkoT+R9AZbdULGan8+4BiBWIZ1aHiAsc90l3SL8QU/0+Q=="], - "docs-test/@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.91.1", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw=="], + "docs-test/@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.131.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-9+PepoU7qVMmM70jSahdnfcMHAvAnzhMOLv2W9WjRLO+OG/MAiBETkwKZqv7KIJ1Cj5h8eZ019bHzZaq+Mbepw=="], - "docs-test/ai": ["ai@6.0.168", "", { "dependencies": { "@ai-sdk/gateway": "3.0.104", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-2HqCJuO+1V2aV7vfYs5LFEUfxbkGX+5oa54q/gCCTL7KLTdbxcCu5D7TdLA5kwsrs3Szgjah9q6D9tpjHM3hUQ=="], + "docs-test/ai": ["ai@7.0.127", "", { "dependencies": { "@ai-sdk/gateway": "4.0.103", "@ai-sdk/provider": "4.0.21", "@ai-sdk/provider-utils": "5.0.53" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-JNsNPk4ZvRGEJuqdVo2lYFkm7uAuf3p/RwKFWn1Wh/+IK3U1RyFWw2GXoFnhzqNfxEuj7XJB4WpIUhl1sHToWg=="], - "docs-test/dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], + "docs-test/dotenv": ["dotenv@18.0.5", "", { "bin": { "dotenv": "dist/index.cjs" } }, "sha512-aBrGvt6KhjxbEnatqMWOMidftwsrCiCvqh1yNIGB9QyF0J+VcWkKDMsvYOEm7ZS82oiV+BT1sTOtIlAmUlTpwQ=="], - "docs-test/openai": ["openai@6.34.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw=="], + "docs-test/openai": ["openai@7.27.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "undici": ">=5 <9", "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "undici", "ws", "zod"] }, "sha512-QDo1FvnRDZn15YwGVOhT9vpyypDiLphkd/7a4mcURWf5upMoEetgA6o4DJeII+ZZkC6m6DvlilCwii3+ynDcTw=="], - "docs-test/supermemory": ["supermemory@4.21.1", "", { "bin": { "supermemory": "bin/cli" } }, "sha512-KayOHtD94g7O+yN2qxaHEO5UIXtDl+duaKuhW7gvaraVtP1RHxFn80Pb5s5rKmqIvC+ruaARRlgMw7s/y+6LGQ=="], + "docs-test/supermemory": ["supermemory@4.25.4", "", { "bin": { "supermemory": "bin/cli" } }, "sha512-97ME3rlmu7OmsXJTb9OgXOD+3VUv4Wej0ZX9xezG+LKkMwrzi4xeeAZaOJFcr0oI/QQjcHG2WOzm+und1e7MFA=="], - "docs-test/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "docs-test/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -4462,18 +4458,16 @@ "engine.io/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - "engine.io/ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], - - "engine.io-client/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - "enquirer/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "es-abstract/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "es-set-tostringtag/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - "favicons/sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], - "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], "finalhandler/statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], @@ -4486,10 +4480,14 @@ "front-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "function.prototype.name/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + "get-intrinsic/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "got/@sindresorhus/is": ["@sindresorhus/is@5.6.0", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="], "got/form-data-encoder": ["form-data-encoder@2.1.4", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="], @@ -4514,8 +4512,14 @@ "inquirer/@inquirer/prompts": ["@inquirer/prompts@7.10.1", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="], + "internal-slot/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "is-core-module/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "is-online/got": ["got@12.6.1", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ=="], + "is-regex/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "jsonwebtoken/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], @@ -4524,8 +4528,6 @@ "memory-graph-playground/@types/node": ["@types/node@20.19.35", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ=="], - "memory-graph-playground/next": ["next@16.3.4", "", { "dependencies": { "@next/env": "16.3.4", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.4", "@next/swc-darwin-x64": "16.3.4", "@next/swc-linux-arm64-gnu": "16.3.4", "@next/swc-linux-arm64-musl": "16.3.4", "@next/swc-linux-x64-gnu": "16.3.4", "@next/swc-linux-x64-musl": "16.3.4", "@next/swc-win32-arm64-msvc": "16.3.4", "@next/swc-win32-x64-msvc": "16.3.4", "sharp": "^0.35.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-/Ztf6CeRH+ejEXUrYtqI4gkS66eFIHuSwqi60RgcpWKodxFZx2/dqVCMKBwILfAHXQ+F1b1vAudgj3mnxqtoIA=="], - "memory-graph-playground/react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="], "memory-graph-playground/react-dom": ["react-dom@19.2.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ=="], @@ -4538,8 +4540,6 @@ "mimetext/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "miniflare/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], - "next-mdx-remote-client/@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], "node-abi/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], @@ -4550,15 +4550,15 @@ "openai/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], + "openid-client/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "partyserver/nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], - "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "postcss/nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "pretty-format/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], @@ -4600,8 +4600,6 @@ "sdk-playground/@types/node": ["@types/node@20.19.35", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ=="], - "sdk-playground/next": ["next@16.3.4", "", { "dependencies": { "@next/env": "16.3.4", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.4", "@next/swc-darwin-x64": "16.3.4", "@next/swc-linux-arm64-gnu": "16.3.4", "@next/swc-linux-arm64-musl": "16.3.4", "@next/swc-linux-x64-gnu": "16.3.4", "@next/swc-linux-x64-musl": "16.3.4", "@next/swc-win32-arm64-msvc": "16.3.4", "@next/swc-win32-x64-msvc": "16.3.4", "sharp": "^0.35.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-/Ztf6CeRH+ejEXUrYtqI4gkS66eFIHuSwqi60RgcpWKodxFZx2/dqVCMKBwILfAHXQ+F1b1vAudgj3mnxqtoIA=="], - "sdk-playground/react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="], "sdk-playground/react-dom": ["react-dom@19.2.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ=="], @@ -4616,7 +4614,7 @@ "serialize-error/type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="], - "sharp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], @@ -4624,8 +4622,6 @@ "socket.io/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], - "socket.io-adapter/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - "stack-utils/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -4644,13 +4640,15 @@ "supermemory-mcp/@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], - "supermemory-mcp/supermemory": ["supermemory@4.21.1", "", { "bin": { "supermemory": "bin/cli" } }, "sha512-KayOHtD94g7O+yN2qxaHEO5UIXtDl+duaKuhW7gvaraVtP1RHxFn80Pb5s5rKmqIvC+ruaARRlgMw7s/y+6LGQ=="], + "supermemory-mcp/supermemory": ["supermemory@4.25.4", "", { "bin": { "supermemory": "bin/cli" } }, "sha512-97ME3rlmu7OmsXJTb9OgXOD+3VUv4Wej0ZX9xezG+LKkMwrzi4xeeAZaOJFcr0oI/QQjcHG2WOzm+und1e7MFA=="], "supermemory-mcp/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "supermemory-mcp/vite": ["vite@6.4.1", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="], - "supermemory-mcp/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "supermemory-mcp/wrangler": ["wrangler@4.147.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.2", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "5.20261001.0-alpha", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20261001.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20261001.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-pQYRoiq8PTAxphaG69z8+GC1DkSGd19EDZehQ8zxjo/Ko3mRB6Qs1mTrd8ZuKAarLklIjTqr1lUdCK9r4q2hUg=="], + + "supermemory-mcp/zod": ["zod@4.6.5", "", {}, "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q=="], "tailwindcss-v3/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], @@ -4658,8 +4656,6 @@ "tailwindcss-v3/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - "tailwindcss-v3/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], - "tailwindcss-v3/sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], "tar-fs/chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="], @@ -4668,13 +4664,15 @@ "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "tsx/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], "verror/core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="], "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], - "vite/postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "vite-node/vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], "vitest/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], @@ -4806,36 +4804,18 @@ "@base-ui/react/@floating-ui/react-dom/@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], - "@better-auth/api-key/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], - - "@better-auth/api-key/better-call/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], - - "@better-auth/drizzle-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], - - "@better-auth/drizzle-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], - - "@better-auth/drizzle-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - - "@better-auth/mongo-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], - - "@better-auth/mongo-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], - - "@better-auth/mongo-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - - "@better-auth/prisma-adapter/@better-auth/core/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], - - "@better-auth/prisma-adapter/@better-auth/core/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], - - "@better-auth/prisma-adapter/@better-auth/core/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@cloudflare/ai-chat/agents/@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.26.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg=="], + "@cloudflare/ai-chat/agents/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + "@cloudflare/ai-chat/agents/partyserver": ["partyserver@0.1.5", "", { "dependencies": { "nanoid": "^5.1.6" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20240729.0" } }, "sha512-kaE3GYaYWFc70EJQDQEhyYbO2Wczz/NgsFXerfjRo0t2s7ZxL1XggWT+HkMrdEyqbZOv3b66CV93WG0Lcg/ThQ=="], "@cloudflare/ai-chat/agents/partysocket": ["partysocket@1.1.13", "", { "dependencies": { "event-target-polyfill": "^0.0.4" } }, "sha512-RNXGzc6j0NISGE84+VTHHtbPwmnzZuOYJm9XZ+en+aZlIA2vC4AfwPlYxAHmGGGko3pQF7xRNhoe7bu1Brej4Q=="], "@cloudflare/codemode/agents/@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.26.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg=="], + "@cloudflare/codemode/agents/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + "@cloudflare/codemode/agents/partyserver": ["partyserver@0.1.5", "", { "dependencies": { "nanoid": "^5.1.6" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20240729.0" } }, "sha512-kaE3GYaYWFc70EJQDQEhyYbO2Wczz/NgsFXerfjRo0t2s7ZxL1XggWT+HkMrdEyqbZOv3b66CV93WG0Lcg/ThQ=="], "@cloudflare/codemode/agents/partysocket": ["partysocket@1.1.13", "", { "dependencies": { "event-target-polyfill": "^0.0.4" } }, "sha512-RNXGzc6j0NISGE84+VTHHtbPwmnzZuOYJm9XZ+en+aZlIA2vC4AfwPlYxAHmGGGko3pQF7xRNhoe7bu1Brej4Q=="], @@ -4900,10 +4880,6 @@ "@gitlab/gitlab-ai-provider/@ai-sdk/provider-utils/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], - "@img/sharp-freebsd-wasm32/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], - - "@img/sharp-webcontainers-wasm32/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], - "@inquirer/core/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -4912,6 +4888,8 @@ "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "@mastra/core/@modelcontextprotocol/sdk/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@mastra/core/@modelcontextprotocol/sdk/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "@mintlify/cli/inquirer/ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], @@ -4932,58 +4910,12 @@ "@mintlify/cli/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - "@mintlify/common/postcss/nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], - "@mintlify/link-rot/unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "@mintlify/link-rot/unist-util-visit/unist-util-is": ["unist-util-is@5.2.1", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="], "@mintlify/link-rot/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@5.1.3", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="], - "@mintlify/models/axios/follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], - - "@mintlify/models/axios/proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], - - "@mintlify/prebuild/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], - - "@mintlify/prebuild/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], - - "@mintlify/prebuild/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], - - "@mintlify/prebuild/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], - - "@mintlify/prebuild/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], - - "@mintlify/prebuild/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], - - "@mintlify/prebuild/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], - - "@mintlify/prebuild/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], - - "@mintlify/prebuild/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], - - "@mintlify/prebuild/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], - - "@mintlify/prebuild/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], - - "@mintlify/prebuild/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - - "@mintlify/prebuild/sharp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "@mintlify/previewing/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "@mintlify/previewing/express/accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], @@ -5022,10 +4954,6 @@ "@mintlify/previewing/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - "@mintlify/scraping/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.3.1", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug=="], - - "@mintlify/scraping/fast-xml-parser/strnum": ["strnum@2.4.2", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw=="], - "@mintlify/scraping/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "@mintlify/scraping/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -5116,23 +5044,19 @@ "@posthog/mcp/@posthog/core/@posthog/types": ["@posthog/types@1.412.4", "", {}, "sha512-Q7lV9O9TbLngjOYw1ucm3bS3tn48xb1B4ZQdDy8gv7yfKe99hCTeWYG4xZ36nJM80VxpTF9TriiJt5hngDOkBg=="], - "@repo/lib/better-auth/@better-auth/core": ["@better-auth/core@1.6.22", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.7", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-aFH/5nzmR501jAJPKjJfiVg4BrkcjVCqq9WS9JnhTruE/2PIWopv1QGMiRIRqxXaPbHczri7cqRdhep3Lg5PMw=="], + "@repo/web/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], - "@repo/lib/better-auth/@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "kysely": "^0.28.17 || ^0.29.0" }, "optionalPeers": ["kysely"] }, "sha512-4k/07lPRizlQi+B+uOE5CwTfH3w+Lq8ZDX1nDN1+e+glRVKAIfHoLvC9cfAVcCbio3DDrl0RTbwjLwjEhG0LxA=="], + "@repo/web/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.2", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-JBP1+Z7ZSNG/d4mRP+y8VC5dka3tZVMLEZRvS+rzQ4DGV1EoxRFQckcJTTkXbHSQiTj0DtNI01Zwb/V2fX0mvQ=="], - "@repo/lib/better-auth/@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2" } }, "sha512-rbepe/gHhWs0aF4fAu6+l+wNPJxT9XN4U+Hqa1Y/5HhjtT9y5evo3INrSWlkIOymsMaQ0cBPrSL5pm9Z195hcA=="], + "@repo/web/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], - "@repo/lib/better-auth/@better-auth/telemetry": ["@better-auth/telemetry@1.6.22", "", { "peerDependencies": { "@better-auth/core": "^1.6.22", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1" } }, "sha512-glq/oEk9qP+zGh9k/WUH5+pwvBCMolNNhaAVBCtYQrkADFee2gP3VoPs1YeO9coNuOmBhc+AYSIHs+fL9DoJnw=="], + "@repo/web/wrangler/miniflare": ["miniflare@5.20261001.0-alpha", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.35.4", "undici": "7.29.1", "workerd": "1.20261001.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" } }, "sha512-GaimS5mSIOMyvd16ga+e1/QkI8cmp3z35QPHFex0DktqNQf2RVZQwMPQXdyoUreUiFP/0Gpe2MoQInTyMAD5xA=="], - "@repo/lib/better-auth/@better-auth/utils": ["@better-auth/utils@0.4.2", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A=="], + "@repo/web/wrangler/workerd": ["workerd@1.20261001.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20261001.1", "@cloudflare/workerd-darwin-arm64": "1.20261001.1", "@cloudflare/workerd-linux-64": "1.20261001.1", "@cloudflare/workerd-linux-arm64": "1.20261001.1", "@cloudflare/workerd-windows-64": "1.20261001.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-d/SIYHFO0PT/wiFZg8in4NpRIxYuFwslX1HdylOtWkBIIUmSpkGFhK820cV84XACFylwJ48xuRoWW/8DWDPsPQ=="], - "@repo/lib/better-auth/@better-fetch/fetch": ["@better-fetch/fetch@1.3.1", "", {}, "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g=="], + "@rolldown/plugin-babel/vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], - "@repo/lib/better-auth/better-call": ["better-call@1.3.7", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w=="], - - "@repo/lib/better-auth/kysely": ["kysely@0.29.6", "", {}, "sha512-hHaB8C/rfzDDtr/t8YZwxAuPJTT0zHyaPoVzcXwDYhYNAgH/4sIfVhi/XLLIY+bL/FqaIJnjATDbi8ObSELmxg=="], - - "@repo/lib/better-auth/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@rolldown/plugin-babel/vite/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "@sap-cloud-sdk/util/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -5150,8 +5074,6 @@ "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.22", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-fFT1KfUUKktfAFm5mClJhS1oux9tP2qgzmEZVl5UdwltQ1LO/s8hd7znVrgKzivwv1s1FIPza0s9OpJaNB/vHw=="], - "@tailwindcss/postcss/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "@voltagent/core/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], "@voltagent/core/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], @@ -5180,6 +5102,8 @@ "@voltagent/core/@ai-sdk/provider-utils/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + "@voltagent/core/@modelcontextprotocol/sdk/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@voltagent/core/@modelcontextprotocol/sdk/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "@voltagent/core/@opentelemetry/exporter-logs-otlp-http/@opentelemetry/core": ["@opentelemetry/core@2.1.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ=="], @@ -5274,15 +5198,15 @@ "docs-test/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.19", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg=="], - "docs-test/@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + "docs-test/@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@4.0.21", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-UpbC9C1oht8dhfKPbVXSLRZS3DI8uk8n5v2uMjBPNIYGsC2kL045ywq7D8Hh9KgnH9rP5W/GxQdYtWScRouqlA=="], - "docs-test/@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.23", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg=="], + "docs-test/@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@5.0.53", "", { "dependencies": { "@ai-sdk/provider": "4.0.21", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8", "undici": "^7.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-VVe6UDd0y0/B4TfauuKKzcppqvhTmSluwwUVT4WG2/8h7gFbyFm7PM4UGM+ZXe3/RI6bv+Vl1cw/7aiBoQqdxg=="], - "docs-test/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.104", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA=="], + "docs-test/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.103", "", { "dependencies": { "@ai-sdk/provider": "4.0.21", "@ai-sdk/provider-utils": "5.0.53", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-nnGTUHzPRQ14jhv9CL4OQrzcRBIFTBMIPKGIi9Z9u/4GtwSRxa/nxUX6np2Iwp5phOzO0a0njj/j9Jolf5AEaA=="], - "docs-test/ai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.8", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ=="], + "docs-test/ai/@ai-sdk/provider": ["@ai-sdk/provider@4.0.21", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-UpbC9C1oht8dhfKPbVXSLRZS3DI8uk8n5v2uMjBPNIYGsC2kL045ywq7D8Hh9KgnH9rP5W/GxQdYtWScRouqlA=="], - "docs-test/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.23", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg=="], + "docs-test/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@5.0.53", "", { "dependencies": { "@ai-sdk/provider": "4.0.21", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8", "undici": "^7.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-VVe6UDd0y0/B4TfauuKKzcppqvhTmSluwwUVT4WG2/8h7gFbyFm7PM4UGM+ZXe3/RI6bv+Vl1cw/7aiBoQqdxg=="], "engine.io/accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], @@ -5290,46 +5214,6 @@ "enquirer/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "favicons/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], - - "favicons/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], - - "favicons/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], - - "favicons/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], - - "favicons/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], - - "favicons/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], - - "favicons/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], - - "favicons/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], - - "favicons/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], - - "favicons/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], - - "favicons/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], - - "favicons/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], - - "favicons/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], - - "favicons/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], - - "favicons/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], - - "favicons/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], - - "favicons/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], - - "favicons/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], - - "favicons/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - - "favicons/sharp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "find-process/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "find-process/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], @@ -5352,30 +5236,6 @@ "memory-graph-playground/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "memory-graph-playground/next/@next/env": ["@next/env@16.3.4", "", {}, "sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q=="], - - "memory-graph-playground/next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iBr3I5LZNk5/bgl5//iTgD2tcym14MX0Xo7fD//u9dYAEgGzza1y9oywluPtf74YnOswVdH1908aK9xVz7zQTw=="], - - "memory-graph-playground/next/@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-2dpiSyl2Jw/NrBPaU2MAKGSa+2MR82pJIn4Sm5Rjr+gxAeuh0z158Su3Z2O8zn7UNNq+ej4bToed6RcRN/Lydg=="], - - "memory-graph-playground/next/@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+t+U8HZT+fApePCS5h89CSH3datz29MkzyfCn+6fpsZBG/oiEOhINcb9rtkv6sdpToLGFn2e6146NzaKCXkqrA=="], - - "memory-graph-playground/next/@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-mx03GNs1ocQA5JQ4FxDMmIsNkdrZh8cuezKCrId28e5/gIPU/l7Kcy2+vmCCzdjnnmXJy+iOAu+7K0QppO6Urg=="], - - "memory-graph-playground/next/@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-YIhGY6fSMfha52bnVxnzc9zaVBzJg+cqQTOD8tXIBSx4fuv0pVMxQTE0PaS59YhnMOiYiG09IMwxJAf/CFm/Dw=="], - - "memory-graph-playground/next/@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+eaaX6axpDb0yF1GCpiERe6njplvdC+nks/fKfcHu3XPGRrald8P3/X7yv7QLdjA51knnxwl9pxdIJsg+w1L+Q=="], - - "memory-graph-playground/next/@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-0jcXW7Xs/uzICrmgV3MhDYDeRy++1CqnpDIerlPIqYO4bhzB4WNbX/aRnQclustsAyTkFKB0z6rbcjmNg5tR8A=="], - - "memory-graph-playground/next/@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-vvBzwu1pYQCp92maZCFCIw/XgOTMR5tur9GjakwIo2cmwRTMKajRZZDS9+e4KsUZWKu1E007WUeAFXRRjZeuzw=="], - - "memory-graph-playground/next/@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], - - "memory-graph-playground/next/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], - - "memory-graph-playground/next/sharp": ["sharp@0.35.4", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.4", "@img/sharp-darwin-x64": "0.35.4", "@img/sharp-freebsd-wasm32": "0.35.4", "@img/sharp-libvips-darwin-arm64": "1.3.3", "@img/sharp-libvips-darwin-x64": "1.3.3", "@img/sharp-libvips-linux-arm": "1.3.3", "@img/sharp-libvips-linux-arm64": "1.3.3", "@img/sharp-libvips-linux-ppc64": "1.3.3", "@img/sharp-libvips-linux-riscv64": "1.3.3", "@img/sharp-libvips-linux-s390x": "1.3.3", "@img/sharp-libvips-linux-x64": "1.3.3", "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", "@img/sharp-libvips-linuxmusl-x64": "1.3.3", "@img/sharp-linux-arm": "0.35.4", "@img/sharp-linux-arm64": "0.35.4", "@img/sharp-linux-ppc64": "0.35.4", "@img/sharp-linux-riscv64": "0.35.4", "@img/sharp-linux-s390x": "0.35.4", "@img/sharp-linux-x64": "0.35.4", "@img/sharp-linuxmusl-arm64": "0.35.4", "@img/sharp-linuxmusl-x64": "0.35.4", "@img/sharp-webcontainers-wasm32": "0.35.4", "@img/sharp-win32-arm64": "0.35.4", "@img/sharp-win32-ia32": "0.35.4", "@img/sharp-win32-x64": "0.35.4" } }, "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA=="], - "mimetext/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "next-mdx-remote-client/@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], @@ -5396,30 +5256,6 @@ "sdk-playground/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "sdk-playground/next/@next/env": ["@next/env@16.3.4", "", {}, "sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q=="], - - "sdk-playground/next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iBr3I5LZNk5/bgl5//iTgD2tcym14MX0Xo7fD//u9dYAEgGzza1y9oywluPtf74YnOswVdH1908aK9xVz7zQTw=="], - - "sdk-playground/next/@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-2dpiSyl2Jw/NrBPaU2MAKGSa+2MR82pJIn4Sm5Rjr+gxAeuh0z158Su3Z2O8zn7UNNq+ej4bToed6RcRN/Lydg=="], - - "sdk-playground/next/@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+t+U8HZT+fApePCS5h89CSH3datz29MkzyfCn+6fpsZBG/oiEOhINcb9rtkv6sdpToLGFn2e6146NzaKCXkqrA=="], - - "sdk-playground/next/@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-mx03GNs1ocQA5JQ4FxDMmIsNkdrZh8cuezKCrId28e5/gIPU/l7Kcy2+vmCCzdjnnmXJy+iOAu+7K0QppO6Urg=="], - - "sdk-playground/next/@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-YIhGY6fSMfha52bnVxnzc9zaVBzJg+cqQTOD8tXIBSx4fuv0pVMxQTE0PaS59YhnMOiYiG09IMwxJAf/CFm/Dw=="], - - "sdk-playground/next/@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+eaaX6axpDb0yF1GCpiERe6njplvdC+nks/fKfcHu3XPGRrald8P3/X7yv7QLdjA51knnxwl9pxdIJsg+w1L+Q=="], - - "sdk-playground/next/@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-0jcXW7Xs/uzICrmgV3MhDYDeRy++1CqnpDIerlPIqYO4bhzB4WNbX/aRnQclustsAyTkFKB0z6rbcjmNg5tR8A=="], - - "sdk-playground/next/@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-vvBzwu1pYQCp92maZCFCIw/XgOTMR5tur9GjakwIo2cmwRTMKajRZZDS9+e4KsUZWKu1E007WUeAFXRRjZeuzw=="], - - "sdk-playground/next/@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], - - "sdk-playground/next/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], - - "sdk-playground/next/sharp": ["sharp@0.35.4", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.4", "@img/sharp-darwin-x64": "0.35.4", "@img/sharp-freebsd-wasm32": "0.35.4", "@img/sharp-libvips-darwin-arm64": "1.3.3", "@img/sharp-libvips-darwin-x64": "1.3.3", "@img/sharp-libvips-linux-arm": "1.3.3", "@img/sharp-libvips-linux-arm64": "1.3.3", "@img/sharp-libvips-linux-ppc64": "1.3.3", "@img/sharp-libvips-linux-riscv64": "1.3.3", "@img/sharp-libvips-linux-s390x": "1.3.3", "@img/sharp-libvips-linux-x64": "1.3.3", "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", "@img/sharp-libvips-linuxmusl-x64": "1.3.3", "@img/sharp-linux-arm": "0.35.4", "@img/sharp-linux-arm64": "0.35.4", "@img/sharp-linux-ppc64": "0.35.4", "@img/sharp-linux-riscv64": "0.35.4", "@img/sharp-linux-s390x": "0.35.4", "@img/sharp-linux-x64": "0.35.4", "@img/sharp-linuxmusl-arm64": "0.35.4", "@img/sharp-linuxmusl-x64": "0.35.4", "@img/sharp-webcontainers-wasm32": "0.35.4", "@img/sharp-win32-arm64": "0.35.4", "@img/sharp-win32-ia32": "0.35.4", "@img/sharp-win32-x64": "0.35.4" } }, "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA=="], - "socket.io/accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], "socket.io/accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], @@ -5434,14 +5270,22 @@ "supermemory-mcp/@vitejs/plugin-react/react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], - "supermemory-mcp/vite/postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "supermemory-mcp/vite/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "supermemory-mcp/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "supermemory-mcp/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.2", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-JBP1+Z7ZSNG/d4mRP+y8VC5dka3tZVMLEZRvS+rzQ4DGV1EoxRFQckcJTTkXbHSQiTj0DtNI01Zwb/V2fX0mvQ=="], + + "supermemory-mcp/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "supermemory-mcp/wrangler/miniflare": ["miniflare@5.20261001.0-alpha", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.35.4", "undici": "7.29.1", "workerd": "1.20261001.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" } }, "sha512-GaimS5mSIOMyvd16ga+e1/QkI8cmp3z35QPHFex0DktqNQf2RVZQwMPQXdyoUreUiFP/0Gpe2MoQInTyMAD5xA=="], + + "supermemory-mcp/wrangler/workerd": ["workerd@1.20261001.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20261001.1", "@cloudflare/workerd-darwin-arm64": "1.20261001.1", "@cloudflare/workerd-linux-64": "1.20261001.1", "@cloudflare/workerd-linux-arm64": "1.20261001.1", "@cloudflare/workerd-windows-64": "1.20261001.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-d/SIYHFO0PT/wiFZg8in4NpRIxYuFwslX1HdylOtWkBIIUmSpkGFhK820cV84XACFylwJ48xuRoWW/8DWDPsPQ=="], "tailwindcss-v3/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "tailwindcss-v3/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "tailwindcss-v3/postcss/nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], - "tailwindcss-v3/sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], @@ -5496,6 +5340,10 @@ "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + "vite-node/vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], + + "vite-node/vite/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], @@ -5548,8 +5396,6 @@ "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], - "vite/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], "wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], @@ -5670,8 +5516,12 @@ "@base-ui/react/@floating-ui/react-dom/@floating-ui/dom/@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="], + "@cloudflare/ai-chat/agents/@modelcontextprotocol/sdk/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@cloudflare/ai-chat/agents/@modelcontextprotocol/sdk/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "@cloudflare/codemode/agents/@modelcontextprotocol/sdk/jose": ["jose@6.2.0", "", {}, "sha512-xsfE1TcSCbUdo6U07tR0mvhg0flGxU8tPLbF03mirl2ukGQENhUg4ubGYQnhVH0b5stLlPM+WOqDkEl1R1y5sQ=="], + "@cloudflare/codemode/agents/@modelcontextprotocol/sdk/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -5724,6 +5574,120 @@ "@opennextjs/cloudflare/glob/minimatch/brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="], + "@repo/web/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@repo/web/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@repo/web/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@repo/web/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@repo/web/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@repo/web/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@repo/web/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@repo/web/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@repo/web/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@repo/web/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@repo/web/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@repo/web/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@repo/web/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@repo/web/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@repo/web/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@repo/web/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20261001.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-4cgSgDf28JSw/P5Dj5GCS59hzVqS5XnmGAWNkvYHLI6ODU9idGaMMNEuhJXDkEG/lsABmlVlnCgsdh2VbKWepw=="], + + "@repo/web/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20261001.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8ulAWruEVouNmEIsQsy9WSSCS9zkLu93W2MTwp5esiFyoPp05BNSVFIFsYSPi1pkFmBBd7fsnwMpbLkaJLaVPQ=="], + + "@repo/web/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20261001.1", "", { "os": "linux", "cpu": "x64" }, "sha512-kZbTZJGrhsMOdqZ2BIybjaBRLZjYsRLWj7mcNw/6Y3hodOhp5MrNzcz4iWGwNVWwyIV+7Pl+/LX5VcgnRqdHOg=="], + + "@repo/web/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20261001.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-oOk3Zj6k/8oP0FJgZBWDn7+BqbsqIMEMaV95pulHPVbwVu4wYoLfQq2hp0vkbCNsCFLqZb7cqixXdrwD54ZIow=="], + + "@repo/web/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20261001.1", "", { "os": "win32", "cpu": "x64" }, "sha512-uRxm5W4VyBkoSaoP1BfOuH0873tE+vxsknF4sab6/5YIRvIAufChq3QDp+zlAn67PuGPGcn7W8QraA0t4ucmOQ=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], + + "@rolldown/plugin-babel/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + "@so-ric/colorspace/color/color-convert/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], "@so-ric/colorspace/color/color-string/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], @@ -5738,118 +5702,134 @@ "concurrently/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "docs-test/@ai-sdk/openai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.1.1", "", {}, "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ=="], + "docs-test/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], + "docs-test/ai/@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.1.1", "", {}, "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ=="], + "engine.io/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - "memory-graph-playground/next/postcss/nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], - - "memory-graph-playground/next/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA=="], - - "memory-graph-playground/next/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.3" }, "os": "darwin", "cpu": "x64" }, "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.3", "", { "os": "linux", "cpu": "none" }, "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw=="], - - "memory-graph-playground/next/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.3" }, "os": "linux", "cpu": "arm" }, "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.3" }, "os": "linux", "cpu": "none" }, "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.3" }, "os": "linux", "cpu": "s390x" }, "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ=="], - - "memory-graph-playground/next/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA=="], - - "memory-graph-playground/next/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA=="], - - "memory-graph-playground/next/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg=="], - - "memory-graph-playground/next/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw=="], - - "memory-graph-playground/next/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw=="], - - "memory-graph-playground/next/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.4", "", { "os": "win32", "cpu": "x64" }, "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg=="], - - "memory-graph-playground/next/sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - - "sdk-playground/next/postcss/nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], - - "sdk-playground/next/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA=="], - - "sdk-playground/next/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.3" }, "os": "darwin", "cpu": "x64" }, "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.3", "", { "os": "linux", "cpu": "none" }, "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw=="], - - "sdk-playground/next/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw=="], - - "sdk-playground/next/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.3" }, "os": "linux", "cpu": "arm" }, "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A=="], - - "sdk-playground/next/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ=="], - - "sdk-playground/next/sharp/@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ=="], - - "sdk-playground/next/sharp/@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.3" }, "os": "linux", "cpu": "none" }, "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA=="], - - "sdk-playground/next/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.3" }, "os": "linux", "cpu": "s390x" }, "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ=="], - - "sdk-playground/next/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA=="], - - "sdk-playground/next/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA=="], - - "sdk-playground/next/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg=="], - - "sdk-playground/next/sharp/@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw=="], - - "sdk-playground/next/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw=="], - - "sdk-playground/next/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.4", "", { "os": "win32", "cpu": "x64" }, "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg=="], - - "sdk-playground/next/sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - "socket.io/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "sucrase/glob/minimatch/brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="], - "supermemory-mcp/vite/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "supermemory-mcp/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "supermemory-mcp/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "supermemory-mcp/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20261001.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-4cgSgDf28JSw/P5Dj5GCS59hzVqS5XnmGAWNkvYHLI6ODU9idGaMMNEuhJXDkEG/lsABmlVlnCgsdh2VbKWepw=="], + + "supermemory-mcp/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20261001.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8ulAWruEVouNmEIsQsy9WSSCS9zkLu93W2MTwp5esiFyoPp05BNSVFIFsYSPi1pkFmBBd7fsnwMpbLkaJLaVPQ=="], + + "supermemory-mcp/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20261001.1", "", { "os": "linux", "cpu": "x64" }, "sha512-kZbTZJGrhsMOdqZ2BIybjaBRLZjYsRLWj7mcNw/6Y3hodOhp5MrNzcz4iWGwNVWwyIV+7Pl+/LX5VcgnRqdHOg=="], + + "supermemory-mcp/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20261001.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-oOk3Zj6k/8oP0FJgZBWDn7+BqbsqIMEMaV95pulHPVbwVu4wYoLfQq2hp0vkbCNsCFLqZb7cqixXdrwD54ZIow=="], + + "supermemory-mcp/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20261001.1", "", { "os": "win32", "cpu": "x64" }, "sha512-uRxm5W4VyBkoSaoP1BfOuH0873tE+vxsknF4sab6/5YIRvIAufChq3QDp+zlAn67PuGPGcn7W8QraA0t4ucmOQ=="], "tailwindcss-v3/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "vite-node/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], + + "vite-node/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], + + "vite-node/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], + + "vite-node/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], + + "vite-node/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], + + "vite-node/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], + + "vite-node/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], + + "vite-node/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], + + "vite-node/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], + + "vite-node/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], + + "vite-node/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], + + "vite-node/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], + + "vite-node/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], + + "vite-node/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], + + "vite-node/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], + + "vite-node/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], + + "vite-node/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], + + "vite-node/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], + + "vite-node/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], + + "vite-node/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], + + "vite-node/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], + + "vite-node/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], + + "vite-node/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], + + "vite-node/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], + + "vite-node/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], + + "vite-node/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + "@a2a-js/sdk/express/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "@a2a-js/sdk/express/body-parser/http-errors/statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], diff --git a/package.json b/package.json index bceb3748..9e77271a 100644 --- a/package.json +++ b/package.json @@ -35,17 +35,17 @@ "ai": "^5.0.59", "alchemy": "^0.81.4", "atmn": "^0.0.16", - "better-auth": "^1.3.3", + "better-auth": "1.7.6", "boxen": "^8.0.1", "cloudflare": "^4.5.0", "compromise": "^14.14.4", "dedent": "^1.6.0", "destr": "^2.0.5", - "drizzle-orm": "^0.44.3", + "drizzle-orm": "0.45.2", "drizzle-zod": "~0.7.1", "file-type": "^21.0.0", "hono-openapi": "^0.4.8", - "nanoid": "^5.1.5", + "nanoid": "^5.1.16", "neverthrow": "^8.2.0", "pg": "^8.16.3", "pino": "^9.7.0", @@ -66,8 +66,30 @@ "wrangler": "^4.42.2" }, "overrides": { + "@xmldom/xmldom": "0.8.15", "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3" + "@types/react-dom": "^19.2.3", + "adm-zip": "0.6.1", + "axios": "1.20.0", + "basic-ftp": "6.2.1", + "browserslist": "4.28.7", + "defu": "6.1.5", + "engine.io": "6.6.11", + "fast-uri": "3.1.8", + "fast-xml-builder": "1.3.1", + "fast-xml-parser": "5.7.3", + "form-data": "4.0.6", + "hono": "4.13.12", + "ip-address": "10.7.3", + "jsondiffpatch": "0.7.6", + "lodash": "4.18.1", + "node-forge": "1.4.0", + "postcss": "8.5.23", + "protobufjs": "7.6.6", + "sharp": "0.35.4", + "socket.io-parser": "4.2.7", + "undici": "7.29.1", + "ws": "8.21.3" }, "workerd": { "import": "./esm/index.mjs", diff --git a/packages/ai-sdk/package.json b/packages/ai-sdk/package.json index 1d43283c..c78cf398 100644 --- a/packages/ai-sdk/package.json +++ b/packages/ai-sdk/package.json @@ -22,7 +22,7 @@ "@types/bun": "^1.2.21", "tsdown": "^0.14.2", "typescript": "^5.9.2", - "vitest": "^3.2.4" + "vitest": "3.2.6" }, "files": [ "dist" diff --git a/packages/lib/auth.ts b/packages/lib/auth.ts index ff954f75..205ea201 100644 --- a/packages/lib/auth.ts +++ b/packages/lib/auth.ts @@ -3,7 +3,6 @@ import { adminClient, anonymousClient, emailOTPClient, - genericOAuthClient, magicLinkClient, organizationClient, usernameClient, @@ -20,7 +19,6 @@ export const authClient = createAuthClient({ usernameClient(), magicLinkClient(), emailOTPClient(), - genericOAuthClient(), apiKeyClient(), adminClient(), organizationClient(), diff --git a/packages/lib/package.json b/packages/lib/package.json index b0938c39..b4fc310b 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -13,12 +13,12 @@ "@ai-sdk/anthropic": "^1.2.12", "@ai-sdk/google": "^1.2.22", "@ai-sdk/groq": "^1.2.9", - "@better-auth/api-key": "1.6.22", + "@better-auth/api-key": "1.7.6", "@better-fetch/fetch": "^1.1.18", "@tanstack/react-query": "^5.90.14", "@tanstack/react-query-devtools": "^5.84.2", "ai-gateway-provider": "^0.0.11", - "better-auth": "1.6.22", + "better-auth": "1.7.6", "clsx": "^2.1.1", "posthog-js": "^1.336.0", "sonner": "^2.0.5", diff --git a/packages/memory-graph/package.json b/packages/memory-graph/package.json index d6400257..33bc0091 100644 --- a/packages/memory-graph/package.json +++ b/packages/memory-graph/package.json @@ -60,7 +60,7 @@ "@vitejs/plugin-react": "^5.1.0", "happy-dom": "^20.9.0", "typescript": "^5.9.3", - "vite": "^7.2.1", - "vitest": "^3.2.4" + "vite": "7.3.5", + "vitest": "3.2.6" } } diff --git a/packages/tools/package.json b/packages/tools/package.json index 05f6b6f2..5c6b4086 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -30,7 +30,7 @@ "dotenv": "^16.6.1", "tsdown": "^0.14.2", "typescript": "^5.9.2", - "vitest": "^3.2.4" + "vitest": "3.2.6" }, "peerDependencies": { "@ai-sdk/provider": "^2.0.0 || ^3.0.0", From 7cc19fa34683a4fe74166ee5d794d271a21b5a92 Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Sat, 3 Oct 2026 21:10:09 -0700 Subject: [PATCH 7/7] docs: disclose current self-hosted security and telemetry behavior (#1711) --- README.md | 2 +- apps/docs/self-hosting/configuration.mdx | 9 ++++----- apps/docs/self-hosting/local-vs-enterprise.mdx | 2 +- apps/docs/self-hosting/overview.mdx | 6 +++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e7b92744..6c2daacc 100644 --- a/README.md +++ b/README.md @@ -336,7 +336,7 @@ const client = new Supermemory({ - **Bring any model** — OpenAI, Anthropic, Gemini, Groq, or any OpenAI-compatible endpoint. An interactive wizard walks you through it on first boot. - **Embeddings** — local `Xenova/bge-base-en-v1.5` by default (no API key); optionally OpenAI, Gemini, or Ollama. Same provider stack as cloud. -- **Fully offline if you want** — point it at Ollama (`gpt-oss:20b` works great) and nothing leaves your machine. +- **Offline text memories if you want** — point it at Ollama (`gpt-oss:20b` works great), disable telemetry with `SUPERMEMORY_DISABLE_TELEMETRY=1`, and use local text or file inputs after the first embedding-model download. URL ingestion uses a hosted reader service. - **Your data, one directory** — everything lives in `./.supermemory`, easy to back up or move. - **Same API as the platform** — prototype locally, ship on the hosted platform by changing `baseURL`. diff --git a/apps/docs/self-hosting/configuration.mdx b/apps/docs/self-hosting/configuration.mdx index f9d0e1ff..3a12164b 100644 --- a/apps/docs/self-hosting/configuration.mdx +++ b/apps/docs/self-hosting/configuration.mdx @@ -14,8 +14,11 @@ The installer writes API keys to `~/.supermemory/env`, which is loaded on every | Variable | Purpose | Default | |---|---|---| | `PORT` (or `SUPERMEMORY_PORT`) | HTTP listen port | `6767` | +| `SUPERMEMORY_HOST` | In the next release, controls the listen address; not supported by v0.0.8 | `127.0.0.1` in the next release | | `SUPERMEMORY_DATA_DIR` | Where the graph engine's data, auth secret, and model cache live | `./.supermemory` | +**The currently published v0.0.8 binds all interfaces and its implicit local authentication is unsafe when exposed to untrusted networks. Do not expose it; restrict access with a firewall or run it on an isolated machine.** The next release will bind loopback and require the generated key for every API request, including requests from localhost. Its browser welcome page will no longer reveal the key; enter the key printed at first boot in the Memory tab. If you later expose that release through a reverse proxy, protect the endpoint with TLS and access controls. + ## LLM providers In production, Supermemory uses its own proprietary models tuned for long-horizon data understanding. Self-hosted, you bring your own LLM for the intelligent steps — summaries, contextual chunking, and memory extraction. Embeddings default to a local model (no API key) and can optionally use OpenAI, Gemini, or Ollama — see [Embeddings](/self-hosting/embeddings). Configure **at least one** LLM provider: @@ -118,11 +121,7 @@ Raise the limit and concurrency on machines with spare RAM for faster bulk impor ## Telemetry -The self-hosted binary sends no analytics — there is nothing to opt out of. The only related switch: - -| Variable | Purpose | Default | -|---|---|---| -| `SUPERMEMORY_DISABLE_TELEMETRY` | Set to `1` to also disable internal AI SDK telemetry instrumentation | unset | +Supermemory collects telemetry. You can disable it with `SUPERMEMORY_DISABLE_TELEMETRY=1`. ## Platform-only features diff --git a/apps/docs/self-hosting/local-vs-enterprise.mdx b/apps/docs/self-hosting/local-vs-enterprise.mdx index 8325b17c..59aa7f93 100644 --- a/apps/docs/self-hosting/local-vs-enterprise.mdx +++ b/apps/docs/self-hosting/local-vs-enterprise.mdx @@ -5,7 +5,7 @@ description: "Supermemory local is for builders. Supermemory Enterprise is for o icon: "/icons/hugeicons/building-03.svg" --- -Supermemory local — the self-hosted binary — is free, open source, and built for individual developers: local-first workflows, prototyping, air-gapped experiments, privacy-sensitive side projects. +Supermemory local — the self-hosted binary — is free within its lite license limit and built for individual developers: local-first workflows, prototyping, and privacy-sensitive side projects. Its server source is not in the public repository. Text-memory processing can run offline after the first embedding-model download; URL ingestion uses a hosted reader service. **Supermemory Enterprise** is the full platform, run for your organization: the same memory engine with proprietary models, organizational controls, and infrastructure that scales with you — without you operating any of it. diff --git a/apps/docs/self-hosting/overview.mdx b/apps/docs/self-hosting/overview.mdx index 4dea776a..23a854a7 100644 --- a/apps/docs/self-hosting/overview.mdx +++ b/apps/docs/self-hosting/overview.mdx @@ -17,7 +17,7 @@ npx supermemory local ``` -No Docker. No database to provision. No config files. It boots in seconds with everything built in, and it's [open source](https://git.new/memory). +No Docker. No database to provision. No config files. It boots in seconds with everything built in. The SDKs and other components in the [public repository](https://git.new/memory) are open source; the downloadable self-hosted server binary is built from a separate, non-public codebase. ## Zero config, actually @@ -41,7 +41,7 @@ OPENAI_MODEL=gpt-oss:20b \ supermemory-server ``` -Local graph engine, local embeddings, local LLM. Your data never leaves the building. +Local graph engine, local embeddings, local LLM. Text-memory processing can stay on your machine after the embedding model's first download. Supermemory collects telemetry; you can disable it with `SUPERMEMORY_DISABLE_TELEMETRY=1`. URL ingestion uses a hosted reader service; use local text or file inputs for offline operation. ## Drop-in with your existing code @@ -58,7 +58,7 @@ Everything in the [Memory API docs](/quickstart) works the same way. The coding ## Self-hosted vs. the platform -Self-hosted is free, open source, and great for local development, air-gapped environments, and privacy-sensitive workloads. The hosted platform is where the full product lives: +Self-hosted is free within its lite license limit and useful for local development and privacy-sensitive workloads. The server binary is not open source; the hosted platform is where the full product lives: | | Self-hosted | Platform | |---|---|---|