{"version":3,"sources":["../../src/model-context/ModelContextTypes.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { Unsubscribe } from \"../types/Unsubscribe\";\n\nexport const LanguageModelV1CallSettingsSchema = z.object({\n  maxTokens: z.number().int().positive().optional(),\n  temperature: z.number().optional(),\n  topP: z.number().optional(),\n  presencePenalty: z.number().optional(),\n  frequencyPenalty: z.number().optional(),\n  seed: z.number().int().optional(),\n  headers: z.record(z.string().optional()).optional(),\n});\n\nexport type LanguageModelV1CallSettings = z.infer<\n  typeof LanguageModelV1CallSettingsSchema\n>;\n\nexport const LanguageModelConfigSchema = z.object({\n  apiKey: z.string().optional(),\n  baseUrl: z.string().optional(),\n  modelName: z.string().optional(),\n});\n\nexport type LanguageModelConfig = z.infer<typeof LanguageModelConfigSchema>;\n\nexport type ToolExecuteFunction<TArgs, TResult> = (\n  args: TArgs,\n  context: {\n    toolCallId: string;\n    abortSignal: AbortSignal;\n  },\n) => TResult | Promise<TResult>;\n\nexport type ToolStreamCallFunction<TArgs, TResult> = (\n  iterator: AsyncGenerator<\n    {\n      args: TArgs;\n      argsTextDelta: string;\n    },\n    void,\n    unknown\n  >,\n  context: {\n    toolCallId: string;\n    abortSignal: AbortSignal;\n  },\n) => TResult | Promise<TResult>;\n\ntype OnSchemaValidationErrorFunction<TResult> = ToolExecuteFunction<\n  unknown,\n  TResult\n>;\n\nexport type Tool<TArgs = unknown, TResult = unknown> = {\n  description?: string | undefined;\n  parameters: z.ZodSchema<TArgs> | JSONSchema7;\n  execute?: ToolExecuteFunction<TArgs, TResult>;\n  /**\n   * @deprecated TODO not yet implemented\n   */\n  experimental_streamCall?: ToolStreamCallFunction<TArgs, TResult>;\n  experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;\n};\n\nexport type ModelContext = {\n  priority?: number | undefined;\n  system?: string | undefined;\n  tools?: Record<string, Tool<any, any>> | undefined;\n  callSettings?: LanguageModelV1CallSettings | undefined;\n  config?: LanguageModelConfig | undefined;\n};\n\nexport type ModelContextProvider = {\n  getModelContext: () => ModelContext;\n  subscribe?: (callback: () => void) => Unsubscribe;\n};\n\nexport const mergeModelContexts = (\n  configSet: Set<ModelContextProvider>,\n): ModelContext => {\n  const configs = Array.from(configSet)\n    .map((c) => c.getModelContext())\n    .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n\n  return configs.reduce((acc, config) => {\n    if (config.system) {\n      if (acc.system) {\n        // TODO should the separator be configurable?\n        acc.system += `\\n\\n${config.system}`;\n      } else {\n        acc.system = config.system;\n      }\n    }\n    if (config.tools) {\n      for (const [name, tool] of Object.entries(config.tools)) {\n        const existing = acc.tools?.[name];\n        if (existing && existing !== tool) {\n          throw new Error(\n            `You tried to define a tool with the name ${name}, but it already exists.`,\n          );\n        }\n\n        if (!acc.tools) acc.tools = {};\n        acc.tools[name] = tool;\n      }\n    }\n    if (config.config) {\n      acc.config = {\n        ...acc.config,\n        ...config.config,\n      };\n    }\n    if (config.callSettings) {\n      acc.callSettings = {\n        ...acc.callSettings,\n        ...config.callSettings,\n      };\n    }\n    return acc;\n  }, {} as ModelContext);\n};\n"],"mappings":";AAAA,SAAS,SAAS;AAIX,IAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS;AACpD,CAAC;AAMM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAwDM,IAAM,qBAAqB,CAChC,cACiB;AACjB,QAAM,UAAU,MAAM,KAAK,SAAS,EACjC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9B,KAAK,CAAC,GAAG,OAAO,EAAE,YAAY,MAAM,EAAE,YAAY,EAAE;AAEvD,SAAO,QAAQ,OAAO,CAAC,KAAK,WAAW;AACrC,QAAI,OAAO,QAAQ;AACjB,UAAI,IAAI,QAAQ;AAEd,YAAI,UAAU;AAAA;AAAA,EAAO,OAAO,MAAM;AAAA,MACpC,OAAO;AACL,YAAI,SAAS,OAAO;AAAA,MACtB;AAAA,IACF;AACA,QAAI,OAAO,OAAO;AAChB,iBAAW,CAAC,MAAM,IAAI,KAAK,OAAO,QAAQ,OAAO,KAAK,GAAG;AACvD,cAAM,WAAW,IAAI,QAAQ,IAAI;AACjC,YAAI,YAAY,aAAa,MAAM;AACjC,gBAAM,IAAI;AAAA,YACR,4CAA4C,IAAI;AAAA,UAClD;AAAA,QACF;AAEA,YAAI,CAAC,IAAI,MAAO,KAAI,QAAQ,CAAC;AAC7B,YAAI,MAAM,IAAI,IAAI;AAAA,MACpB;AAAA,IACF;AACA,QAAI,OAAO,QAAQ;AACjB,UAAI,SAAS;AAAA,QACX,GAAG,IAAI;AAAA,QACP,GAAG,OAAO;AAAA,MACZ;AAAA,IACF;AACA,QAAI,OAAO,cAAc;AACvB,UAAI,eAAe;AAAA,QACjB,GAAG,IAAI;AAAA,QACP,GAAG,OAAO;AAAA,MACZ;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAiB;AACvB;","names":[]}