diff --git a/apps/agents/package.json b/apps/agents/package.json
index b08aa640..e7afbd1d 100644
--- a/apps/agents/package.json
+++ b/apps/agents/package.json
@@ -12,7 +12,7 @@
"license": "MIT",
"private": true,
"scripts": {
- "dev": "npx @langchain/langgraph-cli dev --port 54367 --config ../../langgraph.json",
+ "dev": "langgraphjs dev --port 54367 --config ../../langgraph.json --no-browser",
"build": "yarn clean && tsc",
"clean": "rm -rf ./dist .turbo || true",
"format": "prettier --config .prettierrc --write \"src\"",
@@ -41,6 +41,7 @@
"exa-js": "^1.4.10",
"framer-motion": "^11.11.9",
"groq-sdk": "^0.13.0",
+ "hono": "^4.7.6",
"langchain": "^0.3.14",
"langsmith": "^0.3.3",
"lodash": "^4.17.21",
@@ -52,6 +53,8 @@
"@eslint/js": "^9.12.0",
"@types/eslint__js": "^8.42.3",
"@types/lodash": "^4.17.12",
+ "@langchain/langgraph-api": "http://localhost:3123/18/@langchain/langgraph-api",
+ "@langchain/langgraph-cli": "http://localhost:3123/18/@langchain/langgraph-cli",
"@types/node": "^20",
"@types/pdf-parse": "^1.1.4",
"@types/uuid": "^10.0.0",
@@ -65,5 +68,8 @@
"typescript": "^5",
"typescript-eslint": "^8.8.1",
"vitest": "^3.0.4"
+ },
+ "resolutions": {
+ "@langchain/langgraph-sdk": "http://localhost:3123/18/@langchain/langgraph-sdk"
}
}
diff --git a/apps/agents/src/auth/index.ts b/apps/agents/src/auth/index.ts
new file mode 100644
index 00000000..c95e44b1
--- /dev/null
+++ b/apps/agents/src/auth/index.ts
@@ -0,0 +1,118 @@
+import { Auth, HTTPException } from "@langchain/langgraph-sdk/auth";
+import { CONTEXT_DOCUMENTS_NAMESPACE } from "@opencanvas/shared/constants";
+import { createClient, UserResponse } from "@supabase/supabase-js";
+
+const USER_PERMISSIONS = [
+ "threads:create",
+ "threads:read",
+ "threads:update",
+ "threads:delete",
+ "threads:search",
+ "threads:create_run",
+ "assistants:create",
+ "assistants:read",
+ "assistants:update",
+ "assistants:delete",
+ "assistants:search",
+ "assistants:write",
+ "store:put",
+ "store:get",
+ "store:search",
+ "store:list_namespaces",
+ "store:delete",
+];
+
+const isContextDocumentNamespace = (namespace: string[]): boolean => {
+ return namespace.includes(CONTEXT_DOCUMENTS_NAMESPACE[0]);
+};
+
+export const auth = new Auth()
+ .authenticate(async (request) => {
+ const authorization = request.headers.get("Authorization");
+
+ const exc = new HTTPException(401, {
+ message: "Could not validate credentials",
+ headers: { "WWW-Authenticate": "Bearer" },
+ });
+
+ if (!authorization?.toLocaleLowerCase().startsWith("bearer ")) {
+ console.log("authorization could not verify", authorization);
+ throw exc;
+ }
+
+ const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
+ const supabaseKey = process.env.SUPABASE_SERVICE_ROLE;
+ if (!supabaseUrl || !supabaseKey) {
+ throw new HTTPException(555, {
+ message:
+ "SUPABASE_URL or SUPABASE_SERVICE_ROLE environment variables are not set",
+ });
+ }
+ const supabaseClient = createClient(supabaseUrl, supabaseKey);
+
+ let authRes: UserResponse | undefined;
+
+ try {
+ authRes = await supabaseClient.auth.getUser(authorization?.split(" ")[1]);
+ } catch (error) {
+ throw new HTTPException(401, {
+ message: "Failed to verify JWT token",
+ cause: error,
+ });
+ }
+
+ if (!authRes.data.user) throw exc;
+
+ const user = authRes.data.user;
+ if (!user) throw exc;
+
+ return {
+ permissions: USER_PERMISSIONS,
+ is_authenticated: true,
+ display_name: user.user_metadata.display_name,
+ identity: user.id,
+ role: "user",
+ };
+ })
+ .on("*", ({ permissions }) => {
+ if (!permissions?.length) {
+ throw new HTTPException(403, { message: "Not authorized" });
+ }
+ })
+ .on("assistants:create", ({ value, user, permissions }) => {
+ if (!permissions?.includes("assistants:write")) {
+ throw new HTTPException(403, { message: "Not authorized" });
+ }
+
+ value.metadata ??= {};
+ value.metadata["user_id"] = user.identity;
+ })
+ .on("assistants:search", ({ user }) => {
+ return { user_id: user.identity };
+ })
+ .on(["threads", "assistants"], ({ action, value, user }) => {
+ const filters = { user_id: user.identity };
+ if (
+ action === "threads:create_run" ||
+ action === "threads:update" ||
+ action === "threads:create" ||
+ action === "assistants:create" ||
+ action === "assistants:update"
+ ) {
+ value.metadata ??= {};
+ value.metadata["user_id"] = user.identity;
+ }
+ return filters;
+ })
+ .on("store", ({ value, user }) => {
+ const identity = user.identity;
+ // Throw an error if their identity is undefined, or if the namespace does not include their identity and is not a context document namespace
+ // this is due to the legacy namespacing of the context documents which do not include the user identity
+ if (
+ !identity ||
+ (!value.namespace?.includes(identity) &&
+ !isContextDocumentNamespace(value.namespace ?? []))
+ ) {
+ throw new HTTPException(403, { message: "Not authorized" });
+ }
+ });
diff --git a/apps/agents/src/open-canvas/nodes/customAction.ts b/apps/agents/src/open-canvas/nodes/customAction.ts
index 2d52c105..44ae867a 100644
--- a/apps/agents/src/open-canvas/nodes/customAction.ts
+++ b/apps/agents/src/open-canvas/nodes/customAction.ts
@@ -8,14 +8,8 @@ import {
ArtifactCodeV3,
ArtifactMarkdownV3,
ArtifactV3,
- CustomQuickAction,
- Reflections,
} from "@opencanvas/shared/types";
-import {
- ensureStoreInConfig,
- formatReflections,
- getModelFromConfig,
-} from "../../utils.js";
+import { getModelFromConfig } from "../../utils.js";
import {
CUSTOM_QUICK_ACTION_ARTIFACT_CONTENT_PROMPT,
CUSTOM_QUICK_ACTION_ARTIFACT_PROMPT_PREFIX,
@@ -26,6 +20,8 @@ import {
OpenCanvasGraphAnnotation,
OpenCanvasGraphReturnType,
} from "../state.js";
+import { getReflections } from "../../stores/reflections.js";
+import { getCustomActions } from "../../stores/custom-actions.js";
const formatMessages = (messages: BaseMessage[]): string =>
messages
@@ -47,47 +43,26 @@ export const customAction = async (
temperature: 0.5,
});
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- const userId = config.configurable?.supabase_user_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- if (!userId) {
- throw new Error("`user.id` not found in configurable");
- }
- const customActionsNamespace = ["custom_actions", userId];
- const actionsKey = "actions";
-
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
-
- const [customActionsItem, memories] = await Promise.all([
- store.get(customActionsNamespace, actionsKey),
- store.get(memoryNamespace, memoryKey),
+ const [customQuickAction, reflections] = await Promise.all([
+ getCustomActions(config.store, {
+ userId: config.configurable?.user_id,
+ customQuickActionId: state.customQuickActionId,
+ }),
+ getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ }),
]);
- if (!customActionsItem?.value) {
- throw new Error("No custom actions found.");
- }
- const customQuickAction = customActionsItem.value[
- state.customQuickActionId
- ] as CustomQuickAction | undefined;
- if (!customQuickAction) {
- throw new Error(
- `No custom quick action found from ID ${state.customQuickActionId}`
- );
- }
const currentArtifactContent = state.artifact
? getArtifactContent(state.artifact)
: undefined;
let formattedPrompt = `\n${customQuickAction.prompt}\n`;
- if (customQuickAction.includeReflections && memories?.value) {
- const memoriesAsString = formatReflections(memories.value as Reflections);
+ if (customQuickAction.includeReflections && reflections) {
const reflectionsPrompt = REFLECTIONS_QUICK_ACTION_PROMPT.replace(
"{reflections}",
- memoriesAsString
+ reflections
);
formattedPrompt += `\n\n${reflectionsPrompt}`;
}
diff --git a/apps/agents/src/open-canvas/nodes/generate-artifact/index.ts b/apps/agents/src/open-canvas/nodes/generate-artifact/index.ts
index 100031fd..7d0f0324 100644
--- a/apps/agents/src/open-canvas/nodes/generate-artifact/index.ts
+++ b/apps/agents/src/open-canvas/nodes/generate-artifact/index.ts
@@ -1,6 +1,5 @@
import {
createContextDocumentMessages,
- getFormattedReflections,
getModelConfig,
getModelFromConfig,
isUsingO1MiniModel,
@@ -15,6 +14,7 @@ import {
import { ARTIFACT_TOOL_SCHEMA } from "./schemas.js";
import { createArtifactContent, formatNewArtifactPrompt } from "./utils.js";
import { z } from "zod";
+import { getReflections } from "../../../stores/reflections.js";
/**
* Generate a new artifact based on the user's query.
@@ -44,9 +44,13 @@ export const generateArtifact = async (
}
);
- const memoriesAsString = await getFormattedReflections(config);
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
+
const formattedNewArtifactPrompt = formatNewArtifactPrompt(
- memoriesAsString,
+ reflections,
modelName
);
diff --git a/apps/agents/src/open-canvas/nodes/generateFollowup.ts b/apps/agents/src/open-canvas/nodes/generateFollowup.ts
index 092c50a8..29f35f8a 100644
--- a/apps/agents/src/open-canvas/nodes/generateFollowup.ts
+++ b/apps/agents/src/open-canvas/nodes/generateFollowup.ts
@@ -4,13 +4,12 @@ import {
getArtifactContent,
isArtifactMarkdownContent,
} from "@opencanvas/shared/utils/artifacts";
-import { Reflections } from "@opencanvas/shared/types";
-import { ensureStoreInConfig, formatReflections } from "../../utils.js";
import { FOLLOWUP_ARTIFACT_PROMPT } from "../prompts.js";
import {
OpenCanvasGraphAnnotation,
OpenCanvasGraphReturnType,
} from "../state.js";
+import { getReflections } from "../../stores/reflections.js";
/**
* Generate a followup message after generating or updating an artifact.
@@ -25,19 +24,10 @@ export const generateFollowup = async (
isToolCalling: true,
});
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections, {
- onlyContent: true,
- })
- : "No reflections found.";
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const currentArtifactContent = state.artifact
? getArtifactContent(state.artifact)
@@ -53,7 +43,7 @@ export const generateFollowup = async (
"{artifactContent}",
artifactContent || "No artifacts generated yet."
)
- .replace("{reflections}", memoriesAsString)
+ .replace("{reflections}", reflections)
.replace(
"{conversation}",
state._messages
diff --git a/apps/agents/src/open-canvas/nodes/replyToGeneralInput.ts b/apps/agents/src/open-canvas/nodes/replyToGeneralInput.ts
index 11dfd1e7..c3af970d 100644
--- a/apps/agents/src/open-canvas/nodes/replyToGeneralInput.ts
+++ b/apps/agents/src/open-canvas/nodes/replyToGeneralInput.ts
@@ -1,11 +1,8 @@
import { LangGraphRunnableConfig } from "@langchain/langgraph";
import { getArtifactContent } from "@opencanvas/shared/utils/artifacts";
-import { Reflections } from "@opencanvas/shared/types";
import {
createContextDocumentMessages,
- ensureStoreInConfig,
formatArtifactContentWithTemplate,
- formatReflections,
getModelFromConfig,
isUsingO1MiniModel,
} from "../../utils.js";
@@ -14,6 +11,7 @@ import {
OpenCanvasGraphAnnotation,
OpenCanvasGraphReturnType,
} from "../state.js";
+import { getReflections } from "../../stores/reflections.js";
/**
* Generate responses to questions. Does not generate artifacts.
@@ -39,20 +37,13 @@ You also have the following reflections on style guidelines and general memories
? getArtifactContent(state.artifact)
: undefined;
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections)
- : "No reflections found.";
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const formattedPrompt = prompt
- .replace("{reflections}", memoriesAsString)
+ .replace("{reflections}", reflections)
.replace(
"{currentArtifactPrompt}",
currentArtifactContent
diff --git a/apps/agents/src/open-canvas/nodes/rewrite-artifact/index.ts b/apps/agents/src/open-canvas/nodes/rewrite-artifact/index.ts
index 4d2bea27..f3bbb58e 100644
--- a/apps/agents/src/open-canvas/nodes/rewrite-artifact/index.ts
+++ b/apps/agents/src/open-canvas/nodes/rewrite-artifact/index.ts
@@ -12,7 +12,6 @@ import {
} from "./utils.js";
import {
createContextDocumentMessages,
- getFormattedReflections,
getModelConfig,
getModelFromConfig,
isUsingO1MiniModel,
@@ -24,6 +23,7 @@ import {
extractThinkingAndResponseTokens,
isThinkingModel,
} from "@opencanvas/shared/utils/thinking";
+import { getReflections } from "../../../stores/reflections.js";
export const rewriteArtifact = async (
state: typeof OpenCanvasGraphAnnotation.State,
@@ -33,7 +33,11 @@ export const rewriteArtifact = async (
const smallModelWithConfig = (await getModelFromConfig(config)).withConfig({
runName: "rewrite_artifact_model_call",
});
- const memoriesAsString = await getFormattedReflections(config);
+
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const { currentArtifactContent, recentHumanMessage } = validateState(state);
const artifactMetaToolCall = await optionallyUpdateArtifactMeta(
@@ -49,7 +53,7 @@ export const rewriteArtifact = async (
const formattedPrompt = buildPrompt({
artifactContent,
- memoriesAsString,
+ reflections,
isNewType,
artifactMetaToolCall,
});
diff --git a/apps/agents/src/open-canvas/nodes/rewrite-artifact/update-meta.ts b/apps/agents/src/open-canvas/nodes/rewrite-artifact/update-meta.ts
index 1dcdc27a..3812e30a 100644
--- a/apps/agents/src/open-canvas/nodes/rewrite-artifact/update-meta.ts
+++ b/apps/agents/src/open-canvas/nodes/rewrite-artifact/update-meta.ts
@@ -8,8 +8,8 @@ import {
import { getArtifactContent } from "@opencanvas/shared/utils/artifacts";
import { GET_TITLE_TYPE_REWRITE_ARTIFACT } from "../../prompts.js";
import { OPTIONALLY_UPDATE_ARTIFACT_META_SCHEMA } from "./schemas.js";
-import { getFormattedReflections } from "../../../utils.js";
import { z } from "zod";
+import { getReflections } from "../../../stores/reflections.js";
export async function optionallyUpdateArtifactMeta(
state: typeof OpenCanvasGraphAnnotation.State,
@@ -29,7 +29,10 @@ export async function optionallyUpdateArtifactMeta(
)
.withConfig({ runName: "optionally_update_artifact_meta" });
- const memoriesAsString = await getFormattedReflections(config);
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const currentArtifactContent = state.artifact
? getArtifactContent(state.artifact)
@@ -42,7 +45,7 @@ export async function optionallyUpdateArtifactMeta(
GET_TITLE_TYPE_REWRITE_ARTIFACT.replace(
"{artifact}",
formatArtifactContent(currentArtifactContent, true)
- ).replace("{reflections}", memoriesAsString);
+ ).replace("{reflections}", reflections);
const recentHumanMessage = state._messages.findLast(
(message) => message.getType() === "human"
diff --git a/apps/agents/src/open-canvas/nodes/rewrite-artifact/utils.ts b/apps/agents/src/open-canvas/nodes/rewrite-artifact/utils.ts
index 736ac0bb..af6b6c23 100644
--- a/apps/agents/src/open-canvas/nodes/rewrite-artifact/utils.ts
+++ b/apps/agents/src/open-canvas/nodes/rewrite-artifact/utils.ts
@@ -51,14 +51,14 @@ const buildMetaPrompt = (
interface BuildPromptArgs {
artifactContent: string;
- memoriesAsString: string;
+ reflections: string;
isNewType: boolean;
artifactMetaToolCall: z.infer;
}
export const buildPrompt = ({
artifactContent,
- memoriesAsString,
+ reflections,
isNewType,
artifactMetaToolCall,
}: BuildPromptArgs) => {
@@ -68,7 +68,7 @@ export const buildPrompt = ({
"{artifactContent}",
artifactContent
)
- .replace("{reflections}", memoriesAsString)
+ .replace("{reflections}", reflections)
.replace("{updateMetaPrompt}", metaPrompt);
};
diff --git a/apps/agents/src/open-canvas/nodes/rewriteArtifactTheme.ts b/apps/agents/src/open-canvas/nodes/rewriteArtifactTheme.ts
index 08c461a0..14c0c758 100644
--- a/apps/agents/src/open-canvas/nodes/rewriteArtifactTheme.ts
+++ b/apps/agents/src/open-canvas/nodes/rewriteArtifactTheme.ts
@@ -8,13 +8,8 @@ import {
isArtifactMarkdownContent,
getArtifactContent,
} from "@opencanvas/shared/utils/artifacts";
-import { ArtifactV3, Reflections } from "@opencanvas/shared/types";
-import {
- ensureStoreInConfig,
- formatReflections,
- getModelConfig,
- getModelFromConfig,
-} from "../../utils.js";
+import { ArtifactV3 } from "@opencanvas/shared/types";
+import { getModelConfig, getModelFromConfig } from "../../utils.js";
import {
ADD_EMOJIS_TO_ARTIFACT_PROMPT,
CHANGE_ARTIFACT_LANGUAGE_PROMPT,
@@ -27,6 +22,7 @@ import {
OpenCanvasGraphReturnType,
} from "../state.js";
import { AIMessage } from "@langchain/core/messages";
+import { getReflections } from "src/stores/reflections.js";
export const rewriteArtifactTheme = async (
state: typeof OpenCanvasGraphAnnotation.State,
@@ -35,17 +31,10 @@ export const rewriteArtifactTheme = async (
const { modelName } = getModelConfig(config);
const smallModel = await getModelFromConfig(config);
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections)
- : "No reflections found.";
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const currentArtifactContent = state.artifact
? getArtifactContent(state.artifact)
@@ -117,7 +106,7 @@ export const rewriteArtifactTheme = async (
throw new Error("No theme selected");
}
- formattedPrompt = formattedPrompt.replace("{reflections}", memoriesAsString);
+ formattedPrompt = formattedPrompt.replace("{reflections}", reflections);
const newArtifactValues = await smallModel.invoke([
{ role: "user", content: formattedPrompt },
diff --git a/apps/agents/src/open-canvas/nodes/updateArtifact.ts b/apps/agents/src/open-canvas/nodes/updateArtifact.ts
index 2feabcab..955a0f5a 100644
--- a/apps/agents/src/open-canvas/nodes/updateArtifact.ts
+++ b/apps/agents/src/open-canvas/nodes/updateArtifact.ts
@@ -3,15 +3,9 @@ import {
getArtifactContent,
isArtifactCodeContent,
} from "@opencanvas/shared/utils/artifacts";
-import {
- ArtifactCodeV3,
- ArtifactV3,
- Reflections,
-} from "@opencanvas/shared/types";
+import { ArtifactCodeV3, ArtifactV3 } from "@opencanvas/shared/types";
import {
createContextDocumentMessages,
- ensureStoreInConfig,
- formatReflections,
getModelConfig,
getModelFromConfig,
isUsingO1MiniModel,
@@ -21,6 +15,7 @@ import {
OpenCanvasGraphAnnotation,
OpenCanvasGraphReturnType,
} from "../state.js";
+import { getReflections } from "../../stores/reflections.js";
/**
* Update an existing artifact based on the user's query.
@@ -51,17 +46,10 @@ export const updateArtifact = async (
);
}
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections)
- : "No reflections found.";
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const currentArtifactContent = state.artifact
? getArtifactContent(state.artifact)
@@ -105,7 +93,7 @@ export const updateArtifact = async (
)
.replace("{beforeHighlight}", beforeHighlight)
.replace("{afterHighlight}", afterHighlight)
- .replace("{reflections}", memoriesAsString);
+ .replace("{reflections}", reflections);
const recentHumanMessage = state._messages.findLast(
(message) => message.getType() === "human"
diff --git a/apps/agents/src/reflection/index.ts b/apps/agents/src/reflection/index.ts
index 6c8958db..13007a96 100644
--- a/apps/agents/src/reflection/index.ts
+++ b/apps/agents/src/reflection/index.ts
@@ -8,31 +8,23 @@ import {
ReflectionGraphAnnotation,
ReflectionGraphReturnType,
} from "./state.js";
-import { Reflections } from "@opencanvas/shared/types";
import { REFLECT_SYSTEM_PROMPT, REFLECT_USER_PROMPT } from "./prompts.js";
import { z } from "zod";
-import { ensureStoreInConfig, formatReflections } from "../utils.js";
import {
getArtifactContent,
isArtifactMarkdownContent,
} from "@opencanvas/shared/utils/artifacts";
+import { getReflections, setReflections } from "../stores/reflections.js";
+import { Reflections } from "@opencanvas/shared/types";
export const reflect = async (
state: typeof ReflectionGraphAnnotation.State,
config: LangGraphRunnableConfig
): Promise => {
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.open_canvas_assistant_id;
- if (!assistantId) {
- throw new Error("`open_canvas_assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
-
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections)
- : "No reflections found.";
+ const reflections = await getReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ });
const generateReflectionTool = {
name: "generate_reflections",
@@ -67,7 +59,7 @@ export const reflect = async (
const formattedSystemPrompt = REFLECT_SYSTEM_PROMPT.replace(
"{artifact}",
artifactContent ?? "No artifact found."
- ).replace("{reflections}", memoriesAsString);
+ ).replace("{reflections}", reflections);
const formattedUserPrompt = REFLECT_USER_PROMPT.replace(
"{conversation}",
@@ -92,12 +84,16 @@ export const reflect = async (
throw new Error("Reflection tool call failed.");
}
- const newMemories = {
+ const newMemories: Reflections = {
styleRules: reflectionToolCall.args.styleRules,
content: reflectionToolCall.args.content,
};
- await store.put(memoryNamespace, memoryKey, newMemories);
+ await setReflections(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ userId: config.configurable?.user_id,
+ reflections: newMemories,
+ });
return {};
};
diff --git a/apps/agents/src/stores/context-documents.ts b/apps/agents/src/stores/context-documents.ts
new file mode 100644
index 00000000..d05f3c5c
--- /dev/null
+++ b/apps/agents/src/stores/context-documents.ts
@@ -0,0 +1,59 @@
+import { BaseStore } from "@langchain/langgraph";
+import { ContextDocument } from "@opencanvas/shared/types";
+import { traceable } from "langsmith/traceable";
+import { constructContextDocumentsFields } from "@opencanvas/shared/stores/context-documents";
+
+async function getContextDocumentsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ assistantId: string | undefined;
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const assistantId = inputs.assistantId;
+ if (!assistantId) {
+ throw new Error("`user_id` not found in configurable");
+ }
+
+ const { namespace, key } = constructContextDocumentsFields({
+ assistantId,
+ });
+
+ const item = await store.get(namespace, key);
+ if (!item?.value?.documents) {
+ return [];
+ }
+ return item.value.documents;
+}
+
+export const getContextDocuments = traceable(getContextDocumentsFunc, {
+ name: "get_context_documents",
+});
+
+async function setContextDocumentsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ assistantId: string | undefined;
+ documents: ContextDocument[];
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const assistantId = inputs.assistantId;
+ if (!assistantId) {
+ throw new Error("`assistant_id` not found in configurable");
+ }
+
+ const { namespace, key } = constructContextDocumentsFields({
+ assistantId,
+ });
+
+ await store.put(namespace, key, { documents: inputs.documents });
+}
+
+export const setContextDocuments = traceable(setContextDocumentsFunc, {
+ name: "set_context_documents",
+});
diff --git a/apps/agents/src/stores/custom-actions.ts b/apps/agents/src/stores/custom-actions.ts
new file mode 100644
index 00000000..e4f9ae3a
--- /dev/null
+++ b/apps/agents/src/stores/custom-actions.ts
@@ -0,0 +1,60 @@
+import { BaseStore } from "@langchain/langgraph";
+import { CustomQuickAction } from "@opencanvas/shared/types";
+import { traceable } from "langsmith/traceable";
+
+async function getCustomActionsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ userId: string | undefined;
+ customQuickActionId: string;
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const userId = inputs.userId;
+ if (!userId) {
+ throw new Error("`user_id` not found in configurable");
+ }
+
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+ const actions = await store.get(customActionsNamespace, actionsKey);
+ const customQuickAction = actions?.value[inputs.customQuickActionId] as
+ | CustomQuickAction
+ | undefined;
+ if (!customQuickAction) {
+ throw new Error(
+ `No custom quick action found from ID ${inputs.customQuickActionId}`
+ );
+ }
+ return customQuickAction;
+}
+
+export const getCustomActions = traceable(getCustomActionsFunc, {
+ name: "get_custom_actions",
+});
+
+async function setCustomActionsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ userId: string | undefined;
+ customQuickAction: CustomQuickAction;
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const userId = inputs.userId;
+ if (!userId) {
+ throw new Error("`user_id` not found in configurable");
+ }
+
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+ await store.put(customActionsNamespace, actionsKey, inputs.customQuickAction);
+}
+
+export const setCustomActions = traceable(setCustomActionsFunc, {
+ name: "set_custom_actions",
+});
diff --git a/apps/agents/src/stores/reflections.ts b/apps/agents/src/stores/reflections.ts
new file mode 100644
index 00000000..5c881482
--- /dev/null
+++ b/apps/agents/src/stores/reflections.ts
@@ -0,0 +1,72 @@
+import { BaseStore } from "@langchain/langgraph";
+import { formatReflections } from "../utils.js";
+import { Reflections } from "@opencanvas/shared/types";
+import { traceable } from "langsmith/traceable";
+import { constructReflectionFields } from "@opencanvas/shared/stores/reflection";
+
+async function getReflectionsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ assistantId: string | undefined;
+ userId: string | undefined;
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const assistantId = inputs.assistantId;
+ if (!assistantId) {
+ throw new Error("`assistant_id` not found in configurable");
+ }
+ const userId = inputs.userId;
+ if (!userId) {
+ throw new Error("`user_id` not found in configurable");
+ }
+
+ const { namespace, key } = constructReflectionFields({
+ userId,
+ assistantId,
+ });
+
+ const memories = await store.get(namespace, key);
+ const memoriesAsString = memories?.value
+ ? formatReflections(memories.value as Reflections)
+ : "No reflections found.";
+
+ return memoriesAsString;
+}
+
+export const getReflections = traceable(getReflectionsFunc, {
+ name: "get_reflections",
+});
+
+async function setReflectionsFunc(
+ store: BaseStore | undefined,
+ inputs: {
+ assistantId: string | undefined;
+ userId: string | undefined;
+ reflections: Reflections;
+ }
+): Promise {
+ if (!store) {
+ throw new Error("No store found.");
+ }
+ const assistantId = inputs.assistantId;
+ if (!assistantId) {
+ throw new Error("`assistant_id` not found in configurable");
+ }
+ const userId = inputs.userId;
+ if (!userId) {
+ throw new Error("`user_id` not found in configurable");
+ }
+
+ const { namespace, key } = constructReflectionFields({
+ userId,
+ assistantId,
+ });
+ await store.put(namespace, key, inputs.reflections);
+}
+
+export const setReflections = traceable(setReflectionsFunc, {
+ name: "set_reflections",
+});
diff --git a/apps/agents/src/utils.ts b/apps/agents/src/utils.ts
index fe3c8c2c..42a7bbdc 100644
--- a/apps/agents/src/utils.ts
+++ b/apps/agents/src/utils.ts
@@ -18,15 +18,13 @@ import {
MessageContentComplex,
MessageFieldWithRole,
} from "@langchain/core/messages";
-import {
- CONTEXT_DOCUMENTS_NAMESPACE,
- OC_WEB_SEARCH_RESULTS_MESSAGE_KEY,
-} from "@opencanvas/shared/constants";
+import { OC_WEB_SEARCH_RESULTS_MESSAGE_KEY } from "@opencanvas/shared/constants";
import {
TEMPERATURE_EXCLUDED_MODELS,
LANGCHAIN_USER_ONLY_MODELS,
} from "@opencanvas/shared/models";
import { createClient, Session, User } from "@supabase/supabase-js";
+import { getContextDocuments } from "./stores/context-documents.js";
export const formatReflections = (
reflections: Reflections,
@@ -109,27 +107,6 @@ export const ensureStoreInConfig = (
return config.store;
};
-export async function getFormattedReflections(
- config: LangGraphRunnableConfig
-): Promise {
- if (!config.store) {
- return "No reflections found.";
- }
- const store = ensureStoreInConfig(config);
- const assistantId = config.configurable?.assistant_id;
- if (!assistantId) {
- throw new Error("`assistant_id` not found in configurable");
- }
- const memoryNamespace = ["memories", assistantId];
- const memoryKey = "reflection";
- const memories = await store.get(memoryNamespace, memoryKey);
- const memoriesAsString = memories?.value
- ? formatReflections(memories.value as Reflections)
- : "No reflections found.";
-
- return memoriesAsString;
-}
-
export const formatArtifactContent = (
content: ArtifactMarkdownV3 | ArtifactCodeV3,
shortenContent?: boolean
@@ -512,19 +489,6 @@ export async function createContextDocumentMessagesOpenAI(
return await Promise.all(messagesPromises);
}
-async function getContextDocuments(
- config: LangGraphRunnableConfig
-): Promise {
- const store = config.store;
- const assistantId = config.configurable?.assistant_id;
- if (!store || !assistantId) {
- return [];
- }
-
- const result = await store.get(CONTEXT_DOCUMENTS_NAMESPACE, assistantId);
- return result?.value?.documents || [];
-}
-
export async function createContextDocumentMessages(
config: LangGraphRunnableConfig,
contextDocuments?: ContextDocument[]
@@ -533,7 +497,9 @@ export async function createContextDocumentMessages(
const documents: ContextDocument[] = contextDocuments || [];
if (!documents.length && config) {
- const docs = await getContextDocuments(config);
+ const docs = await getContextDocuments(config.store, {
+ assistantId: config.configurable?.assistant_id,
+ });
documents.push(...docs);
}
diff --git a/apps/web/src/app/api/[..._path]/route.ts b/apps/web/src/app/api/[..._path]/route.ts
deleted file mode 100644
index 3e062a0e..00000000
--- a/apps/web/src/app/api/[..._path]/route.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import { LANGGRAPH_API_URL } from "../../../constants";
-import { NextRequest, NextResponse } from "next/server";
-import { Session, User } from "@supabase/supabase-js";
-import { verifyUserAuthenticated } from "../../../lib/supabase/verify_user_server";
-
-function getCorsHeaders() {
- return {
- "Access-Control-Allow-Origin": "*",
- "Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE, OPTIONS",
- "Access-Control-Allow-Headers": "*",
- };
-}
-
-async function handleRequest(req: NextRequest, method: string) {
- let session: Session | undefined;
- let user: User | undefined;
- try {
- const authRes = await verifyUserAuthenticated();
- session = authRes?.session;
- user = authRes?.user;
- if (!session || !user) {
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
- } catch (e) {
- console.error("Failed to fetch user", e);
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
-
- try {
- const path = req.nextUrl.pathname.replace(/^\/?api\//, "");
- const url = new URL(req.url);
- const searchParams = new URLSearchParams(url.search);
- searchParams.delete("_path");
- searchParams.delete("nxtP_path");
- const queryString = searchParams.toString()
- ? `?${searchParams.toString()}`
- : "";
-
- const options: RequestInit = {
- method,
- headers: {
- "x-api-key": process.env.LANGCHAIN_API_KEY || "",
- },
- };
-
- if (["POST", "PUT", "PATCH"].includes(method)) {
- options.headers = {
- ...options.headers,
- "Content-Type": "application/json",
- };
- const bodyText = await req.text();
-
- if (typeof bodyText === "string" && bodyText.length > 0) {
- const parsedBody = JSON.parse(bodyText);
- parsedBody.config = parsedBody.config || {};
- parsedBody.config.configurable = {
- ...parsedBody.config.configurable,
- supabase_session: session,
- supabase_user_id: user.id,
- };
- options.body = JSON.stringify(parsedBody);
- } else {
- options.body = bodyText;
- }
- }
-
- const res = await fetch(
- `${LANGGRAPH_API_URL}/${path}${queryString}`,
- options
- );
-
- if (res.status >= 400) {
- console.error(
- "ERROR IN PROXY",
- `${LANGGRAPH_API_URL}/${path}${queryString}`,
- res.status,
- res.statusText
- );
- return new Response(res.body, {
- status: res.status,
- statusText: res.statusText,
- });
- }
-
- const headers = new Headers({
- ...getCorsHeaders(),
- });
- // Safely add headers from the original response
- res.headers.forEach((value, key) => {
- try {
- headers.set(key, value);
- } catch (error) {
- console.warn(`Failed to set header: ${key}`, error);
- }
- });
-
- return new Response(res.body, {
- status: res.status,
- statusText: res.statusText,
- headers,
- });
- } catch (e: any) {
- console.error("Error in proxy");
- console.error(e);
- console.error("\n\n\nEND ERROR\n\n");
- return NextResponse.json({ error: e.message }, { status: e.status ?? 500 });
- }
-}
-
-export const GET = (req: NextRequest) => handleRequest(req, "GET");
-export const POST = (req: NextRequest) => handleRequest(req, "POST");
-export const PUT = (req: NextRequest) => handleRequest(req, "PUT");
-export const PATCH = (req: NextRequest) => handleRequest(req, "PATCH");
-export const DELETE = (req: NextRequest) => handleRequest(req, "DELETE");
-
-// Add a new OPTIONS handler
-export const OPTIONS = () => {
- return new NextResponse(null, {
- status: 204,
- headers: {
- ...getCorsHeaders(),
- },
- });
-};
diff --git a/apps/web/src/app/api/runs/share/route.ts b/apps/web/src/app/api/runs/share/route.ts
index 5e9709e1..c281315d 100644
--- a/apps/web/src/app/api/runs/share/route.ts
+++ b/apps/web/src/app/api/runs/share/route.ts
@@ -43,24 +43,10 @@ export async function POST(req: NextRequest) {
apiKey: process.env.LANGCHAIN_API_KEY,
});
- try {
- const sharedRunURL = await shareRunWithRetry(lsClient, runId);
+ const sharedRunURL = await shareRunWithRetry(lsClient, runId);
- return new NextResponse(JSON.stringify({ sharedRunURL }), {
- status: 200,
- headers: { "Content-Type": "application/json" },
- });
- } catch (error) {
- console.error(
- `Failed to share run with id ${runId} after ${MAX_RETRIES} attempts:\n`,
- error
- );
- return new NextResponse(
- JSON.stringify({ error: "Failed to share run after multiple attempts." }),
- {
- status: 500,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
+ return new NextResponse(JSON.stringify({ sharedRunURL }), {
+ status: 200,
+ headers: { "Content-Type": "application/json" },
+ });
}
diff --git a/apps/web/src/app/api/store/delete/id/route.ts b/apps/web/src/app/api/store/delete/id/route.ts
deleted file mode 100644
index c2a8cb43..00000000
--- a/apps/web/src/app/api/store/delete/id/route.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { NextRequest, NextResponse } from "next/server";
-import { Client } from "@langchain/langgraph-sdk";
-import { LANGGRAPH_API_URL } from "@/constants";
-import { verifyUserAuthenticated } from "../../../../../lib/supabase/verify_user_server";
-
-export async function POST(req: NextRequest) {
- try {
- const authRes = await verifyUserAuthenticated();
- if (!authRes?.user) {
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
- } catch (e) {
- console.error("Failed to fetch user", e);
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
-
- const { namespace, key, id } = await req.json();
-
- const lgClient = new Client({
- apiKey: process.env.LANGCHAIN_API_KEY,
- apiUrl: LANGGRAPH_API_URL,
- });
-
- try {
- const currentItems = await lgClient.store.getItem(namespace, key);
- if (!currentItems?.value) {
- return new NextResponse(
- JSON.stringify({
- error: "Item not found",
- success: false,
- }),
- {
- status: 404,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
-
- const newValues = Object.fromEntries(
- Object.entries(currentItems.value).filter(([k]) => k !== id)
- );
-
- await lgClient.store.putItem(namespace, key, newValues);
-
- return new NextResponse(JSON.stringify({ success: true }), {
- status: 200,
- headers: { "Content-Type": "application/json" },
- });
- } catch (_) {
- return new NextResponse(
- JSON.stringify({ error: "Failed to share run after multiple attempts." }),
- {
- status: 500,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
-}
diff --git a/apps/web/src/app/api/store/delete/route.ts b/apps/web/src/app/api/store/delete/route.ts
deleted file mode 100644
index 9505381e..00000000
--- a/apps/web/src/app/api/store/delete/route.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { NextRequest, NextResponse } from "next/server";
-import { Client } from "@langchain/langgraph-sdk";
-import { LANGGRAPH_API_URL } from "@/constants";
-import { verifyUserAuthenticated } from "../../../../lib/supabase/verify_user_server";
-
-export async function POST(req: NextRequest) {
- try {
- const authRes = await verifyUserAuthenticated();
- if (!authRes?.user) {
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
- } catch (e) {
- console.error("Failed to fetch user", e);
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
-
- const { namespace, key } = await req.json();
-
- const lgClient = new Client({
- apiKey: process.env.LANGCHAIN_API_KEY,
- apiUrl: LANGGRAPH_API_URL,
- });
-
- try {
- await lgClient.store.deleteItem(namespace, key);
-
- return new NextResponse(JSON.stringify({ success: true }), {
- status: 200,
- headers: { "Content-Type": "application/json" },
- });
- } catch (_) {
- return new NextResponse(
- JSON.stringify({ error: "Failed to share run after multiple attempts." }),
- {
- status: 500,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
-}
diff --git a/apps/web/src/app/api/store/get/route.ts b/apps/web/src/app/api/store/get/route.ts
deleted file mode 100644
index 19d3c4d8..00000000
--- a/apps/web/src/app/api/store/get/route.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { NextRequest, NextResponse } from "next/server";
-import { Client } from "@langchain/langgraph-sdk";
-import { LANGGRAPH_API_URL } from "@/constants";
-import { verifyUserAuthenticated } from "../../../../lib/supabase/verify_user_server";
-
-export async function POST(req: NextRequest) {
- try {
- const authRes = await verifyUserAuthenticated();
- if (!authRes?.user) {
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
- } catch (e) {
- console.error("Failed to fetch user", e);
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
-
- const { namespace, key } = await req.json();
-
- const lgClient = new Client({
- apiKey: process.env.LANGCHAIN_API_KEY,
- apiUrl: LANGGRAPH_API_URL,
- });
-
- try {
- const item = await lgClient.store.getItem(namespace, key);
-
- return new NextResponse(JSON.stringify({ item }), {
- status: 200,
- headers: { "Content-Type": "application/json" },
- });
- } catch (_) {
- return new NextResponse(
- JSON.stringify({ error: "Failed to share run after multiple attempts." }),
- {
- status: 500,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
-}
diff --git a/apps/web/src/app/api/store/put/route.ts b/apps/web/src/app/api/store/put/route.ts
deleted file mode 100644
index 9a394c31..00000000
--- a/apps/web/src/app/api/store/put/route.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { NextRequest, NextResponse } from "next/server";
-import { Client } from "@langchain/langgraph-sdk";
-import { LANGGRAPH_API_URL } from "@/constants";
-import { verifyUserAuthenticated } from "../../../../lib/supabase/verify_user_server";
-
-export async function POST(req: NextRequest) {
- try {
- const authRes = await verifyUserAuthenticated();
- if (!authRes?.user) {
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
- } catch (e) {
- console.error("Failed to fetch user", e);
- return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
- }
-
- const { namespace, key, value } = await req.json();
-
- const lgClient = new Client({
- apiKey: process.env.LANGCHAIN_API_KEY,
- apiUrl: LANGGRAPH_API_URL,
- });
-
- try {
- await lgClient.store.putItem(namespace, key, value);
-
- return new NextResponse(JSON.stringify({ success: true }), {
- status: 200,
- headers: { "Content-Type": "application/json" },
- });
- } catch (_) {
- return new NextResponse(
- JSON.stringify({ error: "Failed to share run after multiple attempts." }),
- {
- status: 500,
- headers: { "Content-Type": "application/json" },
- }
- );
- }
-}
diff --git a/apps/web/src/constants.ts b/apps/web/src/constants.ts
index 0f4fa5bb..7155445a 100644
--- a/apps/web/src/constants.ts
+++ b/apps/web/src/constants.ts
@@ -1,5 +1,6 @@
export const LANGGRAPH_API_URL =
- process.env.LANGGRAPH_API_URL ?? "http://localhost:54367";
+ process.env.NEXT_PUBLIC_LANGGRAPH_API_URL ?? "http://localhost:54367";
+// process.env.LANGGRAPH_API_URL ?? "http://localhost:54367";
// v2 is tied to the 'open-canvas-prod' deployment.
export const ASSISTANT_ID_COOKIE = "oc_assistant_id_v2";
// export const ASSISTANT_ID_COOKIE = "oc_assistant_id";
diff --git a/apps/web/src/contexts/AssistantContext.tsx b/apps/web/src/contexts/AssistantContext.tsx
index bd101079..920f63d4 100644
--- a/apps/web/src/contexts/AssistantContext.tsx
+++ b/apps/web/src/contexts/AssistantContext.tsx
@@ -110,7 +110,7 @@ export function AssistantProvider({ children }: { children: ReactNode }) {
const getAssistants = async (userId: string): Promise => {
setIsLoadingAllAssistants(true);
try {
- const client = createClient();
+ const client = await createClient();
const response = await client.assistants.search({
metadata: {
user_id: userId,
@@ -134,7 +134,7 @@ export function AssistantProvider({ children }: { children: ReactNode }) {
const deleteAssistant = async (assistantId: string): Promise => {
setIsDeletingAssistant(true);
try {
- const client = createClient();
+ const client = await createClient();
await client.assistants.delete(assistantId);
if (selectedAssistant?.assistant_id === assistantId) {
@@ -167,7 +167,7 @@ export function AssistantProvider({ children }: { children: ReactNode }) {
}: CreateCustomAssistantArgs): Promise => {
setIsCreatingAssistant(true);
try {
- const client = createClient();
+ const client = await createClient();
const { tools, systemPrompt, name, documents, ...metadata } =
newAssistant;
const createdAssistant = await client.assistants.create({
@@ -210,7 +210,7 @@ export function AssistantProvider({ children }: { children: ReactNode }) {
}: EditCustomAssistantArgs): Promise => {
setIsEditingAssistant(true);
try {
- const client = createClient();
+ const client = await createClient();
const { tools, systemPrompt, name, documents, ...metadata } =
editedAssistant;
const response = await client.assistants.update(assistantId, {
@@ -308,7 +308,7 @@ export function AssistantProvider({ children }: { children: ReactNode }) {
return;
}
setIsLoadingAllAssistants(true);
- const client = createClient();
+ const client = await createClient();
let userAssistants: Assistant[] = [];
const assistantIdCookie = getCookie(ASSISTANT_ID_COOKIE);
diff --git a/apps/web/src/contexts/GraphContext.tsx b/apps/web/src/contexts/GraphContext.tsx
index 645d5b28..5e7f770d 100644
--- a/apps/web/src/contexts/GraphContext.tsx
+++ b/apps/web/src/contexts/GraphContext.tsx
@@ -62,6 +62,7 @@ import { useThreadContext } from "./ThreadProvider";
import { useAssistantContext } from "./AssistantContext";
import { StreamWorkerService } from "@/workers/graph-stream/streamWorker";
import { useQueryState } from "nuqs";
+import { createSupabaseClient } from "@/lib/supabase/client";
interface GraphData {
runId: string | undefined;
@@ -92,6 +93,15 @@ interface GraphData {
setUpdateRenderedArtifactRequired: Dispatch>;
}
+async function getSession() {
+ const supabaseClient = createSupabaseClient();
+ const session = await supabaseClient.auth.getSession();
+ if (!session.data.session) {
+ throw new Error("Failed to access session.");
+ }
+ return session.data.session;
+}
+
type GraphContentType = {
graphData: GraphData;
};
@@ -245,7 +255,7 @@ export function GraphProvider({ children }: { children: ReactNode }) {
if (isStreaming) return;
try {
- const client = createClient();
+ const client = await createClient();
await client.threads.updateState(threadId, {
values: {
artifact: artifactToUpdate,
@@ -347,12 +357,14 @@ export function GraphProvider({ children }: { children: ReactNode }) {
try {
const workerService = new StreamWorkerService();
+ const session = await getSession();
const stream = workerService.streamData({
threadId: newThread.thread_id,
assistantId: assistantsData.selectedAssistant.assistant_id,
input,
modelName: threadData.modelName,
modelConfigs: threadData.modelConfigs,
+ session,
});
// Variables to keep track of content specific to this stream
diff --git a/apps/web/src/contexts/ThreadProvider.tsx b/apps/web/src/contexts/ThreadProvider.tsx
index b4128a42..8c161426 100644
--- a/apps/web/src/contexts/ThreadProvider.tsx
+++ b/apps/web/src/contexts/ThreadProvider.tsx
@@ -146,7 +146,7 @@ export function ThreadProvider({ children }: { children: ReactNode }) {
});
return;
}
- const client = createClient();
+ const client = await createClient();
setCreateThreadLoading(true);
try {
@@ -194,7 +194,7 @@ export function ThreadProvider({ children }: { children: ReactNode }) {
setIsUserThreadsLoading(true);
try {
- const client = createClient();
+ const client = await createClient();
const userThreads = await client.threads.search({
metadata: {
@@ -230,7 +230,7 @@ export function ThreadProvider({ children }: { children: ReactNode }) {
// threads to update UI.
void createThread();
}
- const client = createClient();
+ const client = await createClient();
try {
await client.threads.delete(id);
} catch (e) {
@@ -240,7 +240,7 @@ export function ThreadProvider({ children }: { children: ReactNode }) {
const getThread = async (id: string): Promise => {
try {
- const client = createClient();
+ const client = await createClient();
return client.threads.get(id);
} catch (e) {
console.error("Failed to get thread by ID.", id, e);
diff --git a/apps/web/src/hooks/useStore.tsx b/apps/web/src/hooks/useStore.tsx
index 07ea40ac..6bbed193 100644
--- a/apps/web/src/hooks/useStore.tsx
+++ b/apps/web/src/hooks/useStore.tsx
@@ -5,8 +5,21 @@ import {
} from "@opencanvas/shared/types";
import { useState } from "react";
import { useToast } from "./use-toast";
-import { Item } from "@langchain/langgraph";
-import { CONTEXT_DOCUMENTS_NAMESPACE } from "@opencanvas/shared/constants";
+import { createClient } from "./utils";
+import { createSupabaseClient } from "@/lib/supabase/client";
+import { constructReflectionFields } from "@opencanvas/shared/stores/reflection";
+import { constructContextDocumentsFields } from "@opencanvas/shared/stores/context-documents";
+
+async function getUserId(): Promise {
+ const supabaseClient = createSupabaseClient();
+ let userId: string | undefined;
+ try {
+ userId = (await supabaseClient.auth.getUser()).data.user?.id;
+ } catch (e) {
+ console.error("Failed to get user ID", e);
+ }
+ return userId;
+}
export function useStore() {
const { toast } = useToast();
@@ -18,22 +31,23 @@ export function useStore() {
const getReflections = async (assistantId: string): Promise => {
setIsLoadingReflections(true);
- const res = await fetch("/api/store/get", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["memories", assistantId],
- key: "reflection",
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
- if (!res.ok) {
+ const client = await createClient();
+ const userId = await getUserId();
+ if (!userId) {
+ toast({
+ title: "Failed to get user ID",
+ description: "Please try again later.",
+ });
return;
}
- const { item } = await res.json();
+ const { namespace, key } = constructReflectionFields({
+ userId,
+ assistantId,
+ });
+
+ const item = await client.store.getItem(namespace, key);
if (!item?.value) {
setIsLoadingReflections(false);
@@ -65,31 +79,34 @@ export function useStore() {
};
const deleteReflections = async (assistantId: string): Promise => {
- const res = await fetch("/api/store/delete", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["memories", assistantId],
- key: "reflection",
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
+ try {
+ const client = await createClient();
+ const userId = await getUserId();
+ if (!userId) {
+ toast({
+ title: "Failed to get user ID",
+ description: "Please try again later.",
+ });
+ return false;
+ }
- if (!res.ok) {
- return false;
- }
+ const { namespace, key } = constructReflectionFields({
+ userId,
+ assistantId,
+ });
+
+ await client.store.deleteItem(namespace, key);
- const { success } = await res.json();
- if (success) {
setReflections(undefined);
- } else {
+ return true;
+ } catch (e) {
+ console.error(e);
toast({
title: "Failed to delete reflections",
description: "Please try again later.",
});
+ return false;
}
- return success;
};
const getCustomQuickActions = async (
@@ -97,22 +114,14 @@ export function useStore() {
): Promise => {
setIsLoadingQuickActions(true);
try {
- const res = await fetch("/api/store/get", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["custom_actions", userId],
- key: "actions",
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
-
- if (!res.ok) {
- return undefined;
- }
+ const client = await createClient();
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+ const item = await client.store.getItem(
+ customActionsNamespace,
+ actionsKey
+ );
- const { item } = await res.json();
if (!item?.value) {
return undefined;
}
@@ -127,34 +136,33 @@ export function useStore() {
rest: CustomQuickAction[],
userId: string
): Promise => {
- const valuesWithoutDeleted = rest.reduce>(
- (acc, action) => {
+ try {
+ const valuesWithoutDeleted = rest.reduce<
+ Record
+ >((acc, action) => {
if (action.id !== id) {
acc[action.id] = action;
}
return acc;
- },
- {}
- );
-
- const res = await fetch("/api/store/put", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["custom_actions", userId],
- key: "actions",
- value: valuesWithoutDeleted,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
-
- if (!res.ok) {
+ }, {});
+
+ const client = await createClient();
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+ await client.store.putItem(
+ customActionsNamespace,
+ actionsKey,
+ valuesWithoutDeleted
+ );
+ return true;
+ } catch (e) {
+ console.error(e);
+ toast({
+ title: "Failed to delete custom quick action",
+ description: "Please try again later.",
+ });
return false;
}
-
- const { success } = await res.json();
- return success;
};
const createCustomQuickAction = async (
@@ -162,33 +170,32 @@ export function useStore() {
rest: CustomQuickAction[],
userId: string
): Promise => {
- const newValue = rest.reduce>(
- (acc, action) => {
- acc[action.id] = action;
- return acc;
- },
- {}
- );
-
- newValue[newAction.id] = newAction;
- const res = await fetch("/api/store/put", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["custom_actions", userId],
- key: "actions",
- value: newValue,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
+ try {
+ const client = await createClient();
- if (!res.ok) {
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+
+ const newValue = rest.reduce>(
+ (acc, action) => {
+ acc[action.id] = action;
+ return acc;
+ },
+ {}
+ );
+
+ newValue[newAction.id] = newAction;
+
+ await client.store.putItem(customActionsNamespace, actionsKey, newValue);
+ return true;
+ } catch (e) {
+ console.error(e);
+ toast({
+ title: "Failed to create custom quick action",
+ description: "Please try again later.",
+ });
return false;
}
-
- const { success } = await res.json();
- return success;
};
const editCustomQuickAction = async (
@@ -196,33 +203,31 @@ export function useStore() {
rest: CustomQuickAction[],
userId: string
): Promise => {
- const newValue = rest.reduce>(
- (acc, action) => {
- acc[action.id] = action;
- return acc;
- },
- {}
- );
-
- newValue[editedAction.id] = editedAction;
- const res = await fetch("/api/store/put", {
- method: "POST",
- body: JSON.stringify({
- namespace: ["custom_actions", userId],
- key: "actions",
- value: newValue,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
+ try {
+ const client = await createClient();
- if (!res.ok) {
+ const customActionsNamespace = ["custom_actions", userId];
+ const actionsKey = "actions";
+
+ const newValue = rest.reduce>(
+ (acc, action) => {
+ acc[action.id] = action;
+ return acc;
+ },
+ {}
+ );
+
+ newValue[editedAction.id] = editedAction;
+ await client.store.putItem(customActionsNamespace, actionsKey, newValue);
+ return true;
+ } catch (e) {
+ console.error(e);
+ toast({
+ title: "Failed to edit custom quick action",
+ description: "Please try again later.",
+ });
return false;
}
-
- const { success } = await res.json();
- return success;
};
const putContextDocuments = async ({
@@ -233,59 +238,45 @@ export function useStore() {
documents: ContextDocument[];
}): Promise => {
try {
- const res = await fetch("/api/store/put", {
- method: "POST",
- body: JSON.stringify({
- namespace: CONTEXT_DOCUMENTS_NAMESPACE,
- key: assistantId,
- value: {
- documents,
- },
- }),
- headers: {
- "Content-Type": "application/json",
- },
+ const client = await createClient();
+ const { namespace, key } = constructContextDocumentsFields({
+ assistantId,
});
- if (!res.ok) {
- throw new Error(
- "Failed to put context documents" + res.statusText + res.status
- );
- }
+ await client.store.putItem(namespace, key, {
+ documents,
+ });
} catch (e) {
- console.error("Failed to put context documents.\n", e);
+ console.error(e);
+ toast({
+ title: "Failed to set context documents.",
+ description: "Please try again later.",
+ });
}
};
const getContextDocuments = async (
assistantId: string
): Promise => {
- const res = await fetch("/api/store/get", {
- method: "POST",
- body: JSON.stringify({
- namespace: CONTEXT_DOCUMENTS_NAMESPACE,
- key: assistantId,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- });
+ try {
+ const client = await createClient();
+ const { namespace, key } = constructContextDocumentsFields({
+ assistantId,
+ });
- if (!res.ok) {
- console.error(
- "Failed to get context documents",
- res.statusText,
- res.status
- );
- return undefined;
- }
+ const item = await client.store.getItem(namespace, key);
+ if (!item?.value?.documents) {
+ return undefined;
+ }
- const { item }: { item: Item | null } = await res.json();
- if (!item?.value?.documents) {
- return undefined;
+ return item.value.documents;
+ } catch (e) {
+ console.error(e);
+ toast({
+ title: "Failed to get context documents.",
+ description: "Please try again later.",
+ });
}
-
- return item?.value?.documents;
};
return {
diff --git a/apps/web/src/hooks/utils.ts b/apps/web/src/hooks/utils.ts
index b355ae1e..09309020 100644
--- a/apps/web/src/hooks/utils.ts
+++ b/apps/web/src/hooks/utils.ts
@@ -1,8 +1,24 @@
+import { LANGGRAPH_API_URL } from "@/constants";
+import { createSupabaseClient } from "@/lib/supabase/client";
import { Client } from "@langchain/langgraph-sdk";
+import { Session } from "@supabase/supabase-js";
+
+export const createClient = async (session?: Session) => {
+ let bearerToken: string | undefined = session?.access_token;
+
+ if (!bearerToken) {
+ const supabaseClient = createSupabaseClient();
+ const {
+ data: { session },
+ } = await supabaseClient.auth.getSession();
+ bearerToken = session?.access_token;
+ }
+ if (!bearerToken) {
+ throw new Error("Failed to access JWT token.");
+ }
-export const createClient = () => {
- const apiUrl = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:3000/api";
return new Client({
- apiUrl,
+ apiUrl: LANGGRAPH_API_URL,
+ defaultHeaders: { Authorization: `Bearer ${bearerToken}` },
});
};
diff --git a/apps/web/src/lib/supabase/client.ts b/apps/web/src/lib/supabase/client.ts
index 0f2fb747..7369a86e 100644
--- a/apps/web/src/lib/supabase/client.ts
+++ b/apps/web/src/lib/supabase/client.ts
@@ -10,6 +10,12 @@ export function createSupabaseClient() {
return createBrowserClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
- process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
+ {
+ auth: {
+ detectSessionInUrl: false,
+ persistSession: false,
+ },
+ }
);
}
diff --git a/apps/web/src/lib/supabase/verify_user_server.ts b/apps/web/src/lib/supabase/verify_user_server.ts
deleted file mode 100644
index f85cad59..00000000
--- a/apps/web/src/lib/supabase/verify_user_server.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Session, User } from "@supabase/supabase-js";
-import { createClient } from "./server";
-
-export async function verifyUserAuthenticated(): Promise<
- { user: User; session: Session } | undefined
-> {
- const supabase = createClient();
- const {
- data: { user },
- } = await supabase.auth.getUser();
- const {
- data: { session },
- } = await supabase.auth.getSession();
- if (!user || !session) {
- return undefined;
- }
- return { user, session };
-}
diff --git a/apps/web/src/workers/graph-stream/stream.worker.ts b/apps/web/src/workers/graph-stream/stream.worker.ts
index 8d95b788..479b6f1c 100644
--- a/apps/web/src/workers/graph-stream/stream.worker.ts
+++ b/apps/web/src/workers/graph-stream/stream.worker.ts
@@ -6,10 +6,10 @@ const ctx: Worker = self as any;
ctx.addEventListener("message", async (event: MessageEvent) => {
try {
- const { threadId, assistantId, input, modelName, modelConfigs } =
+ const { threadId, assistantId, input, modelName, modelConfigs, session } =
event.data;
- const client = createClient();
+ const client = await createClient(session);
const stream = client.runs.stream(threadId, assistantId, {
input: input as Record,
@@ -18,6 +18,8 @@ ctx.addEventListener("message", async (event: MessageEvent) => {
configurable: {
customModelName: modelName,
modelConfig: modelConfigs[modelName as keyof typeof modelConfigs],
+ supabase_session: session,
+ supabase_user_id: session?.user.id,
},
},
});
diff --git a/apps/web/src/workers/graph-stream/streamWorker.types.ts b/apps/web/src/workers/graph-stream/streamWorker.types.ts
index b16fc844..bff490dc 100644
--- a/apps/web/src/workers/graph-stream/streamWorker.types.ts
+++ b/apps/web/src/workers/graph-stream/streamWorker.types.ts
@@ -1,5 +1,6 @@
import { ALL_MODEL_NAMES } from "@opencanvas/shared/models";
import { CustomModelConfig, GraphInput } from "@opencanvas/shared/types";
+import { Session } from "@supabase/supabase-js";
export interface StreamWorkerMessage {
type: "chunk" | "done" | "error";
@@ -13,4 +14,5 @@ export interface StreamConfig {
input: GraphInput;
modelName: ALL_MODEL_NAMES;
modelConfigs: Record;
+ session: Session;
}
diff --git a/langgraph.json b/langgraph.json
index 897ca701..bdf09a9b 100644
--- a/langgraph.json
+++ b/langgraph.json
@@ -10,5 +10,8 @@
"summarizer": "./apps/agents/src/summarizer/index.ts:graph",
"web_search": "./apps/agents/src/web-search/index.ts:graph"
},
- "env": ".env"
+ "env": ".env",
+ "auth": {
+ "path": "./apps/agents/src/auth/index.ts:auth"
+ }
}
\ No newline at end of file
diff --git a/package.json b/package.json
index f9ed6305..59f0c8d4 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,9 @@
"prettier": "^3.3.3"
},
"resolutions": {
- "@langchain/core": "^0.3.38"
+ "@langchain/core": "^0.3.38",
+ "@langchain/langgraph-api": "http://localhost:3123/18/@langchain/langgraph-api",
+ "@langchain/langgraph-cli": "http://localhost:3123/18/@langchain/langgraph-cli",
+ "@langchain/langgraph-sdk": "http://localhost:3123/18/@langchain/langgraph-sdk"
}
}
diff --git a/packages/shared/src/stores/context-documents.ts b/packages/shared/src/stores/context-documents.ts
new file mode 100644
index 00000000..bff0e153
--- /dev/null
+++ b/packages/shared/src/stores/context-documents.ts
@@ -0,0 +1,17 @@
+import { CONTEXT_DOCUMENTS_NAMESPACE } from "../constants.js";
+import { StoreFields } from "./types.js";
+
+/**
+ * Constructs the store fields for context documents.
+ *
+ * @param inputs The inputs for the store fields.
+ * @returns The store fields for context documents.
+ */
+export function constructContextDocumentsFields(inputs: {
+ assistantId: string;
+}): StoreFields {
+ return {
+ namespace: CONTEXT_DOCUMENTS_NAMESPACE,
+ key: inputs.assistantId,
+ };
+}
diff --git a/packages/shared/src/stores/custom-actions.ts b/packages/shared/src/stores/custom-actions.ts
new file mode 100644
index 00000000..904c700a
--- /dev/null
+++ b/packages/shared/src/stores/custom-actions.ts
@@ -0,0 +1,16 @@
+import { StoreFields } from "./types.js";
+
+/**
+ * Constructs the store fields for custom actions.
+ *
+ * @param inputs The inputs for the store fields.
+ * @returns The store fields for custom actions.
+ */
+export function constructCustomActionsFields(inputs: {
+ userId: string;
+}): StoreFields {
+ return {
+ namespace: ["custom_actions", inputs.userId],
+ key: "actions",
+ };
+}
diff --git a/packages/shared/src/stores/reflection.ts b/packages/shared/src/stores/reflection.ts
new file mode 100644
index 00000000..5cb274c9
--- /dev/null
+++ b/packages/shared/src/stores/reflection.ts
@@ -0,0 +1,17 @@
+import { StoreFields } from "./types.js";
+
+/**
+ * Constructs the store fields for reflections.
+ *
+ * @param inputs The inputs for the store fields.
+ * @returns The store fields for reflections.
+ */
+export function constructReflectionFields(inputs: {
+ userId: string;
+ assistantId: string;
+}): StoreFields {
+ return {
+ namespace: ["memories", inputs.userId, inputs.assistantId],
+ key: "reflection",
+ };
+}
diff --git a/packages/shared/src/stores/types.ts b/packages/shared/src/stores/types.ts
new file mode 100644
index 00000000..a5249e0a
--- /dev/null
+++ b/packages/shared/src/stores/types.ts
@@ -0,0 +1,10 @@
+export type StoreFields = {
+ /**
+ * The namespace for the store item.
+ */
+ namespace: string[];
+ /**
+ * The key for the store item.
+ */
+ key: string;
+};
diff --git a/yarn.lock b/yarn.lock
index f5653816..84580caa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -73,6 +73,20 @@
zod-to-json-schema "^3.24.1"
zustand "^5.0.3"
+"@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
"@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1":
version "7.26.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.7.tgz#f4e7fe527cd710f8dc0618610b61b4b060c3c341"
@@ -382,6 +396,25 @@
style-mod "^4.1.0"
w3c-keyname "^2.2.4"
+"@colors/colors@1.6.0", "@colors/colors@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0"
+ integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==
+
+"@commander-js/extra-typings@^13.0.0":
+ version "13.1.0"
+ resolved "https://registry.yarnpkg.com/@commander-js/extra-typings/-/extra-typings-13.1.0.tgz#026e29b04401c92fc4307223fbaadf1ff3e5551e"
+ integrity sha512-q5P52BYb1hwVWE6dtID7VvuJWrlfbCv4klj7BjUUOqMz4jbSZD4C9fJ9lRjL2jnBGTg+gDDlaXN51rkWcLk4fg==
+
+"@dabh/diagnostics@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
+ integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
+ dependencies:
+ colorspace "1.1.x"
+ enabled "2.0.x"
+ kuler "^2.0.0"
+
"@emoji-mart/data@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@emoji-mart/data/-/data-1.2.1.tgz#0ad70c662e3bc603e23e7d98413bd1e64c4fcb6c"
@@ -397,6 +430,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461"
integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==
+"@esbuild/aix-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
+ integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
+
"@esbuild/android-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018"
@@ -407,6 +445,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894"
integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==
+"@esbuild/android-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
+ integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
+
"@esbuild/android-arm@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee"
@@ -417,6 +460,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3"
integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==
+"@esbuild/android-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
+ integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
+
"@esbuild/android-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517"
@@ -427,6 +475,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb"
integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==
+"@esbuild/android-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
+ integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
+
"@esbuild/darwin-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16"
@@ -437,6 +490,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936"
integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==
+"@esbuild/darwin-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
+ integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
+
"@esbuild/darwin-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931"
@@ -447,6 +505,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9"
integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==
+"@esbuild/darwin-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
+ integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
+
"@esbuild/freebsd-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc"
@@ -457,6 +520,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00"
integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==
+"@esbuild/freebsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
+ integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
+
"@esbuild/freebsd-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730"
@@ -467,6 +535,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f"
integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==
+"@esbuild/freebsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
+ integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
+
"@esbuild/linux-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383"
@@ -477,6 +550,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43"
integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==
+"@esbuild/linux-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
+ integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
+
"@esbuild/linux-arm@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771"
@@ -487,6 +565,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736"
integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==
+"@esbuild/linux-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
+ integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
+
"@esbuild/linux-ia32@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333"
@@ -497,6 +580,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5"
integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==
+"@esbuild/linux-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
+ integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
+
"@esbuild/linux-loong64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac"
@@ -507,6 +595,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc"
integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==
+"@esbuild/linux-loong64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
+ integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
+
"@esbuild/linux-mips64el@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6"
@@ -517,6 +610,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb"
integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==
+"@esbuild/linux-mips64el@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
+ integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
+
"@esbuild/linux-ppc64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96"
@@ -527,6 +625,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412"
integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==
+"@esbuild/linux-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
+ integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
+
"@esbuild/linux-riscv64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7"
@@ -537,6 +640,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694"
integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==
+"@esbuild/linux-riscv64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
+ integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
+
"@esbuild/linux-s390x@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f"
@@ -547,6 +655,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577"
integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==
+"@esbuild/linux-s390x@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
+ integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
+
"@esbuild/linux-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24"
@@ -557,11 +670,21 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f"
integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==
+"@esbuild/linux-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
+ integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
+
"@esbuild/netbsd-arm64@0.24.2":
version "0.24.2"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6"
integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==
+"@esbuild/netbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
+ integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
+
"@esbuild/netbsd-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653"
@@ -572,6 +695,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40"
integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==
+"@esbuild/netbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
+ integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
+
"@esbuild/openbsd-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7"
@@ -582,6 +710,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f"
integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==
+"@esbuild/openbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
+ integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
+
"@esbuild/openbsd-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273"
@@ -592,6 +725,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205"
integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==
+"@esbuild/openbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
+ integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
+
"@esbuild/sunos-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403"
@@ -602,6 +740,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6"
integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==
+"@esbuild/sunos-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
+ integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
+
"@esbuild/win32-arm64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2"
@@ -612,6 +755,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85"
integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==
+"@esbuild/win32-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
+ integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
+
"@esbuild/win32-ia32@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac"
@@ -622,6 +770,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2"
integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==
+"@esbuild/win32-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
+ integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
+
"@esbuild/win32-x64@0.23.1":
version "0.23.1"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
@@ -632,6 +785,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b"
integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==
+"@esbuild/win32-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
+ integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
+
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.1"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
@@ -742,6 +900,16 @@
resolved "https://registry.yarnpkg.com/@google/generative-ai/-/generative-ai-0.21.0.tgz#a5011aab9e6082e706937b26ef23445933fa0d15"
integrity sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==
+"@hono/node-server@^1.12.0":
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.14.0.tgz#b64f7e6b10dbc0fa0642e8a0a1c03c2abf2b391c"
+ integrity sha512-YUCxJwgHRKSqjrdTk9e4VMGKN27MK5r4+MGPyZTgKH+IYbK+KtYbHeOcPGJ91KGGD6RIQiz2dAHxvjauNhOS8g==
+
+"@hono/zod-validator@^0.2.2":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@hono/zod-validator/-/zod-validator-0.2.2.tgz#929a1c40aee5eac1ed9c84094d6d977e0b70187a"
+ integrity sha512-dSDxaPV70Py8wuIU2QNpoVEIOSzSXZ/6/B/h4xA7eOMz7+AarKTSGV8E6QwrdcCbBLkpqfJ4Q2TmBO0eP1tCBQ==
+
"@hookform/resolvers@^3.6.0":
version "3.10.0"
resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.10.0.tgz#7bfd18113daca4e57e27e1205b7d5a2d371aa59a"
@@ -778,6 +946,13 @@
wrap-ansi "^8.1.0"
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+"@isaacs/fs-minipass@^4.0.0":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
+ integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
+ dependencies:
+ minipass "^7.0.4"
+
"@jridgewell/gen-mapping@^0.3.2":
version "0.3.8"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
@@ -879,6 +1054,30 @@
zod "^3.22.4"
zod-to-json-schema "^3.22.5"
+"@langchain/langgraph-api@0.0.20", "@langchain/langgraph-api@http://localhost:3123/18/@langchain/langgraph-api":
+ version "0.0.20"
+ resolved "http://localhost:3123/18/@langchain/langgraph-api#a22992e1ec1c43d7db319f9565cd142745e70b48"
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@hono/node-server" "^1.12.0"
+ "@hono/zod-validator" "^0.2.2"
+ "@langchain/langgraph-ui" "0.0.20"
+ "@types/json-schema" "^7.0.15"
+ "@typescript/vfs" "^1.6.0"
+ dedent "^1.5.3"
+ dotenv "^16.4.7"
+ exit-hook "^4.0.0"
+ hono "^4.5.4"
+ langsmith "^0.2.15"
+ open "^10.1.0"
+ stacktrace-parser "^0.1.10"
+ superjson "^2.2.2"
+ tsx "^4.19.3"
+ uuid "^10.0.0"
+ winston "^3.17.0"
+ winston-console-format "^1.0.8"
+ zod "^3.23.8"
+
"@langchain/langgraph-checkpoint@~0.0.15":
version "0.0.15"
resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.15.tgz#90aaf1782f5ada4efd4d38444ba92aaae0a1988c"
@@ -886,35 +1085,48 @@
dependencies:
uuid "^10.0.0"
-"@langchain/langgraph-sdk@^0.0.37":
- version "0.0.37"
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.37.tgz#c510e30a90a5d4725b36f533df72c660563b03fc"
- integrity sha512-+6aTfUQZsAQBrz2DuKyMt6SrCElJvNWm8Iw8gYZhlHFVwJHrpu0cvn5leOzWrG2gO1DDH9aR4Zi2AzJ95gT0ig==
+"@langchain/langgraph-cli@http://localhost:3123/18/@langchain/langgraph-cli":
+ version "0.0.20"
+ resolved "http://localhost:3123/18/@langchain/langgraph-cli#05098282eb62320c8b605903ce120d9114d5c297"
dependencies:
- "@types/json-schema" "^7.0.15"
- p-queue "^6.6.2"
- p-retry "4"
- uuid "^9.0.0"
+ "@babel/code-frame" "^7.26.2"
+ "@commander-js/extra-typings" "^13.0.0"
+ "@langchain/langgraph-api" "0.0.20"
+ chokidar "^4.0.3"
+ commander "^13.0.0"
+ dedent "^1.5.3"
+ dotenv "^16.4.7"
+ execa "^9.5.2"
+ exit-hook "^4.0.0"
+ extract-zip "^2.0.1"
+ langsmith "^0.2.15"
+ open "^10.1.0"
+ stacktrace-parser "^0.1.10"
+ tar "^7.4.3"
+ winston "^3.17.0"
+ winston-console-format "^1.0.8"
+ yaml "^2.7.0"
+ zod "^3.23.8"
-"@langchain/langgraph-sdk@^0.0.40":
- version "0.0.40"
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.40.tgz#c270d23c992fb77c877fa379b79920c84c99d99b"
- integrity sha512-zntl+Iaa4Ym1JChbsFvqL84bF2lkZqeRhGbDtOSsdwABBfr3KNiPBbCueGqLFQ9l0sA55bYUbMcMvh4zXpdygA==
+"@langchain/langgraph-sdk@^0.0.37", "@langchain/langgraph-sdk@^0.0.40", "@langchain/langgraph-sdk@http://localhost:3123/18/@langchain/langgraph-sdk", "@langchain/langgraph-sdk@~0.0.32":
+ version "0.0.65"
+ resolved "http://localhost:3123/18/@langchain/langgraph-sdk#8c452f6fd6e372174f1871855ddc0e81652044ff"
dependencies:
"@types/json-schema" "^7.0.15"
p-queue "^6.6.2"
p-retry "4"
uuid "^9.0.0"
-"@langchain/langgraph-sdk@~0.0.32":
- version "0.0.36"
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.36.tgz#b375884552ae3f1c7bf68a0248104786754d04cd"
- integrity sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==
+"@langchain/langgraph-ui@0.0.20":
+ version "0.0.20"
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.20.tgz#9075acef91c287cfafa81d4eef34a6a51ba1a4d1"
+ integrity sha512-x6fF6STKx0gsCAtEqEwyIib6klwLboqvpXsobHVeFOx6qGqOGsVKbq6rgCIKxQz8tZeSQVXslas4/20SFUjwKA==
dependencies:
- "@types/json-schema" "^7.0.15"
- p-queue "^6.6.2"
- p-retry "4"
- uuid "^9.0.0"
+ "@commander-js/extra-typings" "^13.0.0"
+ commander "^13.0.0"
+ esbuild "^0.25.0"
+ esbuild-plugin-tailwindcss "^2.0.1"
+ zod "^3.23.8"
"@langchain/langgraph@^0.2.41":
version "0.2.44"
@@ -1952,6 +2164,16 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz#3a1c12c959010a55c17d46b395ed3047b545c246"
integrity sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==
+"@sec-ant/readable-stream@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c"
+ integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==
+
+"@sindresorhus/merge-streams@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339"
+ integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==
+
"@supabase/auth-js@2.67.3":
version "2.67.3"
resolved "https://registry.yarnpkg.com/@supabase/auth-js/-/auth-js-2.67.3.tgz#a1f5eb22440b0cdbf87fe2ecae662a8dd8bb2028"
@@ -2030,6 +2252,99 @@
"@swc/counter" "^0.1.3"
tslib "^2.4.0"
+"@tailwindcss/node@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.3.tgz#f290886582ce8eb1978853d07ca4da45f2d43fdb"
+ integrity sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==
+ dependencies:
+ enhanced-resolve "^5.18.1"
+ jiti "^2.4.2"
+ lightningcss "1.29.2"
+ tailwindcss "4.1.3"
+
+"@tailwindcss/oxide-android-arm64@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.3.tgz#6c1834e7de84aa5544f4c8aacb380e00e019a11f"
+ integrity sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==
+
+"@tailwindcss/oxide-darwin-arm64@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.3.tgz#ed3abd4a59f05a1ac58337b63d6fe82bb9903462"
+ integrity sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==
+
+"@tailwindcss/oxide-darwin-x64@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.3.tgz#d8a0786f4eae8203f8345fcf5b03f3284eee82af"
+ integrity sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==
+
+"@tailwindcss/oxide-freebsd-x64@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.3.tgz#e76520e5341c3a44959901b8fefee78d4fc2f074"
+ integrity sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==
+
+"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.3.tgz#130c276e590b6ba621c443ac7faa702a709620c7"
+ integrity sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==
+
+"@tailwindcss/oxide-linux-arm64-gnu@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.3.tgz#55e736a89d8547835026df3c5d6ce50467d71241"
+ integrity sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==
+
+"@tailwindcss/oxide-linux-arm64-musl@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.3.tgz#4ff54e4a40fede7a66e209b07f9b5da432d96678"
+ integrity sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==
+
+"@tailwindcss/oxide-linux-x64-gnu@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.3.tgz#66477a71fbaad552be882e8b7a56bb7519b47838"
+ integrity sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==
+
+"@tailwindcss/oxide-linux-x64-musl@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.3.tgz#403145ce43361e7d63886c878fdb09cd868920da"
+ integrity sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==
+
+"@tailwindcss/oxide-win32-arm64-msvc@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.3.tgz#0cc2bc59c228ce1d64156089af21acc4302081da"
+ integrity sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==
+
+"@tailwindcss/oxide-win32-x64-msvc@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.3.tgz#9bd5108b95b03dace8a2e5e738b1b2389f8a6d09"
+ integrity sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==
+
+"@tailwindcss/oxide@4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.3.tgz#d01162137fcefe7d4c2a34500b9ed5c142388352"
+ integrity sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==
+ optionalDependencies:
+ "@tailwindcss/oxide-android-arm64" "4.1.3"
+ "@tailwindcss/oxide-darwin-arm64" "4.1.3"
+ "@tailwindcss/oxide-darwin-x64" "4.1.3"
+ "@tailwindcss/oxide-freebsd-x64" "4.1.3"
+ "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.3"
+ "@tailwindcss/oxide-linux-arm64-gnu" "4.1.3"
+ "@tailwindcss/oxide-linux-arm64-musl" "4.1.3"
+ "@tailwindcss/oxide-linux-x64-gnu" "4.1.3"
+ "@tailwindcss/oxide-linux-x64-musl" "4.1.3"
+ "@tailwindcss/oxide-win32-arm64-msvc" "4.1.3"
+ "@tailwindcss/oxide-win32-x64-msvc" "4.1.3"
+
+"@tailwindcss/postcss@^4.0.5":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.1.3.tgz#82bf8b90c134f89f70d8d0293b5b14f234918faf"
+ integrity sha512-6s5nJODm98F++QT49qn8xJKHQRamhYHfMi3X7/ltxiSQ9dyRsaFSfFkfaMsanWzf+TMYQtbk8mt5f6cCVXJwfg==
+ dependencies:
+ "@alloc/quick-lru" "^5.2.0"
+ "@tailwindcss/node" "4.1.3"
+ "@tailwindcss/oxide" "4.1.3"
+ postcss "^8.4.41"
+ tailwindcss "4.1.3"
+
"@tiptap/core@^2.7.1":
version "2.11.5"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.11.5.tgz#2bf1b08c4ca2467778d0a109634c45ab475522f4"
@@ -2392,6 +2707,11 @@
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
+"@types/triple-beam@^1.3.2":
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c"
+ integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==
+
"@types/unist@*", "@types/unist@^3.0.0":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c"
@@ -2419,6 +2739,13 @@
dependencies:
"@types/node" "*"
+"@types/yauzl@^2.9.1":
+ version "2.10.3"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
+ integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
+ dependencies:
+ "@types/node" "*"
+
"@typescript-eslint/eslint-plugin@8.23.0", "@typescript-eslint/eslint-plugin@^8.12.2":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.23.0.tgz#7745f4e3e4a7ae5f6f73fefcd856fd6a074189b7"
@@ -2751,6 +3078,13 @@
"@typescript-eslint/types" "8.23.0"
eslint-visitor-keys "^4.2.0"
+"@typescript/vfs@^1.6.0":
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/@typescript/vfs/-/vfs-1.6.1.tgz#fe7087d5a43715754f7ea9bf6e0b905176c9eebd"
+ integrity sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==
+ dependencies:
+ debug "^4.1.1"
+
"@uiw/codemirror-extensions-basic-setup@4.23.8":
version "4.23.8"
resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.8.tgz#874b4f79497cfac91946df8bc394977415b7516e"
@@ -3105,6 +3439,11 @@ async-function@^1.0.0:
resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b"
integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==
+async@^3.2.3:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
+ integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -3122,6 +3461,18 @@ autoprefixer@^10.4.19:
picocolors "^1.0.1"
postcss-value-parser "^4.2.0"
+autoprefixer@^10.4.20:
+ version "10.4.21"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
+ integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==
+ dependencies:
+ browserslist "^4.24.4"
+ caniuse-lite "^1.0.30001702"
+ fraction.js "^4.3.7"
+ normalize-range "^0.1.2"
+ picocolors "^1.1.1"
+ postcss-value-parser "^4.2.0"
+
available-typed-arrays@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
@@ -3205,7 +3556,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.23.3:
+browserslist@^4.23.3, browserslist@^4.24.4:
version "4.24.4"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
@@ -3215,6 +3566,18 @@ browserslist@^4.23.3:
node-releases "^2.0.19"
update-browserslist-db "^1.1.1"
+buffer-crc32@~0.2.3:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
+
+bundle-name@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889"
+ integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==
+ dependencies:
+ run-applescript "^7.0.0"
+
busboy@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
@@ -3273,6 +3636,11 @@ caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.300016
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz#040bbbb54463c4b4b3377c716b34a322d16e6fc7"
integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==
+caniuse-lite@^1.0.30001702:
+ version "1.0.30001712"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001712.tgz#41ee150f12de11b5f57c5889d4f30deb451deedf"
+ integrity sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==
+
ccount@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
@@ -3352,6 +3720,18 @@ chokidar@^3.6.0:
optionalDependencies:
fsevents "~2.3.2"
+chokidar@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
+ integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
+ dependencies:
+ readdirp "^4.0.1"
+
+chownr@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
+ integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
+
class-variance-authority@^0.7.0, class-variance-authority@^0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz#4008a798a0e4553a781a57ac5177c9fb5d043787"
@@ -3395,6 +3775,13 @@ codemirror@^6.0.0:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.0.0"
+color-convert@^1.9.3:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@@ -3402,11 +3789,45 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@~1.1.4:
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-string@^1.6.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+ integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.1.3:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
+colors@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+colorspace@1.1.x:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
+ integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
+ dependencies:
+ color "^3.1.3"
+ text-hex "1.0.x"
+
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -3424,6 +3845,16 @@ comma-separated-tokens@^2.0.0:
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee"
integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
+commander@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
+ integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
+
+commander@^13.0.0:
+ version "13.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46"
+ integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==
+
commander@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
@@ -3451,6 +3882,13 @@ cookie@^0.7.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
+copy-anything@^3.0.2:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0"
+ integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==
+ dependencies:
+ is-what "^4.1.8"
+
crelt@^1.0.0, crelt@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
@@ -3470,7 +3908,7 @@ cross-fetch@^4.0.0:
dependencies:
node-fetch "^2.7.0"
-cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.6"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
@@ -3543,7 +3981,7 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.0.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@^4.4.0:
+debug@^4.0.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
@@ -3562,6 +4000,11 @@ decode-named-character-reference@^1.0.0:
dependencies:
character-entities "^2.0.0"
+dedent@^1.5.3:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
+ integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
+
deep-eql@^5.0.1:
version "5.0.2"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341"
@@ -3572,6 +4015,19 @@ deep-is@^0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+default-browser-id@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26"
+ integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==
+
+default-browser@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf"
+ integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==
+ dependencies:
+ bundle-name "^4.1.0"
+ default-browser-id "^5.0.0"
+
define-data-property@^1.0.1, define-data-property@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
@@ -3581,6 +4037,11 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
es-errors "^1.3.0"
gopd "^1.0.1"
+define-lazy-prop@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f"
+ integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
+
define-properties@^1.1.3, define-properties@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
@@ -3600,6 +4061,11 @@ dequal@^2.0.0:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+detect-libc@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
+ integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
+
detect-node-es@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
@@ -3692,7 +4158,19 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-enhanced-resolve@^5.15.0:
+enabled@2.0.x:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+ integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^5.15.0, enhanced-resolve@^5.18.1:
version "5.18.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf"
integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==
@@ -3832,6 +4310,16 @@ es-to-primitive@^1.3.0:
is-date-object "^1.0.5"
is-symbol "^1.0.4"
+esbuild-plugin-tailwindcss@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/esbuild-plugin-tailwindcss/-/esbuild-plugin-tailwindcss-2.0.1.tgz#74ca9c8bcd183e9596db077423d7566c2ce5ba62"
+ integrity sha512-62CPYzyfcRE7OowGmWGKs9sz43QhCa/dZ5h6ruZhDg65B5Zsn++4EA4NKIwEMbAio9JV8+FJZNXzejNX/RjSkg==
+ dependencies:
+ "@tailwindcss/postcss" "^4.0.5"
+ autoprefixer "^10.4.20"
+ postcss "^8.5.1"
+ postcss-modules "^6.0.1"
+
esbuild@^0.24.2:
version "0.24.2"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d"
@@ -3863,6 +4351,37 @@ esbuild@^0.24.2:
"@esbuild/win32-ia32" "0.24.2"
"@esbuild/win32-x64" "0.24.2"
+esbuild@^0.25.0, esbuild@~0.25.0:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
+ integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.25.2"
+ "@esbuild/android-arm" "0.25.2"
+ "@esbuild/android-arm64" "0.25.2"
+ "@esbuild/android-x64" "0.25.2"
+ "@esbuild/darwin-arm64" "0.25.2"
+ "@esbuild/darwin-x64" "0.25.2"
+ "@esbuild/freebsd-arm64" "0.25.2"
+ "@esbuild/freebsd-x64" "0.25.2"
+ "@esbuild/linux-arm" "0.25.2"
+ "@esbuild/linux-arm64" "0.25.2"
+ "@esbuild/linux-ia32" "0.25.2"
+ "@esbuild/linux-loong64" "0.25.2"
+ "@esbuild/linux-mips64el" "0.25.2"
+ "@esbuild/linux-ppc64" "0.25.2"
+ "@esbuild/linux-riscv64" "0.25.2"
+ "@esbuild/linux-s390x" "0.25.2"
+ "@esbuild/linux-x64" "0.25.2"
+ "@esbuild/netbsd-arm64" "0.25.2"
+ "@esbuild/netbsd-x64" "0.25.2"
+ "@esbuild/openbsd-arm64" "0.25.2"
+ "@esbuild/openbsd-x64" "0.25.2"
+ "@esbuild/sunos-x64" "0.25.2"
+ "@esbuild/win32-arm64" "0.25.2"
+ "@esbuild/win32-ia32" "0.25.2"
+ "@esbuild/win32-x64" "0.25.2"
+
esbuild@~0.23.0:
version "0.23.1"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8"
@@ -4198,6 +4717,29 @@ exa-js@^1.0.12, exa-js@^1.4.10:
cross-fetch "^4.0.0"
dotenv "^16.4.7"
+execa@^9.5.2:
+ version "9.5.2"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-9.5.2.tgz#a4551034ee0795e241025d2f987dab3f4242dff2"
+ integrity sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==
+ dependencies:
+ "@sindresorhus/merge-streams" "^4.0.0"
+ cross-spawn "^7.0.3"
+ figures "^6.1.0"
+ get-stream "^9.0.0"
+ human-signals "^8.0.0"
+ is-plain-obj "^4.1.0"
+ is-stream "^4.0.1"
+ npm-run-path "^6.0.0"
+ pretty-ms "^9.0.0"
+ signal-exit "^4.1.0"
+ strip-final-newline "^4.0.0"
+ yoctocolors "^2.0.0"
+
+exit-hook@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-4.0.0.tgz#c1e16ebd03d3166f837b1502dac755bb5c460d58"
+ integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==
+
expect-type@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75"
@@ -4213,6 +4755,17 @@ extend@^3.0.0:
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+extract-zip@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
+ dependencies:
+ debug "^4.1.1"
+ get-stream "^5.1.0"
+ yauzl "^2.10.0"
+ optionalDependencies:
+ "@types/yauzl" "^2.9.1"
+
fast-deep-equal@^3, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -4290,6 +4843,25 @@ fbjs@^3.0.0, fbjs@^3.0.1:
setimmediate "^1.0.5"
ua-parser-js "^1.0.35"
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
+ dependencies:
+ pend "~1.2.0"
+
+fecha@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
+ integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
+
+figures@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a"
+ integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==
+ dependencies:
+ is-unicode-supported "^2.0.0"
+
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
@@ -4339,6 +4911,11 @@ flux@^4.0.1:
fbemitter "^3.0.0"
fbjs "^3.0.1"
+fn.name@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+ integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
follow-redirects@^1.15.6:
version "1.15.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
@@ -4432,6 +5009,13 @@ functions-have-names@^1.2.3:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+generic-names@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3"
+ integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==
+ dependencies:
+ loader-utils "^3.2.0"
+
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044"
@@ -4461,6 +5045,21 @@ get-proto@^1.0.0, get-proto@^1.0.1:
dunder-proto "^1.0.1"
es-object-atoms "^1.0.0"
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27"
+ integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==
+ dependencies:
+ "@sec-ant/readable-stream" "^0.4.1"
+ is-stream "^4.0.1"
+
get-symbol-description@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee"
@@ -5084,6 +5683,11 @@ highlightjs-vue@^1.0.0:
resolved "https://registry.yarnpkg.com/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz#fdfe97fbea6354e70ee44e3a955875e114db086d"
integrity sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==
+hono@^4.5.4, hono@^4.7.6:
+ version "4.7.6"
+ resolved "https://registry.yarnpkg.com/hono/-/hono-4.7.6.tgz#3b577a825de3bf97b27705d918890a660726835e"
+ integrity sha512-564rVzELU+9BRqqx5k8sT2NFwGD3I3Vifdb6P7CmM6FiarOSY+fDC+6B+k9wcCb86ReoayteZP2ki0cRLN1jbw==
+
html-url-attributes@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz#83b052cd5e437071b756cd74ae70f708870c2d87"
@@ -5104,6 +5708,11 @@ html-whitespace-sensitive-tag-names@^3.0.0:
resolved "https://registry.yarnpkg.com/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz#c35edd28205f3bf8c1fd03274608d60b923de5b2"
integrity sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==
+human-signals@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-8.0.1.tgz#f08bb593b6d1db353933d06156cedec90abe51fb"
+ integrity sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==
+
humanize-ms@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
@@ -5111,6 +5720,11 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
+icss-utils@^5.0.0, icss-utils@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+
ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
@@ -5137,7 +5751,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@^2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5191,6 +5805,11 @@ is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
call-bound "^1.0.3"
get-intrinsic "^1.2.6"
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
is-async-function@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523"
@@ -5275,6 +5894,11 @@ is-decimal@^2.0.0:
resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7"
integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+is-docker@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
+ integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -5319,6 +5943,13 @@ is-hexadecimal@^2.0.0:
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027"
integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==
+is-inside-container@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4"
+ integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==
+ dependencies:
+ is-docker "^3.0.0"
+
is-map@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
@@ -5342,7 +5973,7 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-is-plain-obj@^4.0.0:
+is-plain-obj@^4.0.0, is-plain-obj@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
@@ -5369,6 +6000,16 @@ is-shared-array-buffer@^1.0.4:
dependencies:
call-bound "^1.0.3"
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-stream@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b"
+ integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==
+
is-string@^1.0.7, is-string@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
@@ -5393,6 +6034,11 @@ is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15:
dependencies:
which-typed-array "^1.1.16"
+is-unicode-supported@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a"
+ integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==
+
is-weakmap@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
@@ -5413,6 +6059,18 @@ is-weakset@^2.0.3:
call-bound "^1.0.3"
get-intrinsic "^1.2.6"
+is-what@^4.1.8:
+ version "4.1.16"
+ resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f"
+ integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==
+
+is-wsl@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2"
+ integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==
+ dependencies:
+ is-inside-container "^1.0.0"
+
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
@@ -5468,6 +6126,11 @@ jiti@^1.21.6:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9"
integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==
+jiti@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
+ integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
+
js-cookie@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
@@ -5480,7 +6143,7 @@ js-tiktoken@^1.0.12:
dependencies:
base64-js "^1.5.1"
-"js-tokens@^3.0.0 || ^4.0.0":
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
@@ -5553,6 +6216,11 @@ kleur@^4.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
+kuler@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+ integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
"langchain@>=0.2.3 <0.3.0 || >=0.3.4 <0.4.0", langchain@^0.3.14:
version "0.3.15"
resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.3.15.tgz#c6c8b17bf20c870795e31515f48abde7d13ccc9d"
@@ -5584,6 +6252,18 @@ kleur@^4.0.3:
semver "^7.6.3"
uuid "^10.0.0"
+langsmith@^0.2.15:
+ version "0.2.15"
+ resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.2.15.tgz#0692a00fc310817cb9b5939488468c93d4ba2c9d"
+ integrity sha512-homtJU41iitqIZVuuLW7iarCzD4f39KcfP9RTBWav9jifhrsDa1Ez89Ejr+4qi72iuBu8Y5xykchsGVgiEZ93w==
+ dependencies:
+ "@types/uuid" "^10.0.0"
+ commander "^10.0.1"
+ p-queue "^6.6.2"
+ p-retry "4"
+ semver "^7.6.3"
+ uuid "^10.0.0"
+
language-subtag-registry@^0.3.20:
version "0.3.23"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7"
@@ -5611,6 +6291,74 @@ lib0@^0.2.42, lib0@^0.2.85, lib0@^0.2.99:
dependencies:
isomorphic.js "^0.2.4"
+lightningcss-darwin-arm64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz#6ceff38b01134af48e859394e1ca21e5d49faae6"
+ integrity sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==
+
+lightningcss-darwin-x64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz#891b6f9e57682d794223c33463ca66d3af3fb038"
+ integrity sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==
+
+lightningcss-freebsd-x64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz#8a95f9ab73b2b2b0beefe1599fafa8b058938495"
+ integrity sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==
+
+lightningcss-linux-arm-gnueabihf@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz#5c60bbf92b39d7ed51e363f7b98a7111bf5914a1"
+ integrity sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==
+
+lightningcss-linux-arm64-gnu@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz#e73d7608c4cce034c3654e5e8b53be74846224de"
+ integrity sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==
+
+lightningcss-linux-arm64-musl@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz#a95a18d5a909831c092e0a8d2de4b9ac1a8db151"
+ integrity sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==
+
+lightningcss-linux-x64-gnu@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz#551ca07e565394928642edee92acc042e546cb78"
+ integrity sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==
+
+lightningcss-linux-x64-musl@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz#2fd164554340831bce50285b57101817850dd258"
+ integrity sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==
+
+lightningcss-win32-arm64-msvc@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz#da43ea49fafc5d2de38e016f1a8539d5eed98318"
+ integrity sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==
+
+lightningcss-win32-x64-msvc@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz#ddefaa099a39b725b2f5bbdcb9fc718435cc9797"
+ integrity sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==
+
+lightningcss@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.29.2.tgz#f5f0fd6e63292a232697e6fe709da5b47624def3"
+ integrity sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==
+ dependencies:
+ detect-libc "^2.0.3"
+ optionalDependencies:
+ lightningcss-darwin-arm64 "1.29.2"
+ lightningcss-darwin-x64 "1.29.2"
+ lightningcss-freebsd-x64 "1.29.2"
+ lightningcss-linux-arm-gnueabihf "1.29.2"
+ lightningcss-linux-arm64-gnu "1.29.2"
+ lightningcss-linux-arm64-musl "1.29.2"
+ lightningcss-linux-x64-gnu "1.29.2"
+ lightningcss-linux-x64-musl "1.29.2"
+ lightningcss-win32-arm64-msvc "1.29.2"
+ lightningcss-win32-x64-msvc "1.29.2"
+
lilconfig@^3.0.0, lilconfig@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
@@ -5633,6 +6381,11 @@ linkifyjs@^4.2.0:
resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.2.0.tgz#9dd30222b9cbabec9c950e725ec00031c7fa3f08"
integrity sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==
+loader-utils@^3.2.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5"
+ integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -5640,6 +6393,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
lodash.curry@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170"
@@ -5660,6 +6418,18 @@ lodash@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+logform@^2.2.0, logform@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1"
+ integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==
+ dependencies:
+ "@colors/colors" "1.6.0"
+ "@types/triple-beam" "^1.3.2"
+ fecha "^4.2.0"
+ ms "^2.1.1"
+ safe-stable-stringify "^2.3.1"
+ triple-beam "^1.3.0"
+
longest-streak@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4"
@@ -6680,16 +7450,28 @@ minimist@^1.2.0, minimist@^1.2.6:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+minizlib@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574"
+ integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==
+ dependencies:
+ minipass "^7.1.2"
+
mitt@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
+mkdirp@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
+ integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
+
motion-dom@^11.18.1:
version "11.18.1"
resolved "https://registry.yarnpkg.com/motion-dom/-/motion-dom-11.18.1.tgz#e7fed7b7dc6ae1223ef1cce29ee54bec826dc3f2"
@@ -6801,6 +7583,14 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+npm-run-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-6.0.0.tgz#25cfdc4eae04976f3349c0b1afc089052c362537"
+ integrity sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==
+ dependencies:
+ path-key "^4.0.0"
+ unicorn-magic "^0.3.0"
+
nth-check@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
@@ -6892,13 +7682,30 @@ ollama@^0.5.9:
dependencies:
whatwg-fetch "^3.6.20"
-once@^1.3.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
+one-time@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+ integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+ dependencies:
+ fn.name "1.x.x"
+
+open@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1"
+ integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==
+ dependencies:
+ default-browser "^5.2.1"
+ define-lazy-prop "^3.0.0"
+ is-inside-container "^1.0.0"
+ is-wsl "^3.1.0"
+
openai@^4.77.0:
version "4.83.0"
resolved "https://registry.yarnpkg.com/openai/-/openai-4.83.0.tgz#87edfebecf8a4dc2317269dd704cf0ebd9f11979"
@@ -7022,6 +7829,11 @@ parse-entities@^4.0.0:
is-decimal "^2.0.0"
is-hexadecimal "^2.0.0"
+parse-ms@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4"
+ integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==
+
parse-numeric-range@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3"
@@ -7054,6 +7866,11 @@ path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+path-key@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
@@ -7090,6 +7907,11 @@ pdf-parse@^1.1.1:
debug "^3.1.0"
node-ensure "^0.0.0"
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
+
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
@@ -7139,6 +7961,48 @@ postcss-load-config@^4.0.2:
lilconfig "^3.0.0"
yaml "^2.3.4"
+postcss-modules-extract-imports@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002"
+ integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==
+
+postcss-modules-local-by-default@^4.0.5:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368"
+ integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==
+ dependencies:
+ icss-utils "^5.0.0"
+ postcss-selector-parser "^7.0.0"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c"
+ integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==
+ dependencies:
+ postcss-selector-parser "^7.0.0"
+
+postcss-modules-values@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
+ dependencies:
+ icss-utils "^5.0.0"
+
+postcss-modules@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-6.0.1.tgz#e3e895918c060c14fa6a22f84ba14a4286f436a5"
+ integrity sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==
+ dependencies:
+ generic-names "^4.0.0"
+ icss-utils "^5.1.0"
+ lodash.camelcase "^4.3.0"
+ postcss-modules-extract-imports "^3.1.0"
+ postcss-modules-local-by-default "^4.0.5"
+ postcss-modules-scope "^3.2.0"
+ postcss-modules-values "^4.0.0"
+ string-hash "^1.1.3"
+
postcss-nested@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131"
@@ -7154,7 +8018,15 @@ postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
+postcss-selector-parser@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262"
+ integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
@@ -7177,6 +8049,15 @@ postcss@^8, postcss@^8.4.38, postcss@^8.4.47, postcss@^8.5.1:
picocolors "^1.1.1"
source-map-js "^1.2.1"
+postcss@^8.4.41:
+ version "8.5.3"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
+ integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
+ dependencies:
+ nanoid "^3.3.8"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -7194,6 +8075,13 @@ prettier@^3.3.3:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
+pretty-ms@^9.0.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.2.0.tgz#e14c0aad6493b69ed63114442a84133d7e560ef0"
+ integrity sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==
+ dependencies:
+ parse-ms "^4.0.0"
+
prismjs@^1.27.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
@@ -7391,6 +8279,14 @@ proxy-from-env@^1.1.0:
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+pump@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
+ integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
punycode.js@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7"
@@ -7577,6 +8473,20 @@ read-cache@^1.0.0:
dependencies:
pify "^2.3.0"
+readable-stream@^3.4.0, readable-stream@^3.6.2:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^4.0.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
+ integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -7969,6 +8879,11 @@ rope-sequence@^1.3.0:
resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425"
integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==
+run-applescript@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb"
+ integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -7994,6 +8909,11 @@ safe-array-concat@^1.1.3:
has-symbols "^1.1.0"
isarray "^2.0.5"
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
safe-push-apply@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5"
@@ -8011,6 +8931,11 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
es-errors "^1.3.0"
is-regex "^1.2.1"
+safe-stable-stringify@^2.3.1:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
+ integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
+
scheduler@^0.23.2:
version "0.23.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
@@ -8126,11 +9051,18 @@ siginfo@^2.0.0:
resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
-signal-exit@^4.0.1:
+signal-exit@^4.0.1, signal-exit@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+ dependencies:
+ is-arrayish "^0.3.1"
+
simple-wcswidth@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2"
@@ -8161,11 +9093,23 @@ stable-hash@^0.0.4:
resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.4.tgz#55ae7dadc13e4b3faed13601587cec41859b42f7"
integrity sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==
+stack-trace@0.0.x:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
+ integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
+
stackback@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
+stacktrace-parser@^0.1.10:
+ version "0.1.11"
+ resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz#c7c08f9b29ef566b9a6f7b255d7db572f66fabc4"
+ integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==
+ dependencies:
+ type-fest "^0.7.1"
+
std-env@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5"
@@ -8176,6 +9120,11 @@ streamsearch@^1.1.0:
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+string-hash@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==
+
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -8271,6 +9220,13 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
stringify-entities@^4.0.0:
version "4.0.4"
resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3"
@@ -8305,6 +9261,11 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+strip-final-newline@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz#35a369ec2ac43df356e3edd5dcebb6429aa1fa5c"
+ integrity sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==
+
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
@@ -8347,6 +9308,13 @@ sucrase@^3.35.0:
pirates "^4.0.1"
ts-interface-checker "^0.1.9"
+superjson@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173"
+ integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==
+ dependencies:
+ copy-anything "^3.0.2"
+
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@@ -8384,6 +9352,11 @@ tailwindcss-animate@^1.0.7:
resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4"
integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==
+tailwindcss@4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.3.tgz#f5a6b4451295c06e213013697f7193be1630fa46"
+ integrity sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==
+
tailwindcss@^3.4.1, tailwindcss@^3.4.3:
version "3.4.17"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.17.tgz#ae8406c0f96696a631c790768ff319d46d5e5a63"
@@ -8417,6 +9390,23 @@ tapable@^2.2.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+tar@^7.4.3:
+ version "7.4.3"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571"
+ integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==
+ dependencies:
+ "@isaacs/fs-minipass" "^4.0.0"
+ chownr "^3.0.0"
+ minipass "^7.1.2"
+ minizlib "^3.0.1"
+ mkdirp "^3.0.1"
+ yallist "^5.0.0"
+
+text-hex@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+ integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -8490,6 +9480,11 @@ trim-trailing-lines@^2.0.0:
resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz#9aac7e89b09cb35badf663de7133c6de164f86df"
integrity sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==
+triple-beam@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984"
+ integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
+
trough@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f"
@@ -8547,6 +9542,16 @@ tsx@^4.19.1:
optionalDependencies:
fsevents "~2.3.3"
+tsx@^4.19.3:
+ version "4.19.3"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.3.tgz#2bdbcb87089374d933596f8645615142ed727666"
+ integrity sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==
+ dependencies:
+ esbuild "~0.25.0"
+ get-tsconfig "^4.7.5"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
turbo-darwin-64@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.4.0.tgz#45bd92a119f0365d7aedd61e5aadabb589a23e44"
@@ -8601,6 +9606,11 @@ type-fest@^0.20.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+type-fest@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
+ integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
+
type-fest@^4.27.0:
version "4.33.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.33.0.tgz#2da0c135b9afa76cf8b18ecfd4f260ecd414a432"
@@ -8705,6 +9715,11 @@ undici-types@~6.20.0:
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
+unicorn-magic@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz#4efd45c85a69e0dd576d25532fbfa22aa5c8a104"
+ integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==
+
unified@^10.0.0, unified@^10.1.2:
version "10.1.2"
resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df"
@@ -8897,7 +9912,7 @@ use-sync-external-store@^1:
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc"
integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==
-util-deprecate@^1.0.2:
+util-deprecate@^1.0.1, util-deprecate@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
@@ -9130,6 +10145,41 @@ why-is-node-running@^2.3.0:
siginfo "^2.0.0"
stackback "0.0.2"
+winston-console-format@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/winston-console-format/-/winston-console-format-1.0.8.tgz#591adc8e9567c3397a3fa2e29e596d56e48db840"
+ integrity sha512-dq7t/E0D0QRi4XIOwu6HM1+5e//WPqylH88GVjKEhQVrzGFg34MCz+G7pMJcXFBen9C0kBsu5GYgbYsE2LDwKw==
+ dependencies:
+ colors "^1.4.0"
+ logform "^2.2.0"
+ triple-beam "^1.3.0"
+
+winston-transport@^4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9"
+ integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==
+ dependencies:
+ logform "^2.7.0"
+ readable-stream "^3.6.2"
+ triple-beam "^1.3.0"
+
+winston@^3.17.0:
+ version "3.17.0"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423"
+ integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==
+ dependencies:
+ "@colors/colors" "^1.6.0"
+ "@dabh/diagnostics" "^2.0.2"
+ async "^3.2.3"
+ is-stream "^2.0.0"
+ logform "^2.7.0"
+ one-time "^1.0.0"
+ readable-stream "^3.4.0"
+ safe-stable-stringify "^2.3.1"
+ stack-trace "0.0.x"
+ triple-beam "^1.3.0"
+ winston-transport "^4.9.0"
+
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
@@ -9182,11 +10232,29 @@ y-protocols@^1.0.6:
dependencies:
lib0 "^0.2.85"
+yallist@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
+ integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
+
yaml@^2.2.1, yaml@^2.3.4:
version "2.7.0"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
+yaml@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6"
+ integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==
+
+yauzl@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.1.0"
+
yjs@^13.6.15:
version "13.6.23"
resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.6.23.tgz#62358dfa52e92dc870b8a0bedcf0d4cbd4c5ffa8"
@@ -9199,6 +10267,11 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+yoctocolors@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.1.tgz#e0167474e9fbb9e8b3ecca738deaa61dd12e56fc"
+ integrity sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==
+
zod-to-json-schema@^3.22.3, zod-to-json-schema@^3.22.4, zod-to-json-schema@^3.22.5, zod-to-json-schema@^3.23.0, zod-to-json-schema@^3.24.1:
version "3.24.1"
resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz#f08c6725091aadabffa820ba8d50c7ab527f227a"