diff --git a/config/dependency_decisions.yml b/config/dependency_decisions.yml
index 765f08550..3344c69a4 100644
--- a/config/dependency_decisions.yml
+++ b/config/dependency_decisions.yml
@@ -56,18 +56,20 @@
- - :approve
- argparse
- :who: OSPO @masutaka
- :why: Python 2.0 license is compatible with Apache-2.0. But License Finder does
+ :why:
+ Python 2.0 license is compatible with Apache-2.0. But License Finder does
not support the name "Python-2.0". See https://github.com/pivotal/LicenseFinder/pull/1053
:versions:
- - 2.0.1
+ - 2.0.1
:when: 2024-11-28 08:54:56.971593000 Z
- - :approve
- jsonify
- :who: OSPO @masutaka
- :why: Public Domain is compatible with Apache-2.0. But it is not a software license.
+ :why:
+ Public Domain is compatible with Apache-2.0. But it is not a software license.
See https://github.com/liam-hq/liam/issues/111
:versions:
- - 0.0.1
+ - 0.0.1
:when: 2024-11-29 03:35:11.884802000 Z
- - :permit
- LGPL-3.0-or-later
@@ -84,10 +86,11 @@
- - :approve
- spawndamnit
- :who: OSPO @masutaka
- :why: Its license is MIT, but it is mis-detected as a "SEE LICENSE IN LICENSE"
+ :why:
+ Its license is MIT, but it is mis-detected as a "SEE LICENSE IN LICENSE"
license. See https://github.com/jamiebuilds/spawndamnit/pull/11
:versions:
- - 3.0.1
+ - 3.0.1
:when: 2024-11-29 09:06:33.106701000 Z
- - :permit
- Mozilla Public License 2.0
@@ -101,3 +104,9 @@
:why: Compatible with Apache-2.0 license. See https://opensource.org/license/epl-2-0
:versions: []
:when: 2024-12-09 09:29:53.604007000 Z
+- - :approve
+ - "@browserbasehq/sdk"
+ - :who: OSPO @masutaka
+ :why: The license is Apache-2.0. License Finder failed to identify the license.
+ :versions: []
+ :when: 2025-03-04 07:55:29.625648000 Z
diff --git a/frontend/apps/migration-web/.env.template b/frontend/apps/migration-web/.env.template
index c8fadcb44..94e5abad4 100644
--- a/frontend/apps/migration-web/.env.template
+++ b/frontend/apps/migration-web/.env.template
@@ -2,3 +2,5 @@ OPENAI_API_KEY="YOUR_API_KEY"
LANGFUSE_PUBLIC_KEY=""
LANGFUSE_SECRET_KEY=""
LANGFUSE_BASE_URL="https://cloud.langfuse.com"
+SUPABASE_URL="YOUR_SUPABASE_URL"
+SUPABASE_SERVICE_ROLE_KEY="YOUR_SERVICE_ROLE_KEY"
diff --git a/frontend/apps/migration-web/app/api/retrieve/route.ts b/frontend/apps/migration-web/app/api/retrieve/route.ts
new file mode 100644
index 000000000..b25144410
--- /dev/null
+++ b/frontend/apps/migration-web/app/api/retrieve/route.ts
@@ -0,0 +1,94 @@
+import { langfuseLangchainHandler, vectorStore } from '@/lib'
+import { PromptTemplate } from '@langchain/core/prompts'
+import { ChatOpenAI } from '@langchain/openai'
+import { HttpResponseOutputParser } from 'langchain/output_parsers'
+import type { NextRequest } from 'next/server'
+
+export const runtime = 'edge'
+
+const RETRIEVAL_TEMPLATE = `You are a knowledgeable assistant that helps users with their questions by providing accurate and helpful information.
+
+I'll provide you with:
+1. The user's query
+2. Relevant context retrieved from our knowledge base
+
+Based on this information, please provide a detailed response that:
+- Directly addresses the user's question
+- Incorporates relevant information from the provided context
+- Provides clear explanations and examples where appropriate
+- Highlights important considerations or best practices
+- Cites specific information from the context when relevant
+
+User Query:
+"""
+{query}
+"""
+
+Relevant Context:
+"""
+{context}
+"""
+
+Instructions for your response:
+1. If the context contains relevant information, use it to enhance your answer
+2. If the context doesn't contain enough information, acknowledge this and provide the best general guidance you can
+3. If you're unsure about something, be transparent about the limitations of your knowledge
+4. Format your response in Markdown to improve readability
+5. Keep your response practical, specific, and actionable
+6. Do not mention that you are using context or reference the retrieval process in your answer
+
+Please provide a comprehensive and helpful response.`
+
+export async function POST(req: NextRequest) {
+ try {
+ const { query } = await req.json()
+
+ if (!query || typeof query !== 'string') {
+ return new Response(
+ JSON.stringify({
+ error: 'Query is not provided or is in an invalid format',
+ }),
+ { status: 400 },
+ )
+ }
+
+ const retriever = vectorStore.asRetriever({
+ searchType: 'similarity',
+ k: 5,
+ })
+
+ const relevantDocs = await retriever.invoke(query)
+ const context = relevantDocs.map((doc) => doc.pageContent).join('\n\n')
+
+ const prompt = PromptTemplate.fromTemplate(RETRIEVAL_TEMPLATE)
+
+ const model = new ChatOpenAI({
+ temperature: 0.7,
+ model: 'gpt-4o-mini',
+ })
+
+ const outputParser = new HttpResponseOutputParser()
+
+ const chain = prompt.pipe(model).pipe(outputParser)
+
+ const stream = await chain.stream(
+ {
+ query: query,
+ context: context,
+ },
+ {
+ callbacks: [langfuseLangchainHandler],
+ },
+ )
+
+ return new Response(stream)
+ } catch (error) {
+ console.error('Error in retrieve API:', error)
+ return new Response(
+ JSON.stringify({
+ error: 'An error occurred while retrieving knowledge',
+ }),
+ { status: 500 },
+ )
+ }
+}
diff --git a/frontend/apps/migration-web/app/api/vectorize/route.ts b/frontend/apps/migration-web/app/api/vectorize/route.ts
new file mode 100644
index 000000000..7d1dbb2f4
--- /dev/null
+++ b/frontend/apps/migration-web/app/api/vectorize/route.ts
@@ -0,0 +1,49 @@
+import { vectorizeText, vectorizeUrl } from '@/lib/vectorization'
+import type { NextRequest } from 'next/server'
+
+export const runtime = 'edge'
+
+export async function POST(req: NextRequest) {
+ try {
+ const { url, text } = await req.json()
+
+ if (url && typeof url === 'string') {
+ const result = await vectorizeUrl(url)
+ return new Response(
+ JSON.stringify({
+ success: true,
+ message: 'URL content vectorized and stored successfully',
+ id: result.documentId,
+ chunkCount: result.chunkCount,
+ }),
+ { status: 200 },
+ )
+ }
+ if (text && typeof text === 'string') {
+ const result = await vectorizeText(text)
+ return new Response(
+ JSON.stringify({
+ success: true,
+ message: 'Text content vectorized and stored successfully',
+ id: result.documentId,
+ chunkCount: result.chunkCount,
+ }),
+ { status: 200 },
+ )
+ }
+ return new Response(
+ JSON.stringify({
+ error: 'Neither URL nor text is provided or is in an invalid format',
+ }),
+ { status: 400 },
+ )
+ } catch (error) {
+ console.error('Error in vectorize API:', error)
+ return new Response(
+ JSON.stringify({
+ error: 'An error occurred while processing the request',
+ }),
+ { status: 500 },
+ )
+ }
+}
diff --git a/frontend/apps/migration-web/app/globals.css b/frontend/apps/migration-web/app/globals.css
index e3734be15..93767277f 100644
--- a/frontend/apps/migration-web/app/globals.css
+++ b/frontend/apps/migration-web/app/globals.css
@@ -22,6 +22,17 @@ body {
font-family: Arial, Helvetica, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+}
+
+main {
+ flex: 1;
+ padding: 2rem;
+ width: 100%;
+ max-width: 1200px;
+ margin: 0 auto;
}
* {
diff --git a/frontend/apps/migration-web/app/knowledge_retrieval/page.module.css b/frontend/apps/migration-web/app/knowledge_retrieval/page.module.css
new file mode 100644
index 000000000..4a73ba323
--- /dev/null
+++ b/frontend/apps/migration-web/app/knowledge_retrieval/page.module.css
@@ -0,0 +1,15 @@
+.container {
+ display: flex;
+ flex-direction: column;
+ gap: 2rem;
+ padding: 2rem;
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+.title {
+ font-size: 2rem;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 1rem;
+}
diff --git a/frontend/apps/migration-web/app/knowledge_retrieval/page.tsx b/frontend/apps/migration-web/app/knowledge_retrieval/page.tsx
new file mode 100644
index 000000000..3bd2ac2fd
--- /dev/null
+++ b/frontend/apps/migration-web/app/knowledge_retrieval/page.tsx
@@ -0,0 +1,14 @@
+import { KnowledgeRetrievalWindow } from '@/components/KnowledgeRetrievalWindow'
+import styles from './page.module.css'
+
+export default function KnowledgeRetrievalPage() {
+ return (
+
+
Database Knowledge Retrieval
+
+
+ )
+}
diff --git a/frontend/apps/migration-web/app/layout.tsx b/frontend/apps/migration-web/app/layout.tsx
index 87d998fb3..11e375b4e 100644
--- a/frontend/apps/migration-web/app/layout.tsx
+++ b/frontend/apps/migration-web/app/layout.tsx
@@ -1,6 +1,7 @@
import type { Metadata } from 'next'
import type { ReactNode } from 'react'
import './globals.css'
+import Header from '@/components/Header'
export const metadata: Metadata = {
title: 'Liam Migration',
@@ -14,7 +15,10 @@ export default function RootLayout({
}>) {
return (
- {children}
+
+
+ {children}
+
)
}
diff --git a/frontend/apps/migration-web/app/vectorize/page.module.css b/frontend/apps/migration-web/app/vectorize/page.module.css
new file mode 100644
index 000000000..19c74694f
--- /dev/null
+++ b/frontend/apps/migration-web/app/vectorize/page.module.css
@@ -0,0 +1,14 @@
+.container {
+ display: flex;
+ flex-direction: column;
+ gap: 2rem;
+ padding: 2rem;
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+.title {
+ font-size: 2rem;
+ font-weight: 600;
+ margin-bottom: 1rem;
+}
diff --git a/frontend/apps/migration-web/app/vectorize/page.tsx b/frontend/apps/migration-web/app/vectorize/page.tsx
new file mode 100644
index 000000000..a936fc4db
--- /dev/null
+++ b/frontend/apps/migration-web/app/vectorize/page.tsx
@@ -0,0 +1,13 @@
+import { TextVectorizer } from '@/components/TextVectorizer'
+import { UrlVectorizer } from '@/components/UrlVectorizer'
+import styles from './page.module.css'
+
+export default function VectorizePage() {
+ return (
+
+
Vectorize Content
+
+
+
+ )
+}
diff --git a/frontend/apps/migration-web/components/Header.module.css b/frontend/apps/migration-web/components/Header.module.css
new file mode 100644
index 000000000..73e440c9f
--- /dev/null
+++ b/frontend/apps/migration-web/components/Header.module.css
@@ -0,0 +1,66 @@
+.header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 1rem 2rem;
+ background-color: #f8f9fa;
+ border-bottom: 1px solid #e9ecef;
+ width: 100%;
+}
+
+.logo {
+ display: flex;
+ align-items: center;
+}
+
+.logo h1 {
+ font-size: 1.5rem;
+ font-weight: 600;
+ color: #212529;
+ margin: 0;
+}
+
+.nav {
+ display: flex;
+ gap: 1.5rem;
+}
+
+.navLink {
+ color: #495057;
+ text-decoration: none;
+ font-weight: 500;
+ padding: 0.5rem 0.75rem;
+ border-radius: 4px;
+ transition: all 0.2s ease;
+}
+
+.navLink:hover {
+ color: #212529;
+ background-color: #e9ecef;
+}
+
+.active {
+ color: #0d6efd;
+ background-color: rgba(13, 110, 253, 0.1);
+}
+
+.active:hover {
+ color: #0d6efd;
+ background-color: rgba(13, 110, 253, 0.15);
+}
+
+@media (max-width: 768px) {
+ .header {
+ flex-direction: column;
+ padding: 1rem;
+ }
+
+ .logo {
+ margin-bottom: 1rem;
+ }
+
+ .nav {
+ width: 100%;
+ justify-content: center;
+ }
+}
diff --git a/frontend/apps/migration-web/components/Header.tsx b/frontend/apps/migration-web/components/Header.tsx
new file mode 100644
index 000000000..7c6cd5972
--- /dev/null
+++ b/frontend/apps/migration-web/components/Header.tsx
@@ -0,0 +1,49 @@
+'use client'
+
+import Link from 'next/link';
+import { usePathname } from 'next/navigation';
+import styles from './Header.module.css';
+
+const Header = () => {
+ const pathname = usePathname();
+
+ const isActive = (path: string) => {
+ return pathname === path;
+ };
+
+ return (
+
+
+
Liam Migration
+
+
+
+ );
+};
+
+export default Header;
diff --git a/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.module.css b/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.module.css
new file mode 100644
index 000000000..4e5645a02
--- /dev/null
+++ b/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.module.css
@@ -0,0 +1,127 @@
+.retrievalWindow {
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+ width: 100%;
+ border-radius: 8px;
+ background-color: #fff;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+ padding: 1.5rem;
+}
+
+.form {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.inputContainer {
+ width: 100%;
+}
+
+.queryInput {
+ width: 100%;
+ min-height: 120px;
+ padding: 1rem;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ font-size: 1rem;
+ line-height: 1.5;
+ resize: vertical;
+ transition: border-color 0.3s;
+}
+
+.queryInput:focus {
+ outline: none;
+ border-color: #0070f3;
+ box-shadow: 0 0 0 2px rgba(0, 112, 243, 0.2);
+}
+
+.controls {
+ display: flex;
+ gap: 1rem;
+}
+
+.retrieveButton,
+.resetButton {
+ padding: 0.75rem 1.5rem;
+ border: none;
+ border-radius: 4px;
+ font-size: 1rem;
+ font-weight: 500;
+ cursor: pointer;
+ transition: background-color 0.3s, transform 0.1s;
+}
+
+.retrieveButton {
+ background-color: #0070f3;
+ color: white;
+}
+
+.retrieveButton:hover:not(:disabled) {
+ background-color: #0060df;
+ transform: translateY(-1px);
+}
+
+.retrieveButton:disabled {
+ background-color: #ccc;
+ cursor: not-allowed;
+}
+
+.resetButton {
+ background-color: #f5f5f5;
+ color: #333;
+}
+
+.resetButton:hover:not(:disabled) {
+ background-color: #e5e5e5;
+}
+
+.error {
+ padding: 0.75rem;
+ background-color: #fff5f5;
+ color: #e53e3e;
+ border-radius: 4px;
+ border-left: 4px solid #e53e3e;
+}
+
+.resultContainer {
+ margin-top: 1rem;
+ min-height: 200px;
+ max-height: 500px;
+ overflow-y: auto;
+ border-radius: 4px;
+ background-color: #1e1e1e;
+ color: #e0e0e0;
+}
+
+.retrievalResult {
+ padding: 1.5rem;
+ font-size: 1rem;
+ line-height: 1.6;
+ white-space: pre-wrap;
+}
+
+.loading {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 200px;
+ gap: 1rem;
+}
+
+.spinner {
+ width: 40px;
+ height: 40px;
+ border: 4px solid rgba(0, 0, 0, 0.1);
+ border-radius: 50%;
+ border-top-color: #0070f3;
+ animation: spin 1s ease-in-out infinite;
+}
+
+@keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
diff --git a/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.tsx b/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.tsx
new file mode 100644
index 000000000..3226de3d9
--- /dev/null
+++ b/frontend/apps/migration-web/components/KnowledgeRetrievalWindow.tsx
@@ -0,0 +1,160 @@
+'use client'
+
+import {
+ type ChangeEvent,
+ type FormEvent,
+ useEffect,
+ useRef,
+ useState,
+} from 'react'
+import styles from './KnowledgeRetrievalWindow.module.css'
+
+export type KnowledgeRetrievalWindowProps = {
+ endpoint: string
+ placeholder: string
+}
+
+export const KnowledgeRetrievalWindow = ({
+ endpoint,
+ placeholder,
+}: KnowledgeRetrievalWindowProps) => {
+ const [query, setQuery] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
+ const [error, setError] = useState(null)
+ const [retrievalResult, setRetrievalResult] = useState('')
+ const textareaRef = useRef(null)
+ const resultContainerRef = useRef(null)
+
+ useEffect(() => {
+ if (textareaRef.current) {
+ textareaRef.current.style.height = 'auto'
+ textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`
+ }
+ }, [])
+
+ useEffect(() => {
+ if (resultContainerRef.current) {
+ resultContainerRef.current.scrollTop =
+ resultContainerRef.current.scrollHeight
+ }
+ }, [])
+
+ const handleSubmit = async (e: FormEvent) => {
+ e.preventDefault()
+
+ if (!query.trim()) {
+ setError('Please enter a query')
+ return
+ }
+
+ setIsLoading(true)
+ setError(null)
+ setRetrievalResult('')
+
+ try {
+ const response = await fetch(`/${endpoint}`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({ query }),
+ })
+
+ if (!response.ok) {
+ throw new Error(`An error occurred: ${response.statusText}`)
+ }
+
+ if (!response.body) {
+ throw new Error('Response body is empty')
+ }
+
+ const reader = response.body.getReader()
+ const decoder = new TextDecoder()
+
+ while (true) {
+ const { done, value } = await reader.read()
+ if (done) break
+
+ const text = decoder.decode(value)
+ setRetrievalResult((prev) => prev + text)
+ }
+ } catch (err) {
+ console.error('Error during knowledge retrieval:', err)
+ setError(
+ err instanceof Error
+ ? err.message
+ : 'An error occurred during knowledge retrieval',
+ )
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ const handleReset = () => {
+ setQuery('')
+ setRetrievalResult('')
+ setError(null)
+ }
+
+ const handleTextareaChange = (e: ChangeEvent) => {
+ setQuery(e.target.value)
+ if (textareaRef.current) {
+ textareaRef.current.style.height = 'auto'
+ textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`
+ }
+ }
+
+ return (
+
+
+
+ {error &&
{error}
}
+
+
+ {retrievalResult ? (
+
+ {retrievalResult}
+
+ ) : (
+ isLoading && (
+
+
+
AI is searching for relevant knowledge...
+
+ )
+ )}
+
+
+ )
+}
diff --git a/frontend/apps/migration-web/components/TextVectorizer.module.css b/frontend/apps/migration-web/components/TextVectorizer.module.css
new file mode 100644
index 000000000..597a0884c
--- /dev/null
+++ b/frontend/apps/migration-web/components/TextVectorizer.module.css
@@ -0,0 +1,77 @@
+.container {
+ margin-top: 2rem;
+ padding: 1.5rem;
+ border: 1px solid #e0e0e0;
+ border-radius: 8px;
+ background-color: #f9f9f9;
+}
+
+.title {
+ font-size: 1.5rem;
+ margin-bottom: 1rem;
+ color: #333;
+}
+
+.form {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.inputGroup {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.input {
+ width: 100%;
+ min-height: 100px;
+ padding: 0.75rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ font-size: 1rem;
+ resize: vertical;
+}
+
+.button {
+ padding: 0.75rem 1.5rem;
+ background-color: #0070f3;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ font-size: 1rem;
+ cursor: pointer;
+ transition: background-color 0.2s;
+}
+
+.button:hover {
+ background-color: #0060df;
+}
+
+.button:disabled {
+ background-color: #ccc;
+ cursor: not-allowed;
+}
+
+.error {
+ color: #e53e3e;
+ padding: 0.5rem;
+ border-radius: 4px;
+ background-color: #fff5f5;
+ border: 1px solid #fed7d7;
+}
+
+.success {
+ color: #38a169;
+ padding: 0.5rem;
+ border-radius: 4px;
+ background-color: #f0fff4;
+ border: 1px solid #c6f6d5;
+}
+
+.description {
+ font-size: 0.875rem;
+ color: #666;
+ line-height: 1.5;
+}
diff --git a/frontend/apps/migration-web/components/TextVectorizer.tsx b/frontend/apps/migration-web/components/TextVectorizer.tsx
new file mode 100644
index 000000000..e26d41389
--- /dev/null
+++ b/frontend/apps/migration-web/components/TextVectorizer.tsx
@@ -0,0 +1,85 @@
+'use client'
+
+import { type FormEvent, useState } from 'react'
+import styles from './TextVectorizer.module.css'
+
+export type TextVectorizerProps = {
+ endpoint: string
+}
+
+export const TextVectorizer = ({ endpoint }: TextVectorizerProps) => {
+ const [text, setText] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
+ const [error, setError] = useState(null)
+ const [success, setSuccess] = useState(null)
+
+ const handleSubmit = async (e: FormEvent) => {
+ e.preventDefault()
+
+ if (!text.trim()) {
+ setError('Please enter some text')
+ return
+ }
+
+ setIsLoading(true)
+ setError(null)
+ setSuccess(null)
+
+ try {
+ const response = await fetch(`/${endpoint}`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({ text }),
+ })
+
+ const data = await response.json()
+
+ if (!response.ok) {
+ throw new Error(data.error || `Error: ${response.statusText}`)
+ }
+
+ setSuccess(
+ `Text content successfully vectorized and stored. ID: ${data.id}`,
+ )
+ setText('')
+ } catch (err) {
+ console.error('Error during vectorization:', err)
+ setError(
+ err instanceof Error
+ ? err.message
+ : 'An error occurred while processing the text',
+ )
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ return (
+
+
Text Content Vectorization
+
+
+ )
+}
diff --git a/frontend/apps/migration-web/components/UrlVectorizer.module.css b/frontend/apps/migration-web/components/UrlVectorizer.module.css
new file mode 100644
index 000000000..55c144b8b
--- /dev/null
+++ b/frontend/apps/migration-web/components/UrlVectorizer.module.css
@@ -0,0 +1,74 @@
+.container {
+ margin-top: 2rem;
+ padding: 1.5rem;
+ border: 1px solid #e0e0e0;
+ border-radius: 8px;
+ background-color: #f9f9f9;
+}
+
+.title {
+ font-size: 1.5rem;
+ margin-bottom: 1rem;
+ color: #333;
+}
+
+.form {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.inputGroup {
+ display: flex;
+ gap: 0.5rem;
+}
+
+.input {
+ flex: 1;
+ padding: 0.75rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ font-size: 1rem;
+}
+
+.button {
+ padding: 0.75rem 1.5rem;
+ background-color: #0070f3;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ font-size: 1rem;
+ cursor: pointer;
+ transition: background-color 0.2s;
+}
+
+.button:hover {
+ background-color: #0060df;
+}
+
+.button:disabled {
+ background-color: #ccc;
+ cursor: not-allowed;
+}
+
+.error {
+ color: #e53e3e;
+ padding: 0.5rem;
+ border-radius: 4px;
+ background-color: #fff5f5;
+ border: 1px solid #fed7d7;
+}
+
+.success {
+ color: #38a169;
+ padding: 0.5rem;
+ border-radius: 4px;
+ background-color: #f0fff4;
+ border: 1px solid #c6f6d5;
+}
+
+.description {
+ font-size: 0.875rem;
+ color: #666;
+ line-height: 1.5;
+}
diff --git a/frontend/apps/migration-web/components/UrlVectorizer.tsx b/frontend/apps/migration-web/components/UrlVectorizer.tsx
new file mode 100644
index 000000000..dec9706a2
--- /dev/null
+++ b/frontend/apps/migration-web/components/UrlVectorizer.tsx
@@ -0,0 +1,92 @@
+'use client'
+
+import { type FormEvent, useState } from 'react'
+import styles from './UrlVectorizer.module.css'
+
+export type UrlVectorizerProps = {
+ endpoint: string
+}
+
+export const UrlVectorizer = ({ endpoint }: UrlVectorizerProps) => {
+ const [url, setUrl] = useState('')
+ const [isLoading, setIsLoading] = useState(false)
+ const [error, setError] = useState(null)
+ const [success, setSuccess] = useState(null)
+
+ const handleSubmit = async (e: FormEvent) => {
+ e.preventDefault()
+
+ if (!url.trim()) {
+ setError('Please enter a URL')
+ return
+ }
+
+ if (!url.startsWith('http://') && !url.startsWith('https://')) {
+ setError('Please enter a valid URL (must start with http:// or https://)')
+ return
+ }
+
+ setIsLoading(true)
+ setError(null)
+ setSuccess(null)
+
+ try {
+ const response = await fetch(`/${endpoint}`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({ url }),
+ })
+
+ const data = await response.json()
+
+ if (!response.ok) {
+ throw new Error(data.error || `Error: ${response.statusText}`)
+ }
+
+ setSuccess(
+ `URL content successfully vectorized and stored. ID: ${data.id}`,
+ )
+ setUrl('')
+ } catch (err) {
+ console.error('Error during vectorization:', err)
+ setError(
+ err instanceof Error
+ ? err.message
+ : 'An error occurred while processing the URL',
+ )
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ return (
+
+
URL Content Vectorization
+
+
+ )
+}
diff --git a/frontend/apps/migration-web/lib/index.ts b/frontend/apps/migration-web/lib/index.ts
index 57dfbdbe7..5a6eda328 100644
--- a/frontend/apps/migration-web/lib/index.ts
+++ b/frontend/apps/migration-web/lib/index.ts
@@ -1 +1,4 @@
export * from './langfuse'
+export * from './supabase'
+export * from './vectorStore'
+export * from './vectorization'
diff --git a/frontend/apps/migration-web/lib/supabase.ts b/frontend/apps/migration-web/lib/supabase.ts
new file mode 100644
index 000000000..dae7d9429
--- /dev/null
+++ b/frontend/apps/migration-web/lib/supabase.ts
@@ -0,0 +1,6 @@
+import { createClient } from '@supabase/supabase-js'
+
+export const supabaseClient = createClient(
+ process.env.SUPABASE_URL || '',
+ process.env.SUPABASE_SERVICE_ROLE_KEY || '',
+)
diff --git a/frontend/apps/migration-web/lib/vectorStore.ts b/frontend/apps/migration-web/lib/vectorStore.ts
new file mode 100644
index 000000000..904f4b899
--- /dev/null
+++ b/frontend/apps/migration-web/lib/vectorStore.ts
@@ -0,0 +1,13 @@
+import { SupabaseVectorStore } from '@langchain/community/vectorstores/supabase'
+import { OpenAIEmbeddings } from '@langchain/openai'
+import { supabaseClient } from '.'
+
+const embeddings = new OpenAIEmbeddings({
+ modelName: 'text-embedding-3-small',
+})
+
+export const vectorStore = new SupabaseVectorStore(embeddings, {
+ client: supabaseClient,
+ tableName: 'documents',
+ queryName: 'match_documents',
+})
diff --git a/frontend/apps/migration-web/lib/vectorization.ts b/frontend/apps/migration-web/lib/vectorization.ts
new file mode 100644
index 000000000..b9d4a2c3c
--- /dev/null
+++ b/frontend/apps/migration-web/lib/vectorization.ts
@@ -0,0 +1,79 @@
+import { CheerioWebBaseLoader } from '@langchain/community/document_loaders/web/cheerio'
+import { HtmlToTextTransformer } from '@langchain/community/document_transformers/html_to_text'
+import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter'
+import { vectorStore } from './vectorStore'
+
+export type VectorizationResult = {
+ documentId?: string
+ chunkCount: number
+}
+
+export async function vectorizeUrl(url: string): Promise {
+ const loader = new CheerioWebBaseLoader(url)
+ const docs = await loader.load()
+
+ const transformer = new HtmlToTextTransformer()
+ const sequence =
+ RecursiveCharacterTextSplitter.fromLanguage('html').pipe(transformer)
+ const newDocuments = await sequence.invoke(docs)
+ const pages = newDocuments.map((doc) => doc.pageContent)
+
+ const extractedText = await Promise.all(
+ pages.map(async (page) => {
+ return page.split('\n').join(' ')
+ }),
+ )
+
+ const extractedDocs = extractedText.map((text) => ({
+ pageContent: text,
+ metadata: {},
+ }))
+
+ const splitter = new RecursiveCharacterTextSplitter({
+ chunkSize: 300,
+ chunkOverlap: 0,
+ })
+
+ const chunks = await splitter.splitDocuments(extractedDocs)
+
+ for (const chunk of chunks) {
+ chunk.metadata = {
+ ...chunk.metadata,
+ source: url,
+ type: 'webpage',
+ }
+ }
+
+ const ids = await vectorStore.addDocuments(chunks)
+
+ return {
+ documentId: ids[0],
+ chunkCount: chunks.length,
+ }
+}
+
+export async function vectorizeText(
+ text: string,
+): Promise {
+ const splitter = new RecursiveCharacterTextSplitter({
+ chunkSize: 300,
+ chunkOverlap: 0,
+ })
+
+ const extractedDocs = [{ pageContent: text, metadata: {} }]
+ const chunks = await splitter.splitDocuments(extractedDocs)
+
+ for (const chunk of chunks) {
+ chunk.metadata = {
+ ...chunk.metadata,
+ type: 'text',
+ }
+ }
+
+ const ids = await vectorStore.addDocuments(chunks)
+
+ return {
+ documentId: ids[0],
+ chunkCount: chunks.length,
+ }
+}
diff --git a/frontend/apps/migration-web/package.json b/frontend/apps/migration-web/package.json
index 2891330a2..81c09a6a2 100644
--- a/frontend/apps/migration-web/package.json
+++ b/frontend/apps/migration-web/package.json
@@ -3,8 +3,11 @@
"private": true,
"version": "0.1.0",
"dependencies": {
+ "@langchain/community": "0.3.33",
"@langchain/core": "0.3.42",
"@langchain/openai": "0.4.4",
+ "@supabase/supabase-js": "2.49.1",
+ "html-to-text": "9.0.5",
"langchain": "0.3.19",
"langfuse-langchain": "3.36.0",
"next": "15.1.2",
@@ -16,7 +19,6 @@
"@types/node": "22.9.0",
"@types/react": "18",
"@types/react-dom": "18",
- "supabase": "2.15.8",
"typed-css-modules": "0.9.1",
"typescript": "5"
},
@@ -32,7 +34,7 @@
"lint": "pnpm run '/^lint:.*/'",
"lint:biome": "biome check .",
"start": "next start",
- "supabase:pull": "pnpm supabase pull",
+ "supabase:pull": "pnpm supabase db pull",
"supabase:reset": "pnpm supabase db reset",
"supabase:start": "pnpm supabase start",
"supabase:stop": "pnpm supabase stop"
diff --git a/frontend/apps/migration-web/supabase/migrations/20250304050615_remote_schema.sql b/frontend/apps/migration-web/supabase/migrations/20250304050615_remote_schema.sql
new file mode 100644
index 000000000..11e09c0e3
--- /dev/null
+++ b/frontend/apps/migration-web/supabase/migrations/20250304050615_remote_schema.sql
@@ -0,0 +1,80 @@
+create extension if not exists "vector" with schema "public" version '0.8.0';
+
+create sequence "public"."documents_id_seq";
+
+create table "public"."documents" (
+ "id" bigint not null default nextval('documents_id_seq'::regclass),
+ "content" text,
+ "metadata" jsonb,
+ "embedding" vector(1536)
+);
+
+alter sequence "public"."documents_id_seq" owned by "public"."documents"."id";
+
+CREATE UNIQUE INDEX documents_pkey ON public.documents USING btree (id);
+
+alter table "public"."documents" add constraint "documents_pkey" PRIMARY KEY using index "documents_pkey";
+
+set check_function_bodies = off;
+
+CREATE OR REPLACE FUNCTION public.match_documents(query_embedding vector, match_count integer DEFAULT NULL::integer, filter jsonb DEFAULT '{}'::jsonb)
+ RETURNS TABLE(id bigint, content text, metadata jsonb, similarity double precision)
+ LANGUAGE plpgsql
+AS $function$
+#variable_conflict use_column
+begin
+ return query
+ select
+ id,
+ content,
+ metadata,
+ 1 - (documents.embedding <=> query_embedding) as similarity
+ from documents
+ where metadata @> filter
+ order by documents.embedding <=> query_embedding
+ limit match_count;
+end;
+$function$
+;
+
+grant delete on table "public"."documents" to "anon";
+
+grant insert on table "public"."documents" to "anon";
+
+grant references on table "public"."documents" to "anon";
+
+grant select on table "public"."documents" to "anon";
+
+grant trigger on table "public"."documents" to "anon";
+
+grant truncate on table "public"."documents" to "anon";
+
+grant update on table "public"."documents" to "anon";
+
+grant delete on table "public"."documents" to "authenticated";
+
+grant insert on table "public"."documents" to "authenticated";
+
+grant references on table "public"."documents" to "authenticated";
+
+grant select on table "public"."documents" to "authenticated";
+
+grant trigger on table "public"."documents" to "authenticated";
+
+grant truncate on table "public"."documents" to "authenticated";
+
+grant update on table "public"."documents" to "authenticated";
+
+grant delete on table "public"."documents" to "service_role";
+
+grant insert on table "public"."documents" to "service_role";
+
+grant references on table "public"."documents" to "service_role";
+
+grant select on table "public"."documents" to "service_role";
+
+grant trigger on table "public"."documents" to "service_role";
+
+grant truncate on table "public"."documents" to "service_role";
+
+grant update on table "public"."documents" to "service_role";
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 35dbe8f70..c4862f42e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -178,18 +178,27 @@ importers:
frontend/apps/migration-web:
dependencies:
+ '@langchain/community':
+ specifier: 0.3.33
+ version: 0.3.33(@browserbasehq/sdk@2.3.0)(@browserbasehq/stagehand@1.13.1(@playwright/test@1.50.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.5.1(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))))(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(@supabase/supabase-js@2.49.1)(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(html-to-text@9.0.5)(ibm-cloud-sdk-core@5.1.3)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(playwright@1.50.1)(ws@8.18.0)
'@langchain/core':
specifier: 0.3.42
version: 0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))
'@langchain/openai':
specifier: 0.4.4
version: 0.4.4(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(ws@8.18.0)
+ '@supabase/supabase-js':
+ specifier: 2.49.1
+ version: 2.49.1
+ html-to-text:
+ specifier: 9.0.5
+ version: 9.0.5
langchain:
specifier: 0.3.19
- version: 0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)
+ version: 0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)
langfuse-langchain:
specifier: 3.36.0
- version: 3.36.0(langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0))
+ version: 3.36.0(langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0))
next:
specifier: 15.1.2
version: 15.1.2(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -212,9 +221,6 @@ importers:
'@types/react-dom':
specifier: '18'
version: 18.3.1
- supabase:
- specifier: 2.15.8
- version: 2.15.8
typed-css-modules:
specifier: 0.9.1
version: 0.9.1
@@ -510,6 +516,9 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@anthropic-ai/sdk@0.27.3':
+ resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==}
+
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
@@ -690,6 +699,18 @@ packages:
cpu: [x64]
os: [win32]
+ '@browserbasehq/sdk@2.3.0':
+ resolution: {integrity: sha512-H2nu46C6ydWgHY+7yqaP8qpfRJMJFVGxVIgsuHe1cx9HkfJHqzkuIqaK/k8mU4ZeavQgV5ZrJa0UX6MDGYiT4w==}
+
+ '@browserbasehq/stagehand@1.13.1':
+ resolution: {integrity: sha512-sty9bDiuuQJDOS+/uBfXpwYQY+mhFyqi6uT5wSOrazagZ5s8tgk3ryCIheB/BGS5iisc6ivAsKe9aC9n5WBTAg==}
+ peerDependencies:
+ '@playwright/test': ^1.42.1
+ deepmerge: ^4.3.1
+ dotenv: ^16.4.5
+ openai: ^4.62.1
+ zod: ^3.23.8
+
'@bundled-es-modules/deepmerge@4.3.1':
resolution: {integrity: sha512-Rk453EklPUPC3NRWc3VUNI/SSUjdBaFoaQvFRmNBNtMHVtOFD5AntiWg5kEE1hqcPqedYFDzxE3ZcMYPcA195w==}
@@ -1247,6 +1268,10 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
+ '@ibm-cloud/watsonx-ai@1.5.1':
+ resolution: {integrity: sha512-7srn4TgknDWcql63OXLNsZnqVbsqHzFVLTihDPI/UyufDxQbGdsYbdc/aEua1qW9HYDoAmEerXuYuohsMwthjw==}
+ engines: {node: '>=18.0.0'}
+
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -1436,10 +1461,6 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
- '@isaacs/fs-minipass@4.0.1':
- resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
- engines: {node: '>=18.0.0'}
-
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
@@ -1486,6 +1507,380 @@ packages:
peerDependencies:
tslib: '2'
+ '@langchain/community@0.3.33':
+ resolution: {integrity: sha512-BtgfvyPvb/HYUWLa5YXoDVMY+8pkZvaZzwp5NSebstVKsitsjuG/pwzZ7gDQO1c8LJZlxAeYyAwwQBI87ibRRg==}
+ 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
+ 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
+ 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
+ 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
+ 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.42':
resolution: {integrity: sha512-pT/jC5lqWK3YGDq8dQwgKoa6anqAhMtG1x5JbnrOj9NdaLeBbCKBDQ+/Ykzk3nZ8o+0UMsaXNZo7IVL83VVjHg==}
engines: {node: '>=18'}
@@ -2590,6 +2985,9 @@ packages:
'@rushstack/eslint-patch@1.10.4':
resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
+ '@selderee/plugin-htmlparser2@0.11.0':
+ resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
+
'@sentry-internal/browser-utils@8.49.0':
resolution: {integrity: sha512-XkPHHdFqsN7EPaB+QGUOEmpFqXiqP67t2rRZ1HG1UwJoe0PhJEKNy7b4+WRwmT7ODSt+PvFk1gNBlJBpThwH7Q==}
engines: {node: '>=14.18'}
@@ -2787,6 +3185,28 @@ packages:
peerDependencies:
storybook: ^8.3.4
+ '@supabase/auth-js@2.68.0':
+ resolution: {integrity: sha512-odG7nb7aOmZPUXk6SwL2JchSsn36Ppx11i2yWMIc/meUO2B2HK9YwZHPK06utD9Ql9ke7JKDbwGin/8prHKxxQ==}
+
+ '@supabase/functions-js@2.4.4':
+ resolution: {integrity: sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==}
+
+ '@supabase/node-fetch@2.6.15':
+ resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
+ engines: {node: 4.x || >=6.0.0}
+
+ '@supabase/postgrest-js@1.19.2':
+ resolution: {integrity: sha512-MXRbk4wpwhWl9IN6rIY1mR8uZCCG4MZAEji942ve6nMwIqnBgBnZhZlON6zTTs6fgveMnoCILpZv1+K91jN+ow==}
+
+ '@supabase/realtime-js@2.11.2':
+ resolution: {integrity: sha512-u/XeuL2Y0QEhXSoIPZZwR6wMXgB+RQbJzG9VErA3VghVt7uRfSVsjeqd7m5GhX3JR6dM/WRmLbVR8URpDWG4+w==}
+
+ '@supabase/storage-js@2.7.1':
+ resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==}
+
+ '@supabase/supabase-js@2.49.1':
+ resolution: {integrity: sha512-lKaptKQB5/juEF5+jzmBeZlz69MdHZuxf+0f50NwhL+IE//m4ZnOeWlsKRjjsM0fVayZiQKqLvYdBn0RLkhGiQ==}
+
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
@@ -2807,6 +3227,9 @@ packages:
peerDependencies:
'@testing-library/dom': '>=7.21.4'
+ '@tokenizer/token@0.3.0':
+ resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
+
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
@@ -2953,6 +3376,9 @@ packages:
'@types/node-fetch@2.6.12':
resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==}
+ '@types/node@10.14.22':
+ resolution: {integrity: sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==}
+
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
@@ -2974,6 +3400,9 @@ packages:
'@types/pg@8.6.1':
resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==}
+ '@types/phoenix@1.6.6':
+ resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==}
+
'@types/prop-types@15.7.13':
resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
@@ -3018,6 +3447,9 @@ packages:
'@types/tinycolor2@1.4.6':
resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
+ '@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==}
@@ -3027,6 +3459,9 @@ packages:
'@types/uuid@10.0.0':
resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==}
+ '@types/ws@8.5.14':
+ resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==}
+
'@typescript-eslint/eslint-plugin@8.16.0':
resolution: {integrity: sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3435,6 +3870,9 @@ packages:
resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==}
engines: {node: '>=4'}
+ axios@1.7.9:
+ resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==}
+
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -3460,10 +3898,6 @@ packages:
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
engines: {node: '>=4'}
- bin-links@5.0.0:
- resolution: {integrity: sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
@@ -3501,6 +3935,9 @@ 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-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -3614,10 +4051,6 @@ packages:
resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
engines: {node: '>= 14.16.0'}
- chownr@3.0.0:
- resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
- engines: {node: '>=18'}
-
chrome-trace-event@1.0.4:
resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
engines: {node: '>=6.0'}
@@ -3674,10 +4107,6 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
- cmd-shim@7.0.0:
- resolution: {integrity: sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
code-block-writer@13.0.3:
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
@@ -3851,10 +4280,6 @@ packages:
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
- data-uri-to-buffer@4.0.1:
- resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
- engines: {node: '>= 12'}
-
data-uri-to-buffer@6.0.2:
resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
engines: {node: '>= 14'}
@@ -4043,6 +4468,9 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
@@ -4363,6 +4791,9 @@ packages:
resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
engines: {node: '>=12.0.0'}
+ expr-eval@2.0.2:
+ resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==}
+
express@4.21.2:
resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
engines: {node: '>= 0.10.0'}
@@ -4419,10 +4850,6 @@ packages:
picomatch:
optional: true
- fetch-blob@3.2.0:
- resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
- engines: {node: ^12.20 || >= 14.13}
-
figures@3.2.0:
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
engines: {node: '>=8'}
@@ -4431,6 +4858,10 @@ packages:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.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'}
@@ -4454,9 +4885,22 @@ packages:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
flatted@3.3.2:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
+ 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.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@@ -4467,6 +4911,10 @@ 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.1:
resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
engines: {node: '>= 6'}
@@ -4475,10 +4923,6 @@ packages:
resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
engines: {node: '>= 12.20'}
- formdata-polyfill@4.0.10:
- resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
- engines: {node: '>=12.20.0'}
-
formidable@2.1.2:
resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==}
@@ -4770,9 +5214,16 @@ packages:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
engines: {node: '>=8'}
+ html-to-text@9.0.5:
+ resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==}
+ engines: {node: '>=14'}
+
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+ htmlparser2@8.0.2:
+ resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
+
htmlparser2@9.1.0:
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
@@ -4806,6 +5257,10 @@ packages:
resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==}
engines: {node: '>=10.18'}
+ ibm-cloud-sdk-core@5.1.3:
+ resolution: {integrity: sha512-FCJSK4Gf5zdmR3yEM2DDlaYDrkfhSwP3hscKzPrQEfc4/qMnFn6bZuOOw5ulr3bB/iAbfeoGF0CkIe+dWdpC7Q==}
+ engines: {node: '>=18'}
+
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -5123,6 +5578,9 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isstream@0.1.2:
+ resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
+
iterator.prototype@1.1.3:
resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==}
engines: {node: '>= 0.4'}
@@ -5226,10 +5684,20 @@ packages:
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.1:
+ resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
+
+ jws@3.2.2:
+ resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -5331,6 +5799,9 @@ packages:
resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
engines: {node: '>=0.10'}
+ leac@0.6.0:
+ resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==}
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -5362,9 +5833,30 @@ packages:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
+ 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.startcase@4.4.0:
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
@@ -5675,10 +6167,6 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
- minizlib@3.0.1:
- resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==}
- engines: {node: '>= 18'}
-
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
@@ -5793,10 +6281,6 @@ packages:
encoding:
optional: true
- node-fetch@3.3.2:
- resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
node-plop@0.26.3:
resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
engines: {node: '>=8.9.4'}
@@ -5815,10 +6299,6 @@ packages:
resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
engines: {node: '>=0.10.0'}
- npm-normalize-package-bin@4.0.0:
- resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
npm-package-arg@11.0.3:
resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -6019,6 +6499,9 @@ packages:
parse5@7.2.1:
resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
+ parseley@0.12.1:
+ resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
+
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
@@ -6087,6 +6570,13 @@ packages:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'}
+ peberminta@0.9.0:
+ resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==}
+
+ peek-readable@4.1.0:
+ resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==}
+ engines: {node: '>=8'}
+
pg-int8@1.0.1:
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
engines: {node: '>=4.0.0'}
@@ -6250,10 +6740,6 @@ packages:
resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- proc-log@5.0.0:
- resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
@@ -6286,6 +6772,9 @@ packages:
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ psl@1.15.0:
+ resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+
punycode@1.4.1:
resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
@@ -6300,6 +6789,9 @@ packages:
resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
engines: {node: '>=0.6'}
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -6393,10 +6885,6 @@ packages:
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
- read-cmd-shim@5.0.0:
- resolution: {integrity: sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
read-yaml-file@1.1.0:
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
engines: {node: '>=6'}
@@ -6409,6 +6897,14 @@ packages:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
+ 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'}
+
readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -6497,6 +6993,9 @@ packages:
resolution: {integrity: sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==}
engines: {node: '>=8.6.0'}
+ 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'}
@@ -6529,6 +7028,12 @@ packages:
resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ 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'}
@@ -6547,10 +7052,6 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rimraf@5.0.10:
- resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
- hasBin: true
-
rollup-plugin-execute@1.1.1:
resolution: {integrity: sha512-isCNR/VrwlEfWJMwsnmt5TBRod8dW1IjVRxcXCBrxDmVTeA1IXjzeLSS3inFBmRD7KDPlo38KSb2mh5v5BoWgA==}
@@ -6617,6 +7118,9 @@ packages:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
+ selderee@0.11.0:
+ resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==}
+
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -6856,6 +7360,10 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ strtok3@6.3.0:
+ resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==}
+ engines: {node: '>=10'}
+
style-dictionary@4.1.3:
resolution: {integrity: sha512-KJTkMaFbwSdSsDm6m5M6ki7oQo9vMKV37Vyj0cFpkYw6ucqQKORRQNZT0KXUubxNTtbjv2tmy9wvDSayxS0Zzg==}
engines: {node: '>=18.0.0'}
@@ -6885,11 +7393,6 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
- supabase@2.15.8:
- resolution: {integrity: sha512-yY4kVpdd7x9u5QqTW/8zUXIrMgdkBDGqQwkDugBLe8uoFdH9tVZKt0L5RmuM21RJ0MEQkby2sQrTfiXvgGyx9w==}
- engines: {npm: '>=8'}
- hasBin: true
-
superagent@7.1.6:
resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==}
engines: {node: '>=6.4.0 <13 || >=14'}
@@ -6937,10 +7440,6 @@ packages:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
- tar@7.4.3:
- resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
- engines: {node: '>=18'}
-
term-size@2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
@@ -7038,6 +7537,14 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
+ 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==}
@@ -7245,6 +7752,10 @@ packages:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
+ universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
@@ -7280,6 +7791,9 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
url@0.11.4:
resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
engines: {node: '>= 0.4'}
@@ -7449,10 +7963,6 @@ packages:
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
- web-streams-polyfill@3.3.3:
- resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
- engines: {node: '>= 8'}
-
web-streams-polyfill@4.0.0-beta.3:
resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
engines: {node: '>= 14'}
@@ -7535,10 +8045,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- write-file-atomic@6.0.0:
- resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
ws@8.18.0:
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
engines: {node: '>=10.0.0'}
@@ -7562,10 +8068,6 @@ packages:
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- yallist@5.0.0:
- resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
- engines: {node: '>=18'}
-
yaml@2.5.1:
resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
engines: {node: '>= 14'}
@@ -7636,6 +8138,18 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
+ '@anthropic-ai/sdk@0.27.3':
+ dependencies:
+ '@types/node': 18.19.78
+ '@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/code-frame@7.26.2':
dependencies:
'@babel/helper-validator-identifier': 7.25.9
@@ -7870,6 +8384,34 @@ snapshots:
'@biomejs/cli-win32-x64@1.9.3':
optional: true
+ '@browserbasehq/sdk@2.3.0':
+ dependencies:
+ '@types/node': 18.19.78
+ '@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.13.1(@playwright/test@1.50.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(zod@3.24.1)':
+ dependencies:
+ '@anthropic-ai/sdk': 0.27.3
+ '@browserbasehq/sdk': 2.3.0
+ '@playwright/test': 1.50.1
+ deepmerge: 4.3.1
+ dotenv: 16.4.7
+ openai: 4.86.1(ws@8.18.0)(zod@3.24.1)
+ ws: 8.18.0
+ zod: 3.24.1
+ zod-to-json-schema: 3.24.3(zod@3.24.1)
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - utf-8-validate
+
'@bundled-es-modules/deepmerge@4.3.1':
dependencies:
deepmerge: 4.3.1
@@ -8335,6 +8877,16 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
+ '@ibm-cloud/watsonx-ai@1.5.1(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))':
+ dependencies:
+ '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))
+ '@types/node': 18.19.78
+ extend: 3.0.2
+ ibm-cloud-sdk-core: 5.1.3
+ transitivePeerDependencies:
+ - '@langchain/core'
+ - supports-color
+
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -8525,10 +9077,6 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
- '@isaacs/fs-minipass@4.0.1':
- dependencies:
- minipass: 7.1.2
-
'@jridgewell/gen-mapping@0.3.5':
dependencies:
'@jridgewell/set-array': 1.2.1
@@ -8578,6 +9126,51 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@langchain/community@0.3.33(@browserbasehq/sdk@2.3.0)(@browserbasehq/stagehand@1.13.1(@playwright/test@1.50.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.5.1(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))))(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(@supabase/supabase-js@2.49.1)(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(html-to-text@9.0.5)(ibm-cloud-sdk-core@5.1.3)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(playwright@1.50.1)(ws@8.18.0)':
+ dependencies:
+ '@browserbasehq/stagehand': 1.13.1(@playwright/test@1.50.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(zod@3.24.1)
+ '@ibm-cloud/watsonx-ai': 1.5.1(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))
+ '@langchain/core': 0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))
+ '@langchain/openai': 0.4.4(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(ws@8.18.0)
+ binary-extensions: 2.3.0
+ expr-eval: 2.0.2
+ flat: 5.0.2
+ ibm-cloud-sdk-core: 5.1.3
+ js-yaml: 4.1.0
+ langchain: 0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)
+ langsmith: 0.3.11(openai@4.86.1(ws@8.18.0)(zod@3.24.1))
+ openai: 4.86.1(ws@8.18.0)(zod@3.24.1)
+ uuid: 10.0.0
+ zod: 3.24.1
+ zod-to-json-schema: 3.24.3(zod@3.24.1)
+ optionalDependencies:
+ '@browserbasehq/sdk': 2.3.0
+ '@supabase/supabase-js': 2.49.1
+ cheerio: 1.0.0
+ html-to-text: 9.0.5
+ ignore: 5.3.2
+ jsonwebtoken: 9.0.2
+ lodash: 4.17.21
+ playwright: 1.50.1
+ ws: 8.18.0
+ 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.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))':
dependencies:
'@cfworker/json-schema': 4.1.1
@@ -9895,6 +10488,11 @@ snapshots:
'@rushstack/eslint-patch@1.10.4': {}
+ '@selderee/plugin-htmlparser2@0.11.0':
+ dependencies:
+ domhandler: 5.0.3
+ selderee: 0.11.0
+
'@sentry-internal/browser-utils@8.49.0':
dependencies:
'@sentry/core': 8.49.0
@@ -10213,6 +10811,48 @@ snapshots:
dependencies:
storybook: 8.3.4
+ '@supabase/auth-js@2.68.0':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/functions-js@2.4.4':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/node-fetch@2.6.15':
+ dependencies:
+ whatwg-url: 5.0.0
+
+ '@supabase/postgrest-js@1.19.2':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/realtime-js@2.11.2':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+ '@types/phoenix': 1.6.6
+ '@types/ws': 8.5.14
+ ws: 8.18.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@supabase/storage-js@2.7.1':
+ dependencies:
+ '@supabase/node-fetch': 2.6.15
+
+ '@supabase/supabase-js@2.49.1':
+ dependencies:
+ '@supabase/auth-js': 2.68.0
+ '@supabase/functions-js': 2.4.4
+ '@supabase/node-fetch': 2.6.15
+ '@supabase/postgrest-js': 1.19.2
+ '@supabase/realtime-js': 2.11.2
+ '@supabase/storage-js': 2.7.1
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
'@swc/counter@0.1.3': {}
'@swc/helpers@0.5.15':
@@ -10247,6 +10887,8 @@ snapshots:
'@testing-library/dom': 10.4.0
optional: true
+ '@tokenizer/token@0.3.0': {}
+
'@tootallnate/quickjs-emscripten@0.23.0': {}
'@ts-morph/common@0.25.0':
@@ -10448,6 +11090,8 @@ snapshots:
'@types/node': 22.9.0
form-data: 4.0.1
+ '@types/node@10.14.22': {}
+
'@types/node@12.20.55': {}
'@types/node@18.19.78':
@@ -10476,6 +11120,8 @@ snapshots:
pg-protocol: 1.7.0
pg-types: 2.2.0
+ '@types/phoenix@1.6.6': {}
+
'@types/prop-types@15.7.13': {}
'@types/qs@6.9.18': {}
@@ -10523,12 +11169,18 @@ snapshots:
'@types/tinycolor2@1.4.6': {}
+ '@types/tough-cookie@4.0.5': {}
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
'@types/uuid@10.0.0': {}
+ '@types/ws@8.5.14':
+ dependencies:
+ '@types/node': 22.9.0
+
'@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -11051,6 +11703,14 @@ snapshots:
axe-core@4.10.2: {}
+ axios@1.7.9(debug@4.4.0):
+ dependencies:
+ follow-redirects: 1.15.9(debug@4.4.0)
+ form-data: 4.0.1
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
axobject-query@4.1.0: {}
bail@2.0.2: {}
@@ -11069,14 +11729,6 @@ snapshots:
dependencies:
is-windows: 1.0.2
- bin-links@5.0.0:
- dependencies:
- cmd-shim: 7.0.0
- npm-normalize-package-bin: 4.0.0
- proc-log: 5.0.0
- read-cmd-shim: 5.0.0
- write-file-atomic: 6.0.0
-
binary-extensions@2.3.0: {}
bl@4.1.0:
@@ -11133,6 +11785,8 @@ snapshots:
node-releases: 2.0.19
update-browserslist-db: 1.1.2(browserslist@4.24.4)
+ buffer-equal-constant-time@1.0.1: {}
+
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -11282,8 +11936,6 @@ snapshots:
dependencies:
readdirp: 4.0.2
- chownr@3.0.0: {}
-
chrome-trace-event@1.0.4: {}
ci-info@3.9.0: {}
@@ -11324,8 +11976,6 @@ snapshots:
clsx@2.1.1: {}
- cmd-shim@7.0.0: {}
-
code-block-writer@13.0.3: {}
collapse-white-space@2.1.0: {}
@@ -11477,8 +12127,6 @@ snapshots:
damerau-levenshtein@1.0.8: {}
- data-uri-to-buffer@4.0.1: {}
-
data-uri-to-buffer@6.0.2: {}
data-view-buffer@1.0.1:
@@ -11644,6 +12292,10 @@ snapshots:
eastasianwidth@0.2.0: {}
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
ee-first@1.1.1: {}
effect@3.6.5: {}
@@ -12180,6 +12832,8 @@ snapshots:
expect-type@1.1.0: {}
+ expr-eval@2.0.2: {}
+
express@4.21.2:
dependencies:
accepts: 1.3.8
@@ -12268,11 +12922,6 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
- fetch-blob@3.2.0:
- dependencies:
- node-domexception: 1.0.0
- web-streams-polyfill: 3.3.3
-
figures@3.2.0:
dependencies:
escape-string-regexp: 1.0.5
@@ -12281,6 +12930,12 @@ snapshots:
dependencies:
flat-cache: 3.2.0
+ 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
@@ -12317,8 +12972,14 @@ snapshots:
keyv: 4.5.4
rimraf: 3.0.2
+ flat@5.0.2: {}
+
flatted@3.3.2: {}
+ follow-redirects@1.15.9(debug@4.4.0):
+ optionalDependencies:
+ debug: 4.4.0
+
for-each@0.3.3:
dependencies:
is-callable: 1.2.7
@@ -12330,6 +12991,12 @@ snapshots:
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@4.0.1:
dependencies:
asynckit: 0.4.0
@@ -12341,10 +13008,6 @@ snapshots:
node-domexception: 1.0.0
web-streams-polyfill: 4.0.0-beta.3
- formdata-polyfill@4.0.10:
- dependencies:
- fetch-blob: 3.2.0
-
formidable@2.1.2:
dependencies:
dezalgo: 1.0.4
@@ -12775,8 +13438,23 @@ snapshots:
html-tags@3.3.1: {}
+ html-to-text@9.0.5:
+ dependencies:
+ '@selderee/plugin-htmlparser2': 0.11.0
+ deepmerge: 4.3.1
+ dom-serializer: 2.0.0
+ htmlparser2: 8.0.2
+ selderee: 0.11.0
+
html-void-elements@3.0.0: {}
+ htmlparser2@8.0.2:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ entities: 4.5.0
+
htmlparser2@9.1.0:
dependencies:
domelementtype: 2.3.0
@@ -12823,6 +13501,26 @@ snapshots:
hyperdyperid@1.2.0: {}
+ ibm-cloud-sdk-core@5.1.3:
+ dependencies:
+ '@types/debug': 4.1.12
+ '@types/node': 10.14.22
+ '@types/tough-cookie': 4.0.5
+ axios: 1.7.9(debug@4.4.0)
+ camelcase: 6.3.0
+ debug: 4.4.0
+ dotenv: 16.4.7
+ 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.7.9)
+ tough-cookie: 4.1.4
+ transitivePeerDependencies:
+ - supports-color
+
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@@ -13124,6 +13822,8 @@ snapshots:
isexe@2.0.0: {}
+ isstream@0.1.2: {}
+
iterator.prototype@1.1.3:
dependencies:
define-properties: 1.2.1
@@ -13227,6 +13927,19 @@ snapshots:
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.1
+
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.8
@@ -13234,6 +13947,17 @@ snapshots:
object.assign: 4.1.5
object.values: 1.2.0
+ jwa@1.4.1:
+ 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.1
+ safe-buffer: 5.2.1
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -13246,7 +13970,7 @@ snapshots:
kleur@3.0.3: {}
- langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0):
+ langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0):
dependencies:
'@langchain/core': 0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1))
'@langchain/openai': 0.4.4(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(ws@8.18.0)
@@ -13262,6 +13986,7 @@ snapshots:
zod: 3.24.1
zod-to-json-schema: 3.24.3(zod@3.24.1)
optionalDependencies:
+ axios: 1.7.9(debug@4.4.0)
cheerio: 1.0.0
handlebars: 4.7.8
transitivePeerDependencies:
@@ -13273,9 +13998,9 @@ snapshots:
dependencies:
mustache: 4.2.0
- langfuse-langchain@3.36.0(langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)):
+ langfuse-langchain@3.36.0(langchain@0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)):
dependencies:
- langchain: 0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)
+ langchain: 0.3.19(@langchain/core@0.3.42(openai@4.86.1(ws@8.18.0)(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.86.1(ws@8.18.0)(zod@3.24.1))(ws@8.18.0)
langfuse: 3.36.0
langfuse-core: 3.36.0
@@ -13301,6 +14026,8 @@ snapshots:
dependencies:
language-subtag-registry: 0.3.23
+ leac@0.6.0: {}
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@@ -13324,8 +14051,22 @@ snapshots:
lodash.get@4.4.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.merge@4.6.2: {}
+ lodash.once@4.1.1: {}
+
lodash.startcase@4.4.0: {}
lodash@4.17.21: {}
@@ -13881,11 +14622,6 @@ snapshots:
minipass@7.1.2: {}
- minizlib@3.0.1:
- dependencies:
- minipass: 7.1.2
- rimraf: 5.0.10
-
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
@@ -13974,12 +14710,6 @@ snapshots:
dependencies:
whatwg-url: 5.0.0
- node-fetch@3.3.2:
- dependencies:
- data-uri-to-buffer: 4.0.1
- fetch-blob: 3.2.0
- formdata-polyfill: 4.0.10
-
node-plop@0.26.3:
dependencies:
'@babel/runtime-corejs3': 7.25.7
@@ -14002,8 +14732,6 @@ snapshots:
normalize-range@0.1.2: {}
- npm-normalize-package-bin@4.0.0: {}
-
npm-package-arg@11.0.3:
dependencies:
hosted-git-info: 7.0.2
@@ -14265,6 +14993,11 @@ snapshots:
dependencies:
entities: 4.5.0
+ parseley@0.12.1:
+ dependencies:
+ leac: 0.6.0
+ peberminta: 0.9.0
+
parseurl@1.3.3: {}
pascal-case@2.0.1:
@@ -14338,6 +15071,10 @@ snapshots:
pathval@2.0.0: {}
+ peberminta@0.9.0: {}
+
+ peek-readable@4.1.0: {}
+
pg-int8@1.0.1: {}
pg-protocol@1.7.0: {}
@@ -14471,8 +15208,6 @@ snapshots:
proc-log@4.2.0: {}
- proc-log@5.0.0: {}
-
process@0.11.10: {}
progress@2.0.3: {}
@@ -14512,6 +15247,10 @@ snapshots:
proxy-from-env@1.1.0: {}
+ psl@1.15.0:
+ dependencies:
+ punycode: 2.3.1
+
punycode@1.4.1: {}
punycode@2.3.1: {}
@@ -14522,6 +15261,8 @@ snapshots:
dependencies:
side-channel: 1.0.6
+ querystringify@2.2.0: {}
+
queue-microtask@1.2.3: {}
queue@6.0.2:
@@ -14617,8 +15358,6 @@ snapshots:
dependencies:
pify: 2.3.0
- read-cmd-shim@5.0.0: {}
-
read-yaml-file@1.1.0:
dependencies:
graceful-fs: 4.2.11
@@ -14637,6 +15376,18 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
+ 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
+
readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
@@ -14795,6 +15546,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ requires-port@1.0.0: {}
+
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -14829,6 +15582,10 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
+ retry-axios@2.6.0(axios@1.7.9):
+ dependencies:
+ axios: 1.7.9(debug@4.4.0)
+
retry@0.13.1: {}
reusify@1.0.4: {}
@@ -14841,10 +15598,6 @@ snapshots:
dependencies:
glob: 7.2.3
- rimraf@5.0.10:
- dependencies:
- glob: 10.4.5
-
rollup-plugin-execute@1.1.1: {}
rollup@3.29.5:
@@ -14936,6 +15689,10 @@ snapshots:
extend-shallow: 2.0.1
kind-of: 6.0.3
+ selderee@0.11.0:
+ dependencies:
+ parseley: 0.12.1
+
semver@6.3.1: {}
semver@7.6.3: {}
@@ -15232,6 +15989,11 @@ snapshots:
strip-json-comments@3.1.1: {}
+ strtok3@6.3.0:
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ peek-readable: 4.1.0
+
style-dictionary@4.1.3:
dependencies:
'@bundled-es-modules/deepmerge': 4.3.1
@@ -15272,15 +16034,6 @@ snapshots:
pirates: 4.0.6
ts-interface-checker: 0.1.13
- supabase@2.15.8:
- dependencies:
- bin-links: 5.0.0
- https-proxy-agent: 7.0.5
- node-fetch: 3.3.2
- tar: 7.4.3
- transitivePeerDependencies:
- - supports-color
-
superagent@7.1.6:
dependencies:
component-emitter: 1.3.1
@@ -15375,15 +16128,6 @@ snapshots:
tapable@2.2.1: {}
- tar@7.4.3:
- dependencies:
- '@isaacs/fs-minipass': 4.0.1
- chownr: 3.0.0
- minipass: 7.1.2
- minizlib: 3.0.1
- mkdirp: 3.0.1
- yallist: 5.0.0
-
term-size@2.2.1: {}
terser-webpack-plugin@5.3.11(webpack@5.97.1):
@@ -15461,6 +16205,18 @@ snapshots:
toidentifier@1.0.1: {}
+ 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: {}
tree-dump@1.0.2(tslib@2.8.1):
@@ -15696,6 +16452,8 @@ snapshots:
universalify@0.1.2: {}
+ universalify@0.2.0: {}
+
universalify@2.0.1: {}
unpipe@1.0.0: {}
@@ -15734,6 +16492,11 @@ snapshots:
dependencies:
punycode: 2.3.1
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
url@0.11.4:
dependencies:
punycode: 1.4.1
@@ -15960,8 +16723,6 @@ snapshots:
dependencies:
defaults: 1.0.4
- web-streams-polyfill@3.3.3: {}
-
web-streams-polyfill@4.0.0-beta.3: {}
webidl-conversions@3.0.1: {}
@@ -16083,11 +16844,6 @@ snapshots:
wrappy@1.0.2: {}
- write-file-atomic@6.0.0:
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 4.1.0
-
ws@8.18.0: {}
xtend@4.0.2: {}
@@ -16096,8 +16852,6 @@ snapshots:
yallist@3.1.1: {}
- yallist@5.0.0: {}
-
yaml@2.5.1: {}
yargs-parser@21.1.1: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 1dea90a33..3a913657c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
packages:
- "frontend/apps/*"
- "frontend/packages/*"
+ # NOTE: ignore migration-web until it's ready to be deployed
+ - "!frontend/apps/migration-web"