From f3b616572ba50f445d992bbb1ecac393657593f5 Mon Sep 17 00:00:00 2001 From: starmorph Date: Mon, 19 May 2025 16:08:01 -0700 Subject: [PATCH] CR: multimodal preview component, drop pdf-parse dep --- package.json | 1 - pnpm-lock.yaml | 1119 +--------------------- src/components/thread/index.tsx | 61 +- src/components/thread/messages/human.tsx | 92 +- src/components/ui/MultimodalPreview.tsx | 104 ++ 5 files changed, 197 insertions(+), 1180 deletions(-) create mode 100644 src/components/ui/MultimodalPreview.tsx diff --git a/package.json b/package.json index f777d69..64910dd 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "lucide-react": "^0.476.0", "next-themes": "^0.4.4", "nuqs": "^2.4.1", - "pdfjs-dist": "^5.2.133", "react": "^19.0.0", "react-dom": "^19.0.0", "react-markdown": "^10.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d160665..030fd06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: dependencies: - '@langchain/community': - specifier: ^0.3.42 - version: 0.3.43(@browserbasehq/sdk@2.6.0)(@browserbasehq/stagehand@1.14.0(@playwright/test@1.52.0)(deepmerge@4.3.1)(dotenv@16.5.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(zod@3.24.4))(@ibm-cloud/watsonx-ai@1.6.5)(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(axios@1.9.0)(ibm-cloud-sdk-core@5.3.2)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(playwright@1.52.0)(ws@8.18.2) '@langchain/core': specifier: ^0.3.44 version: 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) @@ -77,9 +74,6 @@ importers: nuqs: specifier: ^2.4.1 version: 2.4.3(next@15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) - pdfjs-dist: - specifier: ^5.2.133 - version: 5.2.133 react: specifier: ^19.0.0 version: 19.1.0 @@ -203,25 +197,10 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@anthropic-ai/sdk@0.27.3': - resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} - '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@browserbasehq/sdk@2.6.0': - resolution: {integrity: sha512-83iXP5D7xMm8Wyn66TUaUrgoByCmAJuoMoZQI3sGg3JAiMlTfnCIMqyVBoNSaItaPIkaCnrsj6LiusmXV2X9YA==} - - '@browserbasehq/stagehand@1.14.0': - resolution: {integrity: sha512-Hi/EzgMFWz+FKyepxHTrqfTPjpsuBS4zRy3e9sbMpBgLPv+9c0R+YZEvS7Bw4mTS66QtvvURRT6zgDGFotthVQ==} - peerDependencies: - '@playwright/test': ^1.42.1 - deepmerge: ^4.3.1 - dotenv: ^16.4.5 - openai: ^4.62.1 - zod: ^3.23.8 - '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} @@ -457,10 +436,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@ibm-cloud/watsonx-ai@1.6.5': - resolution: {integrity: sha512-XyH18yfAyawgAYBJfWNtcdbFHgOaS+T7CTwmMoYQjTjCgf46UjJxUezgsw7nPHACwxlweshIc0lIM3FLxuRyHg==} - engines: {node: '>=18.0.0'} - '@img/sharp-darwin-arm64@0.34.1': resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -593,389 +568,6 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@langchain/community@0.3.43': - resolution: {integrity: sha512-rTXuKflXyftKFw2fAl5YbkfMcwsIcot8tpUy50asXxbe3eGpQimIFXZsLeaBlftjQPadgnBMOr3Wn1xX8kfOzA==} - engines: {node: '>=18'} - peerDependencies: - '@arcjet/redact': ^v1.0.0-alpha.23 - '@aws-crypto/sha256-js': ^5.0.0 - '@aws-sdk/client-bedrock-agent-runtime': ^3.749.0 - '@aws-sdk/client-bedrock-runtime': ^3.749.0 - '@aws-sdk/client-dynamodb': ^3.749.0 - '@aws-sdk/client-kendra': ^3.749.0 - '@aws-sdk/client-lambda': ^3.749.0 - '@aws-sdk/client-s3': ^3.749.0 - '@aws-sdk/client-sagemaker-runtime': ^3.749.0 - '@aws-sdk/client-sfn': ^3.749.0 - '@aws-sdk/credential-provider-node': ^3.388.0 - '@aws-sdk/dsql-signer': '*' - '@azure/search-documents': ^12.0.0 - '@azure/storage-blob': ^12.15.0 - '@browserbasehq/sdk': '*' - '@browserbasehq/stagehand': ^1.0.0 - '@clickhouse/client': ^0.2.5 - '@cloudflare/ai': '*' - '@datastax/astra-db-ts': ^1.0.0 - '@elastic/elasticsearch': ^8.4.0 - '@getmetal/metal-sdk': '*' - '@getzep/zep-cloud': ^1.0.6 - '@getzep/zep-js': ^0.9.0 - '@gomomento/sdk': ^1.51.1 - '@gomomento/sdk-core': ^1.51.1 - '@google-ai/generativelanguage': '*' - '@google-cloud/storage': ^6.10.1 || ^7.7.0 - '@gradientai/nodejs-sdk': ^1.2.0 - '@huggingface/inference': ^2.6.4 - '@huggingface/transformers': ^3.2.3 - '@ibm-cloud/watsonx-ai': '*' - '@lancedb/lancedb': ^0.12.0 - '@langchain/core': '>=0.2.21 <0.4.0' - '@layerup/layerup-security': ^1.5.12 - '@libsql/client': ^0.14.0 - '@mendable/firecrawl-js': ^1.4.3 - '@mlc-ai/web-llm': '*' - '@mozilla/readability': '*' - '@neondatabase/serverless': '*' - '@notionhq/client': ^2.2.10 - '@opensearch-project/opensearch': '*' - '@pinecone-database/pinecone': '*' - '@planetscale/database': ^1.8.0 - '@premai/prem-sdk': ^0.3.25 - '@qdrant/js-client-rest': ^1.8.2 - '@raycast/api': ^1.55.2 - '@rockset/client': ^0.9.1 - '@smithy/eventstream-codec': ^2.0.5 - '@smithy/protocol-http': ^3.0.6 - '@smithy/signature-v4': ^2.0.10 - '@smithy/util-utf8': ^2.0.0 - '@spider-cloud/spider-client': ^0.0.21 - '@supabase/supabase-js': ^2.45.0 - '@tensorflow-models/universal-sentence-encoder': '*' - '@tensorflow/tfjs-converter': '*' - '@tensorflow/tfjs-core': '*' - '@upstash/ratelimit': ^1.1.3 || ^2.0.3 - '@upstash/redis': ^1.20.6 - '@upstash/vector': ^1.1.1 - '@vercel/kv': '*' - '@vercel/postgres': '*' - '@writerai/writer-sdk': ^0.40.2 - '@xata.io/client': ^0.28.0 - '@zilliz/milvus2-sdk-node': '>=2.3.5' - apify-client: ^2.7.1 - assemblyai: ^4.6.0 - azion: ^1.11.1 - better-sqlite3: '>=9.4.0 <12.0.0' - cassandra-driver: ^4.7.2 - cborg: ^4.1.1 - cheerio: ^1.0.0-rc.12 - chromadb: '*' - closevector-common: 0.1.3 - closevector-node: 0.1.6 - closevector-web: 0.1.6 - cohere-ai: '*' - convex: ^1.3.1 - crypto-js: ^4.2.0 - d3-dsv: ^2.0.0 - discord.js: ^14.14.1 - dria: ^0.0.3 - duck-duck-scrape: ^2.2.5 - epub2: ^3.0.1 - fast-xml-parser: '*' - firebase-admin: ^11.9.0 || ^12.0.0 - google-auth-library: '*' - googleapis: '*' - hnswlib-node: ^3.0.0 - html-to-text: ^9.0.5 - ibm-cloud-sdk-core: '*' - ignore: ^5.2.0 - interface-datastore: ^8.2.11 - ioredis: ^5.3.2 - it-all: ^3.0.4 - jsdom: '*' - jsonwebtoken: ^9.0.2 - llmonitor: ^0.5.9 - lodash: ^4.17.21 - lunary: ^0.7.10 - mammoth: ^1.6.0 - mariadb: ^3.4.0 - mem0ai: ^2.1.8 - mongodb: '>=5.2.0' - mysql2: ^3.9.8 - neo4j-driver: '*' - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - openai: '*' - pdf-parse: 1.1.1 - pg: ^8.11.0 - pg-copy-streams: ^6.0.5 - pickleparser: ^0.2.1 - playwright: ^1.32.1 - portkey-ai: ^0.1.11 - puppeteer: '*' - pyodide: '>=0.24.1 <0.27.0' - redis: '*' - replicate: '*' - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.3 - typeorm: ^0.3.20 - typesense: ^1.5.3 - usearch: ^1.1.1 - voy-search: 0.6.2 - weaviate-ts-client: '*' - web-auth-library: ^1.0.3 - word-extractor: '*' - ws: ^8.14.2 - youtubei.js: '*' - peerDependenciesMeta: - '@arcjet/redact': - optional: true - '@aws-crypto/sha256-js': - optional: true - '@aws-sdk/client-bedrock-agent-runtime': - optional: true - '@aws-sdk/client-bedrock-runtime': - optional: true - '@aws-sdk/client-dynamodb': - optional: true - '@aws-sdk/client-kendra': - optional: true - '@aws-sdk/client-lambda': - optional: true - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sagemaker-runtime': - optional: true - '@aws-sdk/client-sfn': - optional: true - '@aws-sdk/credential-provider-node': - optional: true - '@aws-sdk/dsql-signer': - optional: true - '@azure/search-documents': - optional: true - '@azure/storage-blob': - optional: true - '@browserbasehq/sdk': - optional: true - '@clickhouse/client': - optional: true - '@cloudflare/ai': - optional: true - '@datastax/astra-db-ts': - optional: true - '@elastic/elasticsearch': - optional: true - '@getmetal/metal-sdk': - optional: true - '@getzep/zep-cloud': - optional: true - '@getzep/zep-js': - optional: true - '@gomomento/sdk': - optional: true - '@gomomento/sdk-core': - optional: true - '@google-ai/generativelanguage': - optional: true - '@google-cloud/storage': - optional: true - '@gradientai/nodejs-sdk': - optional: true - '@huggingface/inference': - optional: true - '@huggingface/transformers': - optional: true - '@lancedb/lancedb': - optional: true - '@layerup/layerup-security': - optional: true - '@libsql/client': - optional: true - '@mendable/firecrawl-js': - optional: true - '@mlc-ai/web-llm': - optional: true - '@mozilla/readability': - optional: true - '@neondatabase/serverless': - optional: true - '@notionhq/client': - optional: true - '@opensearch-project/opensearch': - optional: true - '@pinecone-database/pinecone': - optional: true - '@planetscale/database': - optional: true - '@premai/prem-sdk': - optional: true - '@qdrant/js-client-rest': - optional: true - '@raycast/api': - optional: true - '@rockset/client': - optional: true - '@smithy/eventstream-codec': - optional: true - '@smithy/protocol-http': - optional: true - '@smithy/signature-v4': - optional: true - '@smithy/util-utf8': - optional: true - '@spider-cloud/spider-client': - optional: true - '@supabase/supabase-js': - optional: true - '@tensorflow-models/universal-sentence-encoder': - optional: true - '@tensorflow/tfjs-converter': - optional: true - '@tensorflow/tfjs-core': - optional: true - '@upstash/ratelimit': - optional: true - '@upstash/redis': - optional: true - '@upstash/vector': - optional: true - '@vercel/kv': - optional: true - '@vercel/postgres': - optional: true - '@writerai/writer-sdk': - optional: true - '@xata.io/client': - optional: true - '@zilliz/milvus2-sdk-node': - optional: true - apify-client: - optional: true - assemblyai: - optional: true - azion: - optional: true - better-sqlite3: - optional: true - cassandra-driver: - optional: true - cborg: - optional: true - cheerio: - optional: true - chromadb: - optional: true - closevector-common: - optional: true - closevector-node: - optional: true - closevector-web: - optional: true - cohere-ai: - optional: true - convex: - optional: true - crypto-js: - optional: true - d3-dsv: - optional: true - discord.js: - optional: true - dria: - optional: true - duck-duck-scrape: - optional: true - epub2: - optional: true - fast-xml-parser: - optional: true - firebase-admin: - optional: true - google-auth-library: - optional: true - googleapis: - optional: true - hnswlib-node: - optional: true - html-to-text: - optional: true - ignore: - optional: true - interface-datastore: - optional: true - ioredis: - optional: true - it-all: - optional: true - jsdom: - optional: true - jsonwebtoken: - optional: true - llmonitor: - optional: true - lodash: - optional: true - lunary: - optional: true - mammoth: - optional: true - mariadb: - optional: true - mem0ai: - optional: true - mongodb: - optional: true - mysql2: - optional: true - neo4j-driver: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true - pg: - optional: true - pg-copy-streams: - optional: true - pickleparser: - optional: true - playwright: - optional: true - portkey-ai: - optional: true - puppeteer: - optional: true - pyodide: - optional: true - redis: - optional: true - replicate: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - typesense: - optional: true - usearch: - optional: true - voy-search: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - word-extractor: - optional: true - ws: - optional: true - youtubei.js: - optional: true - '@langchain/core@0.3.56': resolution: {integrity: sha512-eF9MyInM9RLNisAygiCrzHnqzOnuzGWy4f1SAqAis+XIMhcA98WuZDNWxyX9pP3aKQGc47FAJ/9XWJwv5KiquA==} engines: {node: '>=18'} @@ -1007,82 +599,6 @@ packages: zod-to-json-schema: optional: true - '@langchain/openai@0.5.10': - resolution: {integrity: sha512-hBQIWjcVxGS7tgVvgBBmrZ5jSaJ8nu9g6V64/Tx6KGjkW7VdGmUvqCO+koiQCOZVL7PBJkHWAvDsbghPYXiZEA==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.3.48 <0.4.0' - - '@langchain/textsplitters@0.1.0': - resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.21 <0.4.0' - - '@napi-rs/canvas-android-arm64@0.1.70': - resolution: {integrity: sha512-I/YOuQ0wbkVYxVaYtCgN42WKTYxNqFA0gTcTrHIGG1jfpDSyZWII/uHcjOo4nzd19io6Y4+/BqP8E5hJgf9OmQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@napi-rs/canvas-darwin-arm64@0.1.70': - resolution: {integrity: sha512-4pPGyXetHIHkw2TOJHujt3mkCP8LdDu8+CT15ld9Id39c752RcI0amDHSuMLMQfAjvusA9B5kKxazwjMGjEJpQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/canvas-darwin-x64@0.1.70': - resolution: {integrity: sha512-+2N6Os9LbkmDMHL+raknrUcLQhsXzc5CSXRbXws9C3pv/mjHRVszQ9dhFUUe9FjfPhCJznO6USVdwOtu7pOrzQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.70': - resolution: {integrity: sha512-QjscX9OaKq/990sVhSMj581xuqLgiaPVMjjYvWaCmAJRkNQ004QfoSMEm3FoTqM4DRoquP8jvuEXScVJsc1rqQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@napi-rs/canvas-linux-arm64-gnu@0.1.70': - resolution: {integrity: sha512-LNakMOwwqwiHIwMpnMAbFRczQMQ7TkkMyATqFCOtUJNlE6LPP/QiUj/mlFrNbUn/hctqShJ60gWEb52ZTALbVw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@napi-rs/canvas-linux-arm64-musl@0.1.70': - resolution: {integrity: sha512-wBTOllEYNfJCHOdZj9v8gLzZ4oY3oyPX8MSRvaxPm/s7RfEXxCyZ8OhJ5xAyicsDdbE5YBZqdmaaeP5+xKxvtg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@napi-rs/canvas-linux-riscv64-gnu@0.1.70': - resolution: {integrity: sha512-GVUUPC8TuuFqHip0rxHkUqArQnlzmlXmTEBuXAWdgCv85zTCFH8nOHk/YCF5yo0Z2eOm8nOi90aWs0leJ4OE5Q==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - - '@napi-rs/canvas-linux-x64-gnu@0.1.70': - resolution: {integrity: sha512-/kvUa2lZRwGNyfznSn5t1ShWJnr/m5acSlhTV3eXECafObjl0VBuA1HJw0QrilLpb4Fe0VLywkpD1NsMoVDROQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/canvas-linux-x64-musl@0.1.70': - resolution: {integrity: sha512-aqlv8MLpycoMKRmds7JWCfVwNf1fiZxaU7JwJs9/ExjTD8lX2KjsO7CTeAj5Cl4aEuzxUWbJPUUE2Qu9cZ1vfg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/canvas-win32-x64-msvc@0.1.70': - resolution: {integrity: sha512-Q9QU3WIpwBTVHk4cPfBjGHGU4U0llQYRXgJtFtYqqGNEOKVN4OT6PQ+ve63xwIPODMpZ0HHyj/KLGc9CWc3EtQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/canvas@0.1.70': - resolution: {integrity: sha512-nD6NGa4JbNYSZYsTnLGrqe9Kn/lCkA4ybXt8sx5ojDqZjr2i0TWAHxx/vhgfjX+i3hCdKWufxYwi7CfXqtITSA==} - engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@0.2.10': resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} @@ -1575,9 +1091,6 @@ packages: '@tailwindcss/postcss@4.1.7': resolution: {integrity: sha512-88g3qmNZn7jDgrrcp3ZXEQfp9CVox7xjP1HN2TFKI03CltPVd/c61ydn5qJJL8FYunn0OqBaW5HNUga0kmPVvw==} - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -1667,9 +1180,6 @@ packages: '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -1911,9 +1421,6 @@ packages: resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} engines: {node: '>=4'} - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -1927,10 +1434,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1946,12 +1449,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -2159,10 +1656,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2204,9 +1697,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - electron-to-chromium@1.5.155: resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} @@ -2404,13 +1894,6 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - expr-eval@2.0.2: - resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2453,10 +1936,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-type@16.5.4: - resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} - engines: {node: '>=10'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2469,22 +1948,9 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -2492,10 +1958,6 @@ packages: form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - form-data@4.0.2: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} @@ -2667,19 +2129,12 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - ibm-cloud-sdk-core@5.3.2: - resolution: {integrity: sha512-YhtS+7hGNO61h/4jNShHxbbuJ1TnDqiFKQzfEaqePnonOvv8NnxWxOk92FlKKCCzZNOT34Gnd7WCLVJTntwEFQ==} - engines: {node: '>=18'} - icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2843,9 +2298,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -2877,24 +2329,10 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} - - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - katex@0.16.22: resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} hasBin: true @@ -2902,64 +2340,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.26: - resolution: {integrity: sha512-W/9phB4wiAnj+PnpMWmv/ptIp7i5ygY2aK8yjKlxccHPbaNeMoy7njzFz8d0/xfcPyA3MvG4AuZnJ1j3/E2/Ig==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/anthropic': '*' - '@langchain/aws': '*' - '@langchain/cerebras': '*' - '@langchain/cohere': '*' - '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/deepseek': '*' - '@langchain/google-genai': '*' - '@langchain/google-vertexai': '*' - '@langchain/google-vertexai-web': '*' - '@langchain/groq': '*' - '@langchain/mistralai': '*' - '@langchain/ollama': '*' - '@langchain/xai': '*' - axios: '*' - cheerio: '*' - handlebars: ^4.7.8 - peggy: ^3.0.2 - typeorm: '*' - peerDependenciesMeta: - '@langchain/anthropic': - optional: true - '@langchain/aws': - optional: true - '@langchain/cerebras': - optional: true - '@langchain/cohere': - optional: true - '@langchain/deepseek': - optional: true - '@langchain/google-genai': - optional: true - '@langchain/google-vertexai': - optional: true - '@langchain/google-vertexai-web': - optional: true - '@langchain/groq': - optional: true - '@langchain/mistralai': - optional: true - '@langchain/ollama': - optional: true - '@langchain/xai': - optional: true - axios: - optional: true - cheerio: - optional: true - handlebars: - optional: true - peggy: - optional: true - typeorm: - optional: true - langgraph-nextjs-api-passthrough@0.0.4: resolution: {integrity: sha512-Hhey2o7/hvbvr4t8qT+w/5YT2L6m381RJ1K6mBQPJt+W2fJJ1youS3EEtVkAHQDJcn1cdCccOc0GTPsqT6F9IQ==} peerDependencies: @@ -3059,30 +2439,9 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3424,9 +2783,6 @@ packages: zod: optional: true - openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -3483,14 +2839,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - pdfjs-dist@5.2.133: - resolution: {integrity: sha512-abE6ZWDxztt+gGFzfm4bX2ggfxUk9wsDEoFzIJm9LozaY3JdXR7jyLK4Bjs+XLXplCduuWS1wGhPC4tgTn/kzg==} - engines: {node: '>=20.16.0 || >=22.3.0'} - - peek-readable@4.1.0: - resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} - engines: {node: '>=8'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3637,10 +2985,6 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -3650,19 +2994,10 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3734,14 +3069,6 @@ packages: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readable-web-to-node-stream@3.0.4: - resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} - engines: {node: '>=8'} - recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} @@ -3781,9 +3108,6 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3800,12 +3124,6 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true - retry-axios@2.6.0: - resolution: {integrity: sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==} - engines: {node: '>=10.7.0'} - peerDependencies: - axios: '*' - retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -3821,9 +3139,6 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -3939,9 +3254,6 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -3953,10 +3265,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strtok3@6.3.0: - resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} - engines: {node: '>=10'} - style-to-js@1.1.16: resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} @@ -4020,14 +3328,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - token-types@4.2.1: - resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} - engines: {node: '>=10'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -4115,10 +3415,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - unrs-resolver@1.7.2: resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} @@ -4131,9 +3427,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -4249,11 +3542,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -4278,48 +3566,8 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@anthropic-ai/sdk@0.27.3': - dependencies: - '@types/node': 18.19.100 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - '@babel/runtime@7.27.1': {} - '@browserbasehq/sdk@2.6.0': - dependencies: - '@types/node': 18.19.100 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - '@browserbasehq/stagehand@1.14.0(@playwright/test@1.52.0)(deepmerge@4.3.1)(dotenv@16.5.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(zod@3.24.4)': - dependencies: - '@anthropic-ai/sdk': 0.27.3 - '@browserbasehq/sdk': 2.6.0 - '@playwright/test': 1.52.0 - deepmerge: 4.3.1 - dotenv: 16.5.0 - openai: 4.100.0(ws@8.18.2)(zod@3.24.4) - ws: 8.18.2 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - '@cfworker/json-schema@4.1.1': {} '@emnapi/core@1.4.3': @@ -4487,14 +3735,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@ibm-cloud/watsonx-ai@1.6.5': - dependencies: - '@types/node': 18.19.100 - extend: 3.0.2 - ibm-cloud-sdk-core: 5.3.2 - transitivePeerDependencies: - - supports-color - '@img/sharp-darwin-arm64@0.34.1': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.1.0 @@ -4594,48 +3834,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/community@0.3.43(@browserbasehq/sdk@2.6.0)(@browserbasehq/stagehand@1.14.0(@playwright/test@1.52.0)(deepmerge@4.3.1)(dotenv@16.5.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(zod@3.24.4))(@ibm-cloud/watsonx-ai@1.6.5)(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(axios@1.9.0)(ibm-cloud-sdk-core@5.3.2)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(playwright@1.52.0)(ws@8.18.2)': - dependencies: - '@browserbasehq/stagehand': 1.14.0(@playwright/test@1.52.0)(deepmerge@4.3.1)(dotenv@16.5.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(zod@3.24.4) - '@ibm-cloud/watsonx-ai': 1.6.5 - '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - '@langchain/openai': 0.5.10(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(ws@8.18.2) - binary-extensions: 2.3.0 - expr-eval: 2.0.2 - flat: 5.0.2 - ibm-cloud-sdk-core: 5.3.2 - js-yaml: 4.1.0 - langchain: 0.3.26(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(axios@1.9.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(ws@8.18.2) - langsmith: 0.3.29(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - openai: 4.100.0(ws@8.18.2)(zod@3.24.4) - uuid: 10.0.0 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - optionalDependencies: - '@browserbasehq/sdk': 2.6.0 - ignore: 5.3.2 - jsonwebtoken: 9.0.2 - lodash: 4.17.21 - playwright: 1.52.0 - ws: 8.18.2 - transitivePeerDependencies: - - '@langchain/anthropic' - - '@langchain/aws' - - '@langchain/cerebras' - - '@langchain/cohere' - - '@langchain/deepseek' - - '@langchain/google-genai' - - '@langchain/google-vertexai' - - '@langchain/google-vertexai-web' - - '@langchain/groq' - - '@langchain/mistralai' - - '@langchain/ollama' - - '@langchain/xai' - - axios - - encoding - - handlebars - - peggy - '@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4))': dependencies: '@cfworker/json-schema': 4.1.1 @@ -4658,9 +3856,7 @@ snapshots: '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.73(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(react@19.1.0)': - dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 @@ -4672,11 +3868,9 @@ snapshots: '@langchain/langgraph@0.2.72(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(react@19.1.0)(zod-to-json-schema@3.24.5(zod@3.24.4))': dependencies: - '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) '@langchain/langgraph-checkpoint': 0.0.17(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4))) '@langchain/langgraph-sdk': 0.0.73(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(react@19.1.0) - uuid: 10.0.0 zod: 3.24.4 optionalDependencies: @@ -4684,66 +3878,6 @@ snapshots: transitivePeerDependencies: - react - '@langchain/openai@0.5.10(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(ws@8.18.2)': - dependencies: - '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - js-tiktoken: 1.0.20 - openai: 4.100.0(ws@8.18.2)(zod@3.24.4) - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - transitivePeerDependencies: - - encoding - - ws - - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))': - dependencies: - '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - js-tiktoken: 1.0.20 - - '@napi-rs/canvas-android-arm64@0.1.70': - optional: true - - '@napi-rs/canvas-darwin-arm64@0.1.70': - optional: true - - '@napi-rs/canvas-darwin-x64@0.1.70': - optional: true - - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.70': - optional: true - - '@napi-rs/canvas-linux-arm64-gnu@0.1.70': - optional: true - - '@napi-rs/canvas-linux-arm64-musl@0.1.70': - optional: true - - '@napi-rs/canvas-linux-riscv64-gnu@0.1.70': - optional: true - - '@napi-rs/canvas-linux-x64-gnu@0.1.70': - optional: true - - '@napi-rs/canvas-linux-x64-musl@0.1.70': - optional: true - - '@napi-rs/canvas-win32-x64-msvc@0.1.70': - optional: true - - '@napi-rs/canvas@0.1.70': - optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.70 - '@napi-rs/canvas-darwin-arm64': 0.1.70 - '@napi-rs/canvas-darwin-x64': 0.1.70 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.70 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.70 - '@napi-rs/canvas-linux-arm64-musl': 0.1.70 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.70 - '@napi-rs/canvas-linux-x64-gnu': 0.1.70 - '@napi-rs/canvas-linux-x64-musl': 0.1.70 - '@napi-rs/canvas-win32-x64-msvc': 0.1.70 - optional: true - '@napi-rs/wasm-runtime@0.2.10': dependencies: '@emnapi/core': 1.4.3 @@ -4798,6 +3932,7 @@ snapshots: '@playwright/test@1.52.0': dependencies: playwright: 1.52.0 + optional: true '@radix-ui/primitive@1.1.2': {} @@ -5155,8 +4290,6 @@ snapshots: postcss: 8.5.3 tailwindcss: 4.1.7 - '@tokenizer/token@0.3.0': {} - '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -5222,10 +4355,12 @@ snapshots: dependencies: '@types/node': 22.15.18 form-data: 4.0.2 + optional: true '@types/node@18.19.100': dependencies: undici-types: 5.26.5 + optional: true '@types/node@22.15.18': dependencies: @@ -5247,8 +4382,6 @@ snapshots: '@types/retry@0.12.0': {} - '@types/tough-cookie@4.0.5': {} - '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -5390,6 +4523,7 @@ snapshots: abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 + optional: true acorn-jsx@5.3.2(acorn@8.14.1): dependencies: @@ -5400,6 +4534,7 @@ snapshots: agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 + optional: true ajv@6.12.6: dependencies: @@ -5491,7 +4626,8 @@ snapshots: async-function@1.0.0: {} - asynckit@0.4.0: {} + asynckit@0.4.0: + optional: true autoprefixer@10.4.21(postcss@8.5.3): dependencies: @@ -5509,14 +4645,6 @@ snapshots: axe-core@4.10.3: {} - axios@1.9.0(debug@4.4.1): - dependencies: - follow-redirects: 1.15.9(debug@4.4.1) - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axobject-query@4.1.0: {} bail@2.0.2: {} @@ -5525,8 +4653,6 @@ snapshots: base64-js@1.5.1: {} - binary-extensions@2.3.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5547,13 +4673,6 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) - buffer-equal-constant-time@1.0.1: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -5633,6 +4752,7 @@ snapshots: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + optional: true comma-separated-tokens@1.0.8: {} @@ -5734,8 +4854,6 @@ snapshots: deep-is@0.1.4: {} - deepmerge@4.3.1: {} - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -5748,7 +4866,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - delayed-stream@1.0.0: {} + delayed-stream@1.0.0: + optional: true dequal@2.0.3: {} @@ -5777,10 +4896,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - electron-to-chromium@1.5.155: {} emoji-regex@9.2.2: {} @@ -6134,14 +5249,11 @@ snapshots: esutils@2.0.3: {} - event-target-shim@5.0.1: {} + event-target-shim@5.0.1: + optional: true eventemitter3@4.0.7: {} - events@3.3.0: {} - - expr-eval@2.0.2: {} - extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -6184,12 +5296,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-type@16.5.4: - dependencies: - readable-web-to-node-stream: 3.0.4 - strtok3: 6.3.0 - token-types: 4.2.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -6204,25 +5310,14 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat@5.0.2: {} - flatted@3.3.3: {} - follow-redirects@1.15.9(debug@4.4.1): - optionalDependencies: - debug: 4.4.1 - for-each@0.3.5: dependencies: is-callable: 1.2.7 - form-data-encoder@1.7.2: {} - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 + form-data-encoder@1.7.2: + optional: true form-data@4.0.2: dependencies: @@ -6230,6 +5325,7 @@ snapshots: combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 mime-types: 2.1.35 + optional: true format@0.2.2: {} @@ -6237,6 +5333,7 @@ snapshots: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 + optional: true fraction.js@4.3.7: {} @@ -6443,33 +5540,12 @@ snapshots: humanize-ms@1.2.1: dependencies: ms: 2.1.3 - - ibm-cloud-sdk-core@5.3.2: - dependencies: - '@types/debug': 4.1.12 - '@types/node': 18.19.100 - '@types/tough-cookie': 4.0.5 - axios: 1.9.0(debug@4.4.1) - camelcase: 6.3.0 - debug: 4.4.1 - dotenv: 16.5.0 - extend: 3.0.2 - file-type: 16.5.4 - form-data: 4.0.0 - isstream: 0.1.2 - jsonwebtoken: 9.0.2 - mime-types: 2.1.35 - retry-axios: 2.6.0(axios@1.9.0) - tough-cookie: 4.1.4 - transitivePeerDependencies: - - supports-color + optional: true icss-utils@5.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 - ieee754@1.2.1: {} - ignore@5.3.2: {} ignore@7.0.4: {} @@ -6631,8 +5707,6 @@ snapshots: isexe@2.0.0: {} - isstream@0.1.2: {} - iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -6664,21 +5738,6 @@ snapshots: dependencies: minimist: 1.2.8 - jsonpointer@5.0.1: {} - - jsonwebtoken@9.0.2: - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.2 - jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 @@ -6686,17 +5745,6 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 - jwa@1.4.2: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@3.2.2: - dependencies: - jwa: 1.4.2 - safe-buffer: 5.2.1 - katex@0.16.22: dependencies: commander: 8.3.0 @@ -6705,28 +5753,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - langchain@0.3.26(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(axios@1.9.0)(openai@4.100.0(ws@8.18.2)(zod@3.24.4))(ws@8.18.2): - dependencies: - '@langchain/core': 0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - '@langchain/openai': 0.5.10(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4)))(ws@8.18.2) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.56(openai@4.100.0(ws@8.18.2)(zod@3.24.4))) - js-tiktoken: 1.0.20 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langsmith: 0.3.29(openai@4.100.0(ws@8.18.2)(zod@3.24.4)) - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 10.0.0 - yaml: 2.8.0 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - optionalDependencies: - axios: 1.9.0(debug@4.4.1) - transitivePeerDependencies: - - encoding - - openai - - ws - langgraph-nextjs-api-passthrough@0.0.4(next@15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)): dependencies: next: 15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -6807,22 +5833,8 @@ snapshots: lodash.camelcase@4.3.0: {} - lodash.includes@4.3.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isinteger@4.0.4: {} - - lodash.isnumber@3.0.3: {} - - lodash.isplainobject@4.0.6: {} - - lodash.isstring@4.0.1: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} - lodash@4.17.21: {} longest-streak@3.1.0: {} @@ -7221,11 +6233,13 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + mime-db@1.52.0: + optional: true mime-types@2.1.35: dependencies: mime-db: 1.52.0 + optional: true minimatch@3.1.2: dependencies: @@ -7294,11 +6308,13 @@ snapshots: - '@babel/core' - babel-plugin-macros - node-domexception@1.0.0: {} + node-domexception@1.0.0: + optional: true node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 + optional: true node-releases@2.0.19: {} @@ -7367,8 +6383,7 @@ snapshots: zod: 3.24.4 transitivePeerDependencies: - encoding - - openapi-types@12.1.3: {} + optional: true optionator@0.9.4: dependencies: @@ -7442,25 +6457,21 @@ snapshots: path-parse@1.0.7: {} - pdfjs-dist@5.2.133: - optionalDependencies: - '@napi-rs/canvas': 0.1.70 - - peek-readable@4.1.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} - playwright-core@1.52.0: {} + playwright-core@1.52.0: + optional: true playwright@1.52.0: dependencies: playwright-core: 1.52.0 optionalDependencies: fsevents: 2.3.2 + optional: true possible-typed-array-names@1.1.0: {} @@ -7534,8 +6545,6 @@ snapshots: prismjs@1.30.0: {} - process@0.11.10: {} - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -7548,16 +6557,8 @@ snapshots: property-information@7.1.0: {} - proxy-from-env@1.1.0: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - punycode@2.3.1: {} - querystringify@2.2.0: {} - queue-microtask@1.2.3: {} react-dom@19.1.0(react@19.1.0): @@ -7643,18 +6644,6 @@ snapshots: react@19.1.0: {} - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readable-web-to-node-stream@3.0.4: - dependencies: - readable-stream: 4.7.0 - recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 @@ -7751,8 +6740,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - requires-port@1.0.0: {} - resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -7769,10 +6756,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry-axios@2.6.0(axios@1.9.0): - dependencies: - axios: 1.9.0(debug@4.4.1) - retry@0.13.1: {} reusify@1.1.0: {} @@ -7789,8 +6772,6 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.2.1: {} - safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -7966,10 +6947,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -7979,11 +6956,6 @@ snapshots: strip-json-comments@3.1.1: {} - strtok3@6.3.0: - dependencies: - '@tokenizer/token': 0.3.0 - peek-readable: 4.1.0 - style-to-js@1.1.16: dependencies: style-to-object: 1.0.8 @@ -8040,19 +7012,8 @@ snapshots: dependencies: is-number: 7.0.0 - token-types@4.2.1: - dependencies: - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - tr46@0.0.3: {} + tr46@0.0.3: + optional: true trim-lines@3.0.1: {} @@ -8127,7 +7088,8 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@5.26.5: {} + undici-types@5.26.5: + optional: true undici-types@6.21.0: {} @@ -8174,8 +7136,6 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.2.0: {} - unrs-resolver@1.7.2: dependencies: napi-postinstall: 0.2.4 @@ -8208,11 +7168,6 @@ snapshots: dependencies: punycode: 2.3.1 - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - use-callback-ref@1.3.3(@types/react@19.1.4)(react@19.1.0): dependencies: react: 19.1.0 @@ -8278,14 +7233,17 @@ snapshots: web-namespaces@2.0.1: {} - web-streams-polyfill@4.0.0-beta.3: {} + web-streams-polyfill@4.0.0-beta.3: + optional: true - webidl-conversions@3.0.1: {} + webidl-conversions@3.0.1: + optional: true whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + optional: true which-boxed-primitive@1.1.1: dependencies: @@ -8334,14 +7292,13 @@ snapshots: word-wrap@1.2.5: {} - ws@8.18.2: {} + ws@8.18.2: + optional: true xtend@4.0.2: {} yallist@5.0.0: {} - yaml@2.8.0: {} - yocto-queue@0.1.0: {} zod-to-json-schema@3.24.5(zod@3.24.4): diff --git a/src/components/thread/index.tsx b/src/components/thread/index.tsx index 1066413..8032f39 100644 --- a/src/components/thread/index.tsx +++ b/src/components/thread/index.tsx @@ -39,6 +39,7 @@ import { } from "../ui/tooltip"; import { fileToImageBlock, fileToPDFBlock } from "@/lib/multimodal-utils"; import type { Base64ContentBlock } from "@langchain/core/messages"; +import { MultimodalPreview } from "../ui/MultimodalPreview"; function StickyToBottomContent(props: { content: ReactNode; @@ -192,7 +193,6 @@ export function Thread() { ] as Message["content"], }; - console.log("Message content:", newHumanMessage.content); const toolMessages = ensureToolCallsHaveResponses(stream.messages); stream.submit( @@ -237,7 +237,7 @@ export function Thread() { } if (imageFiles.length) { - console.log("imageFiles", imageFiles); + const imageBlocks = await Promise.all(imageFiles.map(fileToImageBlock)); setImageUrlList((prev) => [...prev, ...imageBlocks]); } @@ -526,54 +526,27 @@ export function Thread() { > {imageUrlList.length > 0 && (
- {imageUrlList.map((imageBlock, idx) => { - const imageUrlString = `data:${imageBlock.mime_type};base64,${imageBlock.data}`; - return ( -
- uploaded - - setImageUrlList( - imageUrlList.filter((_, i) => i !== idx), - ) - } - /> -
- ); - })} + {imageUrlList.map((imageBlock, idx) => ( + setImageUrlList(imageUrlList.filter((_, i) => i !== idx))} + size="md" + /> + ))}
)} {pdfUrlList.length > 0 && (
{pdfUrlList.map((pdfBlock, idx) => ( -
- - {String( - pdfBlock.metadata?.filename ?? - pdfBlock.metadata?.name ?? - "", - )} - - - setPdfUrlList( - pdfUrlList.filter((_, i) => i !== idx), - ) - } - /> -
+ block={pdfBlock} + removable + onRemove={() => setPdfUrlList(pdfUrlList.filter((_, i) => i !== idx))} + size="md" + /> ))}
)} diff --git a/src/components/thread/messages/human.tsx b/src/components/thread/messages/human.tsx index 65dd65b..5156eca 100644 --- a/src/components/thread/messages/human.tsx +++ b/src/components/thread/messages/human.tsx @@ -1,10 +1,12 @@ import { useStreamContext } from "@/providers/Stream"; import { Message } from "@langchain/langgraph-sdk"; import { useState } from "react"; -import { getContentImageUrls, getContentString } from "../utils"; +import {getContentString } from "../utils"; import { cn } from "@/lib/utils"; import { Textarea } from "@/components/ui/textarea"; import { BranchSwitcher, CommandBar } from "./shared"; +import { MultimodalPreview } from "@/components/ui/MultimodalPreview"; +import type { Base64ContentBlock } from "@langchain/core/messages"; function EditableContent({ value, @@ -32,6 +34,35 @@ function EditableContent({ ); } +// Type guard for Base64ContentBlock +function isBase64ContentBlock(block: unknown): block is Base64ContentBlock { + if (typeof block !== "object" || block === null || !("type" in block)) return false; + // file type (legacy) + if ( + (block as { type: unknown }).type === "file" && + "source_type" in block && + (block as { source_type: unknown }).source_type === "base64" && + "mime_type" in block && + typeof (block as { mime_type?: unknown }).mime_type === "string" && + ((block as { mime_type: string }).mime_type.startsWith("image/") || + (block as { mime_type: string }).mime_type === "application/pdf") + ) { + return true; + } + // image type (new) + if ( + (block as { type: unknown }).type === "image" && + "source_type" in block && + (block as { source_type: unknown }).source_type === "base64" && + "mime_type" in block && + typeof (block as { mime_type?: unknown }).mime_type === "string" && + (block as { mime_type: string }).mime_type.startsWith("image/") + ) { + return true; + } + return false; +} + export function HumanMessage({ message, isLoading, @@ -46,7 +77,6 @@ export function HumanMessage({ const [isEditing, setIsEditing] = useState(false); const [value, setValue] = useState(""); const contentString = getContentString(message.content); - const contentImageUrls = getContentImageUrls(message.content); const handleSubmitEdit = () => { setIsEditing(false); @@ -89,60 +119,14 @@ export function HumanMessage({ {/* Render images and files if no text */} {Array.isArray(message.content) && message.content.length > 0 && (
- {message.content.map((block, idx) => { - // Type guard for image block - const isImageBlock = - typeof block === "object" && - block !== null && - "type" in block && - (block as any).type === "image" && - "source_type" in block && - (block as any).source_type === "base64" && - "mime_type" in block && - "data" in block; - if (isImageBlock) { - const imgBlock = block as { - type: string; - source_type: string; - mime_type: string; - data: string; - metadata?: { name?: string }; - }; - const url = `data:${imgBlock.mime_type};base64,${imgBlock.data}`; - return ( - {imgBlock.metadata?.name + {message.content.reduce((acc, block, idx) => { + if (isBase64ContentBlock(block)) { + acc.push( + ); } - // Type guard for file block (PDF) - const isPdfBlock = - typeof block === "object" && - block !== null && - "type" in block && - (block as any).type === "file" && - "mime_type" in block && - (block as any).mime_type === "application/pdf"; - if (isPdfBlock) { - const pdfBlock = block as { - metadata?: { filename?: string; name?: string }; - }; - return ( -
- {pdfBlock.metadata?.filename || - pdfBlock.metadata?.name || - "PDF file"} -
- ); - } - return null; - })} + return acc; + }, [])}
)} {/* Render text if present, otherwise fallback to file/image name */} diff --git a/src/components/ui/MultimodalPreview.tsx b/src/components/ui/MultimodalPreview.tsx new file mode 100644 index 0000000..70ae2e2 --- /dev/null +++ b/src/components/ui/MultimodalPreview.tsx @@ -0,0 +1,104 @@ +import React from "react"; +import { File, Image as ImageIcon, X as XIcon } from "lucide-react"; +import type { Base64ContentBlock } from "@langchain/core/messages"; + +export interface MultimodalPreviewProps { + block: Base64ContentBlock; + removable?: boolean; + onRemove?: () => void; + className?: string; + size?: "sm" | "md" | "lg"; +} + +export const MultimodalPreview: React.FC = ({ + block, + removable = false, + onRemove, + className = "", + size = "md", +}) => { + // Sizing + const sizeMap = { + sm: "h-10 w-10 text-base", + md: "h-16 w-16 text-lg", + lg: "h-24 w-24 text-xl", + }; + const iconSize: string = typeof sizeMap[size] === "string" ? sizeMap[size] : sizeMap["md"]; + + // Image block + if ( + block.type === "image" && + block.source_type === "base64" && + typeof block.mime_type === "string" && + block.mime_type.startsWith("image/") + ) { + const url = `data:${block.mime_type};base64,${block.data}`; + let imgClass: string = "rounded-md object-cover h-16 w-16 text-lg"; + if (size === "sm") imgClass = "rounded-md object-cover h-10 w-10 text-base"; + if (size === "lg") imgClass = "rounded-md object-cover h-24 w-24 text-xl"; + return ( +
+ {String(block.metadata?.name + {removable && ( + + )} +
+ ); + } + + // PDF block + if ( + block.type === "file" && + block.source_type === "base64" && + block.mime_type === "application/pdf" + ) { + const filename = block.metadata?.filename || block.metadata?.name || "PDF file"; + const fileClass = `relative flex items-center gap-2 rounded-md border bg-gray-100 px-3 py-2${className ? ` ${className}` : ''}`; + return ( +
+ + {String(filename)} + {removable && ( + + )} +
+ ); + } + + // Fallback for unknown types + const fallbackClass = `flex items-center gap-2 rounded-md border bg-gray-100 px-3 py-2 text-gray-500${className ? ` ${className}` : ''}`; + return ( +
+ + Unsupported file type + {removable && ( + + )} +
+ ); +}; \ No newline at end of file