mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 01:15:03 +03:00
chore(studio): upgrade AI SDK to v7 (#49167)
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Chore / dependency upgrade. ## What is the current behavior? Studio is on AI SDK 6 (`ai` ^6.0.174, `@ai-sdk/react` ^3). Tool approvals still use the v6 `needsApproval` flag on individual tools. ## What is the new behavior? Upgrades Studio to AI SDK 7 (`ai` 7.0.59) and the matching `@ai-sdk/*` packages. Aligns call sites with v7 names (`instructions`, `isStepCount`, `onEnd`, `ToolExecutionOptions`). This is the bottom of stack #49171. Later layers add a shared Confirm card and AssistantQueryCell. ## Additional context - Stack: #49167 → #49168 → #49169 → #49170 - `needsApproval` on tools is left as-is in this PR so the upgrade can land independently. A follow-up can move those gates to `streamText({ toolApproval })` and `experimental_toolApprovalSecret`. - Independent of the notebook preview stack ([#49112](https://github.com/supabase/supabase/pull/49112), [#49159](https://github.com/supabase/supabase/pull/49159)), which should merge first before we wrap notebook proposals in Confirm. ## Test plan - [ ] `pnpm --filter studio test` for `lib/ai/tools/*` and assistant generate path - [ ] Assistant chat still streams and tool-approval SQL / Edge Function still pause for confirm - [ ] Evals still run with mock tools (`needsApproval: false` overrides) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Improvements** * Updated AI-powered chat, onboarding, SQL, code completion, and recipe generation workflows for more reliable responses. * Streaming responses now better preserve reasoning and source information where available. * Improved tool privacy notices while preserving dynamically generated tool descriptions. * Refined AI response handling, including step limits and structured policy results. * **Bug Fixes** * Improved compatibility across AI-powered tool interactions and execution scenarios. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
1 parent
81507e37bb
commit
c80f8ad78d
16 files changed
+291
-266
No files matched your search
@@ -146,7 +146,12 @@ app.listen(8000);`,
|
||||
import "jsr:@supabase/functions-js/edge-runtime.d.ts";
|
||||
import { withSupabase } from "jsr:@supabase/server@^1";
|
||||
import { createOpenAI } from "npm:@ai-sdk/openai";
|
||||
import { convertToModelMessages, streamText } from "npm:ai";
|
||||
import {
|
||||
convertToModelMessages,
|
||||
createUIMessageStreamResponse,
|
||||
streamText,
|
||||
toUIMessageStream,
|
||||
} from "npm:ai";
|
||||
|
||||
const cors = {
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
@@ -186,13 +191,16 @@ export default {
|
||||
const result = streamText({
|
||||
model,
|
||||
messages: normalizedMessages,
|
||||
system: SYSTEM_PROMPT,
|
||||
instructions: SYSTEM_PROMPT,
|
||||
});
|
||||
|
||||
return result.toUIMessageStreamResponse({
|
||||
const stream = toUIMessageStream({
|
||||
stream: result.stream,
|
||||
sendReasoning: true,
|
||||
sendSources: true,
|
||||
});
|
||||
|
||||
return createUIMessageStreamResponse({ stream });
|
||||
} catch (err) {
|
||||
if (err instanceof ClientError) {
|
||||
return Response.json({ error: err.message }, { status: 400 });
|
||||
@@ -268,7 +276,7 @@ export default {
|
||||
|
||||
const result = await generateText({
|
||||
model,
|
||||
system: SYSTEM_PROMPT,
|
||||
instructions: SYSTEM_PROMPT,
|
||||
prompt,
|
||||
output: Output.object({
|
||||
schema: RecipeSchema,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import * as ai from 'ai'
|
||||
import {
|
||||
convertToModelMessages,
|
||||
isStepCount,
|
||||
isToolUIPart,
|
||||
stepCountIs,
|
||||
type LanguageModel,
|
||||
type ModelMessage,
|
||||
type SystemModelMessage,
|
||||
@@ -153,14 +153,14 @@ export async function generateAssistantResponse({
|
||||
|
||||
return streamTextFn({
|
||||
model,
|
||||
system: systemMessage,
|
||||
stopWhen: stepCountIs(10),
|
||||
instructions: systemMessage,
|
||||
stopWhen: isStepCount(10),
|
||||
messages: coreMessages,
|
||||
...(providerOptions && { providerOptions }),
|
||||
tools,
|
||||
...(abortSignal && { abortSignal }),
|
||||
...(span && {
|
||||
onFinish: ({ steps, finishReason }) => {
|
||||
onEnd: ({ steps, finishReason }) => {
|
||||
const metadata: Record<string, unknown> = {
|
||||
isFinalStep: finishReason === 'stop',
|
||||
}
|
||||
@@ -180,7 +180,7 @@ export async function generateAssistantResponse({
|
||||
}
|
||||
|
||||
if (shouldTrace) {
|
||||
// startSpan instead of traced() so we control when the span closes via onFinish.
|
||||
// startSpan instead of traced() so we control when the span closes via onEnd.
|
||||
// Scorers read from child spans (LLM + tool) in the trace rather than a root span output field.
|
||||
const span = startSpan({ name: 'generateAssistantResponse', type: 'function' })
|
||||
onSpanCreated?.(span.id)
|
||||
|
||||
@@ -42,7 +42,8 @@ describe('tool allowance by opt-in level', () => {
|
||||
|
||||
Object.entries(filtered).forEach(([toolName, tool]) => {
|
||||
// Check if tool is actually allowed (not stubbed)
|
||||
const isStubbed = tool.description?.includes('Requires opting in')
|
||||
const isStubbed =
|
||||
typeof tool.description === 'string' && tool.description.includes('Requires opting in')
|
||||
if (!isStubbed) {
|
||||
allowedTools.push(toolName)
|
||||
}
|
||||
|
||||
@@ -163,10 +163,16 @@ export function createPrivacyMessageTool(toolInstance: Tool<any, any>) {
|
||||
"You don't have permission to use this tool. This is an organization-wide setting requiring you to opt-in. Please choose your preferred data sharing level in your organization's settings. Supabase Assistant uses Amazon Bedrock, which does not store or log your prompts and completions, use them to train AWS models, or distribute them to third parties. By default, no data is shared. Granting permission allows Supabase to send information (like schema, logs, or data, depending on your chosen level) to Bedrock solely to generate responses."
|
||||
const condensedPrivacyMessage =
|
||||
'Requires opting in to sending data to Bedrock which does not store, train on, or distribute it. You can opt in via organization settings.'
|
||||
const toolDescription = toolInstance.description
|
||||
const description =
|
||||
typeof toolDescription === 'function'
|
||||
? (...args: Parameters<typeof toolDescription>) =>
|
||||
`${toolDescription(...args)} (Note: ${condensedPrivacyMessage})`
|
||||
: `${toolDescription ?? ''} (Note: ${condensedPrivacyMessage})`
|
||||
|
||||
return {
|
||||
...toolInstance,
|
||||
description: `${toolInstance.description} (Note: ${condensedPrivacyMessage})`,
|
||||
description,
|
||||
execute: async (_args: any, _context: any) => ({ status: privacyMessage }),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,10 @@ describe('ai/tools/incident-tools', () => {
|
||||
|
||||
const tools = getIncidentTools({ baseUrl: 'https://example.com/dashboard' })
|
||||
if (!tools.get_active_incidents.execute) throw new Error('execute is undefined')
|
||||
await tools.get_active_incidents.execute({}, { toolCallId: 'test', messages: [] })
|
||||
await tools.get_active_incidents.execute(
|
||||
{},
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(mockFetch).toHaveBeenCalledWith(
|
||||
'https://example.com/dashboard/api/incident-status',
|
||||
@@ -210,7 +213,10 @@ describe('ai/tools/incident-tools', () => {
|
||||
|
||||
const tools = getIncidentTools({ baseUrl: 'https://supabase.com/dashboard' })
|
||||
if (!tools.get_active_incidents.execute) throw new Error('execute is undefined')
|
||||
await tools.get_active_incidents.execute({}, { toolCallId: 'test', messages: [] })
|
||||
await tools.get_active_incidents.execute(
|
||||
{},
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
const callArgs = mockFetch.mock.calls[0]
|
||||
expect(callArgs[1].signal).toBeInstanceOf(AbortSignal)
|
||||
|
||||
@@ -74,7 +74,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const result = await mockTools.list_notebooks.execute(
|
||||
{ limit: 20 },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(result.notebooks.map((notebook) => notebook.name)).toEqual([
|
||||
@@ -92,7 +92,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const result = await mockTools.get_notebook.execute(
|
||||
{ id: AUTH_HEALTH_NOTEBOOK_ID },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(result.cells.map((cell) => cell._tag)).toEqual([
|
||||
@@ -112,7 +112,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
await expect(
|
||||
mockTools.get_notebook.execute(
|
||||
{ id: 'unknown-notebook-id' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow(/not found/i)
|
||||
})
|
||||
@@ -140,20 +140,20 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const created = await mockTools.create_notebook.execute(
|
||||
{ name: 'New notebook', content },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(created).toEqual({ id: expect.any(String), name: 'New notebook' })
|
||||
|
||||
const fetched = await mockTools.get_notebook.execute(
|
||||
{ id: created.id },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(fetched.cells).toHaveLength(2)
|
||||
expect(fetched.cells.every((cell) => typeof cell.id === 'string')).toBe(true)
|
||||
|
||||
const listed = await mockTools.list_notebooks.execute(
|
||||
{ limit: 20 },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(listed.notebooks).toHaveLength(3)
|
||||
const newEntry = listed.notebooks.find((notebook) => notebook.id === created.id)
|
||||
@@ -175,7 +175,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const before = await mockTools.get_notebook.execute(
|
||||
{ id: AUTH_HEALTH_NOTEBOOK_ID },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
const [markdownCell, , logCell] = before.cells
|
||||
|
||||
@@ -192,13 +192,13 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
{ _tag: 'delete_cell', cell_id: logCell.id },
|
||||
],
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(result).toEqual({ id: AUTH_HEALTH_NOTEBOOK_ID, name: 'Auth health check' })
|
||||
|
||||
const after = await mockTools.get_notebook.execute(
|
||||
{ id: AUTH_HEALTH_NOTEBOOK_ID },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(after.cells.map((cell) => cell._tag)).toEqual([
|
||||
'markdown_cell',
|
||||
@@ -208,7 +208,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const listed = await mockTools.list_notebooks.execute(
|
||||
{ limit: 20 },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
const entry = listed.notebooks.find((notebook) => notebook.id === AUTH_HEALTH_NOTEBOOK_ID)
|
||||
expect(entry?.cell_count).toBe(3)
|
||||
@@ -221,7 +221,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const before = await mockTools.get_notebook.execute(
|
||||
{ id: EDGE_FUNCTION_NOTEBOOK_ID },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
await expect(
|
||||
@@ -231,13 +231,13 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
expected_updated_at: before.updated_at,
|
||||
operations: [{ _tag: 'delete_cell', cell_id: 'does-not-exist' }],
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow(/does-not-exist/)
|
||||
|
||||
const after = await mockTools.get_notebook.execute(
|
||||
{ id: EDGE_FUNCTION_NOTEBOOK_ID },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(after.cells.map((cell) => cell._tag)).toEqual(['markdown_cell', 'log_cell'])
|
||||
})
|
||||
@@ -251,7 +251,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
name: 'Ephemeral notebook',
|
||||
content: { schema_version: 1, cells: [{ _tag: 'markdown_cell', text: 'hi' }] },
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
const secondCall = await getMockTools(undefined, new AbortController().signal)
|
||||
@@ -259,7 +259,7 @@ describe('ai/tools/mock-tools getMockTools', () => {
|
||||
|
||||
const result = await secondCall.list_notebooks.execute(
|
||||
{ limit: 20 },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(result.notebooks.map((notebook) => notebook.name)).toEqual([
|
||||
'Auth health check',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import assert from 'node:assert'
|
||||
import { tool, type ToolCallOptions, type ToolSet } from 'ai'
|
||||
import { tool, type ToolExecutionOptions, type ToolSet } from 'ai'
|
||||
import { z } from 'zod'
|
||||
|
||||
import { getStudioTools } from '../tools/studio-tools'
|
||||
@@ -423,7 +423,7 @@ function createMockNotebookTools(store: MockNotebookStore) {
|
||||
...list_notebooks,
|
||||
execute: async (
|
||||
{ limit = 20 }: { cursor?: string; limit?: number },
|
||||
_options: ToolCallOptions
|
||||
_options: ToolExecutionOptions<unknown>
|
||||
) => ({
|
||||
notebooks: store
|
||||
.list()
|
||||
@@ -442,7 +442,7 @@ function createMockNotebookTools(store: MockNotebookStore) {
|
||||
},
|
||||
get_notebook: {
|
||||
...get_notebook,
|
||||
execute: async ({ id }: { id: string }, _options: ToolCallOptions) => {
|
||||
execute: async ({ id }: { id: string }, _options: ToolExecutionOptions<unknown>) => {
|
||||
const notebook = store.get(id)
|
||||
if (!notebook) throw new Error(`Notebook ${id} not found.`)
|
||||
|
||||
@@ -475,7 +475,7 @@ function createMockNotebookTools(store: MockNotebookStore) {
|
||||
description?: string
|
||||
content: AgentNotebook
|
||||
},
|
||||
_options: ToolCallOptions
|
||||
_options: ToolExecutionOptions<unknown>
|
||||
) => {
|
||||
const created = store.create({ name, description, content })
|
||||
return { id: created.id, name: created.name }
|
||||
@@ -493,7 +493,7 @@ function createMockNotebookTools(store: MockNotebookStore) {
|
||||
id,
|
||||
operations,
|
||||
}: { id: string; expected_updated_at: string; operations: NotebookOperation[] },
|
||||
_options: ToolCallOptions
|
||||
_options: ToolExecutionOptions<unknown>
|
||||
) => {
|
||||
const notebook = store.get(id)
|
||||
if (!notebook) throw new Error(`Notebook ${id} not found.`)
|
||||
|
||||
@@ -114,7 +114,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
|
||||
const result = await tools.list_notebooks.execute(
|
||||
{ limit: 20, cursor: 'prev-page' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(capturedRequest?.headers.get('authorization')).toBe('Bearer token')
|
||||
@@ -159,7 +159,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
|
||||
await tools.list_notebooks.execute(
|
||||
{ limit: 1, sort_by: 'inserted_at' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
const url = new URL(capturedRequest!.url)
|
||||
@@ -194,7 +194,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
|
||||
const result = await tools.get_notebook.execute(
|
||||
{ id: 'notebook-1' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(result).toEqual({
|
||||
@@ -248,7 +248,10 @@ describe('ai/tools/notebook-tools', () => {
|
||||
if (!tools.get_notebook.execute) throw new Error('execute is undefined')
|
||||
|
||||
await expect(
|
||||
tools.get_notebook.execute({ id: 'snippet-1' }, { toolCallId: 'test', messages: [] })
|
||||
tools.get_notebook.execute(
|
||||
{ id: 'snippet-1' },
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow('is not a notebook')
|
||||
})
|
||||
|
||||
@@ -263,7 +266,10 @@ describe('ai/tools/notebook-tools', () => {
|
||||
if (!tools.get_notebook.execute) throw new Error('execute is undefined')
|
||||
|
||||
await expect(
|
||||
tools.get_notebook.execute({ id: 'missing' }, { toolCallId: 'test', messages: [] })
|
||||
tools.get_notebook.execute(
|
||||
{ id: 'missing' },
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow()
|
||||
})
|
||||
})
|
||||
@@ -317,7 +323,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
|
||||
await tools.create_notebook.execute(
|
||||
{ name: 'Signup funnel', content: VALID_AGENT_CONTENT },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(sentBody?.type).toBe('notebook')
|
||||
@@ -351,7 +357,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
|
||||
const result = await tools.create_notebook.execute(
|
||||
{ name: 'Signup funnel', content: VALID_AGENT_CONTENT },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(typeof sentBody?.id).toBe('string')
|
||||
@@ -410,7 +416,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(sentBody?.id).toBe('notebook-1')
|
||||
@@ -439,7 +445,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
expected_updated_at: '2026-01-01T00:00:00.000Z',
|
||||
operations: [{ _tag: 'delete_cell', cell_id: 'missing-cell' }],
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow('No cell with id "missing-cell"')
|
||||
})
|
||||
@@ -457,7 +463,7 @@ describe('ai/tools/notebook-tools', () => {
|
||||
expected_updated_at: '2025-12-31T00:00:00.000Z',
|
||||
operations: [{ _tag: 'delete_cell', cell_id: 'cell-3' }],
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow(/changed since expected_updated_at/)
|
||||
})
|
||||
|
||||
@@ -66,7 +66,7 @@ describe('ai/tools/report-tools', () => {
|
||||
|
||||
const result = await tools.list_reports.execute(
|
||||
{ limit: 20 },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(capturedRequest?.headers.get('authorization')).toBe('Bearer token')
|
||||
@@ -169,7 +169,7 @@ describe('ai/tools/report-tools', () => {
|
||||
|
||||
const result = (await tools.get_report.execute(
|
||||
{ id: 'report-1' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)) as { layout: Array<{ id: string; attribute: string; sql?: string }> }
|
||||
|
||||
expect(result.layout).toEqual([
|
||||
@@ -208,7 +208,10 @@ describe('ai/tools/report-tools', () => {
|
||||
if (!tools.get_report.execute) throw new Error('execute is undefined')
|
||||
|
||||
await expect(
|
||||
tools.get_report.execute({ id: 'snippet-1' }, { toolCallId: 'test', messages: [] })
|
||||
tools.get_report.execute(
|
||||
{ id: 'snippet-1' },
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
).rejects.toThrow('is not a report')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -89,7 +89,7 @@ describe('ai/tools/studio-tools', () => {
|
||||
if (!renameTool.execute) throw new Error('execute is undefined')
|
||||
const result = await renameTool.execute(
|
||||
{ newName: 'Test Chat' },
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
expect(result).toEqual({ status: 'Chat request sent to client' })
|
||||
})
|
||||
@@ -154,7 +154,7 @@ describe('ai/tools/studio-tools', () => {
|
||||
chartConfig: { view: 'table' },
|
||||
isWriteQuery: false,
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(executeSql).toHaveBeenCalledWith(
|
||||
@@ -191,7 +191,7 @@ describe('ai/tools/studio-tools', () => {
|
||||
chartConfig: { view: 'table' },
|
||||
isWriteQuery: false,
|
||||
},
|
||||
{ toolCallId: 'test', messages: [] }
|
||||
{ toolCallId: 'test', messages: [], context: {} }
|
||||
)
|
||||
|
||||
expect(executeSql).toHaveBeenCalledWith(
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
"scorers:deploy": "IS_BRAINTRUST_PUSH=true braintrust push evals/scorer-online.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/amazon-bedrock": "^4.0.81",
|
||||
"@ai-sdk/mcp": "^1.0.25",
|
||||
"@ai-sdk/openai": "^3.0.41",
|
||||
"@ai-sdk/provider": "^3.0.8",
|
||||
"@ai-sdk/provider-utils": "^4.0.19",
|
||||
"@ai-sdk/react": "^3.0.118",
|
||||
"@ai-sdk/amazon-bedrock": "5.0.55",
|
||||
"@ai-sdk/mcp": "2.0.31",
|
||||
"@ai-sdk/openai": "4.0.41",
|
||||
"@ai-sdk/provider": "4.0.7",
|
||||
"@ai-sdk/provider-utils": "5.0.26",
|
||||
"@ai-sdk/react": "4.0.62",
|
||||
"@aws-sdk/credential-providers": "^3.1041.0",
|
||||
"@configcat/sdk": "^1.1.0",
|
||||
"@dagrejs/dagre": "^1.0.4",
|
||||
@@ -92,7 +92,7 @@
|
||||
"@vercel/functions": "^2.1.0",
|
||||
"@xyflow/react": "^12.10.1",
|
||||
"@zip.js/zip.js": "^2.7.29",
|
||||
"ai": "^6.0.174",
|
||||
"ai": "7.0.59",
|
||||
"ai-commands": "workspace:*",
|
||||
"awesome-debounce-promise": "^2.1.0",
|
||||
"braintrust": "^3.9.0",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pgMeta, { getEntityDefinitionsSql } from '@supabase/pg-meta'
|
||||
import { generateText, ModelMessage, stepCountIs, tool } from 'ai'
|
||||
import { generateText, isStepCount, ModelMessage, tool } from 'ai'
|
||||
import { IS_PLATFORM } from 'common'
|
||||
import { source } from 'common-tags'
|
||||
import { NextApiRequest, NextApiResponse } from 'next'
|
||||
@@ -288,11 +288,6 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
// Note: these must be of type `CoreMessage` to prevent AI SDK from stripping `providerOptions`
|
||||
// https://github.com/vercel/ai/blob/81ef2511311e8af34d75e37fc8204a82e775e8c3/packages/ai/core/prompt/standardize-prompt.ts#L83-L88
|
||||
const coreMessages: ModelMessage[] = [
|
||||
{
|
||||
role: 'system',
|
||||
content: system,
|
||||
...(systemProviderOptions && { providerOptions: systemProviderOptions }),
|
||||
},
|
||||
{
|
||||
role: 'user',
|
||||
content: userMessage,
|
||||
@@ -301,7 +296,12 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
|
||||
const { text } = await generateText({
|
||||
...modelParams,
|
||||
stopWhen: stepCountIs(5),
|
||||
instructions: {
|
||||
role: 'system',
|
||||
content: system,
|
||||
...(systemProviderOptions && { providerOptions: systemProviderOptions }),
|
||||
},
|
||||
stopWhen: isStepCount(5),
|
||||
messages: coreMessages,
|
||||
tools:
|
||||
includeSchema && !schemaListResult.error
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { streamText, tool } from 'ai'
|
||||
import { pipeUIMessageStreamToResponse, streamText, tool, toUIMessageStream } from 'ai'
|
||||
import { source } from 'common-tags'
|
||||
import { NextApiRequest, NextApiResponse } from 'next'
|
||||
import { z } from 'zod'
|
||||
@@ -78,7 +78,7 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) {
|
||||
|
||||
const result = streamText({
|
||||
...modelParams,
|
||||
system: source`
|
||||
instructions: source`
|
||||
You are a Supabase expert who helps people set up their Supabase project. You specializes in database schema design. You are to help the user design a database schema for their application but also suggest Supabase services they should use.
|
||||
|
||||
When designing database schemas, follow these rules:
|
||||
@@ -103,5 +103,10 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) {
|
||||
tools: getTools(),
|
||||
})
|
||||
|
||||
result.pipeUIMessageStreamToResponse(res, { headers: { 'Content-Encoding': 'none' } })
|
||||
const stream = toUIMessageStream({ stream: result.stream })
|
||||
pipeUIMessageStreamToResponse({
|
||||
response: res,
|
||||
stream,
|
||||
headers: { 'Content-Encoding': 'none' },
|
||||
})
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import pgMeta from '@supabase/pg-meta'
|
||||
import type { JwtPayload } from '@supabase/supabase-js'
|
||||
import { safeValidateUIMessages } from 'ai'
|
||||
import { pipeUIMessageStreamToResponse, safeValidateUIMessages, toUIMessageStream } from 'ai'
|
||||
import { IS_PLATFORM } from 'common'
|
||||
import type { NextApiRequest, NextApiResponse } from 'next'
|
||||
import z from 'zod'
|
||||
@@ -244,9 +244,9 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse, claims?: Jw
|
||||
},
|
||||
})
|
||||
|
||||
result.pipeUIMessageStreamToResponse(res, {
|
||||
const stream = toUIMessageStream({
|
||||
stream: result.stream,
|
||||
sendReasoning: true,
|
||||
headers: { 'Content-Encoding': 'none' },
|
||||
onError: (error) => {
|
||||
console.error('Assistant stream error:', error)
|
||||
|
||||
@@ -265,6 +265,12 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse, claims?: Jw
|
||||
return JSON.stringify(error)
|
||||
},
|
||||
})
|
||||
|
||||
pipeUIMessageStreamToResponse({
|
||||
response: res,
|
||||
stream,
|
||||
headers: { 'Content-Encoding': 'none' },
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Error in handlePost:', error)
|
||||
if (error instanceof Error) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { JwtPayload } from '@supabase/supabase-js'
|
||||
import { generateText, Output, stepCountIs } from 'ai'
|
||||
import { generateText, isStepCount, Output } from 'ai'
|
||||
import { IS_PLATFORM } from 'common'
|
||||
import { source } from 'common-tags'
|
||||
import { NextApiRequest, NextApiResponse } from 'next'
|
||||
@@ -122,9 +122,9 @@ export async function handlePost(req: NextApiRequest, res: NextApiResponse, clai
|
||||
signal: toolsAbortController.signal,
|
||||
})
|
||||
|
||||
const { experimental_output } = await generateText({
|
||||
const { output } = await generateText({
|
||||
...modelParams,
|
||||
stopWhen: stepCountIs(5),
|
||||
stopWhen: isStepCount(5),
|
||||
prompt: source`
|
||||
You are a Postgres RLS (Row Level Security) expert.
|
||||
Determine the most appropriate policies for the "${schema}"."${tableName}" table within a Supabase project.
|
||||
@@ -146,7 +146,7 @@ export async function handlePost(req: NextApiRequest, res: NextApiResponse, clai
|
||||
- Prefer PERMISSIVE policies unless a RESTRICTIVE policy is explicitly required
|
||||
`,
|
||||
tools,
|
||||
experimental_output: Output.object({
|
||||
output: Output.object({
|
||||
schema: z.object({
|
||||
policies: z.array(policySchema),
|
||||
}),
|
||||
@@ -154,7 +154,7 @@ export async function handlePost(req: NextApiRequest, res: NextApiResponse, clai
|
||||
})
|
||||
|
||||
// Add table and schema to each policy from the request
|
||||
const policies = (experimental_output?.policies ?? []).map((policy) => ({
|
||||
const policies = (output?.policies ?? []).map((policy) => ({
|
||||
...policy,
|
||||
table: tableName,
|
||||
schema,
|
||||
|
||||
Generated
+176
-192
@@ -594,7 +594,7 @@ importers:
|
||||
version: 7.29.7(supports-color@8.1.1)
|
||||
'@graphiql/toolkit':
|
||||
specifier: ^0.9.1
|
||||
version: 0.9.1(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)
|
||||
version: 0.9.1(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)
|
||||
'@graphql-codegen/cli':
|
||||
specifier: 5.0.5
|
||||
version: 5.0.5(@parcel/watcher@2.5.6)(@types/node@22.13.14)(encoding@0.1.13)(graphql-sock@1.0.1(graphql@16.11.0))(graphql@16.11.0)(supports-color@8.1.1)(typescript@6.0.2)
|
||||
@@ -675,7 +675,7 @@ importers:
|
||||
version: 13.2.2
|
||||
graphiql:
|
||||
specifier: ^4.0.2
|
||||
version: 4.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
version: 4.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
npm-run-all:
|
||||
specifier: ^4.1.5
|
||||
version: 4.1.5
|
||||
@@ -886,23 +886,23 @@ importers:
|
||||
apps/studio:
|
||||
dependencies:
|
||||
'@ai-sdk/amazon-bedrock':
|
||||
specifier: ^4.0.81
|
||||
version: 4.0.81(zod@3.25.76)
|
||||
specifier: 5.0.55
|
||||
version: 5.0.55(zod@3.25.76)
|
||||
'@ai-sdk/mcp':
|
||||
specifier: ^1.0.25
|
||||
version: 1.0.25(zod@3.25.76)
|
||||
specifier: 2.0.31
|
||||
version: 2.0.31(zod@3.25.76)
|
||||
'@ai-sdk/openai':
|
||||
specifier: ^3.0.41
|
||||
version: 3.0.41(zod@3.25.76)
|
||||
specifier: 4.0.41
|
||||
version: 4.0.41(zod@3.25.76)
|
||||
'@ai-sdk/provider':
|
||||
specifier: ^3.0.8
|
||||
version: 3.0.8
|
||||
specifier: 4.0.7
|
||||
version: 4.0.7
|
||||
'@ai-sdk/provider-utils':
|
||||
specifier: ^4.0.19
|
||||
version: 4.0.19(zod@3.25.76)
|
||||
specifier: 5.0.26
|
||||
version: 5.0.26(zod@3.25.76)
|
||||
'@ai-sdk/react':
|
||||
specifier: ^3.0.118
|
||||
version: 3.0.118(react@19.2.6)(zod@3.25.76)
|
||||
specifier: 4.0.62
|
||||
version: 4.0.62(react@19.2.6)(zod@3.25.76)
|
||||
'@aws-sdk/credential-providers':
|
||||
specifier: ^3.1041.0
|
||||
version: 3.1041.0
|
||||
@@ -1045,8 +1045,8 @@ importers:
|
||||
specifier: ^2.7.29
|
||||
version: 2.7.30
|
||||
ai:
|
||||
specifier: ^6.0.174
|
||||
version: 6.0.174(zod@3.25.76)
|
||||
specifier: 7.0.59
|
||||
version: 7.0.59(zod@3.25.76)
|
||||
ai-commands:
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/ai-commands
|
||||
@@ -2898,15 +2898,15 @@ packages:
|
||||
'@adobe/css-tools@4.4.0':
|
||||
resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==}
|
||||
|
||||
'@ai-sdk/amazon-bedrock@4.0.81':
|
||||
resolution: {integrity: sha512-SP3LIpFt/JlK0sGs6E5jvjySvQqu/nqA942PehIGk3PZPJ5SMPsUNg+PYTs84PTUYEg8rr4XqkQOTNFq12zo2w==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/amazon-bedrock@5.0.55':
|
||||
resolution: {integrity: sha512-p064NNPJeXNzkAaagxQKU1Ns9fq7H7iqhv9nfnX89ZHu+3mnBJDf+W6p/lcDCxJfG/naOFJOiafvHRSO40cZoA==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
'@ai-sdk/anthropic@3.0.62':
|
||||
resolution: {integrity: sha512-CkShXR8tmNO7QQnvpKbSMe2Vr1zUUcpqlp69iR+DYrbHm+tDJO9u6zZsjEHjcoRU9/e9z++p0W6NiuLC3aZ4Bg==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/anthropic@4.0.38':
|
||||
resolution: {integrity: sha512-esbTb5jq/37dloBJzld3CpYCZskiDWGcI4O8kzst9J/0Km4by7cgQXLTB/gGdjXxBsyjPQUeotVqqRRIrx2zew==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
@@ -2916,21 +2916,21 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4
|
||||
|
||||
'@ai-sdk/gateway@3.0.109':
|
||||
resolution: {integrity: sha512-r6dOqThjODp1vOhGRJg2OCmyB/ZOQtGx1esZ2SDvwDX5XoX8dBqYaYjLg8MPXTzMGJSgOkJyCxWgUcZtAl16pw==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/gateway@4.0.47':
|
||||
resolution: {integrity: sha512-BuWWlA8atWEnEJzN4eamCpGZWkoK9V3TCyNaMwgRIazhqkgWkA1Wp36si3j2JeVYzlvlEAOWrJ92dr92j/Vkqg==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
'@ai-sdk/gateway@3.0.66':
|
||||
resolution: {integrity: sha512-SIQ0YY0iMuv+07HLsZ+bB990zUJ6S4ujORAh+Jv1V2KGNn73qQKnGO0JBk+w+Res8YqOFSycwDoWcFlQrVxS4A==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/mcp@2.0.30':
|
||||
resolution: {integrity: sha512-blXjM1TVI6sYER6PuMd8ZM+nTq57LUHq4Cc5gmFw1ub9204rALpew0iiusYKjgyaEtCuUcFr/ybBr6RavqV/2A==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
'@ai-sdk/mcp@1.0.25':
|
||||
resolution: {integrity: sha512-vMlXUPGHGDE2vzLcPR8sw7Dhz2OBjtPU5lB+lIuC1hNQo4REuUC08P0e96/hzBKf4oQYJ8Zo6uP8AG2qThyFbg==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/mcp@2.0.31':
|
||||
resolution: {integrity: sha512-vBxkIg4CB9wQjWYo5uu1G/Vv3Xhbi3JZ47HoT5ywLNTycxKlY2RGGynTyGqcXLcvWBErRyMygDYVFn8VPc1N+w==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
@@ -2940,9 +2940,9 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4
|
||||
|
||||
'@ai-sdk/openai@3.0.41':
|
||||
resolution: {integrity: sha512-IZ42A+FO+vuEQCVNqlnAPYQnnUpUfdJIwn1BEDOBywiEHa23fw7PahxVtlX9zm3/zMvTW4JKPzWyvAgDu+SQ2A==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/openai@4.0.41':
|
||||
resolution: {integrity: sha512-+WoY0JyF/uV2z+rye7I+hYaVg+hTanG4rYIgsWKvJFDXaAdu9yg07x+BRa2vTgUqzLIBXEBp5d1T7DwMI9ZGlw==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
@@ -2958,21 +2958,15 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.19':
|
||||
resolution: {integrity: sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/provider-utils@5.0.26':
|
||||
resolution: {integrity: sha512-0mqhqx+Dcv+msI84+zkbLXmnCHb/mpkYJ9DU3HBvB1px+UjFQss4lLZqRCSzJ0w3NxwQk4Ishk7cP0r8wEQD5w==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.20':
|
||||
resolution: {integrity: sha512-gpUIj9uDhIGbuo9afKEgQ074BWmhvK4THJAAeBjRnroTy2yQYo6rbtGD7pQDMZM8ouXPYmT/SCdkWVJ0KcpX8A==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.26':
|
||||
resolution: {integrity: sha512-CsKNLKsOpvPujRlIYvoz+Ybw+kGn7J4/fIZa/58+R7iWLLfwn6ifE2G6Yq8K9XvH/I/3bzaDAJ3NhRwEMsLBKQ==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/provider-utils@5.0.27':
|
||||
resolution: {integrity: sha512-EzAn4pdgG5g0xXtH6lE2zyNmfjDQIDjATkfqzuidEI35g++hh4+07vnjzkT/RmGmIClPZiRj/Q2GMPV2V7mkHw==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
@@ -2984,17 +2978,13 @@ packages:
|
||||
resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@ai-sdk/provider@3.0.10':
|
||||
resolution: {integrity: sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/provider@4.0.7':
|
||||
resolution: {integrity: sha512-6or44XprPzKbr8zkmzosowSE0pxkvJcoojBL+mCZvPUt3kvXp3XSNqeVun9golb1acEfSo6yaEBRT18h2VU+1Q==}
|
||||
engines: {node: '>=22'}
|
||||
|
||||
'@ai-sdk/provider@3.0.8':
|
||||
resolution: {integrity: sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@ai-sdk/react@3.0.118':
|
||||
resolution: {integrity: sha512-fBAix8Jftxse6/2YJnOFkwW1/O6EQK4DK68M9DlFmZGAzBmsaHXEPVS77sVIlkaOWCy11bE7434NAVXRY+3OsQ==}
|
||||
engines: {node: '>=18'}
|
||||
'@ai-sdk/react@4.0.62':
|
||||
resolution: {integrity: sha512-Fe3PZmbSzBBmVDE4+HqHJ3x6mYhZ8riUR+3fyjSY+xiRuAntkVkH/MTh0kylvteeRlpgNA4tDDFOTiZfcLPbgg==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1
|
||||
|
||||
@@ -3042,10 +3032,6 @@ packages:
|
||||
'@asamuzakjp/nwsapi@2.3.9':
|
||||
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
|
||||
|
||||
'@aws-crypto/crc32@5.2.0':
|
||||
resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
'@aws-crypto/sha256-browser@5.2.0':
|
||||
resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==}
|
||||
|
||||
@@ -7227,12 +7213,16 @@ packages:
|
||||
resolution: {integrity: sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/core@3.31.1':
|
||||
resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/credential-provider-imds@4.2.14':
|
||||
resolution: {integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/eventstream-codec@4.0.4':
|
||||
resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==}
|
||||
'@smithy/eventstream-codec@4.4.16':
|
||||
resolution: {integrity: sha512-u6l4XW99ESjEikMOGENsZxJblxWNvkTLRbCWcC1c2VwNdmd4QgviN2RRlZxliVWEzG3kyU/m0y3iuVFtLL/6jA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/fetch-http-handler@5.3.17':
|
||||
@@ -7323,6 +7313,10 @@ packages:
|
||||
resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/types@4.16.1':
|
||||
resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/types@4.3.1':
|
||||
resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
@@ -7367,10 +7361,6 @@ packages:
|
||||
resolution: {integrity: sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/util-hex-encoding@4.0.0':
|
||||
resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/util-hex-encoding@4.2.2':
|
||||
resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
@@ -7395,14 +7385,14 @@ packages:
|
||||
resolution: {integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
|
||||
'@smithy/util-utf8@4.0.0':
|
||||
resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/util-utf8@4.2.2':
|
||||
resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/util-utf8@4.4.16':
|
||||
resolution: {integrity: sha512-/gSbVMQlLRcneJ8D/JGbB1DNf0w4I7OpY2ldNUJ+myDmakPXEm9fy/X4swDlNYTOwBwsCKVJsogCfe7Txjnolg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@smithy/uuid@1.1.2':
|
||||
resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
@@ -8787,10 +8777,6 @@ packages:
|
||||
resolution: {integrity: sha512-OTe0KE37F5Y2eTys6eMnfopC+P4qr2ooXUTFyFPTplYSPwowmFk/HLD1FXtbKLjqsIH0SgekcJWad+C5uX4nkg==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
'@vercel/oidc@3.1.0':
|
||||
resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==}
|
||||
engines: {node: '>= 20'}
|
||||
|
||||
'@vercel/oidc@3.2.0':
|
||||
resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==}
|
||||
engines: {node: '>= 20'}
|
||||
@@ -9043,6 +9029,9 @@ packages:
|
||||
resolution: {integrity: sha512-D+OwTEunoQhVHVToD80dPhfz9xgPLqJyEA3F5jCRM14A2u8tBBQVdZekqfqx6ZAfZ+POT4Hb0dn601UKMsvADw==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
'@workflow/serde@4.1.0':
|
||||
resolution: {integrity: sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==}
|
||||
|
||||
'@xobotyi/scrollbar-width@1.9.5':
|
||||
resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==}
|
||||
|
||||
@@ -9160,15 +9149,9 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4
|
||||
|
||||
ai@6.0.116:
|
||||
resolution: {integrity: sha512-7yM+cTmyRLeNIXwt4Vj+mrrJgVQ9RMIW5WO0ydoLoYkewIvsMcvUmqS4j2RJTUXaF1HphwmSKUMQ/HypNRGOmA==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
ai@6.0.174:
|
||||
resolution: {integrity: sha512-bTrfLUWHWtkjzWyCY4bmyuk4Qvmj4S4NSNsXyNSVVqkmftQNtxRj7dzUoMeQDBBwlJO6fC7m2Q/lNOPqQQfAGA==}
|
||||
engines: {node: '>=18'}
|
||||
ai@7.0.59:
|
||||
resolution: {integrity: sha512-p10cqg8KvLIZi7Gk+XsQjoYoLENoDdEYvehP0rSo6Wg15nbCmP+nwIy1rOIX+WGIDWGdI+jmhjVx5fXShBVC3w==}
|
||||
engines: {node: '>=22'}
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
|
||||
@@ -14765,6 +14748,10 @@ packages:
|
||||
resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
|
||||
engines: {node: '>=16.20.0'}
|
||||
|
||||
pkce-challenge@5.0.1:
|
||||
resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
|
||||
engines: {node: '>=16.20.0'}
|
||||
|
||||
pkg-types@1.3.1:
|
||||
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
||||
|
||||
@@ -16481,10 +16468,10 @@ packages:
|
||||
resolution: {integrity: sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ==}
|
||||
engines: {node: '>= 4.7.0'}
|
||||
|
||||
swr@2.2.5:
|
||||
resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
|
||||
swr@2.5.0:
|
||||
resolution: {integrity: sha512-W0GomadRJe9OfzIoRX0kZHhDSaRRfdiOUeH6uazgR05SibBhDNwfdTbhAxmFtObvkf59fFymo22mooKukosvNA==}
|
||||
peerDependencies:
|
||||
react: ^16.11.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
symbol-tree@3.2.4:
|
||||
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
||||
@@ -18006,20 +17993,21 @@ snapshots:
|
||||
|
||||
'@adobe/css-tools@4.4.0': {}
|
||||
|
||||
'@ai-sdk/amazon-bedrock@4.0.81(zod@3.25.76)':
|
||||
'@ai-sdk/amazon-bedrock@5.0.55(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/anthropic': 3.0.62(zod@3.25.76)
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.20(zod@3.25.76)
|
||||
'@smithy/eventstream-codec': 4.0.4
|
||||
'@smithy/util-utf8': 4.0.0
|
||||
'@ai-sdk/anthropic': 4.0.38(zod@3.25.76)
|
||||
'@ai-sdk/openai': 4.0.41(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.27(zod@3.25.76)
|
||||
'@smithy/eventstream-codec': 4.4.16
|
||||
'@smithy/util-utf8': 4.4.16
|
||||
aws4fetch: 1.0.20
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/anthropic@3.0.62(zod@3.25.76)':
|
||||
'@ai-sdk/anthropic@4.0.38(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.20(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.27(zod@3.25.76)
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/gateway@1.0.29(zod@3.25.76)':
|
||||
@@ -18028,25 +18016,25 @@ snapshots:
|
||||
'@ai-sdk/provider-utils': 3.0.9(zod@3.25.76)
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/gateway@3.0.109(zod@3.25.76)':
|
||||
'@ai-sdk/gateway@4.0.47(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.10
|
||||
'@ai-sdk/provider-utils': 4.0.26(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.26(zod@3.25.76)
|
||||
'@vercel/oidc': 3.2.0
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/gateway@3.0.66(zod@3.25.76)':
|
||||
'@ai-sdk/mcp@2.0.30(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.19(zod@3.25.76)
|
||||
'@vercel/oidc': 3.1.0
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.26(zod@3.25.76)
|
||||
pkce-challenge: 5.0.1
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/mcp@1.0.25(zod@3.25.76)':
|
||||
'@ai-sdk/mcp@2.0.31(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.19(zod@3.25.76)
|
||||
pkce-challenge: 5.0.0
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.27(zod@3.25.76)
|
||||
pkce-challenge: 5.0.1
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/openai@2.0.2(zod@3.25.76)':
|
||||
@@ -18055,17 +18043,17 @@ snapshots:
|
||||
'@ai-sdk/provider-utils': 3.0.0(zod@3.25.76)
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/openai@3.0.41(zod@3.25.76)':
|
||||
'@ai-sdk/openai@4.0.41(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.19(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.27(zod@3.25.76)
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@3.0.0(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 2.0.0
|
||||
'@standard-schema/spec': 1.1.0
|
||||
eventsource-parser: 3.0.6
|
||||
eventsource-parser: 3.0.8
|
||||
zod: 3.25.76
|
||||
zod-to-json-schema: 3.25.1(zod@3.25.76)
|
||||
|
||||
@@ -18073,30 +18061,27 @@ snapshots:
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 2.0.0
|
||||
'@standard-schema/spec': 1.1.0
|
||||
eventsource-parser: 3.0.6
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.19(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@standard-schema/spec': 1.1.0
|
||||
eventsource-parser: 3.0.6
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.20(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@standard-schema/spec': 1.1.0
|
||||
eventsource-parser: 3.0.6
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@4.0.26(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 3.0.10
|
||||
'@standard-schema/spec': 1.1.0
|
||||
eventsource-parser: 3.0.8
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@5.0.26(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@standard-schema/spec': 1.1.0
|
||||
'@workflow/serde': 4.1.0
|
||||
eventsource-parser: 3.0.8
|
||||
undici: 7.29.0
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider-utils@5.0.27(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@standard-schema/spec': 1.1.0
|
||||
'@workflow/serde': 4.1.0
|
||||
eventsource-parser: 3.0.8
|
||||
undici: 7.29.0
|
||||
zod: 3.25.76
|
||||
|
||||
'@ai-sdk/provider@1.1.3':
|
||||
dependencies:
|
||||
json-schema: 0.4.0
|
||||
@@ -18105,20 +18090,18 @@ snapshots:
|
||||
dependencies:
|
||||
json-schema: 0.4.0
|
||||
|
||||
'@ai-sdk/provider@3.0.10':
|
||||
'@ai-sdk/provider@4.0.7':
|
||||
dependencies:
|
||||
json-schema: 0.4.0
|
||||
|
||||
'@ai-sdk/provider@3.0.8':
|
||||
'@ai-sdk/react@4.0.62(react@19.2.6)(zod@3.25.76)':
|
||||
dependencies:
|
||||
json-schema: 0.4.0
|
||||
|
||||
'@ai-sdk/react@3.0.118(react@19.2.6)(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@ai-sdk/provider-utils': 4.0.19(zod@3.25.76)
|
||||
ai: 6.0.116(zod@3.25.76)
|
||||
'@ai-sdk/mcp': 2.0.30(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.26(zod@3.25.76)
|
||||
ai: 7.0.59(zod@3.25.76)
|
||||
react: 19.2.6
|
||||
swr: 2.2.5(react@19.2.6)
|
||||
swr: 2.5.0(react@19.2.6)
|
||||
throttleit: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- zod
|
||||
@@ -18206,12 +18189,6 @@ snapshots:
|
||||
|
||||
'@asamuzakjp/nwsapi@2.3.9': {}
|
||||
|
||||
'@aws-crypto/crc32@5.2.0':
|
||||
dependencies:
|
||||
'@aws-crypto/util': 5.2.0
|
||||
'@aws-sdk/types': 3.973.8
|
||||
tslib: 2.8.1
|
||||
|
||||
'@aws-crypto/sha256-browser@5.2.0':
|
||||
dependencies:
|
||||
'@aws-crypto/sha256-js': 5.2.0
|
||||
@@ -19637,9 +19614,9 @@ snapshots:
|
||||
|
||||
'@floating-ui/utils@0.2.9': {}
|
||||
|
||||
'@graphiql/plugin-doc-explorer@0.0.1(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
'@graphiql/plugin-doc-explorer@0.0.1(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
dependencies:
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@headlessui/react': 2.2.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
graphql: 16.11.0
|
||||
react: 19.2.6
|
||||
@@ -19667,10 +19644,10 @@ snapshots:
|
||||
- immer
|
||||
- use-sync-external-store
|
||||
|
||||
'@graphiql/plugin-history@0.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
'@graphiql/plugin-history@0.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
dependencies:
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/toolkit': 0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/toolkit': 0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)
|
||||
react: 19.2.6
|
||||
react-compiler-runtime: 19.1.0-rc.1(react@19.2.6)
|
||||
react-dom: 19.2.6(react@19.2.6)
|
||||
@@ -19699,9 +19676,9 @@ snapshots:
|
||||
- immer
|
||||
- use-sync-external-store
|
||||
|
||||
'@graphiql/react@0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
'@graphiql/react@0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
|
||||
dependencies:
|
||||
'@graphiql/toolkit': 0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)
|
||||
'@graphiql/toolkit': 0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)
|
||||
'@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
@@ -19769,23 +19746,23 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
'@graphiql/toolkit@0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)':
|
||||
'@graphiql/toolkit@0.11.3(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)':
|
||||
dependencies:
|
||||
'@n1ru4l/push-pull-async-iterable-iterator': 3.2.0
|
||||
graphql: 16.11.0
|
||||
meros: 1.3.0(@types/node@22.13.14)
|
||||
optionalDependencies:
|
||||
graphql-ws: 6.0.4(graphql@16.11.0)(ws@8.21.0)
|
||||
graphql-ws: 6.0.4(graphql@16.11.0)(ws@8.21.3)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
'@graphiql/toolkit@0.9.1(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)':
|
||||
'@graphiql/toolkit@0.9.1(@types/node@22.13.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)':
|
||||
dependencies:
|
||||
'@n1ru4l/push-pull-async-iterable-iterator': 3.2.0
|
||||
graphql: 16.11.0
|
||||
meros: 1.3.0(@types/node@22.13.14)
|
||||
optionalDependencies:
|
||||
graphql-ws: 6.0.4(graphql@16.11.0)(ws@8.21.0)
|
||||
graphql-ws: 6.0.4(graphql@16.11.0)(ws@8.21.3)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
@@ -23495,6 +23472,11 @@ snapshots:
|
||||
'@smithy/uuid': 1.1.2
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/core@3.31.1':
|
||||
dependencies:
|
||||
'@smithy/types': 4.16.1
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/credential-provider-imds@4.2.14':
|
||||
dependencies:
|
||||
'@smithy/node-config-provider': 4.3.14
|
||||
@@ -23503,11 +23485,9 @@ snapshots:
|
||||
'@smithy/url-parser': 4.2.14
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/eventstream-codec@4.0.4':
|
||||
'@smithy/eventstream-codec@4.4.16':
|
||||
dependencies:
|
||||
'@aws-crypto/crc32': 5.2.0
|
||||
'@smithy/types': 4.14.1
|
||||
'@smithy/util-hex-encoding': 4.0.0
|
||||
'@smithy/core': 3.31.1
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/fetch-http-handler@5.3.17':
|
||||
@@ -23654,6 +23634,10 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/types@4.16.1':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/types@4.3.1':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
@@ -23715,10 +23699,6 @@ snapshots:
|
||||
'@smithy/types': 4.14.1
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/util-hex-encoding@4.0.0':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/util-hex-encoding@4.2.2':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
@@ -23754,14 +23734,14 @@ snapshots:
|
||||
'@smithy/util-buffer-from': 2.0.0
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/util-utf8@4.0.0':
|
||||
'@smithy/util-utf8@4.2.2':
|
||||
dependencies:
|
||||
'@smithy/util-buffer-from': 4.2.2
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/util-utf8@4.2.2':
|
||||
'@smithy/util-utf8@4.4.16':
|
||||
dependencies:
|
||||
'@smithy/util-buffer-from': 4.2.2
|
||||
'@smithy/core': 3.31.1
|
||||
tslib: 2.8.1
|
||||
|
||||
'@smithy/uuid@1.1.2':
|
||||
@@ -25281,8 +25261,6 @@ snapshots:
|
||||
satori: 0.10.9
|
||||
yoga-wasm-web: 0.3.3
|
||||
|
||||
'@vercel/oidc@3.1.0': {}
|
||||
|
||||
'@vercel/oidc@3.2.0': {}
|
||||
|
||||
'@vercel/routing-utils@6.1.1':
|
||||
@@ -25671,6 +25649,8 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@workflow/serde@4.1.0': {}
|
||||
|
||||
'@xobotyi/scrollbar-width@1.9.5': {}
|
||||
|
||||
'@xtuc/ieee754@1.2.0': {}
|
||||
@@ -25746,6 +25726,10 @@ snapshots:
|
||||
dependencies:
|
||||
acorn: 8.16.0
|
||||
|
||||
acorn-jsx@5.3.2(acorn@8.18.0):
|
||||
dependencies:
|
||||
acorn: 8.18.0
|
||||
|
||||
acorn-typescript@1.4.13(acorn@8.11.3):
|
||||
dependencies:
|
||||
acorn: 8.11.3
|
||||
@@ -25789,20 +25773,11 @@ snapshots:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
zod: 3.25.76
|
||||
|
||||
ai@6.0.116(zod@3.25.76):
|
||||
ai@7.0.59(zod@3.25.76):
|
||||
dependencies:
|
||||
'@ai-sdk/gateway': 3.0.66(zod@3.25.76)
|
||||
'@ai-sdk/provider': 3.0.8
|
||||
'@ai-sdk/provider-utils': 4.0.19(zod@3.25.76)
|
||||
'@opentelemetry/api': 1.9.0
|
||||
zod: 3.25.76
|
||||
|
||||
ai@6.0.174(zod@3.25.76):
|
||||
dependencies:
|
||||
'@ai-sdk/gateway': 3.0.109(zod@3.25.76)
|
||||
'@ai-sdk/provider': 3.0.10
|
||||
'@ai-sdk/provider-utils': 4.0.26(zod@3.25.76)
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@ai-sdk/gateway': 4.0.47(zod@3.25.76)
|
||||
'@ai-sdk/provider': 4.0.7
|
||||
'@ai-sdk/provider-utils': 5.0.26(zod@3.25.76)
|
||||
zod: 3.25.76
|
||||
|
||||
ajv-formats@2.1.1(ajv@8.18.0):
|
||||
@@ -28046,8 +28021,8 @@ snapshots:
|
||||
|
||||
espree@10.4.0:
|
||||
dependencies:
|
||||
acorn: 8.16.0
|
||||
acorn-jsx: 5.3.2(acorn@8.16.0)
|
||||
acorn: 8.18.0
|
||||
acorn-jsx: 5.3.2(acorn@8.18.0)
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
esprima@4.0.1: {}
|
||||
@@ -28135,7 +28110,7 @@ snapshots:
|
||||
|
||||
eventsource@3.0.7:
|
||||
dependencies:
|
||||
eventsource-parser: 3.0.6
|
||||
eventsource-parser: 3.0.8
|
||||
|
||||
execa@1.0.0:
|
||||
dependencies:
|
||||
@@ -28803,11 +28778,11 @@ snapshots:
|
||||
|
||||
graceful-fs@4.2.11: {}
|
||||
|
||||
graphiql@4.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
|
||||
graphiql@4.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
|
||||
dependencies:
|
||||
'@graphiql/plugin-doc-explorer': 0.0.1(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/plugin-history': 0.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.0))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/plugin-doc-explorer': 0.0.1(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/plugin-history': 0.0.2(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
'@graphiql/react': 0.32.0(@codemirror/language@6.11.0)(@emotion/is-prop-valid@1.4.0)(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3))(graphql@16.11.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
graphql: 16.11.0
|
||||
react: 19.2.6
|
||||
react-compiler-runtime: 19.1.0-rc.1(react@19.2.6)
|
||||
@@ -28906,6 +28881,13 @@ snapshots:
|
||||
optionalDependencies:
|
||||
ws: 8.21.0
|
||||
|
||||
graphql-ws@6.0.4(graphql@16.11.0)(ws@8.21.3):
|
||||
dependencies:
|
||||
graphql: 16.11.0
|
||||
optionalDependencies:
|
||||
ws: 8.21.3
|
||||
optional: true
|
||||
|
||||
graphql@16.11.0: {}
|
||||
|
||||
gray-matter@2.1.1:
|
||||
@@ -32627,6 +32609,8 @@ snapshots:
|
||||
|
||||
pkce-challenge@5.0.0: {}
|
||||
|
||||
pkce-challenge@5.0.1: {}
|
||||
|
||||
pkg-types@1.3.1:
|
||||
dependencies:
|
||||
confbox: 0.1.8
|
||||
@@ -34766,9 +34750,9 @@ snapshots:
|
||||
|
||||
swiper@12.1.2: {}
|
||||
|
||||
swr@2.2.5(react@19.2.6):
|
||||
swr@2.5.0(react@19.2.6):
|
||||
dependencies:
|
||||
client-only: 0.0.1
|
||||
dequal: 2.0.3
|
||||
react: 19.2.6
|
||||
use-sync-external-store: 1.6.0(react@19.2.6)
|
||||
|
||||
|
||||
Reference in new issue
Block a user