From f6b5e13c2f76a9f8860abd16ba9efbec2e1e630a Mon Sep 17 00:00:00 2001 From: Aarushi <50577581+aarushik93@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:29:10 +0100 Subject: [PATCH 1/4] feat(prod,infra): Add prod values and clean up infra (#8238) add prod values and clean up infra --- .../templates/backendconfig.yaml | 26 ++++ .../templates/deployment-executor.yaml | 68 +++++++++++ .../autogpt-server/templates/deployment.yaml | 12 +- .../templates/service-executor.yaml | 19 +++ .../autogpt-server/templates/service.yaml | 8 +- .../infra/helm/autogpt-server/values.dev.yaml | 63 ++++++---- .../helm/autogpt-server/values.prod.yaml | 113 ++++++++++++++++++ .../infra/helm/autogpt-server/values.yaml | 29 +++-- 8 files changed, 295 insertions(+), 43 deletions(-) create mode 100644 autogpt_platform/infra/helm/autogpt-server/templates/backendconfig.yaml create mode 100644 autogpt_platform/infra/helm/autogpt-server/templates/deployment-executor.yaml create mode 100644 autogpt_platform/infra/helm/autogpt-server/templates/service-executor.yaml create mode 100644 autogpt_platform/infra/helm/autogpt-server/values.prod.yaml diff --git a/autogpt_platform/infra/helm/autogpt-server/templates/backendconfig.yaml b/autogpt_platform/infra/helm/autogpt-server/templates/backendconfig.yaml new file mode 100644 index 000000000000..da23ed215b2b --- /dev/null +++ b/autogpt_platform/infra/helm/autogpt-server/templates/backendconfig.yaml @@ -0,0 +1,26 @@ +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: {{ include "autogpt-server.fullname" . }}-backend-config +spec: + customRequestHeaders: + headers: + - "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}" + - "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}" + - "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}" + - "Access-Control-Max-Age:{{ .Values.cors.maxAge }}" + {{- if .Values.cors.allowCredentials }} + - "Access-Control-Allow-Credentials:true" + {{- end }} + customResponseHeaders: + headers: + - "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}" + - "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}" + - "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}" + - "Access-Control-Max-Age:{{ .Values.cors.maxAge }}" + {{- if .Values.cors.allowCredentials }} + - "Access-Control-Allow-Credentials:true" + {{- end }} + timeoutSec: 1800 + connectionDraining: + drainingTimeoutSec: 1800 \ No newline at end of file diff --git a/autogpt_platform/infra/helm/autogpt-server/templates/deployment-executor.yaml b/autogpt_platform/infra/helm/autogpt-server/templates/deployment-executor.yaml new file mode 100644 index 000000000000..b8f239e7e233 --- /dev/null +++ b/autogpt_platform/infra/helm/autogpt-server/templates/deployment-executor.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "autogpt-server.fullname" . }}-executor + labels: + app.kubernetes.io/component: executor +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/component: executor + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: executor + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "autogpt-server.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + envFrom: + - configMapRef: + name: {{ include "autogpt-server.fullname" . }}-config + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: ["poetry", "run", "executor"] + ports: + - name: http + containerPort: {{ .Values.serviceExecutor.port }} + protocol: TCP + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/autogpt_platform/infra/helm/autogpt-server/templates/deployment.yaml b/autogpt_platform/infra/helm/autogpt-server/templates/deployment.yaml index 78b4aed66e4a..f706105f190b 100644 --- a/autogpt_platform/infra/helm/autogpt-server/templates/deployment.yaml +++ b/autogpt_platform/infra/helm/autogpt-server/templates/deployment.yaml @@ -44,6 +44,9 @@ spec: - name: http containerPort: {{ .Values.service.port }} protocol: TCP + - name: pyro + containerPort: 8004 + protocol: TCP livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} readinessProbe: @@ -54,15 +57,6 @@ spec: volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} - - name: cloud-sql-proxy - image: "{{ .Values.cloudSqlProxy.image.repository }}:{{ .Values.cloudSqlProxy.image.tag }}" - args: - - "--structured-logs" - {{- if .Values.cloudSqlProxy.usePrivateIp }} - - "--private-ip" - {{- end }} - - "--port={{ .Values.cloudSqlProxy.port }}" - - "{{ .Values.cloudSqlProxy.instanceConnectionName }}" {{- with .Values.volumes }} volumes: {{- toYaml . | nindent 8 }} diff --git a/autogpt_platform/infra/helm/autogpt-server/templates/service-executor.yaml b/autogpt_platform/infra/helm/autogpt-server/templates/service-executor.yaml new file mode 100644 index 000000000000..36ef560b2220 --- /dev/null +++ b/autogpt_platform/infra/helm/autogpt-server/templates/service-executor.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "autogpt-server.fullname" . }}-executor + labels: + app.kubernetes.io/component: executor + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.serviceExecutor.type }} + ports: + - port: {{ .Values.serviceExecutor.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: executor diff --git a/autogpt_platform/infra/helm/autogpt-server/templates/service.yaml b/autogpt_platform/infra/helm/autogpt-server/templates/service.yaml index 53d970dbc989..b944873174b4 100644 --- a/autogpt_platform/infra/helm/autogpt-server/templates/service.yaml +++ b/autogpt_platform/infra/helm/autogpt-server/templates/service.yaml @@ -15,5 +15,11 @@ spec: targetPort: http protocol: TCP name: http + {{- if .Values.service.pyroDaemonPort }} + - port: {{ .Values.service.pyroDaemonPort }} + targetPort: pyro + protocol: TCP + name: pyro + {{- end }} selector: - {{- include "autogpt-server.selectorLabels" . | nindent 4 }} + {{- include "autogpt-server.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/autogpt_platform/infra/helm/autogpt-server/values.dev.yaml b/autogpt_platform/infra/helm/autogpt-server/values.dev.yaml index 5d17aa4078bb..fa7de9873127 100644 --- a/autogpt_platform/infra/helm/autogpt-server/values.dev.yaml +++ b/autogpt_platform/infra/helm/autogpt-server/values.dev.yaml @@ -12,10 +12,18 @@ serviceAccount: service: type: ClusterIP - port: 8000 - targetPort: 8000 + port: 8006 + pyroDaemonPort: 8004 annotations: cloud.google.com/neg: '{"ingress": true}' + beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}' + +serviceExecutor: + type: ClusterIP + port: 8002 + targetPort: 8002 + annotations: + beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}' ingress: enabled: true @@ -33,12 +41,12 @@ ingress: backend: service: name: autogpt-server - port: 8000 + port: 8006 defaultBackend: service: name: autogpt-server port: - number: 8000 + number: 8006 resources: requests: @@ -46,12 +54,12 @@ resources: memory: 256Mi limits: cpu: 2 - memory: 2Gi + memory: 10Gi livenessProbe: httpGet: path: /docs - port: 8000 + port: 8006 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 @@ -59,7 +67,7 @@ livenessProbe: readinessProbe: httpGet: path: /docs - port: 8000 + port: 8006 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 @@ -67,28 +75,39 @@ readinessProbe: domain: "dev-server.agpt.co" -cloudSqlProxy: - image: - repository: gcr.io/cloud-sql-connectors/cloud-sql-proxy - tag: 2.11.4 - instanceConnectionName: "agpt-dev:us-central1:agpt-server-dev" - port: 5432 - resources: - requests: - memory: "2Gi" - cpu: "1" +cors: + allowOrigin: "https://dev-builder.agpt.co" + allowMethods: + - "GET" + - "POST" + - "PUT" + - "DELETE" + - "OPTIONS" + allowHeaders: + - "Content-Type" + - "Authorization" + maxAge: 3600 + allowCredentials: true env: APP_ENV: "dev" PYRO_HOST: "0.0.0.0" - NUM_GRAPH_WORKERS: 100 - NUM_NODE_WORKERS: 5 + ENABLE_AUTH: "true" REDIS_HOST: "redis-dev-master.redis-dev.svc.cluster.local" REDIS_PORT: "6379" + OPENAI_API_KEY: "" + SUPABASE_JWT_SECRET: "" + REDIS_PASSWORD: "password" + NUM_GRAPH_WORKERS: 10 + NUM_NODE_WORKERS: 5 + DATABASE_URL: "" + SENTRY_DSN: "" + ENABLE_CREDIT: "true" BACKEND_CORS_ALLOW_ORIGINS: '["https://dev-builder.agpt.co"]' SUPABASE_SERVICE_ROLE_KEY: "" GITHUB_CLIENT_ID: "" GITHUB_CLIENT_SECRET: "" - FRONTEND_BASE_URL: "" - SUPABASE_URL: "" - SUPABASE_JWT_SECRET: "" + FRONTEND_BASE_URL: "https://dev-builder.agpt.co/" + SUPABASE_URL: "https://adfjtextkuilwuhzdjpf.supabase.co" + AGENTSERVER_HOST: "autogpt-server.dev-agpt.svc.cluster.local" + EXECUTIONMANAGER_HOST: "autogpt-server-executor.dev-agpt.svc.cluster.local" \ No newline at end of file diff --git a/autogpt_platform/infra/helm/autogpt-server/values.prod.yaml b/autogpt_platform/infra/helm/autogpt-server/values.prod.yaml new file mode 100644 index 000000000000..cafbe2f1dccd --- /dev/null +++ b/autogpt_platform/infra/helm/autogpt-server/values.prod.yaml @@ -0,0 +1,113 @@ +# prod values, overwrite base values as needed. + +image: + repository: us-east1-docker.pkg.dev/agpt-prod/agpt-backend-prod/agpt-backend-prod + pullPolicy: Always + tag: "latest" + +serviceAccount: + annotations: + iam.gke.io/gcp-service-account: "prod-agpt-server-sa@agpt-prod.iam.gserviceaccount.com" + name: "prod-agpt-server-sa" + +service: + type: ClusterIP + port: 8006 + pyroDaemonPort: 8004 + annotations: + cloud.google.com/neg: '{"ingress": true}' + beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}' + +serviceExecutor: + type: ClusterIP + port: 8002 + targetPort: 8002 + annotations: + beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}' + +ingress: + enabled: true + className: "gce" + annotations: + kubernetes.io/ingress.class: gce + kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-backend-ip" + networking.gke.io/managed-certificates: "autogpt-server-cert" + networking.gke.io/v1beta1.FrontendConfig: "autogpt-server-frontend-config" + hosts: + - host: backend.agpt.co + paths: + - path: / + pathType: Prefix + backend: + service: + name: autogpt-server + port: 8006 + defaultBackend: + service: + name: autogpt-server + port: + number: 8006 + +resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 2 + memory: 10Gi + +cors: + allowOrigin: "https://platform.agpt.co" + allowMethods: + - "GET" + - "POST" + - "PUT" + - "DELETE" + - "OPTIONS" + allowHeaders: + - "Content-Type" + - "Authorization" + maxAge: 3600 + allowCredentials: true + +livenessProbe: + httpGet: + path: /docs + port: 8006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 +readinessProbe: + httpGet: + path: /docs + port: 8006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + +domain: "backend.agpt.co" + +env: + APP_ENV: "prod" + PYRO_HOST: "0.0.0.0" + ENABLE_AUTH: "true" + REDIS_HOST: "redis-prod-master.redis-prod.svc.cluster.local" + REDIS_PORT: "6379" + OPENAI_API_KEY: "" + REDIS_PASSWORD: "" + NUM_GRAPH_WORKERS: 10 + NUM_NODE_WORKERS: 5 + ENABLE_CREDIT: "true" + BACKEND_CORS_ALLOW_ORIGINS: '["https://platform.agpt.co"]' + SUPABASE_JWT_SECRET: "" + DATABASE_URL: "" + SENTRY_DSN: "" + SUPABASE_SERVICE_ROLE_KEY: "" + FRONTEND_BASE_URL: "https://platform.agpt.co/" + SUPABASE_URL: "https://bgwpwdsxblryihinutbx.supabase.co" + AGENTSERVER_HOST: "autogpt-server.prod-agpt.svc.cluster.local" + EXECUTIONMANAGER_HOST: "autogpt-server-executor.prod-agpt.svc.cluster.local" + GITHUB_CLIENT_ID: "" + GITHUB_CLIENT_SECRET: "" diff --git a/autogpt_platform/infra/helm/autogpt-server/values.yaml b/autogpt_platform/infra/helm/autogpt-server/values.yaml index 3bdfd8515ac1..8296416ef759 100644 --- a/autogpt_platform/infra/helm/autogpt-server/values.yaml +++ b/autogpt_platform/infra/helm/autogpt-server/values.yaml @@ -45,17 +45,9 @@ resources: cpu: 100m memory: 128Mi limits: - cpu: 500m - memory: 512Mi - -livenessProbe: - httpGet: - path: / - port: http -readinessProbe: - httpGet: - path: / - port: http + cpu: 1 + memory: 1Gi + autoscaling: enabled: false @@ -75,6 +67,21 @@ affinity: {} domain: "" +cors: + allowOrigins: + - "https://dev-builder.agpt.co" + allowMethods: + - "GET" + - "POST" + - "PUT" + - "DELETE" + - "OPTIONS" + allowHeaders: + - "Content-Type" + - "Authorization" + maxAge: 3600 + allowCredentials: true + cloudSqlProxy: image: repository: gcr.io/cloud-sql-connectors/cloud-sql-proxy From 55803bcd540a3013127c3ac623554aebbfbef26f Mon Sep 17 00:00:00 2001 From: Nicholas Tindle Date: Tue, 1 Oct 2024 05:37:01 -0500 Subject: [PATCH 2/4] feat(frontend): push to cloud if needed for marketplace, and add a download agent button (#8196) * feat(frontend): push to cloud if needed for marketplace * fix(market): missing envar in the example :angry: * feat(frontend): download button functions * feat(frontend): styling and linting * feat(frontend): move to popup * feat(frontend): style fixes and link replacement * feat(infra): add variables * fix(frontend): merge * fix(frontend): linting * feat(frontend): pr changes * Update NavBar.tsx * fix(frontend): linting --------- Co-authored-by: Zamil Majdy Co-authored-by: Aarushi <50577581+aarushik93@users.noreply.github.com> --- autogpt_platform/docker-compose.platform.yml | 1 + autogpt_platform/frontend/.env.example | 3 + autogpt_platform/frontend/package.json | 2 +- .../frontend/src/components/NavBar.tsx | 5 +- .../frontend/src/components/NavBarButtons.tsx | 47 -- .../marketplace/AgentDetailContent.tsx | 123 ++- .../src/components/{ => nav}/CreditButton.tsx | 0 .../src/components/nav/MarketPopup.tsx | 27 + .../src/components/nav/NavBarButtons.tsx | 74 ++ autogpt_platform/frontend/src/lib/utils.ts | 11 + autogpt_platform/frontend/yarn.lock | 731 ++++++------------ .../helm/autogpt-builder/values.dev.yaml | 3 +- autogpt_platform/market/.env.example | 3 +- 13 files changed, 395 insertions(+), 635 deletions(-) delete mode 100644 autogpt_platform/frontend/src/components/NavBarButtons.tsx rename autogpt_platform/frontend/src/components/{ => nav}/CreditButton.tsx (100%) create mode 100644 autogpt_platform/frontend/src/components/nav/MarketPopup.tsx create mode 100644 autogpt_platform/frontend/src/components/nav/NavBarButtons.tsx diff --git a/autogpt_platform/docker-compose.platform.yml b/autogpt_platform/docker-compose.platform.yml index 8f0fda2aff75..a0b8f670acd6 100644 --- a/autogpt_platform/docker-compose.platform.yml +++ b/autogpt_platform/docker-compose.platform.yml @@ -207,6 +207,7 @@ services: # - NEXT_PUBLIC_AGPT_SERVER_URL=http://localhost:8006/api # - NEXT_PUBLIC_AGPT_WS_SERVER_URL=ws://localhost:8001/ws # - NEXT_PUBLIC_AGPT_MARKETPLACE_URL=http://localhost:8015/api/v1/market +# - NEXT_PUBLIC_BEHAVE_AS=LOCAL # ports: # - "3000:3000" # networks: diff --git a/autogpt_platform/frontend/.env.example b/autogpt_platform/frontend/.env.example index 34309245e33d..0fe0b7540292 100644 --- a/autogpt_platform/frontend/.env.example +++ b/autogpt_platform/frontend/.env.example @@ -13,3 +13,6 @@ NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAic ## Only used if you're using Supabase and OAuth AUTH_CALLBACK_URL=http://localhost:3000/auth/callback GA_MEASUREMENT_ID=G-FH2XK2W4GN + +# When running locally, set NEXT_PUBLIC_BEHAVE_AS=CLOUD to use the a locally hosted marketplace (as is typical in development, and the cloud deployment), otherwise set it to LOCAL to have the marketplace open in a new tab +NEXT_PUBLIC_BEHAVE_AS=LOCAL \ No newline at end of file diff --git a/autogpt_platform/frontend/package.json b/autogpt_platform/frontend/package.json index 49976726400d..f9ba6ed2bf8e 100644 --- a/autogpt_platform/frontend/package.json +++ b/autogpt_platform/frontend/package.json @@ -66,7 +66,7 @@ }, "devDependencies": { "@playwright/test": "^1.47.1", - "@types/node": "^20", + "@types/node": "^22.7.3", "@types/react": "^18", "@types/react-dom": "^18", "@types/react-modal": "^3.16.3", diff --git a/autogpt_platform/frontend/src/components/NavBar.tsx b/autogpt_platform/frontend/src/components/NavBar.tsx index 667d653bff82..815543189cd7 100644 --- a/autogpt_platform/frontend/src/components/NavBar.tsx +++ b/autogpt_platform/frontend/src/components/NavBar.tsx @@ -6,8 +6,9 @@ import Image from "next/image"; import getServerUser from "@/hooks/getServerUser"; import ProfileDropdown from "./ProfileDropdown"; import { IconCircleUser, IconMenu } from "@/components/ui/icons"; -import CreditButton from "@/components/CreditButton"; -import { NavBarButtons } from "./NavBarButtons"; +import CreditButton from "@/components/nav/CreditButton"; + +import { NavBarButtons } from "./nav/NavBarButtons"; export async function NavBar() { const isAvailable = Boolean( diff --git a/autogpt_platform/frontend/src/components/NavBarButtons.tsx b/autogpt_platform/frontend/src/components/NavBarButtons.tsx deleted file mode 100644 index 56c85598a106..000000000000 --- a/autogpt_platform/frontend/src/components/NavBarButtons.tsx +++ /dev/null @@ -1,47 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { BsBoxes } from "react-icons/bs"; -import { LuLaptop } from "react-icons/lu"; -import { LuShoppingCart } from "react-icons/lu"; -import { cn } from "@/lib/utils"; -import { usePathname } from "next/navigation"; - -export function NavBarButtons({ className }: { className?: string }) { - "use client"; - - const pathname = usePathname(); - const buttons = [ - { - href: "/marketplace", - text: "Marketplace", - icon: , - }, - { - href: "/", - text: "Monitor", - icon: , - }, - { - href: "/build", - text: "Build", - icon: , - }, - ]; - - const activeButton = buttons.find((button) => button.href === pathname); - - return buttons.map((button) => ( - - {button.icon} {button.text} - - )); -} diff --git a/autogpt_platform/frontend/src/components/marketplace/AgentDetailContent.tsx b/autogpt_platform/frontend/src/components/marketplace/AgentDetailContent.tsx index 2a44456dca2a..ff4f398c98f7 100644 --- a/autogpt_platform/frontend/src/components/marketplace/AgentDetailContent.tsx +++ b/autogpt_platform/frontend/src/components/marketplace/AgentDetailContent.tsx @@ -1,81 +1,44 @@ "use client"; - -import { useState } from "react"; import Link from "next/link"; -import { - ArrowLeft, - Download, - Calendar, - Tag, - ChevronDown, - ChevronUp, -} from "lucide-react"; +import { ArrowLeft, Download, Calendar, Tag } from "lucide-react"; import { Button } from "@/components/ui/button"; import { AgentDetailResponse, InstallationLocation, } from "@/lib/marketplace-api"; -import dynamic from "next/dynamic"; -import { Node, Edge } from "@xyflow/react"; import MarketplaceAPI from "@/lib/marketplace-api"; import AutoGPTServerAPI, { GraphCreatable } from "@/lib/autogpt-server-api"; - -const ReactFlow = dynamic( - () => import("@xyflow/react").then((mod) => mod.ReactFlow), - { ssr: false }, -); -const Controls = dynamic( - () => import("@xyflow/react").then((mod) => mod.Controls), - { ssr: false }, -); -const Background = dynamic( - () => import("@xyflow/react").then((mod) => mod.Background), - { ssr: false }, -); - import "@xyflow/react/dist/style.css"; -import { beautifyString } from "@/lib/utils"; import { makeAnalyticsEvent } from "./actions"; -function convertGraphToReactFlow(graph: any): { nodes: Node[]; edges: Edge[] } { - const nodes: Node[] = graph.nodes.map((node: any) => { - let label = node.block_id || "Unknown"; - try { - label = beautifyString(label); - } catch (error) { - console.error("Error beautifying node label:", error); - } +async function downloadAgent(id: string): Promise { + const api = new MarketplaceAPI(); + try { + const file = await api.downloadAgentFile(id); + console.debug(`Agent file downloaded:`, file); - return { - id: node.id, - position: node.metadata.position || { x: 0, y: 0 }, - data: { - label, - blockId: node.block_id, - inputDefault: node.input_default || {}, - ...node, // Include all other node data - }, - type: "custom", - }; - }); + // Create a Blob from the file content + const blob = new Blob([file], { type: "application/json" }); + + // Create a temporary URL for the Blob + const url = window.URL.createObjectURL(blob); - const edges: Edge[] = graph.links.map((link: any) => ({ - id: `${link.source_id}-${link.sink_id}`, - source: link.source_id, - target: link.sink_id, - sourceHandle: link.source_name, - targetHandle: link.sink_name, - type: "custom", - data: { - sourceId: link.source_id, - targetId: link.sink_id, - sourceName: link.source_name, - targetName: link.sink_name, - isStatic: link.is_static, - }, - })); + // Create a temporary anchor element + const a = document.createElement("a"); + a.href = url; + a.download = `agent_${id}.json`; // Set the filename - return { nodes, edges }; + // Append the anchor to the body, click it, and remove it + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + + // Revoke the temporary URL + window.URL.revokeObjectURL(url); + } catch (error) { + console.error(`Error downloading agent:`, error); + throw error; + } } async function installGraph(id: string): Promise { @@ -84,12 +47,12 @@ async function installGraph(id: string): Promise { "http://localhost:8015/api/v1/market"; const api = new MarketplaceAPI(apiUrl); - const serverAPIUrl = process.env.AGPT_SERVER_API_URL; + const serverAPIUrl = process.env.NEXT_PUBLIC_AGPT_SERVER_API_URL; const serverAPI = new AutoGPTServerAPI(serverAPIUrl); try { - console.log(`Installing agent with id: ${id}`); + console.debug(`Installing agent with id: ${id}`); let agent = await api.downloadAgent(id); - console.log(`Agent downloaded:`, agent); + console.debug(`Agent downloaded:`, agent); const data: GraphCreatable = { id: agent.id, version: agent.version, @@ -109,7 +72,7 @@ async function installGraph(id: string): Promise { installation_location: InstallationLocation.CLOUD, }, }); - console.log(`Agent installed successfully`, result); + console.debug(`Agent installed successfully`, result); } catch (error) { console.error(`Error installing agent:`, error); throw error; @@ -117,9 +80,6 @@ async function installGraph(id: string): Promise { } function AgentDetailContent({ agent }: { agent: AgentDetailResponse }) { - const [isGraphExpanded, setIsGraphExpanded] = useState(false); - const { nodes, edges } = convertGraphToReactFlow(agent.graph); - return (
@@ -130,13 +90,22 @@ function AgentDetailContent({ agent }: { agent: AgentDetailResponse }) { Back to Marketplace - +
+ + +
diff --git a/autogpt_platform/frontend/src/components/CreditButton.tsx b/autogpt_platform/frontend/src/components/nav/CreditButton.tsx similarity index 100% rename from autogpt_platform/frontend/src/components/CreditButton.tsx rename to autogpt_platform/frontend/src/components/nav/CreditButton.tsx diff --git a/autogpt_platform/frontend/src/components/nav/MarketPopup.tsx b/autogpt_platform/frontend/src/components/nav/MarketPopup.tsx new file mode 100644 index 000000000000..bdb5d1bee026 --- /dev/null +++ b/autogpt_platform/frontend/src/components/nav/MarketPopup.tsx @@ -0,0 +1,27 @@ +import { ButtonHTMLAttributes } from "react"; +import React from "react"; + +interface MarketPopupProps extends ButtonHTMLAttributes { + marketplaceUrl?: string; +} + +export default function MarketPopup({ + className = "", + marketplaceUrl = "http://platform.agpt.co/marketplace", + children, + ...props +}: MarketPopupProps) { + const openMarketplacePopup = () => { + window.open( + marketplaceUrl, + "popupWindow", + "width=600,height=400,toolbar=no,menubar=no,scrollbars=no", + ); + }; + + return ( + + ); +} diff --git a/autogpt_platform/frontend/src/components/nav/NavBarButtons.tsx b/autogpt_platform/frontend/src/components/nav/NavBarButtons.tsx new file mode 100644 index 000000000000..36115e0e6c12 --- /dev/null +++ b/autogpt_platform/frontend/src/components/nav/NavBarButtons.tsx @@ -0,0 +1,74 @@ +"use client"; + +import React from "react"; +import Link from "next/link"; +import { BsBoxes } from "react-icons/bs"; +import { LuLaptop, LuShoppingCart } from "react-icons/lu"; +import { BehaveAs, cn } from "@/lib/utils"; +import { usePathname } from "next/navigation"; +import { getBehaveAs } from "@/lib/utils"; +import MarketPopup from "./MarketPopup"; + +export function NavBarButtons({ className }: { className?: string }) { + const pathname = usePathname(); + const buttons = [ + { + href: "/", + text: "Monitor", + icon: , + }, + { + href: "/build", + text: "Build", + icon: , + }, + ]; + + const isCloud = getBehaveAs() === BehaveAs.CLOUD; + + return ( + <> + {buttons.map((button) => { + const isActive = button.href === pathname; + return ( + + {button.icon} {button.text} + + ); + })} + {isCloud ? ( + + Marketplace + + ) : ( + + Marketplace + + )} + + ); +} diff --git a/autogpt_platform/frontend/src/lib/utils.ts b/autogpt_platform/frontend/src/lib/utils.ts index 8852dc4f42a1..4c976e610ffb 100644 --- a/autogpt_platform/frontend/src/lib/utils.ts +++ b/autogpt_platform/frontend/src/lib/utils.ts @@ -203,3 +203,14 @@ export function filterBlocksByType( ): T[] { return blocks.filter(predicate); } + +export enum BehaveAs { + CLOUD = "CLOUD", + LOCAL = "LOCAL", +} + +export function getBehaveAs(): BehaveAs { + return process.env.NEXT_PUBLIC_BEHAVE_AS === "CLOUD" + ? BehaveAs.CLOUD + : BehaveAs.LOCAL; +} diff --git a/autogpt_platform/frontend/yarn.lock b/autogpt_platform/frontend/yarn.lock index ce8fea9970f2..b66d057f2b79 100644 --- a/autogpt_platform/frontend/yarn.lock +++ b/autogpt_platform/frontend/yarn.lock @@ -28,7 +28,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz" integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== -"@babel/core@^7.0.0", "@babel/core@^7.18.5": +"@babel/core@^7.18.5": version "7.25.2" resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz" integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== @@ -288,20 +288,12 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15", "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -326,6 +318,46 @@ resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz" integrity sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg== +"@next/swc-darwin-x64@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz#1d4821d54bb01dacc6a6c32408f8468a4f4af269" + integrity sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog== + +"@next/swc-linux-arm64-gnu@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz#79d9af8d3408df9990c8911889eca1ca6a308f19" + integrity sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg== + +"@next/swc-linux-arm64-musl@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz#b13180645865b120591db2f1e831743ebc02ab36" + integrity sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg== + +"@next/swc-linux-x64-gnu@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz#8cb8480dfeee512648e4e08c2095aac0461b876f" + integrity sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA== + +"@next/swc-linux-x64-musl@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz#df5ca922fa1e1ee81b15a06a2d3d3ace0efd2bd7" + integrity sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg== + +"@next/swc-win32-arm64-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz#8a7db6e71f526212587975f743b28e4d1cb829d1" + integrity sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ== + +"@next/swc-win32-ia32-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz#6aa664f36f2d70c5ae6ffcbbc56784d33f24522d" + integrity sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw== + +"@next/swc-win32-x64-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz#5a920eea82a58affa6146192586716cec6c87fed" + integrity sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw== + "@next/third-parties@^14.2.5": version "14.2.6" resolved "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.6.tgz" @@ -341,7 +373,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -368,7 +400,7 @@ dependencies: "@opentelemetry/api" "^1.0.0" -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.1.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.7.0", "@opentelemetry/api@^1.8", "@opentelemetry/api@^1.9.0", "@opentelemetry/api@>=1.0.0 <1.10.0", "@opentelemetry/api@>=1.3.0 <1.10.0": +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.8", "@opentelemetry/api@^1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== @@ -378,7 +410,7 @@ resolved "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz" integrity sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg== -"@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.8.0", "@opentelemetry/core@1.26.0": +"@opentelemetry/core@1.26.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.8.0": version "1.26.0" resolved "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz" integrity sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ== @@ -514,23 +546,23 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-mysql@0.41.0": +"@opentelemetry/instrumentation-mysql2@0.41.0": version "0.41.0" - resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz" - integrity sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw== + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz" + integrity sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g== dependencies: "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" - "@types/mysql" "2.15.26" + "@opentelemetry/sql-common" "^0.40.1" -"@opentelemetry/instrumentation-mysql2@0.41.0": +"@opentelemetry/instrumentation-mysql@0.41.0": version "0.41.0" - resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz" - integrity sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g== + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz" + integrity sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw== dependencies: "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" - "@opentelemetry/sql-common" "^0.40.1" + "@types/mysql" "2.15.26" "@opentelemetry/instrumentation-nestjs-core@0.40.0": version "0.40.0" @@ -568,25 +600,25 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.53.0" -"@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0": - version "0.52.1" - resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz" - integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== +"@opentelemetry/instrumentation@0.53.0", "@opentelemetry/instrumentation@^0.53.0": + version "0.53.0" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz" + integrity sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A== dependencies: - "@opentelemetry/api-logs" "0.52.1" - "@types/shimmer" "^1.0.2" + "@opentelemetry/api-logs" "0.53.0" + "@types/shimmer" "^1.2.0" import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" semver "^7.5.2" shimmer "^1.2.1" -"@opentelemetry/instrumentation@^0.53.0", "@opentelemetry/instrumentation@0.53.0": - version "0.53.0" - resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz" - integrity sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A== +"@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0": + version "0.52.1" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== dependencies: - "@opentelemetry/api-logs" "0.53.0" - "@types/shimmer" "^1.2.0" + "@opentelemetry/api-logs" "0.52.1" + "@types/shimmer" "^1.0.2" import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" semver "^7.5.2" @@ -597,7 +629,7 @@ resolved "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@^1.26.0", "@opentelemetry/resources@1.26.0": +"@opentelemetry/resources@1.26.0", "@opentelemetry/resources@^1.26.0": version "1.26.0" resolved "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz" integrity sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw== @@ -622,7 +654,7 @@ "@opentelemetry/resources" "1.26.0" "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@1.27.0": +"@opentelemetry/semantic-conventions@1.27.0", "@opentelemetry/semantic-conventions@^1.27.0": version "1.27.0" resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz" integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== @@ -639,7 +671,7 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@playwright/test@^1.41.2", "@playwright/test@^1.47.1": +"@playwright/test@^1.47.1": version "1.47.1" resolved "https://registry.npmjs.org/@playwright/test/-/test-1.47.1.tgz" integrity sha512-dbWpcNQZ5nj16m+A5UNScYx7HX5trIy7g4phrcitn+Nk83S32EBX/CLU4hiF4RGKX/yRc93AAqtfaXB7JWBd4Q== @@ -751,26 +783,6 @@ resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz" integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== -"@radix-ui/react-dialog@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz" - integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== - dependencies: - "@radix-ui/primitive" "1.1.0" - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" - "@radix-ui/react-focus-scope" "1.1.0" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-slot" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" - "@radix-ui/react-dialog@1.0.5": version "1.0.5" resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz" @@ -792,6 +804,26 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.5" +"@radix-ui/react-dialog@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz" + integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.0" + "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-portal" "1.1.1" + "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.7" + "@radix-ui/react-direction@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz" @@ -1064,13 +1096,6 @@ dependencies: "@radix-ui/react-primitive" "2.0.0" -"@radix-ui/react-slot@^1.1.0", "@radix-ui/react-slot@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz" - integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== - dependencies: - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-slot@1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz" @@ -1079,6 +1104,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.1" +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz" + integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-switch@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.0.tgz" @@ -1234,6 +1266,11 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-linux-x64-gnu@^4.9.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz#a135b040b21582e91cfed2267ccfc7d589e1dbc6" + integrity sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA== + "@rushstack/eslint-patch@^1.3.3": version "1.10.4" resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz" @@ -1319,6 +1356,36 @@ resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz" integrity sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww== +"@sentry/cli-linux-arm64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz#ff449d7e7e715166257998c02cf635ca02acbadd" + integrity sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw== + +"@sentry/cli-linux-arm@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz#1ae5d335a1b4cd217a34c2bd6c6f5e0670136eb3" + integrity sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A== + +"@sentry/cli-linux-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz#112b9e26357e918cbbba918114ec8cdab07cdf60" + integrity sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA== + +"@sentry/cli-linux-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz#c3e5bdb0c9a4bb44c83927c62a3cd7e006709bf7" + integrity sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw== + +"@sentry/cli-win32-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz#819573320e885e1dbf59b0a01d3bd370c84c1708" + integrity sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA== + +"@sentry/cli-win32-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz#80779b4bffb4e2e32944eae72c60e6f40151b4dc" + integrity sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g== + "@sentry/cli@^2.33.1": version "2.36.1" resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.36.1.tgz" @@ -1472,7 +1539,7 @@ dependencies: "@supabase/node-fetch" "^2.6.14" -"@supabase/node-fetch@^2.6.14", "@supabase/node-fetch@2.6.15": +"@supabase/node-fetch@2.6.15", "@supabase/node-fetch@^2.6.14": version "2.6.15" resolved "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz" integrity sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== @@ -1512,7 +1579,7 @@ dependencies: "@supabase/node-fetch" "^2.6.14" -"@supabase/supabase-js@^2.43.4", "@supabase/supabase-js@^2.45.0": +"@supabase/supabase-js@^2.45.0": version "2.45.1" resolved "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.45.1.tgz" integrity sha512-/PVe3lXmalazD8BGMIoI7+ttvT1mLXy13lNcoAPtjP1TDDY83g8csZbVR6l+0/RZtvJxl3LGXfTJT4bjWgC5Nw== @@ -1648,7 +1715,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -1660,11 +1727,6 @@ dependencies: "@types/unist" "*" -"@types/json-schema@^7.0.8": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" @@ -1689,13 +1751,20 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^20": +"@types/node@*": version "20.16.1" resolved "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz" integrity sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ== dependencies: undici-types "~6.19.2" +"@types/node@^22.7.3": + version "22.7.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.3.tgz#7ddf1ddf13078692b4cfadb835852b2a718ee1ef" + integrity sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA== + dependencies: + undici-types "~6.19.2" + "@types/pg-pool@2.0.6": version "2.0.6" resolved "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz" @@ -1722,7 +1791,7 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react-dom@*", "@types/react-dom@^18": +"@types/react-dom@^18": version "18.3.0" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== @@ -1736,7 +1805,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^18", "@types/react@>=16.8", "@types/react@>=18": +"@types/react@*", "@types/react@^18": version "18.3.4" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz" integrity sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw== @@ -1817,137 +1886,6 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - "@xyflow/react@^12.1.0": version "12.1.1" resolved "https://registry.npmjs.org/@xyflow/react/-/react-12.1.1.tgz" @@ -1980,7 +1918,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -1992,11 +1930,6 @@ agent-base@6: dependencies: debug "4" -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -2007,16 +1940,6 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - ajv@^8.17.1: version "8.17.1" resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" @@ -2248,7 +2171,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.21.10, browserslist@^4.23.1, "browserslist@>= 4.21.0": +browserslist@^4.23.1: version "4.23.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz" integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== @@ -2258,11 +2181,6 @@ browserslist@^4.21.10, browserslist@^4.23.1, "browserslist@>= 4.21.0": node-releases "^2.0.18" update-browserslist-db "^1.1.0" -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - busboy@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" @@ -2301,6 +2219,14 @@ ccount@^2.0.0: resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" @@ -2318,14 +2244,6 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - character-entities-html4@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" @@ -2361,11 +2279,6 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - cjs-module-lexer@^1.2.2: version "1.4.1" resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz" @@ -2388,16 +2301,16 @@ client-only@0.0.1: resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -clsx@^2.0.0, clsx@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" - integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== - clsx@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz" integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== +clsx@^2.0.0, clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + cmdk@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz" @@ -2420,26 +2333,21 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + comma-separated-tokens@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^4.0.0: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" @@ -2484,7 +2392,7 @@ csstype@^3.0.2: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": +"d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -2501,7 +2409,7 @@ d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -d3-drag@^3.0.0, "d3-drag@2 - 3": +"d3-drag@2 - 3", d3-drag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== @@ -2509,7 +2417,7 @@ d3-drag@^3.0.0, "d3-drag@2 - 3": d3-dispatch "1 - 3" d3-selection "3" -d3-ease@^3.0.1, "d3-ease@1 - 3": +"d3-ease@1 - 3", d3-ease@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== @@ -2519,7 +2427,7 @@ d3-ease@^3.0.1, "d3-ease@1 - 3": resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== -d3-interpolate@^3.0.1, "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3": +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -2542,7 +2450,7 @@ d3-scale@^4.0.2: d3-time "2.1.1 - 3" d3-time-format "2 - 4" -d3-selection@^3.0.0, "d3-selection@2 - 3", d3-selection@3: +"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== @@ -2561,14 +2469,14 @@ d3-shape@^3.1.0: dependencies: d3-time "1 - 3" -d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -d3-timer@^3.0.1, "d3-timer@1 - 3": +"d3-timer@1 - 3", d3-timer@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== @@ -2627,11 +2535,18 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -"date-fns@^2.28.0 || ^3.0.0", date-fns@^3.6.0: +date-fns@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz" integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: + version "4.3.7" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -2639,13 +2554,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@4: - version "4.3.7" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== - dependencies: - ms "^2.1.3" - decimal.js-light@^2.4.1: version "2.5.1" resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" @@ -2791,7 +2699,7 @@ emoji-regex@^9.2.2: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -enhanced-resolve@^5.12.0, enhanced-resolve@^5.17.1: +enhanced-resolve@^5.12.0: version "5.17.1" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -2898,11 +2806,6 @@ es-iterator-helpers@^1.0.19: iterator.prototype "^1.1.2" safe-array-concat "^1.1.2" -es-module-lexer@^1.2.1: - version "1.5.4" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz" - integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== - es-object-atoms@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz" @@ -2994,7 +2897,7 @@ eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: dependencies: debug "^3.2.7" -eslint-plugin-import@*, eslint-plugin-import@^2.28.1: +eslint-plugin-import@^2.28.1: version "2.29.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -3076,20 +2979,12 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.23.0 || ^8.0.0", eslint@^8, eslint@^8.56.0: +eslint@^8: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -3156,11 +3051,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" @@ -3186,11 +3076,6 @@ eventemitter3@^4.0.1: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - exenv@^1.2.0: version "1.2.2" resolved "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz" @@ -3300,7 +3185,7 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2, fsevents@2.3.2: +fsevents@2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -3362,7 +3247,7 @@ get-tsconfig@^4.5.0: dependencies: resolve-pkg-maps "^1.0.0" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -3376,17 +3261,16 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== +glob@10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" glob@^10.3.10, glob@^10.4.1: version "10.4.5" @@ -3422,17 +3306,6 @@ glob@^9.3.2: minipass "^4.2.4" path-scurry "^1.6.1" -glob@10.3.10: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -3472,7 +3345,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4: +graceful-fs@^4.2.11, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3907,15 +3780,6 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jiti@^1.21.0: version "1.21.6" resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" @@ -3943,11 +3807,6 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" @@ -4027,11 +3886,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -4078,13 +3932,6 @@ lucide-react@^0.407.0: resolved "https://registry.npmjs.org/lucide-react/-/lucide-react-0.407.0.tgz" integrity sha512-+dRIu9Sry+E8wPF9+sY5eKld2omrU4X5IKXxrgqBt+o11IIHVU0QOfNoVWFuj0ZRDrxr4Wci26o2mKZqLGE0lA== -magic-string@^0.30.3: - version "0.30.11" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz" - integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - magic-string@0.30.8: version "0.30.8" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" @@ -4092,6 +3939,13 @@ magic-string@0.30.8: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.3: + version "0.30.11" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz" + integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + mdast-util-from-markdown@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz" @@ -4197,11 +4051,6 @@ mdast-util-to-string@^4.0.0: dependencies: "@types/mdast" "^4.0.0" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" @@ -4409,17 +4258,12 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.27: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - mime-db "1.52.0" + brace-expansion "^2.0.1" minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" @@ -4435,27 +4279,13 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: +minimatch@^9.0.1, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" @@ -4505,17 +4335,12 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - next-themes@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz" integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== -"next@^13.0.0 || ^14.0.0", "next@^13.2.0 || ^14.0 || ^15.0.0-rc.0", next@^14.2.13: +next@^14.2.13: version "14.2.13" resolved "https://registry.npmjs.org/next/-/next-14.2.13.tgz" integrity sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg== @@ -4826,15 +4651,6 @@ postcss-value-parser@^4.0.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8, postcss@^8.0.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@>=8.0.9: - version "8.4.41" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" - postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" @@ -4844,6 +4660,15 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8, postcss@^8.4.23: + version "8.4.41" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" @@ -4876,7 +4701,7 @@ prettier-plugin-tailwindcss@^0.6.6: resolved "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz" integrity sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng== -prettier@^3.0, prettier@^3.3.3: +prettier@^3.3.3: version "3.3.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== @@ -4915,19 +4740,12 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - react-day-picker@^8.10.1: version "8.10.1" resolved "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz" integrity sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA== -"react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8 || ^17 || ^18", "react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18, react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=17: +react-dom@^18: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -4935,7 +4753,7 @@ react-day-picker@^8.10.1: loose-envify "^1.1.0" scheduler "^0.23.2" -react-hook-form@^7.0.0, react-hook-form@^7.52.1: +react-hook-form@^7.52.1: version "7.52.2" resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.2.tgz" integrity sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A== @@ -5046,7 +4864,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@*, "react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.14.0 || 17.x || 18.x || 19.x", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.x || ^17.x || ^18.x", react@^18, react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=17, react@>=18: +react@^18: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -5161,7 +4979,7 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8, resolve@1.22.8: +resolve@1.22.8, resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: version "1.22.8" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -5191,7 +5009,7 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^2.68.0||^3.0.0||^4.0.0, rollup@3.29.5: +rollup@3.29.5: version "3.29.5" resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz" integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== @@ -5215,11 +5033,6 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -5236,15 +5049,6 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" @@ -5255,13 +5059,6 @@ semver@^7.5.2, semver@^7.5.4: resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -5335,19 +5132,6 @@ source-map-js@^1.0.2, source-map-js@^1.2.0: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - space-separated-tokens@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" @@ -5541,13 +5325,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" @@ -5563,7 +5340,7 @@ tailwindcss-animate@^1.0.7: resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz" integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== -tailwindcss@^3.4.1, "tailwindcss@>=3.0.0 || insiders": +tailwindcss@^3.4.1: version "3.4.10" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz" integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w== @@ -5591,32 +5368,11 @@ tailwindcss@^3.4.1, "tailwindcss@>=3.0.0 || insiders": resolve "^1.22.2" sucrase "^3.32.0" -tapable@^2.1.1, tapable@^2.2.0: +tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.26.0: - version "5.34.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.34.0.tgz" - integrity sha512-y5NUX+U9HhVsK/zihZwoq4r9dICLyV2jXGOriDAVOeKhq3LKVjgJbGO90FisozXLlJfvjHqgckGmJFBb9KYoWQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" @@ -5759,7 +5515,7 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^5, typescript@^5.0.0, typescript@>=3.3.1, typescript@>=4.2.0: +typescript@^5: version "5.5.4" resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== @@ -5942,14 +5698,6 @@ warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" @@ -5965,35 +5713,6 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -webpack@^5.1.0, webpack@>=4.40.0, webpack@5.94.0: - version "5.94.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz" - integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== - dependencies: - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" diff --git a/autogpt_platform/infra/helm/autogpt-builder/values.dev.yaml b/autogpt_platform/infra/helm/autogpt-builder/values.dev.yaml index 696d79f0e77e..9c81de1db71d 100644 --- a/autogpt_platform/infra/helm/autogpt-builder/values.dev.yaml +++ b/autogpt_platform/infra/helm/autogpt-builder/values.dev.yaml @@ -61,4 +61,5 @@ env: GOOGLE_CLIENT_ID: "" GOOGLE_CLIENT_SECRET: "" NEXT_PUBLIC_SUPABASE_URL: "" - NEXT_PUBLIC_SUPABASE_ANON_KEY: "" \ No newline at end of file + NEXT_PUBLIC_SUPABASE_ANON_KEY: "" + NEXT_PUBLIC_BEHAVE_AS: "CLOUD" \ No newline at end of file diff --git a/autogpt_platform/market/.env.example b/autogpt_platform/market/.env.example index 21ade826ffdc..afaed399effc 100644 --- a/autogpt_platform/market/.env.example +++ b/autogpt_platform/market/.env.example @@ -6,4 +6,5 @@ DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:${DB_PORT}/${DB_NAME} SENTRY_DSN=https://11d0640fef35640e0eb9f022eb7d7626@o4505260022104064.ingest.us.sentry.io/4507890252447744 ENABLE_AUTH=true -SUPABASE_JWT_SECRET=our-super-secret-jwt-token-with-at-least-32-characters-long \ No newline at end of file +SUPABASE_JWT_SECRET=our-super-secret-jwt-token-with-at-least-32-characters-long +BACKEND_CORS_ALLOW_ORIGINS="http://localhost:3000,http://127.0.0.1:3000" \ No newline at end of file From 8803740d4747872a52cedfa8bc8e2269deeaca3b Mon Sep 17 00:00:00 2001 From: Reinier van der Leer Date: Tue, 1 Oct 2024 16:08:42 +0200 Subject: [PATCH 3/4] refactor(blocks): Reassign non-random IDs (#8229) - refactor(blocks): Assign new IDs to 13 blocks - Create DB migration to update block IDs in existing DB entities - feat(frontend): Add `updateBlockIDs` "middleware" to `AgentImportForm` loader in front end --- .../backend/backend/blocks/basic.py | 4 +- .../backend/backend/blocks/discord.py | 4 +- .../backend/backend/blocks/email_block.py | 2 +- .../backend/backend/blocks/iteration.py | 2 +- .../backend/backend/blocks/llm.py | 4 +- .../backend/backend/blocks/rss.py | 2 +- .../backend/backend/blocks/search.py | 6 +-- .../backend/backend/blocks/time_blocks.py | 2 +- .../Discord Bot Chat To LLM_v5.json | 4 +- .../Discord Chatbot with History_v145.json | 6 +-- .../Discord Search Bot_v17.json | 6 +-- .../graph_templates/Medium Blogger_v28.json | 6 +-- .../migration.sql | 18 +++++++++ .../src/components/agent-import-form.tsx | 39 +++++++++++++++++++ 14 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 autogpt_platform/backend/migrations/20240930151406_reassign_block_ids/migration.sql diff --git a/autogpt_platform/backend/backend/blocks/basic.py b/autogpt_platform/backend/backend/blocks/basic.py index b86d8d872b6a..095c3b0e92b8 100644 --- a/autogpt_platform/backend/backend/blocks/basic.py +++ b/autogpt_platform/backend/backend/blocks/basic.py @@ -88,7 +88,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="b2g2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", + id="0e50422c-6dee-4145-83d6-3a5a392f65de", description="Lookup the given key in the input dictionary/object/list and return the value.", input_schema=FindInDictionaryBlock.Input, output_schema=FindInDictionaryBlock.Output, @@ -429,7 +429,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="31d1064e-7446-4693-o7d4-65e5ca9110d1", + id="cc10ff7b-7753-4ff2-9af6-9399b1a7eddc", description="This block is used to display a sticky note with the given text.", categories={BlockCategory.BASIC}, input_schema=NoteBlock.Input, diff --git a/autogpt_platform/backend/backend/blocks/discord.py b/autogpt_platform/backend/backend/blocks/discord.py index 8565684a0796..cd350a619916 100644 --- a/autogpt_platform/backend/backend/blocks/discord.py +++ b/autogpt_platform/backend/backend/blocks/discord.py @@ -28,7 +28,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="d3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t", # Unique ID for the node + id="df06086a-d5ac-4abb-9996-2ad0acb2eff7", input_schema=ReadDiscordMessagesBlock.Input, # Assign input schema output_schema=ReadDiscordMessagesBlock.Output, # Assign output schema description="Reads messages from a Discord channel using a bot token.", @@ -146,7 +146,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6", # Unique ID for the node + id="d0822ab5-9f8a-44a3-8971-531dd0178b6b", input_schema=SendDiscordMessageBlock.Input, # Assign input schema output_schema=SendDiscordMessageBlock.Output, # Assign output schema description="Sends a message to a Discord channel using a bot token.", diff --git a/autogpt_platform/backend/backend/blocks/email_block.py b/autogpt_platform/backend/backend/blocks/email_block.py index edfb2f391b95..96e69e1ffca1 100644 --- a/autogpt_platform/backend/backend/blocks/email_block.py +++ b/autogpt_platform/backend/backend/blocks/email_block.py @@ -43,7 +43,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="a1234567-89ab-cdef-0123-456789abcdef", + id="4335878a-394e-4e67-adf2-919877ff49ae", description="This block sends an email using the provided SMTP credentials.", categories={BlockCategory.OUTPUT}, input_schema=SendEmailBlock.Input, diff --git a/autogpt_platform/backend/backend/blocks/iteration.py b/autogpt_platform/backend/backend/blocks/iteration.py index 05ca5f5ed7cb..247a92d3c757 100644 --- a/autogpt_platform/backend/backend/blocks/iteration.py +++ b/autogpt_platform/backend/backend/blocks/iteration.py @@ -19,7 +19,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="f8e7d6c5-b4a3-2c1d-0e9f-8g7h6i5j4k3l", + id="f66a3543-28d3-4ab5-8945-9b336371e2ce", input_schema=StepThroughItemsBlock.Input, output_schema=StepThroughItemsBlock.Output, categories={BlockCategory.LOGIC}, diff --git a/autogpt_platform/backend/backend/blocks/llm.py b/autogpt_platform/backend/backend/blocks/llm.py index 868244cd8e7c..19d2e9621c40 100644 --- a/autogpt_platform/backend/backend/blocks/llm.py +++ b/autogpt_platform/backend/backend/blocks/llm.py @@ -392,7 +392,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="c3d4e5f6-7g8h-9i0j-1k2l-m3n4o5p6q7r8", + id="a0a69be1-4528-491c-a85a-a4ab6873e3f0", description="Utilize a Large Language Model (LLM) to summarize a long text.", categories={BlockCategory.AI, BlockCategory.TEXT}, input_schema=AITextSummarizerBlock.Input, @@ -535,7 +535,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="c3d4e5f6-g7h8-i9j0-k1l2-m3n4o5p6q7r8", + id="32a87eab-381e-4dd4-bdb8-4c47151be35a", description="Advanced LLM call that takes a list of messages and sends them to the language model.", categories={BlockCategory.AI}, input_schema=AIConversationBlock.Input, diff --git a/autogpt_platform/backend/backend/blocks/rss.py b/autogpt_platform/backend/backend/blocks/rss.py index 3dd570385b47..9a5a17ebeeda 100644 --- a/autogpt_platform/backend/backend/blocks/rss.py +++ b/autogpt_platform/backend/backend/blocks/rss.py @@ -43,7 +43,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="c6731acb-4105-4zp1-bc9b-03d0036h370g", + id="5ebe6768-8e5d-41e3-9134-1c7bd89a8d52", input_schema=ReadRSSFeedBlock.Input, output_schema=ReadRSSFeedBlock.Output, description="Reads RSS feed entries from a given URL.", diff --git a/autogpt_platform/backend/backend/blocks/search.py b/autogpt_platform/backend/backend/blocks/search.py index e51ff4013adb..f8fc783e56d7 100644 --- a/autogpt_platform/backend/backend/blocks/search.py +++ b/autogpt_platform/backend/backend/blocks/search.py @@ -25,7 +25,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="h5e7f8g9-1b2c-3d4e-5f6g-7h8i9j0k1l2m", + id="f5b0f5d0-1862-4d61-94be-3ad0fa772760", description="This block fetches the summary of a given topic from Wikipedia.", categories={BlockCategory.SEARCH}, input_schema=GetWikipediaSummaryBlock.Input, @@ -62,7 +62,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7", + id="87840993-2053-44b7-8da4-187ad4ee518c", description="This block searches the internet for the given search query.", categories={BlockCategory.SEARCH}, input_schema=SearchTheWebBlock.Input, @@ -109,7 +109,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", # Unique ID for the block + id="436c3984-57fd-4b85-8e9a-459b356883bd", description="This block scrapes the content from the given web URL.", categories={BlockCategory.SEARCH}, input_schema=ExtractWebsiteContentBlock.Input, diff --git a/autogpt_platform/backend/backend/blocks/time_blocks.py b/autogpt_platform/backend/backend/blocks/time_blocks.py index 338ee88a42f6..9e95d428b9cc 100644 --- a/autogpt_platform/backend/backend/blocks/time_blocks.py +++ b/autogpt_platform/backend/backend/blocks/time_blocks.py @@ -77,7 +77,7 @@ class Output(BlockSchema): def __init__(self): super().__init__( - id="b29c1b50-5d0e-4d9f-8f9d-1b0e6fcbf0h2", + id="716a67b3-6760-42e7-86dc-18645c6e00fc", description="This block outputs the current date and time.", categories={BlockCategory.TEXT}, input_schema=GetCurrentDateAndTimeBlock.Input, diff --git a/autogpt_platform/backend/graph_templates/Discord Bot Chat To LLM_v5.json b/autogpt_platform/backend/graph_templates/Discord Bot Chat To LLM_v5.json index b6ea9e62862d..34cdfa7ae0f1 100644 --- a/autogpt_platform/backend/graph_templates/Discord Bot Chat To LLM_v5.json +++ b/autogpt_platform/backend/graph_templates/Discord Bot Chat To LLM_v5.json @@ -8,7 +8,7 @@ "nodes": [ { "id": "b8138bca-7892-42c2-9594-a845d3483413", - "block_id": "d3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t", + "block_id": "df06086a-d5ac-4abb-9996-2ad0acb2eff7", "input_default": {}, "metadata": { "position": { @@ -59,7 +59,7 @@ }, { "id": "dda2d061-2ef9-4dc5-9433-918c8395a4ac", - "block_id": "h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6", + "block_id": "d0822ab5-9f8a-44a3-8971-531dd0178b6b", "input_default": {}, "metadata": { "position": { diff --git a/autogpt_platform/backend/graph_templates/Discord Chatbot with History_v145.json b/autogpt_platform/backend/graph_templates/Discord Chatbot with History_v145.json index da36ec00def6..0da2a8368414 100644 --- a/autogpt_platform/backend/graph_templates/Discord Chatbot with History_v145.json +++ b/autogpt_platform/backend/graph_templates/Discord Chatbot with History_v145.json @@ -110,7 +110,7 @@ }, { "id": "b45cfa51-5ead-4621-9f1c-f847dfea3e4c", - "block_id": "d3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t", + "block_id": "df06086a-d5ac-4abb-9996-2ad0acb2eff7", "input_default": {}, "metadata": { "position": { @@ -146,7 +146,7 @@ }, { "id": "8eedcf71-1146-4f54-b522-bf9b6e2d26b2", - "block_id": "h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6", + "block_id": "d0822ab5-9f8a-44a3-8971-531dd0178b6b", "input_default": {}, "metadata": { "position": { @@ -197,7 +197,7 @@ }, { "id": "a568daee-45d2-4429-bf33-cbe9e1261f7b", - "block_id": "c3d4e5f6-g7h8-i9j0-k1l2-m3n4o5p6q7r8", + "block_id": "32a87eab-381e-4dd4-bdb8-4c47151be35a", "input_default": { "model": "llama-3.1-70b-versatile", "max_tokens": 2000 diff --git a/autogpt_platform/backend/graph_templates/Discord Search Bot_v17.json b/autogpt_platform/backend/graph_templates/Discord Search Bot_v17.json index 7de268a970b5..366fcf7e62c3 100644 --- a/autogpt_platform/backend/graph_templates/Discord Search Bot_v17.json +++ b/autogpt_platform/backend/graph_templates/Discord Search Bot_v17.json @@ -8,7 +8,7 @@ "nodes": [ { "id": "60ba4aac-1751-4be7-8745-1bd32191d4a2", - "block_id": "d3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t", + "block_id": "df06086a-d5ac-4abb-9996-2ad0acb2eff7", "input_default": {}, "metadata": { "position": { @@ -45,7 +45,7 @@ }, { "id": "5658c4f7-8e67-4d30-93f2-157bdbd3ef87", - "block_id": "b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7", + "block_id": "87840993-2053-44b7-8da4-187ad4ee518c", "input_default": {}, "metadata": { "position": { @@ -118,7 +118,7 @@ }, { "id": "f3d62f22-d193-4f04-85d2-164200fca4c0", - "block_id": "h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6", + "block_id": "d0822ab5-9f8a-44a3-8971-531dd0178b6b", "input_default": {}, "metadata": { "position": { diff --git a/autogpt_platform/backend/graph_templates/Medium Blogger_v28.json b/autogpt_platform/backend/graph_templates/Medium Blogger_v28.json index 69040bcb1e39..2335f1684c77 100644 --- a/autogpt_platform/backend/graph_templates/Medium Blogger_v28.json +++ b/autogpt_platform/backend/graph_templates/Medium Blogger_v28.json @@ -8,7 +8,7 @@ "nodes": [ { "id": "382efac9-3def-4baf-b16a-d6d2512a5c8b", - "block_id": "b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7", + "block_id": "87840993-2053-44b7-8da4-187ad4ee518c", "input_default": { "query": "19th July 2024 Microsoft Blackout" }, @@ -44,7 +44,7 @@ }, { "id": "0cd8f670-8956-4942-ba28-aee732ec783f", - "block_id": "b2g2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", + "block_id": "0e50422c-6dee-4145-83d6-3a5a392f65de", "input_default": { "key": "TITLE" }, @@ -57,7 +57,7 @@ }, { "id": "4a15b6b9-036d-43d3-915a-7e931fbc6522", - "block_id": "b2g2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", + "block_id": "0e50422c-6dee-4145-83d6-3a5a392f65de", "input_default": { "key": "CONTENT" }, diff --git a/autogpt_platform/backend/migrations/20240930151406_reassign_block_ids/migration.sql b/autogpt_platform/backend/migrations/20240930151406_reassign_block_ids/migration.sql new file mode 100644 index 000000000000..c6f7ae6f3376 --- /dev/null +++ b/autogpt_platform/backend/migrations/20240930151406_reassign_block_ids/migration.sql @@ -0,0 +1,18 @@ +-- Update AgentBlock IDs: this should cascade to the AgentNode and UserBlockCredit tables +UPDATE "AgentBlock" +SET "id" = CASE + WHEN "id" = 'a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6' THEN '436c3984-57fd-4b85-8e9a-459b356883bd' + WHEN "id" = 'b2g2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6' THEN '0e50422c-6dee-4145-83d6-3a5a392f65de' + WHEN "id" = 'c3d4e5f6-7g8h-9i0j-1k2l-m3n4o5p6q7r8' THEN 'a0a69be1-4528-491c-a85a-a4ab6873e3f0' + WHEN "id" = 'c3d4e5f6-g7h8-i9j0-k1l2-m3n4o5p6q7r8' THEN '32a87eab-381e-4dd4-bdb8-4c47151be35a' + WHEN "id" = 'b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7' THEN '87840993-2053-44b7-8da4-187ad4ee518c' + WHEN "id" = 'h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6' THEN 'd0822ab5-9f8a-44a3-8971-531dd0178b6b' + WHEN "id" = 'd3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t' THEN 'df06086a-d5ac-4abb-9996-2ad0acb2eff7' + WHEN "id" = 'h5e7f8g9-1b2c-3d4e-5f6g-7h8i9j0k1l2m' THEN 'f5b0f5d0-1862-4d61-94be-3ad0fa772760' + WHEN "id" = 'a1234567-89ab-cdef-0123-456789abcdef' THEN '4335878a-394e-4e67-adf2-919877ff49ae' + WHEN "id" = 'f8e7d6c5-b4a3-2c1d-0e9f-8g7h6i5j4k3l' THEN 'f66a3543-28d3-4ab5-8945-9b336371e2ce' + WHEN "id" = 'b29c1b50-5d0e-4d9f-8f9d-1b0e6fcbf0h2' THEN '716a67b3-6760-42e7-86dc-18645c6e00fc' + WHEN "id" = '31d1064e-7446-4693-o7d4-65e5ca9110d1' THEN 'cc10ff7b-7753-4ff2-9af6-9399b1a7eddc' + WHEN "id" = 'c6731acb-4105-4zp1-bc9b-03d0036h370g' THEN '5ebe6768-8e5d-41e3-9134-1c7bd89a8d52' + ELSE "id" +END; diff --git a/autogpt_platform/frontend/src/components/agent-import-form.tsx b/autogpt_platform/frontend/src/components/agent-import-form.tsx index 4261ed635001..64ca5f8a31b5 100644 --- a/autogpt_platform/frontend/src/components/agent-import-form.tsx +++ b/autogpt_platform/frontend/src/components/agent-import-form.tsx @@ -33,6 +33,44 @@ const formSchema = z.object({ importAsTemplate: z.boolean(), }); +function updateBlockIDs(graph: Graph) { + // https://github.com/Significant-Gravitas/AutoGPT/issues/8223 + const updatedBlockIDMap: Record = { + "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6": + "436c3984-57fd-4b85-8e9a-459b356883bd", + "b2g2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6": + "0e50422c-6dee-4145-83d6-3a5a392f65de", + "c3d4e5f6-7g8h-9i0j-1k2l-m3n4o5p6q7r8": + "a0a69be1-4528-491c-a85a-a4ab6873e3f0", + "c3d4e5f6-g7h8-i9j0-k1l2-m3n4o5p6q7r8": + "32a87eab-381e-4dd4-bdb8-4c47151be35a", + "b2c3d4e5-6f7g-8h9i-0j1k-l2m3n4o5p6q7": + "87840993-2053-44b7-8da4-187ad4ee518c", + "h1i2j3k4-5l6m-7n8o-9p0q-r1s2t3u4v5w6": + "d0822ab5-9f8a-44a3-8971-531dd0178b6b", + "d3f4g5h6-1i2j-3k4l-5m6n-7o8p9q0r1s2t": + "df06086a-d5ac-4abb-9996-2ad0acb2eff7", + "h5e7f8g9-1b2c-3d4e-5f6g-7h8i9j0k1l2m": + "f5b0f5d0-1862-4d61-94be-3ad0fa772760", + "a1234567-89ab-cdef-0123-456789abcdef": + "4335878a-394e-4e67-adf2-919877ff49ae", + "f8e7d6c5-b4a3-2c1d-0e9f-8g7h6i5j4k3l": + "f66a3543-28d3-4ab5-8945-9b336371e2ce", + "b29c1b50-5d0e-4d9f-8f9d-1b0e6fcbf0h2": + "716a67b3-6760-42e7-86dc-18645c6e00fc", + "31d1064e-7446-4693-o7d4-65e5ca9110d1": + "cc10ff7b-7753-4ff2-9af6-9399b1a7eddc", + "c6731acb-4105-4zp1-bc9b-03d0036h370g": + "5ebe6768-8e5d-41e3-9134-1c7bd89a8d52", + }; + graph.nodes + .filter((node) => node.block_id in updatedBlockIDMap) + .forEach((node) => { + node.block_id = updatedBlockIDMap[node.block_id]; + }); + return graph; +} + export const AgentImportForm: React.FC< React.FormHTMLAttributes > = ({ className, ...props }) => { @@ -116,6 +154,7 @@ export const AgentImportForm: React.FC< ); } const agent = obj as Graph; + updateBlockIDs(agent); setAgentObject(agent); form.setValue("agentName", agent.name); form.setValue("agentDescription", agent.description); From f8928941938bf11267f3a8777292989e8e3cc013 Mon Sep 17 00:00:00 2001 From: Krzysztof Czerwinski <34861343+kcze@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:42:14 +0100 Subject: [PATCH 4/4] docs(server): Request to use UUID generators for new block ids (#8241) --- docs/content/server/new_blocks.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/content/server/new_blocks.md b/docs/content/server/new_blocks.md index 956d241ed7da..ae14f0bc387c 100644 --- a/docs/content/server/new_blocks.md +++ b/docs/content/server/new_blocks.md @@ -49,13 +49,15 @@ Follow these steps to create and test a new block: 4. **Implement the `__init__` method, including test data and mocks:** + !!! important + Use UUID generator (e.g. https://www.uuidgenerator.net/) for every new block `id` and *do not* make up your own. Alternatively, you can run this python code to generate an uuid: `print(__import__('uuid').uuid4())` + ```python def __init__(self): super().__init__( # Unique ID for the block, used across users for templates - # you can generate this with this python one liner - # print(__import__('uuid').uuid4()) - id="h5e7f8g9-1b2c-3d4e-5f6g-7h8i9j0k1l2m", + # If you are an AI leave it as is or change to "generate-proper-uuid" + id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", input_schema=WikipediaSummaryBlock.Input, # Assign input schema output_schema=WikipediaSummaryBlock.Output, # Assign output schema