diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 4c3a2075..57e658da 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -41,7 +41,6 @@ "package.json" ], "dependencies": { - "@huggingface/transformers": "^3.7.0", "@modelcontextprotocol/sdk": "^1.16.0", "@oclif/core": "^4.5.1", "@salesforce/agents": "^0.15.4", @@ -55,7 +54,6 @@ "@salesforce/source-tracking": "^7.4.8", "@salesforce/telemetry": "^6.1.0", "@salesforce/ts-types": "^2.0.11", - "faiss-node": "^0.5.1", "zod": "^3.25.76" }, "devDependencies": { diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index cf092375..b6ccff04 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -22,7 +22,6 @@ import { Command, Flags, ux } from '@oclif/core'; import Cache from './utils/cache.js'; import { Telemetry } from './telemetry.js'; import { SfMcpServer } from './sf-mcp-server.js'; -import { maybeBuildIndex } from './utils/assets.js'; import { registerToolsets } from './utils/registry-utils.js'; import { Services } from './services.js'; @@ -163,11 +162,15 @@ You can also use special values to control access to orgs: } ); - await maybeBuildIndex(this.config.dataDir); - const services = new Services({ telemetry: this.telemetry, dataDir: this.config.dataDir }); - await registerToolsets(flags.toolsets ?? ['all'], flags['dynamic-tools'] ?? false, flags['allow-non-ga-tools'] ?? false, server, services); + await registerToolsets( + flags.toolsets ?? ['all'], + flags['dynamic-tools'] ?? false, + flags['allow-non-ga-tools'] ?? false, + server, + services + ); const transport = new StdioServerTransport(); await server.connect(transport); diff --git a/packages/mcp/src/main-server-provider.ts b/packages/mcp/src/main-server-provider.ts index 9a2b23d5..f2d36da4 100644 --- a/packages/mcp/src/main-server-provider.ts +++ b/packages/mcp/src/main-server-provider.ts @@ -14,22 +14,11 @@ * limitations under the License. */ -import { McpProvider, McpTool, Services } from '@salesforce/mcp-provider-api'; +import { McpTool } from '@salesforce/mcp-provider-api'; import { SfMcpServer } from './sf-mcp-server.js'; import { EnableToolsMcpTool } from './tools/sf-enable-tools.js'; import { ListToolsMcpTool } from './tools/sf-list-tools.js'; -import { SuggestCliCommandMcpTool } from './tools/sf-suggest-cli-command.js'; export function createDynamicServerTools(server: SfMcpServer): McpTool[] { return [new EnableToolsMcpTool(server), new ListToolsMcpTool()]; } - -export class MainServerProvider extends McpProvider { - public getName(): string { - return 'MainServerProvider'; - } - - public async provideTools(services: Services): Promise { - return Promise.resolve([new SuggestCliCommandMcpTool(services)]); - } -} diff --git a/packages/mcp/src/registry.ts b/packages/mcp/src/registry.ts index ac6f48d1..c8a3d0b2 100644 --- a/packages/mcp/src/registry.ts +++ b/packages/mcp/src/registry.ts @@ -17,12 +17,10 @@ import { McpProvider } from '@salesforce/mcp-provider-api'; import { DxCoreMcpProvider } from '@salesforce/mcp-provider-dx-core'; import { CodeAnalyzerMcpProvider } from '@salesforce/mcp-provider-code-analyzer'; -import { MainServerProvider } from './main-server-provider.js'; /** -------- ADD McpProvider INSTANCES HERE ------------------------------------------------------------------------- */ export const MCP_PROVIDER_REGISTRY: McpProvider[] = [ - new MainServerProvider(), new DxCoreMcpProvider(), new CodeAnalyzerMcpProvider(), // Add new instances here diff --git a/packages/mcp/src/scripts/build-index.ts b/packages/mcp/src/scripts/build-index.ts deleted file mode 100644 index 143a6bb4..00000000 --- a/packages/mcp/src/scripts/build-index.ts +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2025, Salesforce, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { execSync } from 'node:child_process'; -import fs from 'node:fs'; -import path from 'node:path'; -import { Args, Parser, ux, Interfaces } from '@oclif/core'; -import { pipeline } from '@huggingface/transformers'; -import faiss from 'faiss-node'; -import { createWeightedEmbeddingText } from './create-embedding-text.js'; - -const normalizeCommandName = (command: string | undefined): string => (command ?? '').split(':').join(' '); - -const main = async (): Promise => { - const { - args: { outputDir }, - } = await Parser.parse(process.argv.slice(2), { - args: { - outputDir: Args.string({ - description: 'Directory to save the output files', - required: true, - }), - }, - }); - - if (!outputDir) { - ux.stderr('Output directory not specified. Please provide a path as the first argument.'); - process.exit(1); - } - - // Define the output file paths - const commandsPath = path.join(outputDir, 'sf-commands.json'); - const faissIndexPath = path.join(outputDir, 'commands-index.bin'); - - ux.stderr('Starting offline data preparation...'); - - // 1. Ensure output directory exists - if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir); - } - - // 2. Get Command Data from Salesforce CLI - ux.stderr('Fetching commands from sf CLI...'); - const rawCommandsJson = execSync('sf commands --json').toString(); - const rawCommands = JSON.parse(rawCommandsJson) as Array<{ - id: string; - summary?: string; - flags?: Array>; - description?: string; - examples?: string[]; - }>; - - // 3. Process and Clean the Data - ux.stderr('Processing and cleaning command data...'); - const commandsData = rawCommands.map((cmd, index: number) => ({ - id: index, // Use our own sequential ID for FAISS - command: normalizeCommandName(cmd.id), - summary: cmd.summary ?? 'No summary available.', - description: cmd.description ?? 'No description available.', - examples: cmd.examples ?? [], - flags: Object.values(cmd.flags ?? {}) - .filter((flag) => !flag.hidden) - .map((flag) => ({ - name: flag.name, - summary: flag.summary ?? 'No summary available.', - description: flag.description ?? 'No description available.', - type: flag.type ?? 'string', - required: flag.required ?? false, - // @ts-expect-error because options doesn't exist on boolean flags - options: (flag.options ?? []) as string[], - // @ts-expect-error because multiple doesn't exist on boolean flags - multiple: !!flag.multiple, - dependsOn: flag.dependsOn, - exclusive: flag.exclusive, - atLeastOne: flag.atLeastOne, - exactlyOne: flag.exactlyOne, - relationships: flag.relationships, - default: flag.default, - })), - // Create a more descriptive text for better embedding quality - // This will be stripped from the final output sent to the LLM to save token count - embeddingText: createWeightedEmbeddingText({ - command: normalizeCommandName(cmd.id), - summary: cmd.summary ?? '', - description: cmd.description ?? '', - examples: cmd.examples ?? [], - }), - })); - - if (commandsData.length === 0) { - ux.stderr('No command data could be processed. Is `sf` CLI installed and working?'); - return; - } - - ux.stderr(`Processed ${commandsData.length} commands.`); - - // 4. Generate Embeddings - ux.stderr('Loading embedding model... (This may take a moment)'); - const embedder = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', { - dtype: 'fp32', - }); - - ux.stderr('Generating embeddings for all commands...'); - const embeddings = await Promise.all( - commandsData.map((cmd) => embedder(cmd.embeddingText, { pooling: 'mean', normalize: true })) - ); - - // The output tensor needs to be converted to a flat Float32Array for FAISS - const embeddingDimension = embeddings[0].dims[1]; - const flattenedEmbeddings = new Float32Array(commandsData.length * embeddingDimension); - embeddings.forEach((tensor, i) => { - flattenedEmbeddings.set(tensor.data as Float32Array, i * embeddingDimension); - }); - ux.stderr(`Generated embeddings with dimension: ${embeddingDimension}`); - - // 5. Build and Save the FAISS Index - ux.stderr('Building FAISS index...'); - const index = new faiss.IndexFlatL2(embeddingDimension); - - // Convert Float32Array to regular array for faiss-node - const embeddingsArray = Array.from(flattenedEmbeddings); - index.add(embeddingsArray); - - const vectorCount = index.ntotal(); - - ux.stderr(`FAISS index built with ${String(vectorCount)} vectors.`); - // Use the correct method name for faiss-node - index.write(faissIndexPath); - ux.stderr(`FAISS index saved to: ${faissIndexPath}`); - - // 6. Save the Processed Command Data - fs.writeFileSync(commandsPath, JSON.stringify(commandsData, null, 2)); - - ux.stderr(`Command data saved to: ${commandsPath}`); - ux.stderr('Offline preparation complete!'); -}; - -main().catch((error: unknown) => { - // eslint-disable-next-line no-console - console.error(error); -}); diff --git a/packages/mcp/src/scripts/create-embedding-text.ts b/packages/mcp/src/scripts/create-embedding-text.ts deleted file mode 100644 index b57c0f85..00000000 --- a/packages/mcp/src/scripts/create-embedding-text.ts +++ /dev/null @@ -1,540 +0,0 @@ -/* - * Copyright 2025, Salesforce, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Action words - verbs that describe what a command does - * These should get the highest weight (3x) in embedding text - */ -export const SF_ACTION_WORDS: readonly string[] = [ - // Core CRUD operations - 'create', - 'generate', - 'delete', - 'update', - 'upsert', - 'get', - 'set', - 'unset', - - // Deployment & sync operations - 'deploy', - 'retrieve', - 'push', - 'pull', - 'sync', - 'convert', - 'validate', - 'preview', - - // Execution operations - 'run', - 'execute', - 'test', - 'start', - 'stop', - 'resume', - 'cancel', - 'quick', - - // Information operations - 'list', - 'display', - 'show', - 'describe', - 'query', - 'search', - 'audit', - 'check', - - // Management operations - 'assign', - 'open', - 'login', - 'logout', - 'install', - 'uninstall', - 'enable', - 'disable', - 'publish', - 'report', - - // Data operations - 'import', - 'export', - 'bulk', - 'tree', - 'results', - - // Package operations - 'promote', - 'demote', - 'version', -]; - -/** - * Domain words - nouns that represent Salesforce concepts and objects - * These should get medium weight (2x) in embedding text - */ -export const SF_DOMAIN_WORDS: readonly string[] = [ - // Core Salesforce concepts - 'org', - 'metadata', - 'project', - 'package', - 'source', - 'data', - 'user', - 'permission', - 'permset', - 'permsetlicense', - - // Development concepts - 'apex', - 'flow', - 'trigger', - 'class', - 'component', - 'lwc', - 'aura', - 'lightning', - 'visualforce', - 'app', - 'tab', - 'field', - 'object', - 'record', - 'sobject', - - // Org types - 'scratch', - 'sandbox', - 'production', - 'devhub', - 'shape', - 'snapshot', - - // Metadata types - 'layout', - 'workflow', - 'validation', - 'rule', - 'profile', - 'role', - 'queue', - 'group', - 'territory', - 'sharing', - - // Testing & analysis - 'test', - 'coverage', - 'log', - 'debug', - 'trace', - 'analyzer', - 'doctor', - - // AI & Agents - 'agent', - 'bot', - 'template', - 'spec', - 'topic', - 'action', - 'evaluation', - - // Data management - 'bulk', - 'tree', - 'query', - 'soql', - 'sosl', - 'csv', - 'json', - 'xml', - - // Package management - 'managed', - 'unlocked', - 'unmanaged', - 'installed', - 'subscriber', - - // Community & Experience - 'community', - 'experience', - 'site', - 'portal', - - // Custom metadata - 'cmdt', - 'custom', - 'standard', - - // Development tools - 'plugin', - 'command', - 'flag', - 'config', - 'alias', - 'autocomplete', - 'help', - 'interactive', - - // API & Integration - 'api', - 'rest', - 'graphql', - 'soap', - 'request', - 'response', - 'endpoint', - - // Analytics - 'analytics', - 'dashboard', - 'report', - 'dataset', - - // DevOps & Pipeline - 'pipeline', - 'devops', - 'branch', - 'git', - 'repository', - 'manifest', - - // File types - 'file', - 'directory', - 'path', - 'zip', - 'archive', -]; - -/** - * Modifier words - adjectives and adverbs that modify actions - * These should get light weight (1.5x) in embedding text - */ -export const SF_MODIFIER_WORDS: readonly string[] = [ - // Action modifiers - 'quick', - 'async', - 'sync', - 'force', - 'dry', - 'preview', - 'validate', - 'check', - 'watch', - 'tail', - 'poll', - - // Scope modifiers - 'all', - 'local', - 'remote', - 'global', - 'default', - 'target', - 'source', - 'current', - 'recent', - 'latest', - 'specific', - - // State modifiers - 'active', - 'inactive', - 'enabled', - 'disabled', - 'tracked', - 'untracked', - 'deployed', - 'pending', - 'failed', - 'successful', - - // Type modifiers - 'managed', - 'unmanaged', - 'unlocked', - 'locked', - 'protected', - 'public', - 'private', - 'shared', - - // Format modifiers - 'formatted', - 'raw', - 'pretty', - 'compact', - 'verbose', - 'concise', - 'detailed', - 'summary', -]; - -/** - * Context words - structural terms that provide context - * These should get normal weight (1x) in embedding text - */ -export const SF_CONTEXT_WORDS: readonly string[] = [ - // Structural - 'force', - 'sf', - 'sfdx', - 'cli', - 'salesforce', - - // Directories - 'app', - 'main', - 'default', - 'classes', - 'objects', - 'layouts', - 'tabs', - 'flows', - 'triggers', - 'components', - 'static', - 'resources', - - // File extensions (without dots) - 'cls', - 'trigger', - 'page', - 'component', - 'app', - 'evt', - 'intf', - 'cmp', - 'design', - 'svg', - 'css', - 'js', - 'xml', - 'meta', - - // Common patterns - 'scratch', - 'def', - 'definition', - 'configuration', - 'settings', - 'preferences', - 'options', - 'parameters', - 'arguments', - 'flags', - 'values', -]; - -/** - * Synonym mappings for expanding keywords with related terms - * This helps match user queries that use different but related terminology - */ -const SYNONYM_MAP: Record = { - // Action synonyms - deploy: ['deployment', 'deploying', 'push', 'upload', 'send'], - retrieve: ['pull', 'download', 'fetch', 'get', 'sync'], - list: ['show', 'display', 'enumerate', 'ls', 'view'], - create: ['make', 'generate', 'new', 'add', 'build'], - delete: ['remove', 'destroy', 'rm', 'drop', 'erase'], - update: ['modify', 'change', 'edit', 'alter', 'refresh'], - run: ['execute', 'start', 'launch', 'invoke'], - query: ['search', 'find', 'select', 'lookup'], - open: ['launch', 'start', 'view', 'access'], - login: ['authenticate', 'auth', 'signin', 'connect'], - logout: ['disconnect', 'signout', 'unauthenticate'], - install: ['add', 'setup', 'configure'], - uninstall: ['remove', 'delete', 'unsetup'], - convert: ['transform', 'migrate', 'change', 'translate'], - validate: ['verify', 'check', 'confirm', 'test'], - preview: ['view', 'show', 'display', 'check'], - report: ['status', 'info', 'summary', 'details'], - resume: ['continue', 'restart', 'proceed'], - cancel: ['stop', 'abort', 'terminate', 'halt'], - - // Domain synonyms - org: ['organization', 'environment', 'instance', 'tenant'], - metadata: ['meta', 'components', 'definitions', 'config'], - scratch: ['dev', 'development', 'temp', 'temporary', 'trial'], - sandbox: ['test', 'staging', 'non-prod', 'development'], - production: ['prod', 'live', 'main', 'release'], - apex: ['code', 'classes', 'triggers', 'programming'], - flow: ['workflow', 'process', 'automation'], - component: ['comp', 'lwc', 'aura', 'element'], - lightning: ['lwc', 'aura', 'web-component'], - object: ['sobject', 'entity', 'table', 'record-type'], - field: ['column', 'attribute', 'property'], - record: ['row', 'data', 'entry', 'item'], - user: ['person', 'account', 'profile', 'identity'], - permission: ['access', 'rights', 'privileges', 'security'], - permset: ['permission-set', 'permissions', 'access-set'], - package: ['app', 'bundle', 'module', 'extension'], - source: ['code', 'files', 'project-files'], - data: ['records', 'information', 'content'], - test: ['testing', 'tests', 'verification', 'validation'], - log: ['logs', 'debug', 'trace', 'output'], - agent: ['bot', 'assistant', 'ai', 'chatbot'], - template: ['spec', 'blueprint', 'pattern', 'example'], - manifest: ['package-xml', 'config', 'definition'], - bulk: ['batch', 'mass', 'multiple', 'many'], - api: ['service', 'endpoint', 'interface', 'web-service'], - devhub: ['dev-hub', 'development-hub', 'hub'], - - // Format synonyms - json: ['javascript-object-notation', 'data'], - xml: ['markup', 'config', 'meta'], - csv: ['comma-separated', 'spreadsheet', 'data'], - - // Common user terms - setup: ['configure', 'install', 'create', 'initialize'], - config: ['configuration', 'settings', 'preferences'], - info: ['information', 'details', 'data', 'summary'], - help: ['assistance', 'documentation', 'guide', 'support'], -}; - -/** - * Expand a list of keywords with their synonyms - */ -function expandWithSynonyms(keywords: string[]): string[] { - const expanded = new Set(keywords); - - keywords.forEach((keyword) => { - const synonyms = SYNONYM_MAP[keyword]; - if (synonyms) { - synonyms.forEach((synonym) => expanded.add(synonym)); - } - }); - - return Array.from(expanded); -} - -/** - * Extract keywords from a command string and categorize them - */ -function extractKeywords(command: string): { - actions: string[]; - domains: string[]; - modifiers: string[]; - context: string[]; -} { - const words = command - .toLowerCase() - .split(/[\s:-]+/) - .filter((word) => word.length > 0); - - return { - actions: words.filter((word) => SF_ACTION_WORDS.includes(word)), - domains: words.filter((word) => SF_DOMAIN_WORDS.includes(word)), - modifiers: words.filter((word) => SF_MODIFIER_WORDS.includes(word)), - context: words.filter((word) => SF_CONTEXT_WORDS.includes(word)), - }; -} - -/** - * Create weighted embedding text for a command - */ -export function createWeightedEmbeddingText({ - command, - summary, - description, - examples, -}: { - command: string; - summary: string; - description: string; - examples: string[]; -}): string { - const keywords = extractKeywords(command); - - // Expand keywords with synonyms for better matching - const expandedActions = expandWithSynonyms(keywords.actions); - const expandedDomains = expandWithSynonyms(keywords.domains); - const expandedModifiers = expandWithSynonyms(keywords.modifiers); - - // Build weighted sections with cleaner formatting - const weightedSections = []; - - // Primary actions (3x weight) - space-separated repetitions - if (keywords.actions.length > 0) { - const actionWords = keywords.actions.join(' '); - weightedSections.push(`${actionWords} ${actionWords} ${actionWords}`); - - // Add synonyms (2x weight) - const synonyms = expandedActions.filter((word) => !keywords.actions.includes(word)); - if (synonyms.length > 0) { - const synonymText = synonyms.join(' '); - weightedSections.push(`${synonymText} ${synonymText}`); - } - } - - // Domain objects (2x weight) - space-separated repetitions - if (keywords.domains.length > 0) { - const domainWords = keywords.domains.join(' '); - weightedSections.push(`${domainWords} ${domainWords}`); - - // Add synonyms (1x weight) - const synonyms = expandedDomains.filter((word) => !keywords.domains.includes(word)); - if (synonyms.length > 0) { - weightedSections.push(synonyms.join(' ')); - } - } - - // Modifiers (1.5x weight - approximate with 1.5 repetitions) - if (keywords.modifiers.length > 0) { - const modifierWords = keywords.modifiers.join(' '); - weightedSections.push(`${modifierWords} ${modifierWords}`); - - // Add modifier synonyms - const synonyms = expandedModifiers.filter((word) => !keywords.modifiers.includes(word)); - if (synonyms.length > 0) { - weightedSections.push(synonyms.join(' ')); - } - } - - // Natural language expansion - if (keywords.actions.length > 0 && keywords.domains.length > 0) { - const primaryAction = keywords.actions[0]; - const primaryDomain = keywords.domains[0]; - - // Core action-domain pairs - weightedSections.push(`${primaryAction} ${primaryDomain}`); - weightedSections.push(`how to ${primaryAction} ${primaryDomain}`); - - // Add top synonym variations for better natural language matching - const actionSynonyms = SYNONYM_MAP[primaryAction]; - const domainSynonyms = SYNONYM_MAP[primaryDomain]; - - if (actionSynonyms && actionSynonyms.length > 0) { - weightedSections.push(`${actionSynonyms[0]} ${primaryDomain}`); - } - if (domainSynonyms && domainSynonyms.length > 0) { - weightedSections.push(`${primaryAction} ${domainSynonyms[0]}`); - } - } - - // Include natural content for semantic understanding - return `${weightedSections.join( - ' ' - )}\n\nCommand: ${command}\nSummary: ${summary}\n\nDescription: ${description}\n\nExamples:\n${ - examples?.join('\n') ?? 'No examples available' - }`; -} diff --git a/packages/mcp/src/tools/sf-suggest-cli-command.ts b/packages/mcp/src/tools/sf-suggest-cli-command.ts deleted file mode 100644 index 3bdb6b74..00000000 --- a/packages/mcp/src/tools/sf-suggest-cli-command.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2025, Salesforce, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { z } from 'zod'; -import { McpTool, McpToolConfig, Toolset, Services, ReleaseState } from '@salesforce/mcp-provider-api'; -import { CallToolResult } from '@modelcontextprotocol/sdk/types.js'; -import { getAssets } from '../utils/assets.js'; - -/** - * Suggest a Salesforce CLI (sf) command based on user input. - */ - -const suggestCliCommandParamsSchema = z.object({ - query: z.string().describe('The natural language query to suggest an `sf` command'), -}); - -type InputArgs = z.infer; -type InputArgsShape = typeof suggestCliCommandParamsSchema.shape; -type OutputArgsShape = z.ZodRawShape; - -type CommandData = { - id: number; - command: string; - summary: string; - description: string; - examples?: string[]; - flags?: Array<{ - name: string; - description: string; - type?: string; - required?: boolean; - options?: string[]; - atLeastOne?: boolean; - exactlyOne?: boolean; - relationships?: string[]; - default?: string | boolean | number | string[]; // Default value can be a string - }>; - embeddingText: string; -}; - -export class SuggestCliCommandMcpTool extends McpTool { - public constructor(private readonly services: Services) { - super(); - } - - public getReleaseState(): ReleaseState { - return ReleaseState.GA; - } - - public getToolsets(): Toolset[] { - return [Toolset.CORE]; - } - - public getName(): string { - return 'sf-suggest-cli-command'; - } - - public getConfig(): McpToolConfig { - return { - title: 'Suggest CLI Command', - description: `Suggests an \`sf\` CLI command based on a natural language query. It finds relevant commands from a local index and uses an LLM to construct the final, precise command to fulfill the user's request. - -AGENT INSTRUCTIONS: -Use this tool whenever a user: - - asks for guidance on how to use the Salesforce CLI (sf or sfdx) - - needs help with Salesforce CLI (sf or sfdx) command syntax - - wants to know what Salesforce CLI (sf or sfdx) command to run for a specific task - - asks questions like 'how do I...', 'what command...', or 'how to...' related to Salesforce development operations. -NEVER use this tool for enabling Salesforce MCP tools (use sf-enable-tools instead). -NEVER use this tool for listing available Salesforce MCP tools (use sf-list-tools instead). -NEVER use this tool for understanding the Salesforce MCP server's capabilities. -NEVER use this tool for understanding the input schema of a Salesforce MCP tool.`, - inputSchema: suggestCliCommandParamsSchema.shape, - outputSchema: undefined, - annotations: { - readOnlyHint: true, - }, - }; - } - - public async exec(input: InputArgs): Promise { - const assets = await getAssets( - this.services.getConfigService().getDataDir(), - 'sf-commands.json', - 'commands-index.bin' - ); - - // Embed the user query - const queryEmbedding = await assets.embedder(input.query, { - pooling: 'mean', - normalize: true, - }); - - // Perform Semantic Search (FAISS) - const searchResults = assets.index.search( - // Convert the embedding tensor data to a flat array of numbers - Array.from(queryEmbedding.data as Float32Array), - 5 - ); - - const topCandidateIds = searchResults.labels.slice(0, 5); - const contextCommands = topCandidateIds.map((id) => { - const command = assets.data.find((c) => c.id === id)!; - // Remove the embedding text to avoid sending it to the LLM - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { embeddingText, ...commandWithoutEmbeddingText } = command; - return commandWithoutEmbeddingText; - }); - - contextCommands.forEach((command, index) => { - // eslint-disable-next-line no-console - console.error(`Command: ${command.command}, Score: ${searchResults.distances[index]}`); - }); - - const prompt = `System: You are a precise expert on the Salesforce CLI (sf). Your sole purpose is to construct a single, valid sf command based on the user's request and the Command Reference provided. -- Base your answer STRICTLY on the user's request and the Command Reference. -- If there is no command that matches the user's request, tell the user that you cannot find a command. -- Do not use any flags or commands not listed in the reference. - -User Request: -"${input.query}" - -Command Reference: -${JSON.stringify(contextCommands, null, 2)} - -Notes about Flag Properties: -- multiple: Flags that support multiple values should be specified with the '--flag value1 --flag value2' syntax. -- dependsOn: If a flag depends on another flag, ensure that the dependent flag is included in the command. -- atLeastOne: If a flag requires at least one of a set of flags, ensure that at least one of those flags is included in the command. -- exactlyOne: If a flag requires exactly one of a set of flags, ensure that exactly one of those flags is included in the command. -- exclusive: If a flag is exclusive with another flag, ensure that only one of those flags is included in the command. -- required: If a flag is required, ensure that it is included in the command unless it has a default value. -- relationships: If a flag has relationships with other flags, ensure that those relationships are respected in the command. -- options: If a flag has options, ensure that one of those options is used - - -Synthesize the single "sf" command that best fulfills the user's request. -`; - - return { - isError: false, - content: [ - { - type: 'text', - text: prompt, - }, - ], - }; - } -} diff --git a/packages/mcp/src/utils/assets.ts b/packages/mcp/src/utils/assets.ts deleted file mode 100644 index 7399fbec..00000000 --- a/packages/mcp/src/utils/assets.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2025, Salesforce, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import fs from 'node:fs'; -import { resolve, join } from 'node:path'; -import { spawn } from 'node:child_process'; -import { FeatureExtractionPipeline } from '@huggingface/transformers'; -import faiss from 'faiss-node'; -import { pipeline } from '@huggingface/transformers'; -import { ux } from '@oclif/core'; - -type Assets = { - data: T; - embedder: FeatureExtractionPipeline; - index: faiss.IndexFlatL2; -}; - -/** - * Conditionally builds or rebuilds a FAISS index based on its existence and age. - * - * This function checks if a FAISS index file exists in the specified output directory. - * If the index exists but is older than one week, it triggers a rebuild. If the index - * doesn't exist, it initiates the initial build process. The build process can run as a - * detached child process or in the same process depending on the detached parameter. - * - * @param indexPath - The path to the FAISS index file. - * @param detached - Whether to run the build process detached (default: true) - */ -export async function maybeBuildIndex(indexPath: string, detached = true): Promise { - try { - const stats = fs.statSync(indexPath); - const oneWeekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); - ux.stderr(`Checking FAISS index in ${indexPath}...`); - ux.stderr(`Last modified: ${stats.mtime.toString()}`); - - if (stats.mtime < oneWeekAgo) { - ux.stderr(`FAISS index is more than 1 week old - rebuilding in ${indexPath}...`); - await spawnBuildScript(indexPath, detached); - } else { - ux.stderr(`FAISS index is up to date in ${indexPath}. No rebuild needed.`); - } - } catch (error) { - // File doesn't exist, so build the index - ux.stderr(`Building FAISS index in ${indexPath}...`); - await spawnBuildScript(indexPath, detached); - } -} - -function spawnBuildScript(outputDir: string, detached: boolean): Promise { - const scriptPath = resolve(import.meta.dirname, '..', 'scripts', 'build-index.js'); - const args = [scriptPath, outputDir]; - - if (detached) { - spawn('node', args, { - detached: true, - stdio: 'ignore', - }).unref(); - return Promise.resolve(); - } else { - return new Promise((res, reject) => { - const childProcess = spawn('node', args, { - stdio: 'inherit', - }); - - childProcess.on('close', (code) => { - if (code === 0) { - res(); - } else { - reject(new Error(`Build script exited with code ${code ?? 'UNKNOWN'}`)); - } - }); - - childProcess.on('error', (error) => { - reject(error); - }); - }); - } -} - -export async function getAssets(dataDir: string, dataPath: string, indexPath: string): Promise> { - const fullDataPath = join(dataDir, dataPath); - const fullIndexPath = join(dataDir, indexPath); - - // Ensure the index is built or rebuilt if necessary - await maybeBuildIndex(fullIndexPath, false); - - try { - await fs.promises.access(fullDataPath); - } catch { - throw new Error(`Commands file not found at ${fullDataPath}. Please run maybeBuildIndex to build the index.`); - } - - try { - await fs.promises.access(fullIndexPath); - } catch { - throw new Error(`FAISS index not found at ${fullIndexPath}. Please run maybeBuildIndex to build the index.`); - } - - try { - const dataRaw = await fs.promises.readFile(fullDataPath, 'utf-8'); - const data = JSON.parse(dataRaw) as T; - const index = faiss.IndexFlatL2.read(fullIndexPath); - const embedder = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', { - dtype: 'fp32', - }); - - return { - data, - index, - embedder, - }; - } catch (error) { - throw new Error(`Failed to load assets: ${error instanceof Error ? error.message : 'Unknown error'}`); - } -} diff --git a/yarn.lock b/yarn.lock index 95ad066a..21bdd5ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1250,13 +1250,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@emnapi/runtime@^1.4.4": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.5.tgz#c67710d0661070f38418b6474584f159de38aba9" - integrity sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg== - dependencies: - tslib "^2.4.0" - "@es-joy/jsdoccomment@~0.41.0": version "0.41.0" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz#4a2f7db42209c0425c71a1476ef1bdb6dcd836f6" @@ -1509,21 +1502,6 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== -"@huggingface/jinja@^0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@huggingface/jinja/-/jinja-0.5.1.tgz#081d334ddcf6237f65561ae3d665bb713a8ff74f" - integrity sha512-yUZLld4lrM9iFxHCwFQ7D1HW2MWMwSbeB7WzWqFYDWK+rEb+WldkLdAJxUPOmgICMHZLzZGVcVjFh3w/YGubng== - -"@huggingface/transformers@^3.7.0": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@huggingface/transformers/-/transformers-3.7.2.tgz#a44dab60278762ea74c8e6ebce14b8d60236a976" - integrity sha512-6SOxo6XziupnQ5Vs5vbbs74CNB6ViHLHGQJjY6zj88JeiDtJ2d/ADKxaay688Sf2KcjtdF3dyBL11C5pJS2NxQ== - dependencies: - "@huggingface/jinja" "^0.5.1" - onnxruntime-node "1.21.0" - onnxruntime-web "1.22.0-dev.20250409-89f8206ba4" - sharp "^0.34.1" - "@humanfs/core@^0.19.1": version "0.19.1" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" @@ -1566,136 +1544,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@img/sharp-darwin-arm64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz#4850c8ace3c1dc13607fa07d43377b1f9aa774da" - integrity sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg== - optionalDependencies: - "@img/sharp-libvips-darwin-arm64" "1.2.0" - -"@img/sharp-darwin-x64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz#edf93fb01479604f14ad6a64a716e2ef2bb23100" - integrity sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA== - optionalDependencies: - "@img/sharp-libvips-darwin-x64" "1.2.0" - -"@img/sharp-libvips-darwin-arm64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz#e20e9041031acde1de19da121dc5162c7d2cf251" - integrity sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ== - -"@img/sharp-libvips-darwin-x64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz#918ca81c5446f31114834cb908425a7532393185" - integrity sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg== - -"@img/sharp-libvips-linux-arm64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz#1a5beafc857b43f378c3030427aa981ee3edbc54" - integrity sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA== - -"@img/sharp-libvips-linux-arm@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz#bff51182d5238ca35c5fe9e9f594a18ad6a5480d" - integrity sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw== - -"@img/sharp-libvips-linux-ppc64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz#10c53ccf6f2d47d71fb3fa282697072c8fe9e40e" - integrity sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ== - -"@img/sharp-libvips-linux-s390x@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz#392fd7557ddc5c901f1bed7ab3c567c08833ef3b" - integrity sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw== - -"@img/sharp-libvips-linux-x64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz#9315cf90a2fdcdc0e29ea7663cbd8b0f15254400" - integrity sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg== - -"@img/sharp-libvips-linuxmusl-arm64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz#705e03e67d477f6f842f37eb7f66285b1150dc06" - integrity sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q== - -"@img/sharp-libvips-linuxmusl-x64@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz#ec905071cc538df64848d5900e0d386d77c55f13" - integrity sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q== - -"@img/sharp-linux-arm64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz#476f8f13ce192555391ae9d4bc658637a6acf3e5" - integrity sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA== - optionalDependencies: - "@img/sharp-libvips-linux-arm64" "1.2.0" - -"@img/sharp-linux-arm@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz#9898cd68ea3e3806b94fe25736d5d7ecb5eac121" - integrity sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A== - optionalDependencies: - "@img/sharp-libvips-linux-arm" "1.2.0" - -"@img/sharp-linux-ppc64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz#6a7cd4c608011333a0ddde6d96e03ac042dd9079" - integrity sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA== - optionalDependencies: - "@img/sharp-libvips-linux-ppc64" "1.2.0" - -"@img/sharp-linux-s390x@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz#48e27ab969efe97d270e39297654c0e0c9b42919" - integrity sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ== - optionalDependencies: - "@img/sharp-libvips-linux-s390x" "1.2.0" - -"@img/sharp-linux-x64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz#5aa77ad4aa447ddf6d642e2a2c5599eb1292dfaa" - integrity sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ== - optionalDependencies: - "@img/sharp-libvips-linux-x64" "1.2.0" - -"@img/sharp-linuxmusl-arm64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz#62053a9d77c7d4632c677619325b741254689dd7" - integrity sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64" "1.2.0" - -"@img/sharp-linuxmusl-x64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz#5107c7709c7e0a44fe5abef59829f1de86fa0a3a" - integrity sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64" "1.2.0" - -"@img/sharp-wasm32@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz#c1dcabb834ec2f71308a810b399bb6e6e3b79619" - integrity sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg== - dependencies: - "@emnapi/runtime" "^1.4.4" - -"@img/sharp-win32-arm64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz#3e8654e368bb349d45799a0d7aeb29db2298628e" - integrity sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ== - -"@img/sharp-win32-ia32@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz#9d4c105e8d5074a351a81a0b6d056e0af913bf76" - integrity sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw== - -"@img/sharp-win32-x64@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz#d20c89bd41b1dd3d76d8575714aaaa3c43204b6a" - integrity sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g== - "@inquirer/checkbox@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.2.1.tgz#45125a32f27c5cfd82a23d5ecf49b4dc137e1247" @@ -1919,13 +1767,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@isaacs/fs-minipass@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" - integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== - dependencies: - minipass "^7.0.4" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -4818,22 +4659,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -4854,11 +4679,6 @@ body-parser@^2.2.0: raw-body "^3.0.0" type-is "^2.0.0" -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - bowser@^2.11.0: version "2.12.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.12.0.tgz#c56edc7bc9d18b7e1f062bfea0a53f564af613ed" @@ -4918,14 +4738,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -5186,16 +4998,6 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" - integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== - ci-info@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7" @@ -5312,27 +5114,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - colorette@^2.0.7: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" @@ -5692,11 +5478,6 @@ deep-eql@^5.0.1: resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -5779,11 +5560,6 @@ detect-indent@^7.0.1: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" integrity sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g== -detect-libc@^2.0.0, detect-libc@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" - integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== - detect-newline@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-4.0.1.tgz#fcefdb5713e1fb8cb2839b8b6ee22e6716ab8f23" @@ -5794,11 +5570,6 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - devlop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" @@ -5964,7 +5735,7 @@ encodeurl@^2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0: version "1.4.5" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== @@ -6101,7 +5872,7 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -es6-error@^4.0.1, es6-error@^4.1.1: +es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== @@ -6596,11 +6367,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - expect-type@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.2.tgz#c030a329fb61184126c8447585bc75a7ec6fbff3" @@ -6649,15 +6415,6 @@ extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -faiss-node@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/faiss-node/-/faiss-node-0.5.1.tgz#7b200d09313b7c225ff29800dfe8afbb5fe49393" - integrity sha512-zD8wobJn8C6OLWo68Unho+Ih8l6nSRB2w3Amj01a+xc4bsEvd2mBDLklAn7VocA9XO3WDvQL/bLpi5flkCn/XQ== - dependencies: - bindings "^1.5.0" - node-addon-api "^6.0.0" - prebuild-install "^7.1.1" - fast-copy@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" @@ -6775,11 +6532,6 @@ file-entry-cache@^8.0.0: dependencies: flat-cache "^4.0.0" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -6869,11 +6621,6 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatbuffers@^25.1.24: - version "25.2.10" - resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-25.2.10.tgz#308b750545f62db670ca4c9d7dbc66161420a95e" - integrity sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw== - flatted@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" @@ -6933,11 +6680,6 @@ fromentries@^1.2.0: resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^11.0.0: version "11.3.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.1.tgz#ba7a1f97a85f94c6db2e52ff69570db3671d5a74" @@ -7108,11 +6850,6 @@ git-raw-commits@^4.0.0: meow "^12.0.1" split2 "^4.0.0" -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - github-slugger@^2: version "2.0.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" @@ -7179,18 +6916,6 @@ glob@^8.1.0: minimatch "^5.0.1" once "^1.3.0" -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - global-directory@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" @@ -7236,7 +6961,7 @@ globals@~15.14.0: resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== -globalthis@^1.0.1, globalthis@^1.0.4: +globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -7310,11 +7035,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -guid-typescript@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/guid-typescript/-/guid-typescript-1.0.9.tgz#e35f77003535b0297ea08548f5ace6adb1480ddc" - integrity sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ== - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -7557,7 +7277,7 @@ iconv-lite@0.6.3, iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -7628,7 +7348,7 @@ ini@4.1.1: resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -7676,11 +7396,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - is-async-function@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" @@ -8500,7 +8215,7 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -long@^5.0.0, long@^5.2.3: +long@^5.0.0: version "5.3.2" resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== @@ -8642,13 +8357,6 @@ marked@^13.0.0: resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.3.tgz#5c5b4a5d0198060c7c9bc6ef9420a7fed30f822d" integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA== -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -8892,7 +8600,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -8904,28 +8612,11 @@ minimisted@^2.0.0: dependencies: minimist "^1.2.5" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -minizlib@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574" - integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA== - dependencies: - minipass "^7.1.2" - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" - integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== - mocha@^10.7.0: version "10.8.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" @@ -8990,11 +8681,6 @@ nanoid@^3.3.11: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== -napi-build-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" - integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -9049,18 +8735,6 @@ nock@^13.5.6: json-stringify-safe "^5.0.1" propagate "^2.0.0" -node-abi@^3.3.0: - version "3.75.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.75.0.tgz#2f929a91a90a0d02b325c43731314802357ed764" - integrity sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg== - dependencies: - semver "^7.3.5" - -node-addon-api@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - node-fetch@^2.6.1, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -9309,37 +8983,6 @@ oniguruma-to-es@^2.2.0: regex "^5.1.1" regex-recursion "^5.1.1" -onnxruntime-common@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.21.0.tgz#a81d4191d418acbbff2546a954cc2cc23eeb09f8" - integrity sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ== - -onnxruntime-common@1.22.0-dev.20250409-89f8206ba4: - version "1.22.0-dev.20250409-89f8206ba4" - resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.22.0-dev.20250409-89f8206ba4.tgz#3d4a39563b93db3d0428b5527cba58a3c8f826c2" - integrity sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ== - -onnxruntime-node@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.21.0.tgz#7f4f59455baf851181e207fc8401288ac2eb10d1" - integrity sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw== - dependencies: - global-agent "^3.0.0" - onnxruntime-common "1.21.0" - tar "^7.0.1" - -onnxruntime-web@1.22.0-dev.20250409-89f8206ba4: - version "1.22.0-dev.20250409-89f8206ba4" - resolved "https://registry.yarnpkg.com/onnxruntime-web/-/onnxruntime-web-1.22.0-dev.20250409-89f8206ba4.tgz#d1e3a04e03dfee392b41d420ef547b6a0351b06b" - integrity sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ== - dependencies: - flatbuffers "^25.1.24" - guid-typescript "^1.0.9" - long "^5.2.3" - onnxruntime-common "1.22.0-dev.20250409-89f8206ba4" - platform "^1.3.6" - protobufjs "^7.2.4" - open@^10.1.0, open@^10.1.2: version "10.2.0" resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" @@ -9735,11 +9378,6 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -platform@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" - integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -9759,24 +9397,6 @@ postcss@^8.5.6: picocolors "^1.1.1" source-map-js "^1.2.1" -prebuild-install@^7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" - integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^2.0.0" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9874,24 +9494,6 @@ protobufjs@7.2.6: "@types/node" ">=13.7.0" long "^5.0.0" -protobufjs@^7.2.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" - integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - proxy-addr@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -9991,16 +9593,6 @@ raw-body@^3.0.0: iconv-lite "0.6.3" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-dom@^18.3.1: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -10067,7 +9659,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -10311,18 +9903,6 @@ rimraf@^6.0.1: glob "^11.0.0" package-json-from-dist "^1.0.0" -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - rollup@^4.43.0: version "4.47.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.47.1.tgz#c40bce25b7140265dbe5467cd32871f71e9f9f0b" @@ -10447,11 +10027,6 @@ secure-json-parse@^2.4.0: resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -10469,7 +10044,7 @@ semver@^6.0.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3, semver@^7.7.1, semver@^7.7.2: +semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3, semver@^7.7.1, semver@^7.7.2: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== @@ -10505,13 +10080,6 @@ sequin@*: resolved "https://registry.yarnpkg.com/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" integrity sha512-hJWMZRwP75ocoBM+1/YaCsvS0j5MTPeBHJkS2/wruehl9xwtX30HlDF1Gt6UZ8HHHY8SJa2/IL+jo+JJCd59rA== -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" @@ -10602,38 +10170,6 @@ sha.js@^2.4.9: safe-buffer "^5.2.1" to-buffer "^1.2.0" -sharp@^0.34.1: - version "0.34.3" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.3.tgz#10a03bcd15fb72f16355461af0b9245ccb8a5da3" - integrity sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg== - dependencies: - color "^4.2.3" - detect-libc "^2.0.4" - semver "^7.7.2" - optionalDependencies: - "@img/sharp-darwin-arm64" "0.34.3" - "@img/sharp-darwin-x64" "0.34.3" - "@img/sharp-libvips-darwin-arm64" "1.2.0" - "@img/sharp-libvips-darwin-x64" "1.2.0" - "@img/sharp-libvips-linux-arm" "1.2.0" - "@img/sharp-libvips-linux-arm64" "1.2.0" - "@img/sharp-libvips-linux-ppc64" "1.2.0" - "@img/sharp-libvips-linux-s390x" "1.2.0" - "@img/sharp-libvips-linux-x64" "1.2.0" - "@img/sharp-libvips-linuxmusl-arm64" "1.2.0" - "@img/sharp-libvips-linuxmusl-x64" "1.2.0" - "@img/sharp-linux-arm" "0.34.3" - "@img/sharp-linux-arm64" "0.34.3" - "@img/sharp-linux-ppc64" "0.34.3" - "@img/sharp-linux-s390x" "0.34.3" - "@img/sharp-linux-x64" "0.34.3" - "@img/sharp-linuxmusl-arm64" "0.34.3" - "@img/sharp-linuxmusl-x64" "0.34.3" - "@img/sharp-wasm32" "0.34.3" - "@img/sharp-win32-arm64" "0.34.3" - "@img/sharp-win32-ia32" "0.34.3" - "@img/sharp-win32-x64" "0.34.3" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -10739,7 +10275,7 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^4.0.0, simple-get@^4.0.1: +simple-get@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== @@ -10748,13 +10284,6 @@ simple-get@^4.0.0, simple-get@^4.0.1: once "^1.3.1" simple-concat "^1.0.0" -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - sinon@10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-10.0.0.tgz#52279f97e35646ff73d23207d0307977c9b81430" @@ -10929,11 +10458,6 @@ split2@^4.0.0: resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -sprintf-js@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -10984,16 +10508,7 @@ stop-iteration-iterator@^1.1.0: es-errors "^1.3.0" internal-slot "^1.1.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -11065,14 +10580,7 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -11113,11 +10621,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - strip-literal@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-3.0.0.tgz#ce9c452a91a0af2876ed1ae4e583539a353df3fc" @@ -11164,39 +10667,6 @@ tailwindcss-animate@^1.0.7: resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== -tar-fs@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92" - integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^7.0.1: - version "7.4.3" - resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" - integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== - dependencies: - "@isaacs/fs-minipass" "^4.0.0" - chownr "^3.0.0" - minipass "^7.1.2" - minizlib "^3.0.1" - mkdirp "^3.0.1" - yallist "^5.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -11428,7 +10898,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2, tslib@^2.7.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2, tslib@^2.7.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -11464,11 +10934,6 @@ type-detect@^4.0.0, type-detect@^4.0.8, type-detect@^4.1.0: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -11995,7 +11460,7 @@ workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -12013,15 +11478,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -12101,11 +11557,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yallist@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" - integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== - yaml@^2.5.1, yaml@^2.7.1, yaml@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79"