{"version":3,"file":"index.d.ts","sources":["../src/utils/cosine-similarity.ts","../src/extractors/index.ts","../src/core/semantic-function-caller.ts","../src/utils/parameter-database.ts","../src/index.ts"],"sourcesContent":["/**\n * Cosine similarity utility with safety checks\n */\nexport function cosineSimilarity(a: number[], b: number[]): number {\n  if (!a || !b || a.length !== b.length) return 0;\n\n  const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);\n  const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));\n  const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));\n\n  // Prevent division by zero\n  if (magnitudeA === 0 || magnitudeB === 0) return 0;\n\n  const similarity = dotProduct / (magnitudeA * magnitudeB);\n\n  // Ensure result is a valid number\n  return isNaN(similarity) ? 0 : similarity;\n}\n\n/**\n * Batch cosine similarity calculation for efficiency\n */\nexport function batchCosineSimilarity(\n  query: number[],\n  vectors: number[][],\n): number[] {\n  return vectors.map((vector) => cosineSimilarity(query, vector));\n}\n","import { ToolParameter } from '../types';\nimport { cosineSimilarity } from '../utils/cosine-similarity';\n\n/**\n * Semantic color extraction using embeddings\n */\nexport async function extractSemanticColor(\n  query: string,\n  config: ToolParameter,\n  embedder: any,\n): Promise<string> {\n  const queryEmbedding = await embedder(query);\n  const queryVector = Array.from(queryEmbedding.data) as number[];\n\n  let bestColor = (config.fallback as string) || 'blue';\n  let bestScore = -1;\n\n  // Check all color candidates\n  if (config.semanticCandidates) {\n    for (const color of config.semanticCandidates) {\n      const colorEmbedding = await embedder(`color ${color}`);\n      const colorVector = Array.from(colorEmbedding.data) as number[];\n      const score = cosineSimilarity(queryVector, colorVector);\n\n      if (score > bestScore) {\n        bestScore = score;\n        bestColor = color;\n      }\n    }\n  }\n\n  // Check for modifiers (light blue, dark red, etc.)\n  if (config.modifierCandidates && config.semanticCandidates) {\n    for (const modifier of config.modifierCandidates) {\n      for (const color of config.semanticCandidates) {\n        const modifiedColor = `${modifier} ${color}`;\n        const modifiedEmbedding = await embedder(modifiedColor);\n        const modifiedVector = Array.from(modifiedEmbedding.data) as number[];\n        const score = cosineSimilarity(queryVector, modifiedVector);\n\n        if (score > bestScore) {\n          bestScore = score;\n          bestColor = modifiedColor;\n        }\n      }\n    }\n  }\n\n  return bestColor;\n}\n\n/**\n * Semantic category extraction using embeddings\n */\nexport async function extractSemanticCategory(\n  query: string,\n  config: ToolParameter,\n  embedder: any,\n): Promise<string> {\n  const queryEmbedding = await embedder(query);\n  const queryVector = Array.from(queryEmbedding.data) as number[];\n\n  let bestCategory = (config.fallback as string) || 'general';\n  let bestScore = -1;\n\n  if (config.semanticCandidates) {\n    for (const category of config.semanticCandidates) {\n      // Test multiple phrasings for better matching\n      const testPhrases = [\n        `${category} related`,\n        `this is about ${category}`,\n        `${category} category`,\n        `${category} topic`,\n      ];\n\n      for (const phrase of testPhrases) {\n        const categoryEmbedding = await embedder(phrase);\n        const categoryVector = Array.from(categoryEmbedding.data) as number[];\n        const score = cosineSimilarity(queryVector, categoryVector);\n\n        if (score > bestScore) {\n          bestScore = score;\n          bestCategory = category;\n        }\n      }\n    }\n  }\n\n  return bestCategory;\n}\n\n/**\n * Content isolation using semantic boundaries\n */\nexport async function extractSemanticContent(\n  query: string,\n  embedder: any,\n): Promise<string> {\n  // Split query into potential content segments\n  const words = query.split(' ');\n  const segments: string[] = [];\n\n  // Generate all possible contiguous segments\n  for (let i = 0; i < words.length; i++) {\n    for (let j = i + 1; j <= words.length; j++) {\n      segments.push(words.slice(i, j).join(' '));\n    }\n  }\n\n  // Find segments that are semantically \"content-like\" vs \"command-like\"\n  const contentPrompts = [\n    'this is a message to display',\n    'this is content to show',\n    'this is text to output',\n    'this is information for the user',\n  ];\n\n  const commandPrompts = [\n    'this is a command instruction',\n    'this is an action to perform',\n    'this is a system directive',\n  ];\n\n  let bestContent = 'Hello!';\n  let bestContentScore = -1;\n\n  for (const segment of segments) {\n    if (segment.length < 2) continue; // Skip very short segments\n\n    let contentScore = 0;\n    let commandScore = 0;\n\n    // Score as content\n    for (const contentPrompt of contentPrompts) {\n      const testPhrase = `\"${segment}\" - ${contentPrompt}`;\n      const embedding = await embedder(testPhrase);\n      const vector = Array.from(embedding.data) as number[];\n      const segmentEmbedding = await embedder(segment);\n      const segmentVector = Array.from(segmentEmbedding.data) as number[];\n      contentScore += cosineSimilarity(vector, segmentVector);\n    }\n\n    // Score as command\n    for (const commandPrompt of commandPrompts) {\n      const testPhrase = `\"${segment}\" - ${commandPrompt}`;\n      const embedding = await embedder(testPhrase);\n      const vector = Array.from(embedding.data) as number[];\n      const segmentEmbedding = await embedder(segment);\n      const segmentVector = Array.from(segmentEmbedding.data) as number[];\n      commandScore += cosineSimilarity(vector, segmentVector);\n    }\n\n    // Prefer segments that are more content-like than command-like\n    const netContentScore = contentScore - commandScore;\n    if (netContentScore > bestContentScore) {\n      bestContentScore = netContentScore;\n      bestContent = segment;\n    }\n  }\n\n  return bestContent;\n}\n","import { pipeline } from '@xenova/transformers';\nimport {\n  Tool,\n  ToolMatch,\n  ExecutionResult,\n  ExecutionOptions,\n  SemanticFunctionCallerConfig,\n  EmbeddingCache,\n} from '../types';\nimport { cosineSimilarity } from '../utils/cosine-similarity';\nimport {\n  extractSemanticColor,\n  extractSemanticCategory,\n  extractSemanticContent,\n} from '../extractors';\n\n/**\n * Main class for semantic function calling\n */\nexport class SemanticFunctionCaller {\n  private embedder: any = null;\n  private tools: Tool[] = [];\n  private config: SemanticFunctionCallerConfig;\n  private embeddingCache: EmbeddingCache = {};\n\n  constructor(config: SemanticFunctionCallerConfig = {}) {\n    this.config = {\n      embeddingModel: 'Xenova/all-MiniLM-L6-v2',\n      defaultConfidenceThreshold: 0.25,\n      enableCaching: true,\n      verbose: false,\n      ...config,\n    };\n  }\n\n  /**\n   * Initialize the embedding model\n   */\n  async initialize(): Promise<void> {\n    if (this.embedder) return;\n\n    if (this.config.verbose) {\n      console.log(`Loading embedding model: ${this.config.embeddingModel}`);\n    }\n\n    this.embedder = await pipeline(\n      'feature-extraction',\n      this.config.embeddingModel,\n    );\n  }\n\n  /**\n   * Register tools for function calling\n   */\n  registerTools(tools: Tool[]): void {\n    this.tools = [...this.tools, ...tools];\n\n    if (this.config.verbose) {\n      console.log(\n        `Registered ${tools.length} tools:`,\n        tools.map((t) => t.name),\n      );\n    }\n  }\n\n  /**\n   * Clear all registered tools\n   */\n  clearTools(): void {\n    this.tools = [];\n    this.embeddingCache = {};\n  }\n\n  /**\n   * Get embedding with caching\n   */\n  private async getEmbedding(text: string): Promise<number[]> {\n    if (this.config.enableCaching && this.embeddingCache[text]) {\n      return Array.from(this.embeddingCache[text]);\n    }\n\n    const embedding = await this.embedder(text);\n    const vector = Array.from(embedding.data) as number[];\n\n    if (this.config.enableCaching) {\n      this.embeddingCache[text] = new Float32Array(vector);\n    }\n\n    return vector;\n  }\n\n  /**\n   * Find the best tool match using multi-layer semantic analysis\n   */\n  async findToolBySemanticLayers(query: string): Promise<ToolMatch> {\n    await this.initialize();\n\n    const queryVector = await this.getEmbedding(query);\n    const results: ToolMatch[] = [];\n\n    for (const tool of this.tools) {\n      let intentScore = 0;\n      let contextScore = 0;\n      let descScore = 0;\n      const matches: ToolMatch['matches'] = [];\n\n      // Layer 1: Intent matching - take best match\n      let bestIntentScore = 0;\n      for (const intent of tool.intentPatterns) {\n        const intentVector = await this.getEmbedding(intent);\n        const score = cosineSimilarity(queryVector, intentVector);\n        if (score > bestIntentScore) {\n          bestIntentScore = score;\n        }\n        matches.push({ type: 'intent', text: intent, score });\n      }\n      intentScore = bestIntentScore;\n\n      // Layer 2: Context matching - take best match\n      let bestContextScore = 0;\n      for (const context of tool.contexts) {\n        const contextVector = await this.getEmbedding(context);\n        const score = cosineSimilarity(queryVector, contextVector);\n        if (score > bestContextScore) {\n          bestContextScore = score;\n        }\n        matches.push({ type: 'context', text: context, score });\n      }\n      contextScore = bestContextScore;\n\n      // Layer 3: Description matching\n      const descVector = await this.getEmbedding(tool.description);\n      descScore = cosineSimilarity(queryVector, descVector);\n      matches.push({\n        type: 'description',\n        text: tool.description,\n        score: descScore,\n      });\n\n      // Calculate weighted total score\n      const totalScore =\n        intentScore * 0.4 + contextScore * 0.3 + descScore * 0.3;\n\n      results.push({\n        tool: tool.name,\n        totalScore,\n        matches: matches.sort((a, b) => b.score - a.score),\n      });\n    }\n\n    return results.sort((a, b) => b.totalScore - a.totalScore)[0];\n  }\n\n  /**\n   * Extract parameters using semantic analysis\n   */\n  async extractParameters(\n    toolName: string,\n    query: string,\n  ): Promise<Record<string, any>> {\n    const tool = this.tools.find((t) => t.name === toolName);\n    if (!tool) return {};\n\n    await this.initialize();\n    const result: Record<string, any> = {};\n\n    for (const [paramName, paramConfig] of Object.entries(tool.parameters)) {\n      if (paramConfig.type === 'semantic_color') {\n        result[paramName] = await extractSemanticColor(\n          query,\n          paramConfig,\n          this.embedder,\n        );\n      } else if (paramConfig.type === 'extracted_content') {\n        result[paramName] = await extractSemanticContent(query, this.embedder);\n      } else if (paramConfig.type === 'semantic_category') {\n        result[paramName] = await extractSemanticCategory(\n          query,\n          paramConfig,\n          this.embedder,\n        );\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * Execute function calling with confidence scoring\n   */\n  async execute(\n    query: string,\n    options: ExecutionOptions = {},\n  ): Promise<ExecutionResult> {\n    const opts = {\n      gutInstinct: false,\n      confidenceThreshold: this.config.defaultConfidenceThreshold,\n      mode: 'standard' as const,\n      verbose: this.config.verbose,\n      ...options,\n    };\n\n    if (opts.verbose) {\n      console.log('🔍 Semantic Function Calling Analysis:', {\n        query,\n        options: opts,\n      });\n    }\n\n    // Multi-layer semantic matching\n    const toolMatch = await this.findToolBySemanticLayers(query);\n\n    if (opts.verbose) {\n      console.log('📊 Tool Analysis:', {\n        selectedTool: toolMatch.tool,\n        confidence: `${(toolMatch.totalScore * 100).toFixed(1)}%`,\n        reasoning: toolMatch.matches\n          .slice(0, 3)\n          .map(\n            (m) => `${m.type}: \"${m.text}\" (${(m.score * 100).toFixed(1)}%)`,\n          ),\n      });\n    }\n\n    // Confidence checking (unless in first instinct mode)\n    if (opts.mode !== 'first_instinct') {\n      const threshold = opts.gutInstinct ? 0.1 : opts.confidenceThreshold!;\n\n      if (toolMatch.totalScore < threshold) {\n        if (opts.verbose) {\n          console.log('❌ Confidence too low, not executing');\n        }\n        return {\n          success: false,\n          reason: 'Low confidence in tool selection',\n          confidence: toolMatch.totalScore,\n        };\n      }\n\n      if (opts.gutInstinct && toolMatch.totalScore < 0.25) {\n        if (opts.verbose) {\n          console.log(\n            '🎯 Trusting model intuition despite low confidence score',\n          );\n        }\n      }\n    }\n\n    // Extract parameters\n    const parameters = await this.extractParameters(toolMatch.tool, query);\n\n    if (opts.verbose) {\n      console.log('🎯 Extracted Parameters:', parameters);\n    }\n\n    return {\n      success: true,\n      tool: toolMatch.tool,\n      parameters,\n      confidence: toolMatch.totalScore,\n      reasoning: toolMatch.matches,\n      mode: opts.mode,\n    };\n  }\n\n  /**\n   * Execute with first instinct mode (no confidence checking)\n   */\n  async executeFirstInstinct(query: string): Promise<ExecutionResult> {\n    return this.execute(query, {\n      mode: 'first_instinct',\n      verbose: this.config.verbose,\n    });\n  }\n\n  /**\n   * Get cached embedding count (for monitoring)\n   */\n  getCacheSize(): number {\n    return Object.keys(this.embeddingCache).length;\n  }\n\n  /**\n   * Clear embedding cache\n   */\n  clearCache(): void {\n    this.embeddingCache = {};\n  }\n}\n","import { ParameterValueDatabase } from '../types';\n\n/**\n * Default parameter value database for common semantic types\n */\nexport const defaultParameterDatabase: ParameterValueDatabase = {\n  colors: {\n    basic: [\n      'red',\n      'blue',\n      'green',\n      'yellow',\n      'purple',\n      'orange',\n      'pink',\n      'brown',\n      'black',\n      'white',\n      'gray',\n    ],\n    extended: [\n      'crimson',\n      'navy',\n      'teal',\n      'coral',\n      'salmon',\n      'turquoise',\n      'indigo',\n      'violet',\n      'steelblue',\n      'lime',\n      'cyan',\n      'magenta',\n      'gold',\n      'silver',\n      'maroon',\n      'olive',\n      'aqua',\n    ],\n    modifiers: ['light', 'dark', 'bright', 'deep', 'pale', 'vivid', 'vibrant'],\n  },\n  emotions: [\n    'happy',\n    'sad',\n    'excited',\n    'calm',\n    'energetic',\n    'peaceful',\n    'angry',\n    'joyful',\n    'frustrated',\n    'content',\n    'anxious',\n    'relaxed',\n  ],\n  sizes: [\n    'tiny',\n    'small',\n    'medium',\n    'large',\n    'huge',\n    'massive',\n    'mini',\n    'big',\n    'little',\n    'enormous',\n    'gigantic',\n  ],\n  directions: [\n    'up',\n    'down',\n    'left',\n    'right',\n    'center',\n    'top',\n    'bottom',\n    'north',\n    'south',\n    'east',\n    'west',\n    'forward',\n    'backward',\n  ],\n  categories: [\n    'general',\n    'work',\n    'personal',\n    'ideas',\n    'tasks',\n    'reminders',\n    'meeting',\n    'project',\n    'research',\n    'thoughts',\n    'quotes',\n    'learning',\n    'goals',\n    'planning',\n    'shopping',\n    'health',\n  ],\n  numbers: [\n    'zero',\n    'one',\n    'two',\n    'three',\n    'four',\n    'five',\n    'six',\n    'seven',\n    'eight',\n    'nine',\n    'ten',\n    'first',\n    'second',\n    'third',\n    'few',\n    'many',\n  ],\n  booleans: [\n    'yes',\n    'no',\n    'true',\n    'false',\n    'on',\n    'off',\n    'enable',\n    'disable',\n    'activate',\n    'deactivate',\n    'start',\n    'stop',\n    'begin',\n    'end',\n  ],\n};\n\n/**\n * Merge custom parameter database with defaults\n */\nexport function mergeParameterDatabase(\n  custom: Partial<ParameterValueDatabase>,\n): ParameterValueDatabase {\n  return {\n    ...defaultParameterDatabase,\n    ...custom,\n    colors: {\n      ...defaultParameterDatabase.colors,\n      ...custom.colors,\n    },\n  };\n}\n","/**\n * Homeschool - Teach AI to understand natural language like a patient tutor\n * Advanced embedding-based function calling with semantic understanding,\n * confidence scoring, and natural language parameter extraction\n */\n\n// Main class\nexport { SemanticFunctionCaller } from './core/semantic-function-caller';\n\n// Types\nexport type {\n  Tool,\n  ToolParameter,\n  ToolMatch,\n  ExecutionResult,\n  ExecutionOptions,\n  SemanticFunctionCallerConfig,\n  EmbeddingCache,\n  ParameterValueDatabase,\n} from './types';\n\n// Utilities\nexport {\n  cosineSimilarity,\n  batchCosineSimilarity,\n} from './utils/cosine-similarity';\nexport {\n  defaultParameterDatabase,\n  mergeParameterDatabase,\n} from './utils/parameter-database';\n\n// Extractors (for advanced usage)\nexport {\n  extractSemanticColor,\n  extractSemanticCategory,\n  extractSemanticContent,\n} from './extractors';\n\n// Example tools for getting started\nimport type { Tool } from './types';\nexport const exampleTools: Tool[] = [\n  {\n    name: 'changeBackgroundColor',\n    description: 'Changes the background color of the web page',\n    contexts: [\n      'visual styling and appearance',\n      'color modification and theming',\n      'page aesthetics and design',\n    ],\n    intentPatterns: [\n      'user wants to modify visual appearance',\n      'user wants to change colors',\n      'user wants to style the page',\n    ],\n    parameters: {\n      color: {\n        type: 'semantic_color',\n        semanticCandidates: [\n          'red',\n          'blue',\n          'green',\n          'yellow',\n          'purple',\n          'orange',\n          'pink',\n          'brown',\n          'black',\n          'white',\n          'gray',\n          'cyan',\n          'magenta',\n          'lime',\n          'navy',\n          'teal',\n          'silver',\n          'gold',\n          'coral',\n          'salmon',\n          'crimson',\n          'violet',\n          'indigo',\n          'turquoise',\n        ],\n        modifierCandidates: ['light', 'dark', 'bright', 'vibrant', 'pale'],\n        fallback: 'blue',\n      },\n    },\n  },\n  {\n    name: 'displayText',\n    description: 'Shows a message or text to the user',\n    contexts: [\n      'communication and messaging',\n      'information display and output',\n      'user interaction and feedback',\n    ],\n    intentPatterns: [\n      'user wants to show information',\n      'user wants to communicate a message',\n      'user wants to display content',\n    ],\n    parameters: {\n      text: {\n        type: 'extracted_content',\n        extractionStrategy: 'semantic_content_isolation',\n      },\n    },\n  },\n  {\n    name: 'takeNote',\n    description: 'Saves a note or reminder for later reference',\n    contexts: [\n      'note taking and memory',\n      'information storage and organization',\n      'personal productivity and planning',\n      'documentation and records',\n      'task management and reminders',\n    ],\n    intentPatterns: [\n      'user wants to remember something',\n      'user wants to save information',\n      'user wants to record a thought',\n      'user wants to jot down details',\n      'user wants to make a reminder',\n      'user wants to take notes',\n    ],\n    parameters: {\n      note: {\n        type: 'extracted_content',\n        extractionStrategy: 'semantic_content_isolation',\n      },\n      category: {\n        type: 'semantic_category',\n        semanticCandidates: [\n          'general',\n          'work',\n          'personal',\n          'ideas',\n          'tasks',\n          'reminders',\n          'meeting',\n          'project',\n          'research',\n          'thoughts',\n          'quotes',\n          'learning',\n          'goals',\n          'planning',\n        ],\n        fallback: 'general',\n      },\n    },\n  },\n];\n\n// Version info\nexport const version = '0.1.0';\n"],"names":[],"mappings":"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"}