Merge pull request #716 from buster-so/dal-slack-messaging-improvements

Fix: Improve Slack messaging reliability and error handling
This commit is contained in:
dal 2025-08-18 20:45:40 -06:00 committed by GitHub
commit 1fc47799f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 415 additions and 220 deletions

View File

@ -1,6 +1,12 @@
import { chats, db, getSecretByName, slackIntegrations } from '@buster/database';
import type { SlackEventsResponse } from '@buster/server-shared/slack';
import { type SlackWebhookPayload, addReaction, isEventCallback } from '@buster/slack';
import {
type SlackWebhookPayload,
addReaction,
isAppMentionEvent,
isEventCallback,
isMessageImEvent,
} from '@buster/slack';
import { tasks } from '@trigger.dev/sdk';
import { and, eq } from 'drizzle-orm';
import type { Context } from 'hono';
@ -38,6 +44,7 @@ export async function findOrCreateSlackChat({
userId,
slackChatAuthorization,
teamId,
isDM = false,
}: {
threadTs: string;
channelId: string;
@ -45,6 +52,7 @@ export async function findOrCreateSlackChat({
userId: string;
slackChatAuthorization: 'unauthorized' | 'authorized' | 'auto_added';
teamId: string;
isDM?: boolean;
}): Promise<string> {
// Run both queries concurrently for better performance
const [existingChat, slackIntegration] = await Promise.all([
@ -101,11 +109,22 @@ export async function findOrCreateSlackChat({
slackChatAuthorization,
slackThreadTs: threadTs,
slackChannelId: channelId,
// Set workspace sharing based on Slack integration settings
workspaceSharing: defaultSharingPermissions === 'shareWithWorkspace' ? 'can_view' : 'none',
workspaceSharingEnabledBy: defaultSharingPermissions === 'shareWithWorkspace' ? userId : null,
workspaceSharingEnabledAt:
defaultSharingPermissions === 'shareWithWorkspace' ? new Date().toISOString() : null,
// DM chats are NEVER shared with workspace, regardless of settings
workspaceSharing: isDM
? 'none'
: defaultSharingPermissions === 'shareWithWorkspace'
? 'can_view'
: 'none',
workspaceSharingEnabledBy: isDM
? null
: defaultSharingPermissions === 'shareWithWorkspace'
? userId
: null,
workspaceSharingEnabledAt: isDM
? null
: defaultSharingPermissions === 'shareWithWorkspace'
? new Date().toISOString()
: null,
})
.returning();
@ -147,12 +166,12 @@ export async function handleSlackEventsEndpoint(c: Context) {
try {
// Process the event
const response = await eventsHandler(payload);
// Ensure we never return success: false without throwing
if (!response.success) {
throw new Error('Event processing failed');
}
return c.json(response);
} catch (error) {
// Handle authentication errors
@ -171,97 +190,104 @@ export async function handleSlackEventsEndpoint(c: Context) {
export async function eventsHandler(payload: SlackWebhookPayload): Promise<SlackEventsResponse> {
try {
// Handle the event based on type
if (isEventCallback(payload) && payload.event.type === 'app_mention') {
// Handle app_mention event
if (isEventCallback(payload)) {
const event = payload.event;
console.info('App mentioned:', {
team_id: payload.team_id,
channel: event.channel,
user: event.user,
text: event.text,
event_id: payload.event_id,
});
// Check if this is an app_mention or DM event
const isAppMention = isAppMentionEvent(event);
const isDM = isMessageImEvent(event);
// Authenticate the Slack user
const authResult = await authenticateSlackUser(event.user, payload.team_id);
// Check if authentication was successful
const userId = getUserIdFromAuthResult(authResult);
if (!userId) {
console.warn('Slack user authentication failed:', {
slackUserId: event.user,
teamId: payload.team_id,
reason: authResult.type === 'unauthorized' ? authResult.reason : 'Unknown',
if (isAppMention || isDM) {
console.info(isDM ? 'DM received:' : 'App mentioned:', {
team_id: payload.team_id,
channel: event.channel,
user: event.user,
text: event.text,
event_id: payload.event_id,
is_dm: isDM,
});
// Throw unauthorized error
throw new Error('Unauthorized: Slack user authentication failed');
}
const organizationId = authResult.type === 'unauthorized' ? '' : authResult.organization.id;
// Authenticate the Slack user
const authResult = await authenticateSlackUser(event.user, payload.team_id);
// Extract thread timestamp - if no thread_ts, this is a new thread so use ts
const threadTs = event.thread_ts || event.ts;
// Add hourglass reaction immediately after authentication
if (organizationId) {
try {
// Fetch Slack integration to get token vault key
const slackIntegration = await db
.select({
tokenVaultKey: slackIntegrations.tokenVaultKey,
})
.from(slackIntegrations)
.where(
and(
eq(slackIntegrations.organizationId, organizationId),
eq(slackIntegrations.teamId, payload.team_id),
eq(slackIntegrations.status, 'active')
)
)
.limit(1);
if (slackIntegration.length > 0 && slackIntegration[0]?.tokenVaultKey) {
// Get the access token from vault
const vaultSecret = await getSecretByName(slackIntegration[0].tokenVaultKey);
if (vaultSecret?.secret) {
// Add the hourglass reaction
await addReaction({
accessToken: vaultSecret.secret,
channelId: event.channel,
messageTs: event.ts,
emoji: 'hourglass_flowing_sand',
});
console.info('Added hourglass reaction to app mention', {
channel: event.channel,
messageTs: event.ts,
});
}
}
} catch (error) {
// Log but don't fail the entire process if reaction fails
console.warn('Failed to add hourglass reaction', {
error: error instanceof Error ? error.message : 'Unknown error',
channel: event.channel,
messageTs: event.ts,
// Check if authentication was successful
const userId = getUserIdFromAuthResult(authResult);
if (!userId) {
console.warn('Slack user authentication failed:', {
slackUserId: event.user,
teamId: payload.team_id,
reason: authResult.type === 'unauthorized' ? authResult.reason : 'Unknown',
});
// Throw unauthorized error
throw new Error('Unauthorized: Slack user authentication failed');
}
const organizationId = authResult.type === 'unauthorized' ? '' : authResult.organization.id;
// Extract thread timestamp - if no thread_ts, this is a new thread so use ts
const threadTs = event.thread_ts || event.ts;
// Add hourglass reaction immediately after authentication
if (organizationId) {
try {
// Fetch Slack integration to get token vault key
const slackIntegration = await db
.select({
tokenVaultKey: slackIntegrations.tokenVaultKey,
})
.from(slackIntegrations)
.where(
and(
eq(slackIntegrations.organizationId, organizationId),
eq(slackIntegrations.teamId, payload.team_id),
eq(slackIntegrations.status, 'active')
)
)
.limit(1);
if (slackIntegration.length > 0 && slackIntegration[0]?.tokenVaultKey) {
// Get the access token from vault
const vaultSecret = await getSecretByName(slackIntegration[0].tokenVaultKey);
if (vaultSecret?.secret) {
// Add the hourglass reaction
await addReaction({
accessToken: vaultSecret.secret,
channelId: event.channel,
messageTs: event.ts,
emoji: 'hourglass_flowing_sand',
});
console.info('Added hourglass reaction to app mention', {
channel: event.channel,
messageTs: event.ts,
});
}
}
} catch (error) {
// Log but don't fail the entire process if reaction fails
console.warn('Failed to add hourglass reaction', {
error: error instanceof Error ? error.message : 'Unknown error',
channel: event.channel,
messageTs: event.ts,
});
}
}
// Find or create chat
const chatId = await findOrCreateSlackChat({
threadTs,
channelId: event.channel,
organizationId,
userId,
slackChatAuthorization: mapAuthResultToDbEnum(authResult.type),
teamId: payload.team_id,
isDM,
});
// Queue the task
await queueSlackAgentTask(chatId, userId);
}
// Find or create chat
const chatId = await findOrCreateSlackChat({
threadTs,
channelId: event.channel,
organizationId,
userId,
slackChatAuthorization: mapAuthResultToDbEnum(authResult.type),
teamId: payload.team_id,
});
// Queue the task
await queueSlackAgentTask(chatId, userId);
}
return { success: true };

View File

@ -34,7 +34,7 @@
"@buster/vitest-config": "workspace:*",
"@buster/web-tools": "workspace:*",
"@mastra/core": "catalog:",
"@trigger.dev/sdk": "4.0.0-v4-beta.27",
"@trigger.dev/sdk": "4.0.0-v4-beta.28",
"ai": "catalog:",
"braintrust": "catalog:",
"drizzle-orm": "catalog:",
@ -42,6 +42,6 @@
"zod": "catalog:"
},
"devDependencies": {
"@trigger.dev/build": "4.0.0-v4-beta.27"
"@trigger.dev/build": "4.0.0-v4-beta.28"
}
}

View File

@ -123,26 +123,57 @@ export const slackAgentTask: ReturnType<
hasParentMessage: slackMessages.length > 0,
});
// Check if this is a DM (channel ID starts with 'D')
const isDM = chatDetails.slackChannelId?.startsWith('D') || false;
// Filter messages to only include non-bot messages after the most recent app mention
if (!integration.botUserId) {
logger.error('No bot user ID found for Slack integration');
throw new Error('Slack integration is missing bot user ID');
}
const { filteredMessages: relevantMessages, mentionMessageTs } =
filterMessagesAfterLastMention(slackMessages, integration.botUserId);
let relevantMessages: typeof slackMessages;
let mentionMessageTs: string | null;
logger.log('Filtered relevant messages', {
originalCount: slackMessages.length,
filteredCount: relevantMessages.length,
botUserId: integration.botUserId,
mentionMessageTs,
});
if (isDM) {
// For DMs, we don't need to look for mentions - all messages are for the bot
// Use the most recent message timestamp as the "mention" timestamp for reactions
relevantMessages = slackMessages.filter((msg) => msg.user !== integration.botUserId);
mentionMessageTs =
relevantMessages.length > 0
? relevantMessages[relevantMessages.length - 1]?.ts || null
: null;
// If no mention was found, we can't proceed
logger.log('Processing DM messages', {
originalCount: slackMessages.length,
filteredCount: relevantMessages.length,
botUserId: integration.botUserId,
mentionMessageTs,
});
} else {
// For channel messages, look for @Buster mentions
const filterResult = filterMessagesAfterLastMention(slackMessages, integration.botUserId);
relevantMessages = filterResult.filteredMessages;
mentionMessageTs = filterResult.mentionMessageTs;
logger.log('Filtered channel messages', {
originalCount: slackMessages.length,
filteredCount: relevantMessages.length,
botUserId: integration.botUserId,
mentionMessageTs,
});
// If no mention was found in a channel, we can't proceed
if (!mentionMessageTs) {
logger.error('No @Buster mention found in channel thread');
throw new Error('No @Buster mention found in the channel thread');
}
}
// If no relevant timestamp found (shouldn't happen), we can't proceed
if (!mentionMessageTs) {
logger.error('No @Buster mention found in thread');
throw new Error('No @Buster mention found in the thread');
logger.error('No message timestamp found for reactions');
throw new Error('No message timestamp found to react to');
}
// Find all bot messages in the thread to determine if this is a follow-up
@ -154,20 +185,40 @@ export const slackAgentTask: ReturnType<
// Get all messages for context, not just after the mention
let messagesToInclude: typeof slackMessages;
if (isFollowUp) {
// Find the timestamp of the last bot message before the current mention
const lastBotMessageTs = Math.max(
...previousBotMessages.map((msg) => Number.parseFloat(msg.ts))
);
const lastBotMessageIndex = slackMessages.findIndex(
(msg) => Number.parseFloat(msg.ts) === lastBotMessageTs
);
if (isDM) {
// For DMs, handle follow-ups differently
if (isFollowUp) {
// Find the timestamp of the last bot message
const lastBotMessageTs = Math.max(
...previousBotMessages.map((msg) => Number.parseFloat(msg.ts))
);
const lastBotMessageIndex = slackMessages.findIndex(
(msg) => Number.parseFloat(msg.ts) === lastBotMessageTs
);
// Include messages after the last bot response
messagesToInclude = slackMessages.slice(lastBotMessageIndex + 1);
// Include messages after the last bot response
messagesToInclude = slackMessages.slice(lastBotMessageIndex + 1);
} else {
// Include all messages for first request
messagesToInclude = slackMessages;
}
} else {
// Include all messages in the thread for first request
messagesToInclude = slackMessages;
// For channel messages, use the existing logic
if (isFollowUp) {
// Find the timestamp of the last bot message before the current mention
const lastBotMessageTs = Math.max(
...previousBotMessages.map((msg) => Number.parseFloat(msg.ts))
);
const lastBotMessageIndex = slackMessages.findIndex(
(msg) => Number.parseFloat(msg.ts) === lastBotMessageTs
);
// Include messages after the last bot response
messagesToInclude = slackMessages.slice(lastBotMessageIndex + 1);
} else {
// Include all messages in the thread for first request
messagesToInclude = slackMessages;
}
}
// Filter out bot messages and format the conversation
@ -175,7 +226,7 @@ export const slackAgentTask: ReturnType<
.filter((msg) => msg.user !== integration.botUserId) // Exclude bot messages
.map((msg) => {
let text = msg.text || '';
// Replace bot user ID mentions with @Buster
// Replace bot user ID mentions with @Buster for consistency
if (integration.botUserId) {
text = text.replace(new RegExp(`<@${integration.botUserId}>`, 'g'), '@Buster');
}

File diff suppressed because one or more lines are too long

View File

@ -8,9 +8,14 @@ export {
urlVerificationSchema,
slackRequestHeadersSchema,
appMentionEventSchema,
messageImEventSchema,
eventCallbackSchema,
slackEventEnvelopeSchema,
slackWebhookPayloadSchema,
isUrlVerification,
isEventCallback,
isAppMentionEvent,
isMessageImEvent,
} from './types/webhooks';
// Services

View File

@ -39,6 +39,23 @@ export const appMentionEventSchema = z.object({
export type AppMentionEvent = z.infer<typeof appMentionEventSchema>;
/**
* Message IM Event
* Sent when a user sends a direct message to the bot
*/
export const messageImEventSchema = z.object({
type: z.literal('message'),
channel_type: z.literal('im'),
user: z.string(),
text: z.string(),
ts: z.string(),
channel: z.string(),
event_ts: z.string(),
thread_ts: z.string().optional(),
});
export type MessageImEvent = z.infer<typeof messageImEventSchema>;
/**
* Event Callback Envelope
* The wrapper for all event_callback type events
@ -47,7 +64,7 @@ export const eventCallbackSchema = z.object({
token: z.string(),
team_id: z.string(),
api_app_id: z.string(),
event: appMentionEventSchema,
event: z.union([appMentionEventSchema, messageImEventSchema]),
type: z.literal('event_callback'),
event_id: z.string(),
event_time: z.number(),
@ -88,3 +105,11 @@ export function isUrlVerification(payload: SlackWebhookPayload): payload is UrlV
export function isEventCallback(payload: SlackWebhookPayload): payload is EventCallback {
return payload.type === 'event_callback';
}
export function isAppMentionEvent(event: EventCallback['event']): event is AppMentionEvent {
return event.type === 'app_mention';
}
export function isMessageImEvent(event: EventCallback['event']): event is MessageImEvent {
return event.type === 'message' && 'channel_type' in event && event.channel_type === 'im';
}

View File

@ -282,8 +282,8 @@ importers:
specifier: 'catalog:'
version: 0.10.8(effect@3.16.8)(openapi-types@12.1.3)(react@18.3.1)(zod@3.25.1)
'@trigger.dev/sdk':
specifier: 4.0.0-v4-beta.27
version: 4.0.0-v4-beta.27(ai@4.3.16(react@18.3.1)(zod@3.25.1))(zod@3.25.1)
specifier: 4.0.0-v4-beta.28
version: 4.0.0-v4-beta.28(ai@4.3.16(react@18.3.1)(zod@3.25.1))(zod@3.25.1)
ai:
specifier: 'catalog:'
version: 4.3.16(react@18.3.1)(zod@3.25.1)
@ -301,8 +301,8 @@ importers:
version: 3.25.1
devDependencies:
'@trigger.dev/build':
specifier: 4.0.0-v4-beta.27
version: 4.0.0-v4-beta.27(typescript@5.8.3)
specifier: 4.0.0-v4-beta.28
version: 4.0.0-v4-beta.28(typescript@5.8.3)
apps/web:
dependencies:
@ -356,13 +356,13 @@ importers:
version: 49.2.4(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/autoformat':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-nodes':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-styles':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/callout':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -380,7 +380,7 @@ importers:
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/date':
specifier: 'catalog:'
version: 49.0.2(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.2(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/dnd':
specifier: ^49.2.10
version: 49.2.10(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1(@types/node@24.0.10)(@types/react@18.3.23)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -392,37 +392,37 @@ importers:
version: 49.0.0(@emoji-mart/data@1.2.1)(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/floating':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/indent':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/juice':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/layout':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/link':
specifier: 'catalog:'
version: 49.1.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.1.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/list':
specifier: 'catalog:'
version: 49.2.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.2.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/markdown':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
version: 49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/math':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/media':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/mention':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/resizable':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/selection':
specifier: ^49.2.4
version: 49.2.4(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -434,13 +434,13 @@ importers:
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/table':
specifier: 'catalog:'
version: 49.1.13(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.1.13(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/toc':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/toggle':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@posthog/nextjs-config':
specifier: ^1.1.2
version: 1.1.2(next@14.2.30(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))
@ -1106,46 +1106,46 @@ importers:
version: link:../vitest-config
'@platejs/autoformat':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-nodes':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-styles':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/date':
specifier: 'catalog:'
version: 49.0.2(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.2(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/indent':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/layout':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/link':
specifier: 'catalog:'
version: 49.1.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.1.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/list':
specifier: 'catalog:'
version: 49.2.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.2.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/markdown':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
version: 49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/math':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/media':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/table':
specifier: 'catalog:'
version: 49.1.13(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.1.13(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/toc':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/toggle':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
platejs:
specifier: 'catalog:'
version: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
@ -5711,14 +5711,18 @@ packages:
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
'@trigger.dev/build@4.0.0-v4-beta.27':
resolution: {integrity: sha512-j0crKvdP4+fxcgqm+/nfxwzdvTr6QHsxwy5IeIJoj/nCR5hrH3AFDLopb9fODE6jubEBWJfH/FGXy7NQSfOhAQ==}
'@trigger.dev/build@4.0.0-v4-beta.28':
resolution: {integrity: sha512-cknIdNXjCup6sjUXqafo6jh+JHfYAq4qR+eXTm1jfaYRURCP9UENwHXI9DqPfEYdwBuold+Hjal+WgF7dOjiXA==}
engines: {node: '>=18.20.0'}
'@trigger.dev/core@4.0.0-v4-beta.27':
resolution: {integrity: sha512-PJzW07GbxeHKigZ0AiO4aAtDdb2r5iioI7P6TLTqp3XfsxLb1ezPNv3zt6dy1uvZsefGR/EO4y7X0VN1pJyLTA==}
engines: {node: '>=18.20.0'}
'@trigger.dev/core@4.0.0-v4-beta.28':
resolution: {integrity: sha512-TX0FUWJNUkAzWSSMAABxGF+RaMFC1GwWTD9ZeAx16XY8FVOw5kn2roqhxbYVhkmpnuCjCUJ20eIlMSm+P24i4A==}
engines: {node: '>=18.20.0'}
'@trigger.dev/sdk@4.0.0-v4-beta.27':
resolution: {integrity: sha512-iSxXkcb7rcMF6aG1Xqq3TFHOkAWG6zrkV7lKjqRu/qRS31mbx2dlSgsB1UHFsL47vGpkrebTIkcQreXIp2GSpA==}
engines: {node: '>=18.20.0'}
@ -5729,6 +5733,16 @@ packages:
ai:
optional: true
'@trigger.dev/sdk@4.0.0-v4-beta.28':
resolution: {integrity: sha512-ADu4Feq7/71DIju8FJ/uDA5FdhWeD50HmTyynRCs/v89nhUZK0bdXOV79Bh68aeNV08SYTJzRAUn8EBCSYNG7g==}
engines: {node: '>=18.20.0'}
peerDependencies:
ai: ^4.2.0 || ^5.0.0
zod: ^3.0.0 || ^4.0.0
peerDependenciesMeta:
ai:
optional: true
'@tybys/wasm-util@0.9.0':
resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
@ -6806,7 +6820,6 @@ packages:
bun@1.2.18:
resolution: {integrity: sha512-OR+EpNckoJN4tHMVZPaTPxDj2RgpJgJwLruTIFYbO3bQMguLd0YrmkWKYqsiihcLgm2ehIjF/H1RLfZiRa7+qQ==}
cpu: [arm64, x64, aarch64]
os: [darwin, linux, win32]
hasBin: true
@ -16015,7 +16028,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16023,7 +16036,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/aws-lambda': 8.10.147
transitivePeerDependencies:
- supports-color
@ -16034,7 +16047,7 @@ snapshots:
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/propagation-utils': 0.31.2(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16051,7 +16064,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16060,7 +16073,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/connect': 3.4.38
transitivePeerDependencies:
- supports-color
@ -16069,7 +16082,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16092,7 +16105,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16101,7 +16114,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16131,7 +16144,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16140,7 +16153,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16149,7 +16162,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
forwarded-parse: 2.1.2
transitivePeerDependencies:
- supports-color
@ -16159,7 +16172,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.37.0
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16167,7 +16180,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16175,7 +16188,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16184,7 +16197,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16199,7 +16212,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/memcached': 2.2.10
transitivePeerDependencies:
- supports-color
@ -16208,7 +16221,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16217,7 +16230,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16225,7 +16238,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/sql-common': 0.41.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
@ -16234,7 +16247,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/mysql': 2.15.26
transitivePeerDependencies:
- supports-color
@ -16243,7 +16256,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16251,7 +16264,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16259,7 +16272,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/oracledb': 6.5.2
transitivePeerDependencies:
- supports-color
@ -16269,7 +16282,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/sql-common': 0.41.0(@opentelemetry/api@1.9.0)
'@types/pg': 8.6.1
'@types/pg-pool': 2.0.6
@ -16290,7 +16303,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.37.0
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16299,7 +16312,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.37.0
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16308,7 +16321,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16316,7 +16329,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16331,7 +16344,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
transitivePeerDependencies:
- supports-color
@ -16339,7 +16352,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.201.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@types/tedious': 4.0.14
transitivePeerDependencies:
- supports-color
@ -16443,35 +16456,35 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/resource-detector-aws@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/resource-detector-azure@0.8.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/resource-detector-container@0.7.2(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
'@opentelemetry/resource-detector-gcp@0.35.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.34.0
'@opentelemetry/semantic-conventions': 1.36.0
gcp-metadata: 6.1.1
transitivePeerDependencies:
- encoding
@ -16661,7 +16674,7 @@ snapshots:
'@platejs/ai@49.2.4(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
dependencies:
'@platejs/markdown': 49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/markdown': 49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/selection': 49.2.4(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
@ -16671,20 +16684,20 @@ snapshots:
- supports-color
- typescript
'@platejs/autoformat@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/autoformat@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
lodash: 4.17.21
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/basic-nodes@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/basic-nodes@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/basic-styles@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/basic-styles@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -16734,7 +16747,7 @@ snapshots:
html-entities: 2.6.0
is-hotkey: 0.2.0
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1)
jotai-optics: 0.4.0(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(optics-ts@2.4.1)
jotai-optics: 0.4.0(jotai@2.8.4(react@18.3.1))(optics-ts@2.4.1)
jotai-x: 2.3.3(@types/react@18.3.23)(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
nanoid: 5.1.5
@ -16745,7 +16758,7 @@ snapshots:
slate-react: 0.117.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)
use-deep-compare: 1.3.0(react@18.3.1)
zustand: 5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))
zustand-x: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)))
zustand-x: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)))
transitivePeerDependencies:
- '@types/react'
- immer
@ -16755,7 +16768,7 @@ snapshots:
- slate-dom
- use-sync-external-store
'@platejs/date@49.0.2(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/date@49.0.2(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -16794,7 +16807,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/floating@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/floating@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@floating-ui/core': 1.7.2
'@floating-ui/react': 0.27.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -16802,7 +16815,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/indent@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/indent@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -16815,28 +16828,28 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/layout@49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/layout@49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/link@49.1.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/link@49.1.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@platejs/floating': 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/floating': 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/list@49.2.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/list@49.2.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@platejs/indent': 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/indent': 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
clsx: 2.1.1
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/markdown@49.2.1(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
'@platejs/markdown@49.2.1(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
dependencies:
marked: 15.0.12
mdast-util-math: 3.0.0
@ -16853,14 +16866,14 @@ snapshots:
- supports-color
- typescript
'@platejs/math@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/math@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
katex: 0.16.22
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/media@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/media@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
js-video-url-parser: 0.5.1
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
@ -16874,7 +16887,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/resizable@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/resizable@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -16910,23 +16923,23 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/table@49.1.13(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/table@49.1.13(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@platejs/resizable': 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/resizable': 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/toc@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/toc@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/toggle@49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/toggle@49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@platejs/indent': 49.0.0(platejs@49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/indent': 49.0.0(platejs@49.2.9(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
platejs: 49.2.9(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -18808,9 +18821,9 @@ snapshots:
'@tootallnate/once@2.0.0': {}
'@trigger.dev/build@4.0.0-v4-beta.27(typescript@5.8.3)':
'@trigger.dev/build@4.0.0-v4-beta.28(typescript@5.8.3)':
dependencies:
'@trigger.dev/core': 4.0.0-v4-beta.27
'@trigger.dev/core': 4.0.0-v4-beta.28
pkg-types: 1.3.1
tinyglobby: 0.2.14
tsconfck: 3.1.3(typescript@5.8.3)
@ -18860,6 +18873,46 @@ snapshots:
- supports-color
- utf-8-validate
'@trigger.dev/core@4.0.0-v4-beta.28':
dependencies:
'@bugsnag/cuid': 3.2.1
'@electric-sql/client': 1.0.0-beta.1
'@google-cloud/precise-date': 4.0.0
'@jsonhero/path': 1.0.21
'@opentelemetry/api': 1.9.0
'@opentelemetry/api-logs': 0.203.0
'@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
'@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.36.0
dequal: 2.0.3
eventsource: 3.0.7
eventsource-parser: 3.0.3
execa: 8.0.1
humanize-duration: 3.33.0
jose: 5.10.0
lodash.get: 4.4.2
nanoid: 3.3.8
prom-client: 15.1.3
socket.io: 4.7.4
socket.io-client: 4.7.5
std-env: 3.9.0
superjson: 2.2.2
tinyexec: 0.3.2
uncrypto: 0.1.3
zod: 3.25.76
zod-error: 1.5.0
zod-validation-error: 1.5.0(zod@3.25.76)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
'@trigger.dev/sdk@4.0.0-v4-beta.27(ai@4.3.16(react@18.3.1)(zod@3.25.1))(zod@3.25.1)':
dependencies:
'@opentelemetry/api': 1.9.0
@ -18882,6 +18935,28 @@ snapshots:
- supports-color
- utf-8-validate
'@trigger.dev/sdk@4.0.0-v4-beta.28(ai@4.3.16(react@18.3.1)(zod@3.25.1))(zod@3.25.1)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.36.0
'@trigger.dev/core': 4.0.0-v4-beta.28
chalk: 5.4.1
cronstrue: 2.59.0
debug: 4.4.1
evt: 2.5.9
slug: 6.1.0
ulid: 2.4.0
uncrypto: 0.1.3
uuid: 9.0.1
ws: 8.18.3
zod: 3.25.1
optionalDependencies:
ai: 4.3.16(react@18.3.1)(zod@3.25.1)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
'@tybys/wasm-util@0.9.0':
dependencies:
tslib: 2.8.1
@ -19425,6 +19500,15 @@ snapshots:
msw: 2.10.4(@types/node@20.19.4)(typescript@5.8.3)
vite: 7.0.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
'@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@7.0.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
msw: 2.10.4(@types/node@24.0.10)(typescript@5.8.3)
vite: 7.0.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
'@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@7.0.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))':
dependencies:
'@vitest/spy': 3.2.4
@ -19463,7 +19547,7 @@ snapshots:
sirv: 3.0.1
tinyglobby: 0.2.14
tinyrainbow: 2.0.0
vitest: 3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@24.0.10)(@vitest/ui@3.2.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
vitest: 3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@20.19.4)(@vitest/ui@3.2.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(msw@2.10.4(@types/node@20.19.4)(typescript@5.8.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
'@vitest/utils@3.2.4':
dependencies:
@ -22694,7 +22778,7 @@ snapshots:
jose@5.10.0: {}
jotai-optics@0.4.0(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(optics-ts@2.4.1):
jotai-optics@0.4.0(jotai@2.8.4(react@18.3.1))(optics-ts@2.4.1):
dependencies:
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1)
optics-ts: 2.4.1
@ -26652,7 +26736,7 @@ snapshots:
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
'@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@7.0.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
'@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@7.0.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@ -27059,7 +27143,7 @@ snapshots:
zod@3.25.76: {}
zustand-x@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))):
zustand-x@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))):
dependencies:
immer: 10.1.1
lodash.mapvalues: 4.6.0

View File

@ -125,7 +125,11 @@
"R2_BUCKET",
"PLAYWRIGHT_START_COMMAND",
"DAYTONA_API_KEY"
"DAYTONA_API_KEY",
"SLACK_CLIENT_ID",
"SLACK_CLIENT_SECRET",
"SLACK_SIGNING_SECRET"
],
"envMode": "strict"
}