diff --git a/.env.example b/.env.example
index ea3bd5e..379a211 100644
--- a/.env.example
+++ b/.env.example
@@ -1,4 +1,4 @@
-VERSION=0.1.14
+VERSION=0.1.15
# Nest run in docker, change host to database container name
DB_HOST=localhost
diff --git a/apps/init/trigger.dump b/apps/init/trigger.dump
index 46f069f..0f72396 100644
Binary files a/apps/init/trigger.dump and b/apps/init/trigger.dump differ
diff --git a/apps/webapp/app/components/conversation/use-trigger-stream.tsx b/apps/webapp/app/components/conversation/use-trigger-stream.tsx
index 1c41d4c..aa014bb 100644
--- a/apps/webapp/app/components/conversation/use-trigger-stream.tsx
+++ b/apps/webapp/app/components/conversation/use-trigger-stream.tsx
@@ -6,9 +6,13 @@ export const useTriggerStream = (
token: string,
apiURL?: string,
) => {
+ // Need to fix this later
+ const adjustedApiURL = apiURL?.includes("trigger-webapp")
+ ? "http://localhost:8030"
+ : apiURL;
const { error, streams, run } = useRealtimeRunWithStreams(runId, {
accessToken: token,
- baseURL: apiURL ?? "https://trigger.heysol.ai", // Optional if you are using a self-hosted Trigger.dev instance
+ baseURL: adjustedApiURL ?? "https://trigger.heysol.ai", // Optional if you are using a self-hosted Trigger.dev instance
});
const isEnd = React.useMemo(() => {
diff --git a/apps/webapp/app/components/dashboard/index.ts b/apps/webapp/app/components/dashboard/index.ts
deleted file mode 100644
index e3fea49..0000000
--- a/apps/webapp/app/components/dashboard/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./ingest";
-export * from "./search";
diff --git a/apps/webapp/app/components/dashboard/ingest.tsx b/apps/webapp/app/components/dashboard/ingest.tsx
deleted file mode 100644
index 457fb5a..0000000
--- a/apps/webapp/app/components/dashboard/ingest.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import { PlusIcon, Loader2 } from "lucide-react";
-import { Button } from "../ui";
-import { Textarea } from "../ui/textarea";
-import { useState } from "react";
-import { z } from "zod";
-import { EpisodeType } from "@core/types";
-import { useFetcher } from "@remix-run/react";
-
-export const IngestBodyRequest = z.object({
- episodeBody: z.string(),
- referenceTime: z.string(),
- type: z.enum([EpisodeType.Conversation, EpisodeType.Text]), // Assuming these are the EpisodeType values
- source: z.string(),
- spaceId: z.string().optional(),
- sessionId: z.string().optional(),
-});
-
-export const Ingest = () => {
- const [text, setText] = useState("");
- const fetcher = useFetcher();
-
- const handleSubmit = async (e: React.FormEvent) => {
- e.preventDefault();
-
- fetcher.submit(
- {
- episodeBody: text,
- type: "TEXT",
- referenceTime: new Date().toISOString(),
- source: "local",
- },
- { method: "POST", action: "/home/dashboard" },
- );
-
- setText("");
- };
-
- const isLoading = fetcher.state === "submitting";
-
- return (
-
- );
-};
diff --git a/apps/webapp/app/components/dashboard/search.tsx b/apps/webapp/app/components/dashboard/search.tsx
deleted file mode 100644
index 974f3f4..0000000
--- a/apps/webapp/app/components/dashboard/search.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
-import { PlusIcon, SearchIcon, Loader2 } from "lucide-react";
-import { Button } from "../ui";
-import { Textarea } from "../ui/textarea";
-import { useState } from "react";
-import { z } from "zod";
-import { EpisodeType } from "@core/types";
-import { useFetcher } from "@remix-run/react";
-
-export const Search = () => {
- const [text, setText] = useState("");
- const fetcher = useFetcher>();
-
- const handleSubmit = async (e: React.FormEvent) => {
- e.preventDefault();
-
- fetcher.submit(
- { query: text },
- { method: "POST", action: "/home/dashboard" },
- );
- };
-
- const searchResults = () => {
- const data = fetcher.data as {
- episodes?: string[];
- facts?: string[];
- };
-
- if (
- (!data.episodes || data.episodes.length === 0) &&
- (!data.facts || data.facts.length === 0)
- ) {
- return (
-
- );
- }
-
- return (
-
- {data.episodes && data.episodes.length > 0 && (
-
-
Episodes
- {data.episodes.map((episode, index) => (
-
- {episode}
-
- ))}
-
- )}
- {data.facts && data.facts.length > 0 && (
-
-
Facts
- {data.facts.map((fact, index) => (
-
- {fact}
-
- ))}
-
- )}
-
- );
- };
-
- const isLoading = fetcher.state === "submitting";
-
- return (
-
-
-
- {fetcher?.data && searchResults()}
-
- );
-};
diff --git a/apps/webapp/app/lib/ingest.server.ts b/apps/webapp/app/lib/ingest.server.ts
index 7dccdf1..a578875 100644
--- a/apps/webapp/app/lib/ingest.server.ts
+++ b/apps/webapp/app/lib/ingest.server.ts
@@ -46,3 +46,5 @@ export const addToQueue = async (
return { id: handler.id, token: handler.publicAccessToken };
};
+
+export { IngestBodyRequest };
diff --git a/apps/webapp/app/routes/home.dashboard.tsx b/apps/webapp/app/routes/home.dashboard.tsx
index cddc8b7..149f676 100644
--- a/apps/webapp/app/routes/home.dashboard.tsx
+++ b/apps/webapp/app/routes/home.dashboard.tsx
@@ -7,7 +7,6 @@ import { useTypedLoaderData } from "remix-typedjson";
import { LoaderCircle } from "lucide-react";
import { PageHeader } from "~/components/common/page-header";
import { GraphVisualizationClient } from "~/components/graph/graph-client";
-import { GraphNode } from "~/components/graph/type";
export async function loader({ request }: LoaderFunctionArgs) {
// Only return userId, not the heavy nodeLinks
diff --git a/apps/webapp/app/services/graphModels/entity.ts b/apps/webapp/app/services/graphModels/entity.ts
index d9a4c0a..3fa1fc8 100644
--- a/apps/webapp/app/services/graphModels/entity.ts
+++ b/apps/webapp/app/services/graphModels/entity.ts
@@ -205,24 +205,24 @@ export async function updateStatementsWithNewEntity(
const queries = [
// Update statements where old entity is the subject
`
- MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[:SUBJECT]->(statement:Statement)
+ MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[r:SUBJECT]->(statement:Statement)
MATCH (newEntity:Entity {uuid: $newEntityUUID})
- DELETE oldEntity-[:SUBJECT]->statement
- CREATE newEntity-[:SUBJECT]->statement
+ DELETE r
+ CREATE (newEntity)-[:SUBJECT]->(statement)
`,
// Update statements where old entity is the predicate
`
- MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[:PREDICATE]->(statement:Statement)
+ MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[r:PREDICATE]->(statement:Statement)
MATCH (newEntity:Entity {uuid: $newEntityUUID})
- DELETE oldEntity-[:PREDICATE]->statement
- CREATE newEntity-[:PREDICATE]->statement
+ DELETE r
+ CREATE (newEntity)-[:PREDICATE]->(statement)
`,
// Update statements where old entity is the object
`
- MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[:OBJECT]->(statement:Statement)
+ MATCH (oldEntity:Entity {uuid: $oldEntityUUID})-[r:OBJECT]->(statement:Statement)
MATCH (newEntity:Entity {uuid: $newEntityUUID})
- DELETE oldEntity-[:OBJECT]->statement
- CREATE newEntity-[:OBJECT]->statement
+ DELETE r
+ CREATE (newEntity)-[:OBJECT]->(statement)
`,
];
diff --git a/apps/webapp/app/tailwind.css b/apps/webapp/app/tailwind.css
index d4921d2..c84176c 100644
--- a/apps/webapp/app/tailwind.css
+++ b/apps/webapp/app/tailwind.css
@@ -484,8 +484,6 @@
}
-
-
.tiptap {
:first-child {
margin-top: 0;
diff --git a/apps/webapp/app/trigger/chat/chat.ts b/apps/webapp/app/trigger/chat/chat.ts
index b174738..f72b5eb 100644
--- a/apps/webapp/app/trigger/chat/chat.ts
+++ b/apps/webapp/app/trigger/chat/chat.ts
@@ -37,8 +37,6 @@ export const chat = task({
await updateConversationStatus("running", payload.conversationId);
try {
- let creditForChat = 0;
-
const { previousHistory, ...otherData } = payload.context;
const { agents = [] } = payload.context;
diff --git a/apps/webapp/app/trigger/ingest/ingest.ts b/apps/webapp/app/trigger/ingest/ingest.ts
index 7b4e2f8..3b2a272 100644
--- a/apps/webapp/app/trigger/ingest/ingest.ts
+++ b/apps/webapp/app/trigger/ingest/ingest.ts
@@ -19,12 +19,14 @@ export const IngestBodyRequest = z.object({
const ingestionQueue = queue({
name: "ingestion-queue",
+ concurrencyLimit: 1,
});
// Register the Trigger.dev task
export const ingestTask = task({
id: "ingest-episode",
queue: ingestionQueue,
+ machine: "medium-2x",
run: async (payload: {
body: z.infer;
userId: string;
diff --git a/apps/webapp/app/utils/startup.ts b/apps/webapp/app/utils/startup.ts
index f1549d1..2030907 100644
--- a/apps/webapp/app/utils/startup.ts
+++ b/apps/webapp/app/utils/startup.ts
@@ -35,7 +35,7 @@ export async function initializeStartupServices() {
}
// If we get here, the service is still not available
console.error(
- `TRIGGER_API_URL/login is not available after ${timeoutMs / 1000} seconds. Exiting process.`,
+ `${url}/login is not available after ${timeoutMs / 1000} seconds. Exiting process.`,
);
process.exit(1);
}
@@ -123,23 +123,19 @@ export async function addEnvVariablesInTrigger() {
const DATABASE_URL = getDatabaseUrl(POSTGRES_DB);
- // Helper to replace 'localhost' with 'host.docker.internal'
- function replaceLocalhost(val: string | undefined): string | undefined {
- if (typeof val !== "string") return val;
- return val.replace(/localhost/g, "host.docker.internal");
- }
-
// Map of key to value from env, replacing 'localhost' as needed
const envVars: Record = {
- API_BASE_URL: replaceLocalhost(APP_ORIGIN) ?? "",
- DATABASE_URL: replaceLocalhost(DATABASE_URL) ?? "",
- EMBEDDING_MODEL: replaceLocalhost(EMBEDDING_MODEL) ?? "",
- MODEL: replaceLocalhost(MODEL) ?? "",
- ENCRYPTION_KEY: replaceLocalhost(ENCRYPTION_KEY) ?? "",
- NEO4J_PASSWORD: replaceLocalhost(NEO4J_PASSWORD) ?? "",
- NEO4J_URI: replaceLocalhost(NEO4J_URI) ?? "",
- NEO4J_USERNAME: replaceLocalhost(NEO4J_USERNAME) ?? "",
- OPENAI_API_KEY: replaceLocalhost(OPENAI_API_KEY) ?? "",
+ API_BASE_URL: APP_ORIGIN.includes("localhost")
+ ? APP_ORIGIN.replace("localhost", "core-app")
+ : APP_ORIGIN,
+ DATABASE_URL: DATABASE_URL ?? "",
+ EMBEDDING_MODEL: EMBEDDING_MODEL ?? "",
+ MODEL: MODEL ?? "",
+ ENCRYPTION_KEY: ENCRYPTION_KEY ?? "",
+ NEO4J_PASSWORD: NEO4J_PASSWORD ?? "",
+ NEO4J_URI: NEO4J_URI ?? "",
+ NEO4J_USERNAME: NEO4J_USERNAME ?? "",
+ OPENAI_API_KEY: OPENAI_API_KEY ?? "",
};
const envName = "prod";
diff --git a/apps/webapp/package.json b/apps/webapp/package.json
index ec16e13..f38e6aa 100644
--- a/apps/webapp/package.json
+++ b/apps/webapp/package.json
@@ -73,8 +73,8 @@
"@tiptap/pm": "^2.11.9",
"@tiptap/react": "^2.11.9",
"@tiptap/starter-kit": "2.11.9",
- "@trigger.dev/react-hooks": "^4.0.0-v4-beta.22",
- "@trigger.dev/sdk": "^4.0.0-v4-beta.22",
+ "@trigger.dev/react-hooks": "4.0.0-v4-beta.22",
+ "@trigger.dev/sdk": "4.0.0-v4-beta.22",
"@types/react-calendar-heatmap": "^1.9.0",
"ai": "4.3.14",
"axios": "^1.10.0",
@@ -140,7 +140,7 @@
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.16",
"@tailwindcss/vite": "^4.1.7",
- "@trigger.dev/build": "^4.0.0-v4-beta.22",
+ "@trigger.dev/build": "4.0.0-v4-beta.22",
"@types/compression": "^1.7.2",
"@types/d3": "^7.4.3",
"@types/express": "^4.17.13",
@@ -177,4 +177,4 @@
"engines": {
"node": ">=20.0.0"
}
-}
+}
\ No newline at end of file
diff --git a/apps/webapp/trigger.config.ts b/apps/webapp/trigger.config.ts
index a048e88..943109e 100644
--- a/apps/webapp/trigger.config.ts
+++ b/apps/webapp/trigger.config.ts
@@ -6,7 +6,7 @@ import {
import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
export default defineConfig({
- project: process.env.TRIGGER_PROJECT_ID as string,
+ project: process.env.PROJECT_ID as string,
runtime: "node",
logLevel: "log",
// The max compute seconds a task is allowed to run. If the task run exceeds this duration, it will be stopped.
diff --git a/hosting/docker/.env b/hosting/docker/.env
new file mode 100644
index 0000000..98d02f7
--- /dev/null
+++ b/hosting/docker/.env
@@ -0,0 +1,121 @@
+VERSION=0.1.15
+
+# Nest run in docker, change host to database container name
+DB_HOST=postgres
+DB_PORT=5432
+
+# POSTGRES
+POSTGRES_USER=docker
+POSTGRES_PASSWORD=docker
+POSTGRES_DB=core
+
+DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${POSTGRES_DB}?schema=core
+
+# This sets the URL used for direct connections to the database and should only be needed in limited circumstances
+# See: https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#fields:~:text=the%20shadow%20database.-,directUrl,-No
+DIRECT_URL=${DATABASE_URL}
+
+REMIX_APP_PORT=3033
+APP_ENV=production
+NODE_ENV=${APP_ENV}
+
+CORE_APP_ORIGIN=http://localhost:3033
+API_BASE_URL=${CORE_APP_ORIGIN}
+CORE_LOGIN_ORIGIN=http://localhost:3033
+
+SESSION_SECRET=2818143646516f6fffd707b36f334bbb
+ENCRYPTION_KEY=f686147ab967943ebbe9ed3b496e465a
+MAGIC_LINK_SECRET=27192e6432564f4788d55c15131bd5ac
+
+########### Sign.in with google ############
+AUTH_GOOGLE_CLIENT_ID=
+AUTH_GOOGLE_CLIENT_SECRET=
+
+REDIS_HOST=redis
+REDIS_PORT=6379
+REDIS_TLS_DISABLED=true
+
+ENABLE_EMAIL_LOGIN=true
+
+NEO4J_URI=bolt://neo4j:7687
+NEO4J_USERNAME=neo4j
+NEO4J_PASSWORD=27192e6432564f4788d55c15131bd5ac
+OPENAI_API_KEY=
+
+NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac
+OLLAMA_URL=http://ollama:11434
+
+EMBEDDING_MODEL=text-embedding-3-small
+MODEL=gpt-4.1-2025-04-14
+
+## Trigger ##
+TRIGGER_PROJECT_ID=proj_mqwudvjcukvybqxyjkjv
+TRIGGER_SECRET_KEY=tr_prod_72iziCY2yWA5SdGxRFii
+
+
+# ------------------------------------------------------------
+# Trigger.dev self-hosting environment variables
+# - These are the default values for the self-hosting stack
+# - You should change them to suit your needs, especially the secrets
+# - See the docs for more information: https://trigger.dev/docs/self-hosting/overview
+
+# Secrets
+# - Do NOT use these defaults in production
+# - Generate your own by running `openssl rand -hex 16` for each secret
+MANAGED_WORKER_SECRET=447c29678f9eaf289e9c4b70d3dd8a7f
+
+# Worker token
+# - This is the token for the worker to connect to the webapp
+# - When running the combined stack, this is set automatically during bootstrap
+# - For the split setup, you will have to set this manually. The token is available in the webapp logs but will only be shown once.
+# - See the docs for more information: https://trigger.dev/docs/self-hosting/docker
+TRIGGER_WORKER_TOKEN=tr_wgt_jtRujkUnfK3RmNtUev049Clw7gaqwg77VMPGu7Iv
+TRIGGER_TASKS_IMAGE=redplanethq/proj_core:latest
+
+# Worker URLs
+# - In split setups, uncomment and set to the public URL of your webapp
+# TRIGGER_API_URL=https://trigger.example.com
+# OTEL_EXPORTER_OTLP_ENDPOINT=https://trigger.example.com/otel
+
+# Postgres
+# - Do NOT use these defaults in production
+# - Especially if you decide to expose the database to the internet
+# POSTGRES_USER=postgres
+TRIGGER_DB=trigger
+
+TRIGGER_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${TRIGGER_DB}?schema=public&sslmode=disable
+TRIGGER_DIRECT_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${TRIGGER_DB}?schema=public&sslmode=disable
+ELECTRIC_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}/${TRIGGER_DB}
+
+# Trigger image tag
+# - This is the version of the webapp and worker images to use, they should be locked to a specific version in production
+# - For example: TRIGGER_IMAGE_TAG=v4.0.0-v4-beta.21
+TRIGGER_IMAGE_TAG=v4-beta
+
+# Webapp
+# - These should generally be set to the same value
+# - In production, these should be set to the public URL of your webapp, e.g. https://trigger.example.com
+APP_ORIGIN=http://localhost:8030
+LOGIN_ORIGIN=http://localhost:8030
+API_ORIGIN=http://trigger-webapp:3000
+DEV_OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:8030/otel
+# You may need to set this when testing locally or when using the combined setup
+# API_ORIGIN=http://webapp:3000
+
+
+
+# ClickHouse
+# - Do NOT use these defaults in production
+CLICKHOUSE_USER=default
+CLICKHOUSE_PASSWORD=password
+CLICKHOUSE_URL=http://default:password@clickhouse:8123?secure=false
+RUN_REPLICATION_CLICKHOUSE_URL=http://default:password@clickhouse:8123
+
+# Docker Registry
+# - When testing locally, the default values should be fine
+# - When deploying to production, you will have to change these, especially the password and URL
+# - See the docs for more information: https://trigger.dev/docs/self-hosting/docker#registry-setup
+DOCKER_REGISTRY_URL=docker.io
+DOCKER_REGISTRY_USERNAME=
+DOCKER_REGISTRY_PASSWORD=
+
diff --git a/hosting/docker/core/.gitignore b/hosting/docker/.gitignore
similarity index 100%
rename from hosting/docker/core/.gitignore
rename to hosting/docker/.gitignore
diff --git a/hosting/docker/core/.env b/hosting/docker/core/.env
deleted file mode 100644
index ac269fe..0000000
--- a/hosting/docker/core/.env
+++ /dev/null
@@ -1,57 +0,0 @@
-VERSION=0.1.14
-
-# Nest run in docker, change host to database container name
-DB_HOST=postgres
-DB_PORT=5432
-
-# POSTGRES
-POSTGRES_USER=docker
-POSTGRES_PASSWORD=docker
-POSTGRES_DB=core
-
-LOGIN_ORIGIN=http://localhost:3033
-DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${POSTGRES_DB}?schema=core
-
-# This sets the URL used for direct connections to the database and should only be needed in limited circumstances
-# See: https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#fields:~:text=the%20shadow%20database.-,directUrl,-No
-DIRECT_URL=${DATABASE_URL}
-
-REMIX_APP_PORT=3033
-APP_ENV=production
-NODE_ENV=${APP_ENV}
-APP_ORIGIN=http://localhost:3033
-API_BASE_URL=${APP_ORIGIN}
-
-
-SESSION_SECRET=2818143646516f6fffd707b36f334bbb
-ENCRYPTION_KEY=f686147ab967943ebbe9ed3b496e465a
-
-########### Sign.in with google ############
-AUTH_GOOGLE_CLIENT_ID=
-AUTH_GOOGLE_CLIENT_SECRET=
-
-REDIS_HOST=redis
-REDIS_PORT=6379
-REDIS_TLS_DISABLED=true
-
-ENABLE_EMAIL_LOGIN=true
-
-NEO4J_URI=bolt://neo4j:7687
-NEO4J_USERNAME=neo4j
-NEO4J_PASSWORD=27192e6432564f4788d55c15131bd5ac
-OPENAI_API_KEY=
-
-
-MAGIC_LINK_SECRET=27192e6432564f4788d55c15131bd5ac
-
-
-NEO4J_AUTH=neo4j/27192e6432564f4788d55c15131bd5ac
-OLLAMA_URL=http://ollama:11434
-
-EMBEDDING_MODEL=text-embedding-3-small
-MODEL=gpt-4.1-2025-04-14
-
-## Trigger ##
-TRIGGER_PROJECT_ID=proj_core
-TRIGGER_SECRET_KEY=tr_prod_1yvnRh3pA1M2E67GBY7m
-TRIGGER_API_URL=http://trigger-webapp:3000
diff --git a/hosting/docker/core/docker-compose.yaml b/hosting/docker/core/docker-compose.yaml
deleted file mode 100644
index c857c59..0000000
--- a/hosting/docker/core/docker-compose.yaml
+++ /dev/null
@@ -1,106 +0,0 @@
-version: "3.8"
-
-services:
- core:
- container_name: core-app
- image: redplanethq/core:${VERSION}
- environment:
- - NODE_ENV=${NODE_ENV}
- - DATABASE_URL=${DATABASE_URL}
- - DIRECT_URL=${DIRECT_URL}
- - SESSION_SECRET=${SESSION_SECRET}
- - ENCRYPTION_KEY=${ENCRYPTION_KEY}
- - MAGIC_LINK_SECRET=${MAGIC_LINK_SECRET}
- - LOGIN_ORIGIN=${LOGIN_ORIGIN}
- - APP_ORIGIN=${APP_ORIGIN}
- - REDIS_HOST=${REDIS_HOST}
- - REDIS_PORT=${REDIS_PORT}
- - REDIS_TLS_DISABLED=${REDIS_TLS_DISABLED}
- - NEO4J_URI=${NEO4J_URI}
- - NEO4J_USERNAME=${NEO4J_USERNAME}
- - NEO4J_PASSWORD=${NEO4J_PASSWORD}
- - OPENAI_API_KEY=${OPENAI_API_KEY}
- - AUTH_GOOGLE_CLIENT_ID=${AUTH_GOOGLE_CLIENT_ID}
- - AUTH_GOOGLE_CLIENT_SECRET=${AUTH_GOOGLE_CLIENT_SECRET}
- - ENABLE_EMAIL_LOGIN=${ENABLE_EMAIL_LOGIN}
- - OLLAMA_URL=${OLLAMA_URL}
- - EMBEDDING_MODEL=${EMBEDDING_MODEL}
- - MODEL=${MODEL}
- - TRIGGER_PROJECT_ID=${TRIGGER_PROJECT_ID}
- - TRIGGER_SECRET_KEY=${TRIGGER_SECRET_KEY}
- - TRIGGER_API_URL=${TRIGGER_API_URL}
- - POSTGRES_DB=${POSTGRES_DB}
- ports:
- - "3033:3000"
- depends_on:
- postgres:
- condition: service_healthy
- redis:
- condition: service_started
- neo4j:
- condition: service_healthy
- networks:
- - core
-
- postgres:
- container_name: core-postgres
- image: tegonhq/tegon-postgres:0.1.0-alpha
- environment:
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- - POSTGRES_DB=${POSTGRES_DB}
- ports:
- - "5432:5432"
- volumes:
- - postgres_data:/var/lib/postgresql/data
- networks:
- - core
- healthcheck:
- test: ["CMD-SHELL", "pg_isready"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 10s
-
- redis:
- container_name: core-redis
- image: redis:7
- ports:
- - "6379:6379"
- networks:
- - core
-
- neo4j:
- container_name: core-neo4j
- image: neo4j:5
- environment:
- - NEO4J_AUTH=${NEO4J_AUTH}
- - NEO4J_dbms_security_procedures_unrestricted=gds.*,apoc.*
- - NEO4J_dbms_security_procedures_allowlist=gds.*,apoc.*
- - NEO4J_apoc_export_file_enabled=true # Enable file export
- - NEO4J_apoc_import_file_enabled=true # Enable file import
- - NEO4J_apoc_import_file_use_neo4j_config=true
- - NEO4J_dbms_memory_heap_initial__size=1G
- - NEO4J_dbms_memory_heap_max__size=2G
- ports:
- - "7474:7474"
- - "7687:7687"
- volumes:
- - neo4j_data:/data
- networks:
- - core
- healthcheck:
- test: ["CMD-SHELL", "cypher-shell -u $NEO4J_USERNAME -p $NEO4J_PASSWORD 'RETURN 1'"]
- interval: 10s
- timeout: 5s
- retries: 10
- start_period: 20s
-
-networks:
- core:
- name: core-network
- driver: bridge
-
-volumes:
- postgres_data:
- neo4j_data:
diff --git a/hosting/docker/trigger/docker-compose.yaml b/hosting/docker/docker-compose.yaml
similarity index 68%
rename from hosting/docker/trigger/docker-compose.yaml
rename to hosting/docker/docker-compose.yaml
index d0abc8f..c395fcd 100644
--- a/hosting/docker/trigger/docker-compose.yaml
+++ b/hosting/docker/docker-compose.yaml
@@ -5,27 +5,107 @@ x-logging: &logging-config
max-file: ${LOGGING_MAX_FILES:-5}
compress: ${LOGGING_COMPRESS:-true}
+version: "3.8"
+
services:
- init:
- container_name: trigger-init
- image: redplanethq/init:${CORE_VERSION}
- restart: "no" # prevent retries
+ core:
+ container_name: core-app
+ image: redplanethq/core:${VERSION}
+ environment:
+ - NODE_ENV=${NODE_ENV}
+ - DATABASE_URL=${DATABASE_URL}
+ - DIRECT_URL=${DIRECT_URL}
+ - SESSION_SECRET=${SESSION_SECRET}
+ - ENCRYPTION_KEY=${ENCRYPTION_KEY}
+ - MAGIC_LINK_SECRET=${MAGIC_LINK_SECRET}
+ - LOGIN_ORIGIN=${CORE_LOGIN_ORIGIN}
+ - APP_ORIGIN=${CORE_APP_ORIGIN}
+ - REDIS_HOST=${REDIS_HOST}
+ - REDIS_PORT=${REDIS_PORT}
+ - REDIS_TLS_DISABLED=${REDIS_TLS_DISABLED}
+ - NEO4J_URI=${NEO4J_URI}
+ - NEO4J_USERNAME=${NEO4J_USERNAME}
+ - NEO4J_PASSWORD=${NEO4J_PASSWORD}
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
+ - AUTH_GOOGLE_CLIENT_ID=${AUTH_GOOGLE_CLIENT_ID}
+ - AUTH_GOOGLE_CLIENT_SECRET=${AUTH_GOOGLE_CLIENT_SECRET}
+ - ENABLE_EMAIL_LOGIN=${ENABLE_EMAIL_LOGIN}
+ - OLLAMA_URL=${OLLAMA_URL}
+ - EMBEDDING_MODEL=${EMBEDDING_MODEL}
+ - MODEL=${MODEL}
+ - TRIGGER_PROJECT_ID=${TRIGGER_PROJECT_ID}
+ - TRIGGER_SECRET_KEY=${TRIGGER_SECRET_KEY}
+ - TRIGGER_API_URL=${API_ORIGIN}
+ - POSTGRES_DB=${POSTGRES_DB}
+ ports:
+ - "3033:3000"
+ depends_on:
+ postgres:
+ condition: service_healthy
+ redis:
+ condition: service_started
+ neo4j:
+ condition: service_healthy
+ networks:
+ - core
+
+ postgres:
+ container_name: core-postgres
+ image: tegonhq/tegon-postgres:0.1.0-alpha
environment:
- - VERSION=${CORE_VERSION}
- - DB_HOST=${DB_HOST}
- - DB_PORT=${DB_PORT}
- - TRIGGER_DB=${TRIGGER_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- - TRIGGER_TASKS_IMAGE=${TRIGGER_TASKS_IMAGE}
- - NODE_ENV=production
+ - POSTGRES_DB=${POSTGRES_DB}
+ ports:
+ - "5432:5432"
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
networks:
- - webapp
- - core-network
+ - core
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+ start_period: 10s
+
+ redis:
+ container_name: core-redis
+ image: redis:7
+ ports:
+ - "6379:6379"
+ networks:
+ - core
+
+ neo4j:
+ container_name: core-neo4j
+ image: neo4j:5
+ environment:
+ - NEO4J_AUTH=${NEO4J_AUTH}
+ - NEO4J_dbms_security_procedures_unrestricted=gds.*,apoc.*
+ - NEO4J_dbms_security_procedures_allowlist=gds.*,apoc.*
+ - NEO4J_apoc_export_file_enabled=true # Enable file export
+ - NEO4J_apoc_import_file_enabled=true # Enable file import
+ - NEO4J_apoc_import_file_use_neo4j_config=true
+ - NEO4J_dbms_memory_heap_initial__size=1G
+ - NEO4J_dbms_memory_heap_max__size=2G
+ ports:
+ - "7474:7474"
+ - "7687:7687"
+ volumes:
+ - neo4j_data:/data
+ networks:
+ - core
+ healthcheck:
+ test: ["CMD-SHELL", "cypher-shell -u $NEO4J_USERNAME -p $NEO4J_PASSWORD 'RETURN 1'"]
+ interval: 10s
+ timeout: 5s
+ retries: 10
+ start_period: 20s
webapp:
container_name: trigger-webapp
- image: ghcr.io/triggerdotdev/trigger.dev:${TRIGGER_IMAGE_TAG:-v4-beta}
+ image: ghcr.io/triggerdotdev/trigger.dev@sha256:a19c438f348ac05c939f39ed455ed27b4f189f720b4c9810aef8e71fdc731211
restart: ${RESTART_POLICY:-unless-stopped}
logging: *logging-config
ports:
@@ -35,17 +115,16 @@ services:
condition: service_started
init:
condition: service_started
-
networks:
- webapp
- supervisor
- - core-network
+ - core
volumes:
- shared:/home/node/shared
# Only needed for bootstrap
user: root
# Only needed for bootstrap
- command: sh -c "chown -R node:node /home/node/shared && exec ./scripts/entrypoint.sh"
+ command: sh -c "chown -R node:node /home/node/shared && sleep 5 && exec ./scripts/entrypoint.sh"
healthcheck:
test:
[
@@ -63,8 +142,8 @@ services:
LOGIN_ORIGIN: ${LOGIN_ORIGIN:-http://localhost:8030}
API_ORIGIN: ${API_ORIGIN:-http://localhost:8030}
ELECTRIC_ORIGIN: http://electric:3000
- DATABASE_URL: ${DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/main?schema=public&sslmode=disable}
- DIRECT_URL: ${DIRECT_URL:-postgresql://postgres:postgres@postgres:5432/main?schema=public&sslmode=disable}
+ DATABASE_URL: ${TRIGGER_DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/main?schema=public&sslmode=disable}
+ DIRECT_URL: ${TRIGGER_DIRECT_URL:-postgresql://postgres:postgres@postgres:5432/main?schema=public&sslmode=disable}
SESSION_SECRET: ${SESSION_SECRET}
MAGIC_LINK_SECRET: ${MAGIC_LINK_SECRET}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
@@ -109,7 +188,7 @@ services:
logging: *logging-config
networks:
- webapp
- - core-network
+ - core
environment:
DATABASE_URL: ${ELECTRIC_DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/main?schema=public&sslmode=disable}
ELECTRIC_INSECURE: true
@@ -170,7 +249,7 @@ services:
- supervisor
- docker-proxy
- webapp
- - core-network
+ - core
volumes:
- shared:/home/node/shared
# Only needed for bootstrap
@@ -183,8 +262,8 @@ services:
# Use the bootstrap token created by the webapp
# TRIGGER_WORKER_TOKEN: file:///home/node/shared/worker_token
MANAGED_WORKER_SECRET: ${MANAGED_WORKER_SECRET}
- TRIGGER_API_URL: ${TRIGGER_API_URL:-http://webapp:3000}
- OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:-http://webapp:3000/otel}
+ TRIGGER_API_URL: ${TRIGGER_API_URL:-http://trigger-webapp:3000}
+ OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:-http://trigger-webapp:3000/otel}
TRIGGER_WORKLOAD_API_DOMAIN: supervisor
TRIGGER_WORKLOAD_API_PORT_EXTERNAL: 8020
# Optional settings
@@ -192,7 +271,7 @@ services:
ENFORCE_MACHINE_PRESETS: 1
TRIGGER_DEQUEUE_INTERVAL_MS: 1000
DOCKER_HOST: tcp://docker-proxy:2375
- DOCKER_RUNNER_NETWORKS: webapp,supervisor
+ DOCKER_RUNNER_NETWORKS: webapp,supervisor,core
DOCKER_REGISTRY_URL: ${DOCKER_REGISTRY_URL:-localhost:5000}
DOCKER_REGISTRY_USERNAME: ${DOCKER_REGISTRY_USERNAME:-}
DOCKER_REGISTRY_PASSWORD: ${DOCKER_REGISTRY_PASSWORD:-}
@@ -210,6 +289,25 @@ services:
retries: 5
start_period: 10s
+ init:
+ container_name: trigger-init
+ image: redplanethq/init:${VERSION}
+ restart: "no" # prevent retries
+ environment:
+ - VERSION=${VERSION}
+ - DB_HOST=${DB_HOST}
+ - DB_PORT=${DB_PORT}
+ - TRIGGER_DB=${TRIGGER_DB}
+ - POSTGRES_USER=${POSTGRES_USER}
+ - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+ - TRIGGER_TASKS_IMAGE=${TRIGGER_TASKS_IMAGE}
+ - NODE_ENV=production
+ networks:
+ - webapp
+ - core
+ depends_on:
+ - postgres
+
docker-proxy:
container_name: trigger-docker-proxy
image: tecnativa/docker-socket-proxy:${DOCKER_PROXY_IMAGE_TAG:-latest}
@@ -233,12 +331,10 @@ services:
retries: 5
start_period: 5s
-volumes:
- shared:
- clickhouse:
- minio:
-
networks:
+ core:
+ name: core
+ driver: bridge
docker-proxy:
name: docker-proxy
supervisor:
@@ -246,5 +342,10 @@ networks:
webapp:
name: webapp
driver: bridge
- core-network:
- external: true
+
+volumes:
+ postgres_data:
+ neo4j_data:
+ shared:
+ clickhouse:
+ minio:
diff --git a/hosting/docker/trigger/.env b/hosting/docker/trigger/.env
deleted file mode 100644
index ec3dcb2..0000000
--- a/hosting/docker/trigger/.env
+++ /dev/null
@@ -1,139 +0,0 @@
-# Trigger.dev self-hosting environment variables
-# - These are the default values for the self-hosting stack
-# - You should change them to suit your needs, especially the secrets
-# - See the docs for more information: https://trigger.dev/docs/self-hosting/overview
-
-# Secrets
-# - Do NOT use these defaults in production
-# - Generate your own by running `openssl rand -hex 16` for each secret
-SESSION_SECRET=2818143646516f6fffd707b36f334bbb
-MAGIC_LINK_SECRET=44da78b7bbb0dfe709cf38931d25dcdd
-ENCRYPTION_KEY=f686147ab967943ebbe9ed3b496e465a
-MANAGED_WORKER_SECRET=447c29678f9eaf289e9c4b70d3dd8a7f
-
-# Worker token
-# - This is the token for the worker to connect to the webapp
-# - When running the combined stack, this is set automatically during bootstrap
-# - For the split setup, you will have to set this manually. The token is available in the webapp logs but will only be shown once.
-# - See the docs for more information: https://trigger.dev/docs/self-hosting/docker
-TRIGGER_WORKER_TOKEN=tr_wgt_MwNm1OkMP7nZs5EaknV4LxayPfUKAieQrwh7k5Ln
-TRIGGER_TASKS_IMAGE=redplanethq/proj_core:latest
-
-# Worker URLs
-# - In split setups, uncomment and set to the public URL of your webapp
-# TRIGGER_API_URL=https://trigger.example.com
-# OTEL_EXPORTER_OTLP_ENDPOINT=https://trigger.example.com/otel
-
-# Postgres
-# - Do NOT use these defaults in production
-# - Especially if you decide to expose the database to the internet
-# POSTGRES_USER=postgres
-POSTGRES_USER=docker
-POSTGRES_PASSWORD=docker
-TRIGGER_DB=trigger
-
-DB_HOST=postgres
-DB_PORT=5432
-
-DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${TRIGGER_DB}?schema=public&sslmode=disable
-DIRECT_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${TRIGGER_DB}?schema=public&sslmode=disable
-ELECTRIC_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}/${TRIGGER_DB}
-
-# Trigger image tag
-# - This is the version of the webapp and worker images to use, they should be locked to a specific version in production
-# - For example: TRIGGER_IMAGE_TAG=v4.0.0-v4-beta.21
-TRIGGER_IMAGE_TAG=v4-beta
-
-# Webapp
-# - These should generally be set to the same value
-# - In production, these should be set to the public URL of your webapp, e.g. https://trigger.example.com
-APP_ORIGIN=http://localhost:8030
-LOGIN_ORIGIN=http://localhost:8030
-API_ORIGIN=http://localhost:8030
-DEV_OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:8030/otel
-# You may need to set this when testing locally or when using the combined setup
-# API_ORIGIN=http://webapp:3000
-
-# Webapp - memory management
-# - This sets the maximum memory allocation for Node.js heap in MiB (e.g. "4096" for 4GB)
-# - It should be set according to your total webapp machine's memory or any container limits you have set
-# - Setting this too high or low WILL cause crashes, inefficient memory utilization and high CPU usage
-# - You should allow for some memory overhead, we suggest at least 20%, for example:
-# - 2GB machine: NODE_MAX_OLD_SPACE_SIZE=1600
-# - 4GB machine: NODE_MAX_OLD_SPACE_SIZE=3200
-# - 6GB machine: NODE_MAX_OLD_SPACE_SIZE=4800
-# - 8GB machine: NODE_MAX_OLD_SPACE_SIZE=6400
-# NODE_MAX_OLD_SPACE_SIZE=8192
-
-# ClickHouse
-# - Do NOT use these defaults in production
-CLICKHOUSE_USER=default
-CLICKHOUSE_PASSWORD=password
-CLICKHOUSE_URL=http://default:password@clickhouse:8123?secure=false
-RUN_REPLICATION_CLICKHOUSE_URL=http://default:password@clickhouse:8123
-
-# Docker Registry
-# - When testing locally, the default values should be fine
-# - When deploying to production, you will have to change these, especially the password and URL
-# - See the docs for more information: https://trigger.dev/docs/self-hosting/docker#registry-setup
-DOCKER_REGISTRY_URL=registry-1.docker.io
-DOCKER_REGISTRY_USERNAME=
-DOCKER_REGISTRY_PASSWORD=
-
-# Object store
-# - You need to log into the Minio dashboard and create a bucket called "packets"
-# - See the docs for more information: https://trigger.dev/docs/self-hosting/docker#object-storage
-OBJECT_STORE_ACCESS_KEY_ID=admin
-OBJECT_STORE_SECRET_ACCESS_KEY=very-safe-password
-# You will have to uncomment and configure this for production
-# OBJECT_STORE_BASE_URL=http://localhost:9000
-# Credentials to access the Minio dashboard at http://localhost:9001
-# - You should change these credentials and not use them for the `OBJECT_STORE_` env vars above
-# - Instead, setup a non-root user with access the "packets" bucket
-# MINIO_ROOT_USER=admin
-# MINIO_ROOT_PASSWORD=very-safe-password
-
-# Other image tags
-# - These are the versions of the other images to use
-# - You should lock these to a specific version in production
-# POSTGRES_IMAGE_TAG=14
-# REDIS_IMAGE_TAG=7
-# ELECTRIC_IMAGE_TAG=1.0.13
-# CLICKHOUSE_IMAGE_TAG=latest
-# REGISTRY_IMAGE_TAG=2
-# MINIO_IMAGE_TAG=latest
-# DOCKER_PROXY_IMAGE_TAG=latest
-# TRAEFIK_IMAGE_TAG=v3.4
-
-# Publish IPs
-# - These are the IPs to publish the services to
-# - Setting to 127.0.0.1 makes the service only accessible locally
-# - When deploying to production, you will have to change these, depending on your setup
-# WEBAPP_PUBLISH_IP=0.0.0.0
-# POSTGRES_PUBLISH_IP=127.0.0.1
-# REDIS_PUBLISH_IP=127.0.0.1
-# ELECTRIC_PUBLISH_IP=127.0.0.1
-# CLICKHOUSE_PUBLISH_IP=127.0.0.1
-# REGISTRY_PUBLISH_IP=127.0.0.1
-# MINIO_PUBLISH_IP=127.0.0.1
-
-# Restart policy
-# - Applies to all services, adjust as needed
-# RESTART_POLICY=unless-stopped
-
-# Docker logging
-# - See the official docs: https://docs.docker.com/engine/logging/configure/
-# LOGGING_DRIVER=local
-# LOGGING_MAX_SIZE=20m
-# LOGGING_MAX_FILES=5
-# LOGGING_COMPRESS=true
-
-# Traefik
-# - Reverse proxy settings only serve as an example and require further configuration
-# - See the partial overrides in docker-compose.traefik.yml for more details
-# TRAEFIK_ENTRYPOINT=websecure
-# TRAEFIK_HTTP_PUBLISH_IP=0.0.0.0
-# TRAEFIK_HTTPS_PUBLISH_IP=0.0.0.0
-# TRAEFIK_DASHBOARD_PUBLISH_IP=127.0.0.1
-
-CORE_VERSION=0.1.14
\ No newline at end of file
diff --git a/hosting/docker/trigger/.gitignore b/hosting/docker/trigger/.gitignore
deleted file mode 100644
index 285f962..0000000
--- a/hosting/docker/trigger/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# preserve the .env symlink
-!.env
\ No newline at end of file
diff --git a/package.json b/package.json
index 74119ae..8bc7f23 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "core",
"private": true,
- "version": "0.1.14",
+ "version": "0.1.15",
"workspaces": [
"apps/*",
"packages/*"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dd9fe51..208d5d7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -458,10 +458,10 @@ importers:
specifier: 2.11.9
version: 2.11.9
'@trigger.dev/react-hooks':
- specifier: ^4.0.0-v4-beta.22
+ specifier: 4.0.0-v4-beta.22
version: 4.0.0-v4-beta.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@trigger.dev/sdk':
- specifier: ^4.0.0-v4-beta.22
+ specifier: 4.0.0-v4-beta.22
version: 4.0.0-v4-beta.22(ai@4.3.14(react@18.3.1)(zod@3.23.8))(zod@3.23.8)
'@types/react-calendar-heatmap':
specifier: ^1.9.0
@@ -654,7 +654,7 @@ importers:
specifier: ^4.1.7
version: 4.1.9(vite@6.3.5(@types/node@20.19.7)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.42.0)(tsx@4.17.0)(yaml@2.8.0))
'@trigger.dev/build':
- specifier: ^4.0.0-v4-beta.22
+ specifier: 4.0.0-v4-beta.22
version: 4.0.0-v4-beta.22(typescript@5.8.3)
'@types/compression':
specifier: ^1.7.2
@@ -2432,6 +2432,10 @@ packages:
'@open-draft/deferred-promise@2.2.0':
resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
+ '@opentelemetry/api-logs@0.203.0':
+ resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==}
+ engines: {node: '>=8.0.0'}
+
'@opentelemetry/api-logs@0.52.1':
resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==}
engines: {node: '>=14'}
@@ -2446,6 +2450,12 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/context-async-hooks@2.0.1':
+ resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
'@opentelemetry/core@1.25.1':
resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==}
engines: {node: '>=14'}
@@ -2458,6 +2468,18 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/core@2.0.1':
+ resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/exporter-logs-otlp-http@0.203.0':
+ resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
'@opentelemetry/exporter-logs-otlp-http@0.52.1':
resolution: {integrity: sha512-qKgywId2DbdowPZpOBXQKp0B8DfhfIArmSic15z13Nk/JAOccBUQdPwDjDnjsM5f0ckZFMVR2t/tijTUAqDZoA==}
engines: {node: '>=14'}
@@ -2470,6 +2492,12 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.0.0
+ '@opentelemetry/exporter-trace-otlp-http@0.203.0':
+ resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
'@opentelemetry/exporter-trace-otlp-http@0.52.1':
resolution: {integrity: sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg==}
engines: {node: '>=14'}
@@ -2494,12 +2522,24 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.0.0
+ '@opentelemetry/instrumentation@0.203.0':
+ resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
'@opentelemetry/instrumentation@0.52.1':
resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
+ '@opentelemetry/otlp-exporter-base@0.203.0':
+ resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
'@opentelemetry/otlp-exporter-base@0.52.1':
resolution: {integrity: sha512-z175NXOtX5ihdlshtYBe5RpGeBoTXVCKPPLiQlD6FHvpM4Ch+p2B0yWKYSrBfLH24H9zjJiBdTrtD+hLlfnXEQ==}
engines: {node: '>=14'}
@@ -2512,6 +2552,12 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.0.0
+ '@opentelemetry/otlp-transformer@0.203.0':
+ resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
'@opentelemetry/otlp-transformer@0.52.1':
resolution: {integrity: sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg==}
engines: {node: '>=14'}
@@ -2536,6 +2582,18 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/resources@2.0.1':
+ resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
+ '@opentelemetry/sdk-logs@0.203.0':
+ resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.4.0 <1.10.0'
+
'@opentelemetry/sdk-logs@0.52.1':
resolution: {integrity: sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA==}
engines: {node: '>=14'}
@@ -2548,6 +2606,12 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
+ '@opentelemetry/sdk-metrics@2.0.1':
+ resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.9.0 <1.10.0'
+
'@opentelemetry/sdk-node@0.52.1':
resolution: {integrity: sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA==}
engines: {node: '>=14'}
@@ -2560,12 +2624,24 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/sdk-trace-base@2.0.1':
+ resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
'@opentelemetry/sdk-trace-node@1.25.1':
resolution: {integrity: sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/sdk-trace-node@2.0.1':
+ resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
'@opentelemetry/sdk-trace-web@1.25.1':
resolution: {integrity: sha512-SS6JaSkHngcBCNdWGthzcvaKGRnDw2AeP57HyTEileLToJ7WLMeV+064iRlVyoT4+e77MRp2T2dDSrmaUyxoNg==}
engines: {node: '>=14'}
@@ -2580,6 +2656,10 @@ packages:
resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==}
engines: {node: '>=14'}
+ '@opentelemetry/semantic-conventions@1.36.0':
+ resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==}
+ engines: {node: '>=14'}
+
'@oslojs/asn1@1.0.0':
resolution: {integrity: sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA==}
@@ -4711,6 +4791,10 @@ packages:
resolution: {integrity: sha512-FVaVNsW3KQgYEWStr80Iu+1l4KMyHPVU4QbV55pLQp7d126jOuP+hXYp7LhnYVZtgcQLIZSC0VjJc/UYwr4D6g==}
engines: {node: '>=18.20.0'}
+ '@trigger.dev/core@4.0.0-v4-beta.27':
+ resolution: {integrity: sha512-PJzW07GbxeHKigZ0AiO4aAtDdb2r5iioI7P6TLTqp3XfsxLb1ezPNv3zt6dy1uvZsefGR/EO4y7X0VN1pJyLTA==}
+ engines: {node: '>=18.20.0'}
+
'@trigger.dev/react-hooks@4.0.0-v4-beta.22':
resolution: {integrity: sha512-hWBoxEkNSM+IcFsUlFEJBcMZGmpaYGPy5k/o+iK9QNLURiQsKEYGYoBzKlA7iP0cVPwhIV1eNlsPediNRQyTsA==}
engines: {node: '>=18.20.0'}
@@ -8101,6 +8185,10 @@ packages:
lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
+ lodash.get@4.4.2:
+ resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
+
lodash.isarguments@3.1.0:
resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
@@ -11400,6 +11488,9 @@ packages:
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
zustand@4.5.7:
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
engines: {node: '>=12.7.0'}
@@ -13085,6 +13176,10 @@ snapshots:
'@open-draft/deferred-promise@2.2.0': {}
+ '@opentelemetry/api-logs@0.203.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
'@opentelemetry/api-logs@0.52.1':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13095,6 +13190,10 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
'@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13105,6 +13204,20 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.28.0
+ '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.36.0
+
+ '@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.203.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
+
'@opentelemetry/exporter-logs-otlp-http@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13124,6 +13237,15 @@ snapshots:
'@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
+
'@opentelemetry/exporter-trace-otlp-http@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13160,6 +13282,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.203.0
+ import-in-the-middle: 1.11.0
+ require-in-the-middle: 7.5.2(supports-color@10.0.0)
+ transitivePeerDependencies:
+ - supports-color
+
'@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)(supports-color@10.0.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13172,6 +13303,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
+
'@opentelemetry/otlp-exporter-base@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13186,6 +13323,17 @@ snapshots:
'@opentelemetry/otlp-exporter-base': 0.52.1(@opentelemetry/api@1.9.0)
'@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.203.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
+ protobufjs: 7.5.3
+
'@opentelemetry/otlp-transformer@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13213,6 +13361,19 @@ snapshots:
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.36.0
+
+ '@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.203.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+
'@opentelemetry/sdk-logs@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13227,6 +13388,12 @@ snapshots:
'@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
lodash.merge: 4.6.2
+ '@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+
'@opentelemetry/sdk-node@0.52.1(@opentelemetry/api@1.9.0)(supports-color@10.0.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13253,6 +13420,13 @@ snapshots:
'@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.36.0
+
'@opentelemetry/sdk-trace-node@1.25.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13263,6 +13437,13 @@ snapshots:
'@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
semver: 7.7.2
+ '@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
+
'@opentelemetry/sdk-trace-web@1.25.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13274,6 +13455,8 @@ snapshots:
'@opentelemetry/semantic-conventions@1.28.0': {}
+ '@opentelemetry/semantic-conventions@1.36.0': {}
+
'@oslojs/asn1@1.0.0':
dependencies:
'@oslojs/binary': 1.0.0
@@ -15601,9 +15784,49 @@ snapshots:
- supports-color
- utf-8-validate
+ '@trigger.dev/core@4.0.0-v4-beta.27':
+ dependencies:
+ '@bugsnag/cuid': 3.2.1
+ '@electric-sql/client': 1.0.0-beta.1
+ '@google-cloud/precise-date': 4.0.0
+ '@jsonhero/path': 1.0.21
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.203.0
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.36.0
+ dequal: 2.0.3
+ eventsource: 3.0.7
+ eventsource-parser: 3.0.3
+ execa: 8.0.1
+ humanize-duration: 3.33.0
+ jose: 5.10.0
+ lodash.get: 4.4.2
+ nanoid: 3.3.8
+ prom-client: 15.1.3
+ socket.io: 4.7.4
+ socket.io-client: 4.7.5
+ std-env: 3.9.0
+ superjson: 2.2.2
+ tinyexec: 0.3.2
+ uncrypto: 0.1.3
+ zod: 3.25.76
+ zod-error: 1.5.0
+ zod-validation-error: 1.5.0(zod@3.25.76)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
'@trigger.dev/react-hooks@4.0.0-v4-beta.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@trigger.dev/core': 4.0.0-v4-beta.22
+ '@trigger.dev/core': 4.0.0-v4-beta.27
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
swr: 2.3.3(react@18.3.1)
@@ -19615,6 +19838,8 @@ snapshots:
lodash.defaults@4.2.0: {}
+ lodash.get@4.4.2: {}
+
lodash.isarguments@3.1.0: {}
lodash.isplainobject@4.0.6: {}
@@ -23662,8 +23887,14 @@ snapshots:
dependencies:
zod: 3.23.8
+ zod-validation-error@1.5.0(zod@3.25.76):
+ dependencies:
+ zod: 3.25.76
+
zod@3.23.8: {}
+ zod@3.25.76: {}
+
zustand@4.5.7(@types/react@18.2.69)(react@18.3.1):
dependencies:
use-sync-external-store: 1.5.0(react@18.3.1)