@anvia/anthropic 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/anthropic/index.ts","../src/anthropic/client.ts","../src/anthropic/completion.ts","../src/request-messages.ts","../src/utils.ts","../src/anthropic/models.ts","../src/anthropic/vertex-client.ts"],"sourcesContent":["export {\n AnthropicClient,\n type AnthropicClientOptions,\n type AnthropicCompletionModelHandle,\n type AnthropicCompletionModelOptions,\n} from \"./client\";\nexport type {\n AnthropicCompletionModelId,\n KnownAnthropicCompletionModelId,\n} from \"./models\";\nexport {\n AnthropicVertexClient,\n type AnthropicVertexClientOptions,\n type AnthropicVertexCompletionModelHandle,\n type AnthropicVertexCompletionModelOptions,\n} from \"./vertex-client\";\n","import Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport {\n type ModelList,\n type ModelListingClient,\n ModelListingError,\n} from \"@anvia/core/model-listing\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicManagedClientOptions = {\n apiKey: string;\n baseUrl?: string | undefined;\n client?: never;\n};\n\ntype AnthropicInjectedClientOptions = {\n client: Anthropic;\n apiKey?: never;\n baseUrl?: never;\n};\n\nexport type AnthropicClientOptions = AnthropicManagedClientOptions | AnthropicInjectedClientOptions;\n\nexport type AnthropicCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicClient implements ModelListingClient {\n private readonly sdk: Anthropic;\n\n constructor(options: AnthropicClientOptions) {\n if (options.client !== undefined) {\n rejectManagedOptionsWithInjectedClient(options, [\"apiKey\", \"baseUrl\"]);\n this.sdk = options.client;\n return;\n }\n this.sdk = new Anthropic({\n apiKey: requireApiKey(options.apiKey),\n baseURL: options.baseUrl,\n maxRetries: 0,\n });\n }\n\n completionModel(options: AnthropicCompletionModelOptions): AnthropicCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n\n async listModels(options: { abortSignal?: AbortSignal | undefined } = {}): Promise<ModelList> {\n try {\n const response = await this.sdk.models.list(undefined, {\n signal: options.abortSignal,\n maxRetries: 0,\n });\n const data = (await collectModelsFromResponse(response))\n .map(toListedModel)\n .filter(isListedModel);\n return { data };\n } catch (error) {\n throw toModelListingError(\"Anthropic\", error);\n }\n }\n}\n\nfunction rejectManagedOptionsWithInjectedClient(options: object, keys: readonly string[]): void {\n const conflict = keys.find((key) => key in options);\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicClient cannot combine client with ${conflict}.`);\n }\n}\n\nfunction requireApiKey(apiKey: string | undefined): string {\n if (apiKey === undefined || apiKey.trim().length === 0) {\n throw new Error(\n \"Missing Anthropic credentials. Pass apiKey when constructing AnthropicClient.\",\n );\n }\n\n return apiKey;\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n\nasync function collectModelsFromResponse(response: unknown): Promise<unknown[]> {\n if (isAsyncIterable(response)) {\n const models: unknown[] = [];\n for await (const model of response) {\n models.push(model);\n }\n return models;\n }\n\n if (Array.isArray(response)) {\n return response;\n }\n\n if (isObject(response) && Array.isArray(response.data)) {\n return response.data;\n }\n\n return [];\n}\n\nfunction toListedModel(model: unknown): ModelList[\"data\"][number] | undefined {\n if (!isObject(model) || typeof model.id !== \"string\") {\n return undefined;\n }\n\n const createdAt =\n typeof model.created_at === \"string\"\n ? secondsFromDateString(model.created_at)\n : typeof model.created_at === \"number\"\n ? model.created_at\n : undefined;\n\n const listedModel: ModelList[\"data\"][number] = {\n id: model.id,\n };\n if (typeof model.display_name === \"string\") {\n listedModel.name = model.display_name;\n }\n if (typeof model.name === \"string\") {\n listedModel.name = model.name;\n }\n if (typeof model.description === \"string\") {\n listedModel.description = model.description;\n }\n if (typeof model.type === \"string\") {\n listedModel.type = model.type;\n }\n if (createdAt !== undefined) {\n listedModel.createdAt = createdAt;\n }\n if (typeof model.owned_by === \"string\") {\n listedModel.ownedBy = model.owned_by;\n }\n if (typeof model.max_input_tokens === \"number\") {\n listedModel.contextLength = model.max_input_tokens;\n }\n if (typeof model.context_length === \"number\") {\n listedModel.contextLength = model.context_length;\n }\n return listedModel;\n}\n\nfunction secondsFromDateString(value: string): number | undefined {\n const time = Date.parse(value);\n return Number.isNaN(time) ? undefined : Math.floor(time / 1000);\n}\n\nfunction isListedModel(\n model: ModelList[\"data\"][number] | undefined,\n): model is ModelList[\"data\"][number] {\n return model !== undefined;\n}\n\nfunction toModelListingError(provider: string, error: unknown): ModelListingError {\n if (error instanceof ModelListingError) {\n return error;\n }\n\n const statusCode = getStatusCode(error);\n return new ModelListingError(`${provider} model listing failed: ${getErrorMessage(error)}`, {\n provider,\n statusCode,\n cause: error,\n });\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (!isObject(error)) {\n return undefined;\n }\n\n if (typeof error.status === \"number\") {\n return error.status;\n }\n\n if (typeof error.statusCode === \"number\") {\n return error.statusCode;\n }\n\n return undefined;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return isObject(value) && Symbol.asyncIterator in value;\n}\n","import type { Anthropic } from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport type { ModelContextLimits } from \"@anvia/core/completion\";\nimport {\n type AssistantContentPart,\n assertCompletionRequestSupported,\n type CompletionFinishReason,\n type CompletionModelCapabilities,\n type CompletionModelInfo,\n type CompletionModelStreamEvent,\n CompletionProviderOutputError,\n type CompletionProviderOutputErrorKind,\n type CompletionRequest,\n type CompletionResponse,\n type FilePart,\n type ImagePart,\n isJsonValue,\n type JsonObject,\n type JsonValue,\n type Message as MessageType,\n type ModelCallOptions,\n type ReasoningDetail,\n type StreamingCompletionModel,\n type ToolChoice,\n type ToolDefinition,\n type ToolResultContentPart,\n type ToolResultPart,\n Usage,\n type UserContentPart,\n withContextUsage,\n} from \"@anvia/core/completion\";\nimport { orderedRequestMessages } from \"../request-messages\";\nimport { isPlainObject, numberFrom, stringFrom } from \"../utils\";\nimport type { AnthropicCompletionModelId } from \"./models\";\n\ntype AnthropicCreateParams = Record<string, unknown>;\ntype AnthropicMessage = Record<string, unknown>;\ntype AnthropicContentBlock = Record<string, unknown>;\ntype AnthropicMessageCreate = (\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n) => Promise<unknown>;\n\ntype AnthropicStreamToolInput = { type: \"empty\" } | { type: \"complete\"; text: string };\n\ntype AnthropicStreamToolState = {\n index: number;\n id: string;\n name: string;\n initialInput: AnthropicStreamToolInput;\n partialJson: string;\n hasPartialJson: boolean;\n closed: boolean;\n finalized: boolean;\n};\n\nconst DEFAULT_MAX_TOKENS = 1024;\n\nexport class AnthropicCompletionModel implements StreamingCompletionModel<unknown> {\n readonly provider = \"anthropic\";\n readonly capabilities: CompletionModelCapabilities = {\n streaming: true,\n tools: true,\n toolChoice: true,\n imageInput: true,\n documentInput: true,\n outputSchema: false,\n reasoning: true,\n };\n constructor(\n private readonly client: Anthropic | AnthropicVertex,\n readonly modelId: AnthropicCompletionModelId,\n readonly contextLimits?: ModelContextLimits,\n ) {}\n\n private modelInfo(): CompletionModelInfo | undefined {\n return this.contextLimits === undefined\n ? undefined\n : { modelId: this.modelId, context: this.contextLimits };\n }\n\n traceRequest(\n request: CompletionRequest,\n options: { stream?: boolean | undefined } = {},\n ): JsonObject {\n const params = toAnthropicMessagesParams(this.modelId, request);\n if (options.stream === true) {\n params.stream = true;\n }\n return providerRequestSummary(params, request, options);\n }\n\n async completion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): Promise<CompletionResponse> {\n assertCompletionRequestSupported(this, request);\n const params = toAnthropicMessagesParams(this.modelId, request);\n const response = await this.createMessage(params, anthropicRequestOptions(options));\n return withContextUsage(fromAnthropicMessage(response), this.modelInfo());\n }\n\n private createMessage(\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n ): Promise<unknown> {\n const messages = this.client.messages;\n const create = messages.create as unknown as AnthropicMessageCreate;\n return create.call(messages, params, options);\n }\n\n async *streamCompletion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): AsyncIterable<CompletionModelStreamEvent> {\n assertCompletionRequestSupported(this, request, { streaming: true });\n const params = { ...toAnthropicMessagesParams(this.modelId, request), stream: true };\n const stream = await this.createMessage(params, anthropicRequestOptions(options));\n const toolsByIndex = new Map<number, AnthropicStreamToolState>();\n const toolIndexesById = new Map<string, number>();\n const streamUsage = Usage.empty();\n const streamUsageFields = emptyAnthropicStreamUsageFields();\n let hasStreamUsage = false;\n let hasToolProgress = false;\n let hasTerminalEvent = false;\n let streamMessageId: string | undefined;\n let streamProviderFinishReason: unknown;\n for await (const event of stream as unknown as AsyncIterable<unknown>) {\n const hadProviderFinishReason = streamProviderFinishReason !== undefined;\n if (isPlainObject(event)) {\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n streamMessageId = stringFrom(event.message.id) ?? streamMessageId;\n if (event.message.stop_reason !== undefined && event.message.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.message.stop_reason,\n streamUsage,\n );\n }\n }\n if (event.type === \"message_delta\" && isPlainObject(event.delta)) {\n if (event.delta.stop_reason !== undefined && event.delta.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.delta.stop_reason,\n streamUsage,\n );\n }\n }\n hasStreamUsage =\n applyAnthropicStreamUsage(event, streamUsage, streamUsageFields) || hasStreamUsage;\n }\n\n if (hadProviderFinishReason && isAnthropicSemanticProgressEvent(event)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_start\" &&\n isPlainObject(event.content_block) &&\n event.content_block.type === \"tool_use\"\n ) {\n const state = startAnthropicStreamTool(event.index, event.content_block, streamUsage);\n if (toolsByIndex.has(state.index) || toolIndexesById.has(state.id)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n toolsByIndex.set(state.index, state);\n toolIndexesById.set(state.id, state.index);\n hasToolProgress = true;\n yield toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta:\n state.initialInput.type === \"complete\" ? state.initialInput.text : undefined,\n });\n continue;\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_delta\" &&\n isPlainObject(event.delta) &&\n event.delta.type === \"input_json_delta\"\n ) {\n const index = anthropicToolStreamIndex(event.index, streamUsage);\n const state = toolsByIndex.get(index);\n if (state === undefined) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n if (state.closed || state.finalized) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n if (typeof event.delta.partial_json !== \"string\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n if (state.initialInput.type === \"complete\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n state.hasPartialJson = true;\n state.partialJson += event.delta.partial_json;\n yield toolCallDelta(state.id, { argumentsDelta: event.delta.partial_json });\n continue;\n }\n\n if (isPlainObject(event) && event.type === \"content_block_stop\") {\n const index = optionalAnthropicToolStreamIndex(event.index);\n const state = index === undefined ? undefined : toolsByIndex.get(index);\n if (state !== undefined) {\n if (state.closed) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n state.closed = true;\n continue;\n }\n }\n\n if (isPlainObject(event) && event.type === \"message_stop\") {\n hasTerminalEvent = true;\n const finalMessage = isPlainObject(event.message) ? event.message : undefined;\n if (finalMessage?.stop_reason !== undefined && finalMessage.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n finalMessage.stop_reason,\n streamUsage,\n );\n }\n const hasFinalMessageToolUse = anthropicMessageHasToolUse(finalMessage);\n if (hasToolProgress || hasFinalMessageToolUse) {\n const baseUsage =\n finalMessage === undefined ? Usage.empty() : anthropicMessageUsage(finalMessage);\n const terminalUsage = hasStreamUsage\n ? mergeUsage(baseUsage, streamUsage, streamUsageFields)\n : baseUsage;\n const terminalResponse = emptyAnthropicStreamResponse(\n event,\n streamMessageId,\n terminalUsage,\n );\n applyAnthropicFinishReason(terminalResponse, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(terminalResponse, true);\n }\n for (const state of toolsByIndex.values()) {\n const finalDelta = finalizeAnthropicStreamTool(state, streamUsage);\n if (finalDelta !== undefined) yield finalDelta;\n }\n\n const baseResponse =\n finalMessage !== undefined\n ? fromAnthropicMessageUnchecked(finalMessage)\n : emptyAnthropicStreamResponse(event, streamMessageId, streamUsage);\n const response = hasStreamUsage\n ? {\n ...baseResponse,\n usage: mergeUsage(baseResponse.usage, streamUsage, streamUsageFields),\n }\n : baseResponse;\n applyAnthropicFinishReason(response, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(response, hasToolProgress || hasFinalMessageToolUse);\n yield {\n type: \"final\",\n response: withContextUsage(response, this.modelInfo()),\n };\n return;\n }\n\n if (isPlainObject(event) && event.type === \"error\") {\n hasTerminalEvent = true;\n }\n\n for (const mapped of fromAnthropicStreamEvent(event)) {\n yield mapped;\n }\n\n if (hasTerminalEvent) return;\n }\n\n if (hasToolProgress && !hasTerminalEvent) {\n throw providerOutputError(\"incomplete-stream\", streamUsage);\n }\n }\n}\n\nfunction isAnthropicSemanticProgressEvent(event: unknown): boolean {\n return (\n isPlainObject(event) &&\n (event.type === \"content_block_start\" || event.type === \"content_block_delta\")\n );\n}\n\ntype AnthropicStreamUsageFields = {\n inputTokens: boolean;\n outputTokens: boolean;\n cachedInputTokens: boolean;\n cacheCreationInputTokens: boolean;\n};\n\nfunction emptyAnthropicStreamUsageFields(): AnthropicStreamUsageFields {\n return {\n inputTokens: false,\n outputTokens: false,\n cachedInputTokens: false,\n cacheCreationInputTokens: false,\n };\n}\n\nfunction applyAnthropicStreamUsage(\n event: Record<string, unknown>,\n usage: Usage,\n fields: AnthropicStreamUsageFields,\n): boolean {\n let changed = false;\n let uncachedInputTokens = Math.max(\n 0,\n usage.inputTokens - usage.cachedInputTokens - usage.cacheCreationInputTokens,\n );\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const source = isPlainObject(event.message.usage) ? event.message.usage : undefined;\n if (source !== undefined) {\n if (\"input_tokens\" in source) {\n uncachedInputTokens = numberFrom(source.input_tokens);\n fields.inputTokens = true;\n changed = true;\n }\n if (\"cache_read_input_tokens\" in source) {\n usage.cachedInputTokens = numberFrom(source.cache_read_input_tokens);\n fields.cachedInputTokens = true;\n changed = true;\n }\n if (\"cache_creation_input_tokens\" in source) {\n usage.cacheCreationInputTokens = numberFrom(source.cache_creation_input_tokens);\n fields.cacheCreationInputTokens = true;\n changed = true;\n }\n }\n }\n\n if (event.type === \"message_delta\") {\n const source = isPlainObject(event.usage) ? event.usage : undefined;\n if (source !== undefined && \"output_tokens\" in source) {\n usage.outputTokens = Math.max(usage.outputTokens, numberFrom(source.output_tokens));\n fields.outputTokens = true;\n changed = true;\n }\n }\n\n if (changed) {\n Object.assign(\n usage,\n anthropicUsage(\n uncachedInputTokens,\n usage.outputTokens,\n usage.cachedInputTokens,\n usage.cacheCreationInputTokens,\n ),\n );\n }\n\n return changed;\n}\n\nfunction mergeUsage(base: Usage, stream: Usage, fields: AnthropicStreamUsageFields): Usage {\n const baseUncachedInputTokens = Math.max(\n 0,\n base.inputTokens - base.cachedInputTokens - base.cacheCreationInputTokens,\n );\n const streamUncachedInputTokens = Math.max(\n 0,\n stream.inputTokens - stream.cachedInputTokens - stream.cacheCreationInputTokens,\n );\n const uncachedInputTokens = fields.inputTokens\n ? streamUncachedInputTokens\n : baseUncachedInputTokens;\n const outputTokens = fields.outputTokens ? stream.outputTokens : base.outputTokens;\n const cachedInputTokens = fields.cachedInputTokens\n ? stream.cachedInputTokens\n : base.cachedInputTokens;\n const cacheCreationInputTokens = fields.cacheCreationInputTokens\n ? stream.cacheCreationInputTokens\n : base.cacheCreationInputTokens;\n return anthropicUsage(\n uncachedInputTokens,\n outputTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n );\n}\n\nfunction copyUsage(usage: Usage): Usage {\n let copy: Usage = { ...usage };\n if (usage.details !== undefined) copy = { ...copy, details: { ...usage.details } };\n return copy;\n}\n\nfunction emptyAnthropicStreamResponse(\n rawResponse: unknown,\n messageId: string | undefined,\n usage: Usage,\n): CompletionResponse {\n const response: CompletionResponse = {\n choice: [],\n usage: copyUsage(usage),\n rawResponse,\n };\n if (messageId !== undefined) response.messageId = messageId;\n return response;\n}\n\nfunction startAnthropicStreamTool(\n indexValue: unknown,\n block: Record<string, unknown>,\n usage: Usage,\n): AnthropicStreamToolState {\n const index = anthropicToolStreamIndex(indexValue, usage);\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n return {\n index,\n id,\n name,\n initialInput: anthropicStreamToolInput(block.input, id, usage),\n partialJson: \"\",\n hasPartialJson: false,\n closed: false,\n finalized: false,\n };\n}\n\nfunction anthropicStreamToolInput(\n input: unknown,\n toolCallId: string,\n usage: Usage,\n): AnthropicStreamToolInput {\n if (!isPlainObject(input) || !isJsonValue(input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n\n if (isEmptyJsonObject(input)) {\n return { type: \"empty\" };\n }\n\n const text = JSON.stringify(input);\n if (text === undefined) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n return { type: \"complete\", text };\n}\n\nfunction finalizeAnthropicStreamTool(\n state: AnthropicStreamToolState,\n usage: Usage,\n): CompletionModelStreamEvent | undefined {\n if (state.finalized) return undefined;\n\n if (state.initialInput.type === \"complete\") {\n state.finalized = true;\n return undefined;\n }\n\n if (state.hasPartialJson) {\n assertSerializedToolInput(state.partialJson, state.id, usage);\n state.finalized = true;\n return undefined;\n }\n state.finalized = true;\n return toolCallDelta(state.id, { argumentsDelta: \"{}\" });\n}\n\nfunction assertSerializedToolInput(text: string, toolCallId: string, usage: Usage): void {\n const parsed = parseSerializedToolInput(text);\n if (parsed.type === \"malformed\") {\n throw providerOutputError(\"malformed-tool-arguments\", usage, toolCallId);\n }\n if (parsed.type === \"invalid\") {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n}\n\nfunction parseSerializedToolInput(\n text: string,\n): { type: \"valid\"; value: JsonValue } | { type: \"malformed\" } | { type: \"invalid\" } {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n return { type: \"malformed\" };\n }\n return isJsonValue(value) ? { type: \"valid\", value } : { type: \"invalid\" };\n}\n\nfunction isEmptyJsonObject(value: JsonValue): boolean {\n return (\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n value !== null &&\n Object.keys(value).length === 0\n );\n}\n\nfunction requiredToolCallId(value: unknown, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return value;\n}\n\nfunction requiredToolName(value: unknown, toolCallId: string, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage, toolCallId);\n }\n return value;\n}\n\nfunction anthropicToolStreamIndex(value: unknown, usage: Usage): number {\n const index = optionalAnthropicToolStreamIndex(value);\n if (index === undefined) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return index;\n}\n\nfunction optionalAnthropicToolStreamIndex(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : undefined;\n}\n\nexport function toAnthropicMessagesParams(\n modelId: AnthropicCompletionModelId,\n request: CompletionRequest,\n): AnthropicCreateParams {\n const messages = requestMessages(request);\n const system = systemFromMessages(request, messages);\n if (\n request.providerOptions !== undefined &&\n (!isPlainObject(request.providerOptions) || !isJsonValue(request.providerOptions))\n ) {\n throw new TypeError(\"Anthropic providerOptions must be a JSON object.\");\n }\n const providerOptions = request.providerOptions ?? {};\n const params: AnthropicCreateParams = {\n ...providerOptions,\n model: modelId,\n max_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,\n messages: messages.flatMap(messageToAnthropicMessages),\n };\n\n delete params.tools;\n\n if (system !== undefined) {\n params.system = system;\n }\n\n if (request.tools.length > 0) {\n params.tools = request.tools.map(toolDefinitionToAnthropic);\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.toolChoice !== undefined) {\n params.tool_choice = toolChoiceToAnthropic(request.toolChoice);\n }\n\n return params;\n}\n\nfunction anthropicRequestOptions(options: ModelCallOptions | undefined): {\n signal?: AbortSignal | undefined;\n maxRetries: 0;\n} {\n return { signal: options?.abortSignal, maxRetries: 0 };\n}\n\nfunction providerRequestSummary(\n params: AnthropicCreateParams,\n request: CompletionRequest,\n options: { stream?: boolean | undefined },\n): JsonObject {\n return compactJsonObject({\n provider: \"anthropic\",\n api: \"messages\",\n stream: options.stream === true,\n model: stringFrom(params.model),\n parameterKeys: Object.keys(params).sort(),\n messageCount: Array.isArray(params.messages) ? params.messages.length : undefined,\n toolCount: request.tools.length,\n toolNames: request.tools.map((tool) => tool.name),\n hasSystem: typeof params.system === \"string\" && params.system.length > 0,\n temperature: request.temperature,\n maxTokens: request.maxTokens ?? numberFrom(params.max_tokens),\n toolChoice: toolChoiceSummary(request.toolChoice),\n providerOptionKeys: isPlainObject(request.providerOptions)\n ? Object.keys(request.providerOptions).sort()\n : undefined,\n });\n}\n\nfunction toolChoiceSummary(toolChoice: ToolChoice | undefined): JsonValue | undefined {\n if (toolChoice === undefined || typeof toolChoice === \"string\") {\n return toolChoice;\n }\n return { type: toolChoice.type, name: toolChoice.name };\n}\n\nfunction compactJsonObject(values: Record<string, unknown>): JsonObject {\n return Object.fromEntries(\n Object.entries(values).flatMap(([key, value]) => {\n if (!isJsonValue(value)) {\n return [];\n }\n return [[key, value]];\n }),\n ) as JsonObject;\n}\n\nfunction requestMessages(request: CompletionRequest): MessageType[] {\n return orderedRequestMessages(request);\n}\n\nfunction systemFromMessages(\n request: CompletionRequest,\n messages: MessageType[],\n): string | undefined {\n const systemMessages = messages.flatMap((message) =>\n message.role === \"system\" ? [message.content] : [],\n );\n if (request.instructions !== undefined) {\n systemMessages.unshift(request.instructions);\n }\n return systemMessages.length === 0 ? undefined : systemMessages.join(\"\\n\\n\");\n}\n\nexport function fromAnthropicMessage(response: unknown): CompletionResponse {\n assertAnthropicRawToolFinish(response);\n const result = fromAnthropicMessageUnchecked(response);\n assertAnthropicResponseIntegrity(result, false);\n return result;\n}\n\nfunction fromAnthropicMessageUnchecked(response: unknown): CompletionResponse {\n const raw = isPlainObject(response) ? response : {};\n const content = Array.isArray(raw.content) ? raw.content : [];\n const choice: AssistantContentPart[] = [];\n const usage = anthropicMessageUsage(raw);\n\n for (const block of content) {\n if (!isPlainObject(block)) {\n continue;\n }\n\n if (block.type === \"text\" && typeof block.text === \"string\") {\n choice.push({ type: \"text\", text: block.text });\n }\n\n if (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n const text: Extract<ReasoningDetail, { type: \"text\" }> =\n typeof block.signature === \"string\"\n ? { type: \"text\", text: block.thinking, signature: block.signature }\n : { type: \"text\", text: block.thinking };\n choice.push({ type: \"reasoning\", text: block.thinking, details: [text] });\n }\n\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n choice.push({\n type: \"reasoning\",\n text: \"\",\n details: [{ type: \"redacted\", data: block.data }],\n });\n }\n\n if (block.type === \"tool_use\") {\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n if (!isPlainObject(block.input) || !isJsonValue(block.input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, id);\n }\n choice.push({\n type: \"tool-call\",\n toolCallId: id,\n callId: id,\n toolName: name,\n input: block.input,\n });\n }\n }\n\n const result: CompletionResponse = {\n choice,\n usage,\n rawResponse: response,\n };\n applyAnthropicFinishReason(result, raw.stop_reason);\n\n if (typeof raw.id === \"string\") {\n result.messageId = raw.id;\n }\n\n return result;\n}\n\nfunction applyAnthropicFinishReason(response: CompletionResponse, value: unknown): void {\n if (value === undefined || value === null) return;\n response.finishReason = typeof value === \"string\" ? anthropicFinishReason(value) : \"other\";\n if (typeof value === \"string\") response.providerFinishReason = value;\n}\n\nfunction anthropicFinishReason(value: string): CompletionFinishReason {\n if (value === \"end_turn\" || value === \"stop_sequence\") return \"stop\";\n if (value === \"max_tokens\" || value === \"model_context_window_exceeded\") return \"length\";\n if (value === \"tool_use\") return \"tool-calls\";\n if (value === \"refusal\") return \"content-filter\";\n return \"other\";\n}\n\nfunction assertAnthropicResponseIntegrity(\n response: CompletionResponse,\n hasAccumulatedToolProgress: boolean,\n): void {\n const toolCalls = response.choice.filter((content) => content.type === \"tool-call\");\n if (hasAccumulatedToolProgress || toolCalls.length > 0) {\n assertSafeToolFinishReason(response);\n } else if (response.finishReason === \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n\n const ids = new Set<string>();\n for (const toolCall of toolCalls) {\n if (ids.has(toolCall.toolCallId)) {\n throw providerOutputError(\"invalid-tool-call\", response.usage, toolCall.toolCallId);\n }\n ids.add(toolCall.toolCallId);\n }\n}\n\nfunction assertAnthropicRawToolFinish(response: unknown): void {\n if (!isPlainObject(response) || !anthropicMessageHasToolUse(response)) return;\n const usage = anthropicMessageUsage(response);\n const terminal: CompletionResponse = { choice: [], usage, rawResponse: response };\n applyAnthropicFinishReason(terminal, response.stop_reason);\n assertAnthropicResponseIntegrity(terminal, true);\n}\n\nfunction anthropicMessageHasToolUse(message: unknown): boolean {\n return (\n isPlainObject(message) &&\n Array.isArray(message.content) &&\n message.content.some((block) => isPlainObject(block) && block.type === \"tool_use\")\n );\n}\n\nfunction anthropicMessageUsage(message: Record<string, unknown>): Usage {\n const usage = isPlainObject(message.usage) ? message.usage : {};\n return anthropicUsage(\n numberFrom(usage.input_tokens),\n numberFrom(usage.output_tokens),\n numberFrom(usage.cache_read_input_tokens),\n numberFrom(usage.cache_creation_input_tokens),\n );\n}\n\nfunction assertSafeToolFinishReason(response: CompletionResponse): void {\n if (response.finishReason === undefined) {\n throw providerOutputError(\"incomplete-tool-call\", response.usage);\n }\n if (response.finishReason === \"length\") {\n throw providerOutputError(\n \"truncated-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"content-filter\") {\n throw providerOutputError(\n \"filtered-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"other\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason !== \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n}\n\nfunction acceptAnthropicStreamFinishReason(current: unknown, next: unknown, usage: Usage): unknown {\n if (current === undefined) return next;\n if (current !== next) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return current;\n}\n\nfunction providerOutputError(\n kind: CompletionProviderOutputErrorKind,\n usage: Usage,\n toolCallId?: string,\n finishReason?: CompletionFinishReason,\n): CompletionProviderOutputError {\n const copiedUsage = copyUsage(usage);\n if (kind === \"truncated-tool-call\") {\n if (finishReason !== \"length\") {\n throw new TypeError('Anthropic truncated-tool-call errors require finish reason \"length\".');\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (kind === \"filtered-tool-call\") {\n if (finishReason !== \"content-filter\") {\n throw new TypeError(\n 'Anthropic filtered-tool-call errors require finish reason \"content-filter\".',\n );\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (finishReason === \"length\" || finishReason === \"content-filter\") {\n throw new TypeError(\"Anthropic provider output error kind contradicts its finish reason.\");\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n}\n\nfunction anthropicUsage(\n uncachedInputTokens: number,\n outputTokens: number,\n cachedInputTokens: number,\n cacheCreationInputTokens: number,\n): Usage {\n const inputTokens = uncachedInputTokens + cachedInputTokens + cacheCreationInputTokens;\n const totalTokens = inputTokens + outputTokens;\n return {\n ...Usage.empty(),\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n details: {\n input: uncachedInputTokens,\n cache_read_input_tokens: cachedInputTokens,\n cache_creation_input_tokens: cacheCreationInputTokens,\n output: outputTokens,\n total: totalTokens,\n },\n };\n}\n\nexport function fromAnthropicStreamEvent(event: unknown): CompletionModelStreamEvent[] {\n if (!isPlainObject(event) || typeof event.type !== \"string\") {\n return [];\n }\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const id = stringFrom(event.message.id);\n return id === undefined ? [] : [{ type: \"message_id\", id }];\n }\n\n if (event.type === \"content_block_start\" && isPlainObject(event.content_block)) {\n const block = event.content_block;\n if (block.type === \"tool_use\") {\n const state = startAnthropicStreamTool(event.index, block, Usage.empty());\n return [\n toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta: state.initialInput.type === \"empty\" ? undefined : state.initialInput.text,\n }),\n ];\n }\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: block.data,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"redacted\",\n },\n ];\n }\n return [];\n }\n\n if (event.type === \"content_block_delta\" && isPlainObject(event.delta)) {\n const delta = event.delta;\n if (delta.type === \"text_delta\" && typeof delta.text === \"string\") {\n return [{ type: \"text_delta\", delta: delta.text }];\n }\n\n if (delta.type === \"thinking_delta\" && typeof delta.thinking === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: delta.thinking,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n },\n ];\n }\n\n if (delta.type === \"signature_delta\" && typeof delta.signature === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: \"\",\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n signature: delta.signature,\n },\n ];\n }\n\n // Tool argument deltas do not repeat the tool id and require stream-level state.\n if (delta.type === \"input_json_delta\") return [];\n }\n\n if (event.type === \"message_stop\" && isPlainObject(event.message)) {\n return [{ type: \"final\", response: fromAnthropicMessage(event.message) }];\n }\n\n if (event.type === \"error\") {\n return [{ type: \"error\", error: event.error ?? event }];\n }\n\n return [];\n}\n\nfunction messageToAnthropicMessages(message: MessageType): AnthropicMessage[] {\n if (message.role === \"system\") {\n return [];\n }\n\n if (message.role === \"user\") {\n if (typeof message.content === \"string\") {\n return [{ role: \"user\", content: message.content }];\n }\n return [\n {\n role: \"user\",\n content: message.content.map(userContentToAnthropicBlock),\n },\n ];\n }\n\n if (message.role === \"tool\") {\n return [\n {\n role: \"user\",\n content: message.content.map((content) => {\n if (content.type !== \"tool-result\") {\n throw new TypeError(\n \"Anvia interaction responses must be resolved by Agent before provider calls.\",\n );\n }\n return toolContentToAnthropicBlock(content);\n }),\n },\n ];\n }\n\n return [\n {\n role: \"assistant\",\n content:\n typeof message.content === \"string\"\n ? message.content\n : message.content.flatMap((content): AnthropicContentBlock[] => {\n if (content.type === \"text\") {\n return [{ type: \"text\", text: content.text }];\n }\n\n if (content.type === \"tool-call\") {\n return [\n {\n type: \"tool_use\",\n id: content.callId ?? content.toolCallId,\n name: content.toolName,\n input: content.input,\n },\n ];\n }\n\n if (content.type === \"reasoning\" && content.details !== undefined) {\n return content.details.flatMap(reasoningContentToAnthropicBlocks);\n }\n\n if (content.type === \"image\" || content.type === \"file\") {\n throw new Error(\n \"Anthropic Messages does not support image or file content in assistant history\",\n );\n }\n\n return [];\n }),\n },\n ];\n}\n\nfunction toolContentToAnthropicBlock(content: ToolResultPart): AnthropicContentBlock {\n const block: AnthropicContentBlock = {\n type: \"tool_result\",\n tool_use_id: content.callId ?? content.toolCallId,\n content: toolResultToAnthropicContent(content),\n };\n if (\n content.output.type === \"error-text\" ||\n content.output.type === \"error-json\" ||\n content.output.type === \"execution-denied\"\n ) {\n block.is_error = true;\n }\n return block;\n}\n\nfunction toolResultContentToAnthropicContent(\n content: readonly ToolResultContentPart[],\n): string | AnthropicContentBlock[] {\n if (content.every((item) => item.type === \"text\")) {\n return content.map((item) => item.text).join(\"\\n\");\n }\n\n return content.map((item) => {\n if (item.type === \"text\") {\n return { type: \"text\", text: item.text };\n }\n return fileToAnthropicBlock(item);\n });\n}\n\nfunction toolResultToAnthropicContent(content: ToolResultPart): string | AnthropicContentBlock[] {\n const output = content.output;\n if (output.type === \"text\" || output.type === \"error-text\") {\n return output.value;\n }\n if (output.type === \"json\" || output.type === \"error-json\") {\n return JSON.stringify(output.value);\n }\n if (output.type === \"execution-denied\") {\n return output.reason ?? \"Tool execution was denied.\";\n }\n return toolResultContentToAnthropicContent(output.value);\n}\n\nfunction reasoningContentToAnthropicBlocks(content: ReasoningDetail): AnthropicContentBlock[] {\n if (content.type === \"text\" || content.type === \"summary\") {\n const block: AnthropicContentBlock = {\n type: \"thinking\",\n thinking: content.text,\n };\n if (content.type === \"text\" && content.signature !== undefined) {\n block.signature = content.signature;\n }\n return [block];\n }\n\n if (content.type === \"redacted\") {\n return [{ type: \"redacted_thinking\", data: content.data }];\n }\n\n return [];\n}\n\nfunction userContentToAnthropicBlock(content: UserContentPart): AnthropicContentBlock {\n if (content.type === \"text\") {\n return { type: \"text\", text: content.text };\n }\n\n if (content.type === \"image\") {\n return imageToAnthropicBlock(content);\n }\n\n if (content.type === \"file\") {\n return fileToAnthropicBlock(content);\n }\n\n throw new Error(\"Tool results must be mapped before user content blocks\");\n}\n\nfunction imageToAnthropicBlock(image: ImagePart): AnthropicContentBlock {\n if (image.image.type === \"url\") {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: image.image.url,\n },\n };\n }\n\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: image.mediaType ?? \"image/png\",\n data: image.image.data,\n },\n };\n}\n\nfunction fileToAnthropicBlock(file: FilePart): AnthropicContentBlock {\n if (file.data.type === \"text\") {\n return { type: \"text\", text: file.data.text };\n }\n\n if (file.mediaType.startsWith(\"image/\")) {\n return imageToAnthropicBlock({\n type: \"image\",\n image: file.data,\n mediaType: file.mediaType,\n });\n }\n\n if (file.mediaType !== \"application/pdf\") {\n throw new Error(\"Anthropic Messages only supports image and PDF file attachments\");\n }\n\n if (file.data.type === \"url\") {\n return {\n type: \"document\",\n source: {\n type: \"url\",\n url: file.data.url,\n },\n };\n }\n\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: file.mediaType,\n data: file.data.data,\n },\n };\n}\n\nfunction toolDefinitionToAnthropic(tool: ToolDefinition): AnthropicContentBlock {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n };\n}\n\nfunction toolChoiceToAnthropic(toolChoice: ToolChoice): unknown {\n if (toolChoice === \"auto\") {\n return { type: \"auto\" };\n }\n\n if (toolChoice === \"required\") {\n return { type: \"any\" };\n }\n\n if (toolChoice === \"none\") {\n return { type: \"none\" };\n }\n\n return {\n type: \"tool\",\n name: toolChoice.name,\n };\n}\n\nfunction toolCallDelta(\n id: string,\n values: { name?: string | undefined; argumentsDelta?: string | undefined },\n): CompletionModelStreamEvent {\n const event: CompletionModelStreamEvent = { type: \"tool_call_delta\", id };\n if (values.name !== undefined) event.name = values.name;\n if (values.argumentsDelta !== undefined) event.argumentsDelta = values.argumentsDelta;\n return event;\n}\n\nexport const anthropicMessageHelpers = {\n messageToAnthropicMessages,\n toolDefinitionToAnthropic,\n};\n","import {\n type CompletionRequest,\n type Message as MessageType,\n normalizeDocuments,\n} from \"@anvia/core/completion\";\n\nexport type OrderedRequestMessagesOptions = {\n includeInstructionsAsSystem?: boolean;\n};\n\nexport function orderedRequestMessages(\n request: CompletionRequest,\n options: OrderedRequestMessagesOptions = {},\n): MessageType[] {\n const messages: MessageType[] = [];\n if (options.includeInstructionsAsSystem === true && request.instructions !== undefined) {\n messages.push({ role: \"system\", content: request.instructions });\n }\n messages.push(...request.chatHistory.filter((message) => message.role === \"system\"));\n const documents = normalizeDocuments(request.documents);\n if (documents !== undefined) {\n messages.push(documents);\n }\n messages.push(...request.chatHistory.filter((message) => message.role !== \"system\"));\n return messages;\n}\n","import type { JsonObject } from \"@anvia/core/completion\";\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function numberFrom(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n}\n\nexport function stringFrom(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function schemaName(schema: JsonObject): string {\n return typeof schema.title === \"string\" ? schema.title : \"response_schema\";\n}\n","import type { ModelContextLimits } from \"@anvia/core/completion\";\nimport type { ModelId } from \"@anvia/core/model-listing\";\n\nexport type KnownAnthropicCompletionModelId =\n | \"claude-3-5-sonnet-20240620\"\n | \"claude-3-5-sonnet-20241022\"\n | \"claude-3-7-sonnet-20250219\"\n | \"claude-3-haiku-20240307\"\n | \"claude-3-opus-20240229\"\n | \"claude-3-sonnet-20240229\"\n | \"claude-fable-5\"\n | \"claude-haiku-4-5\"\n | \"claude-haiku-4-5-20251001\"\n | \"claude-opus-4-0\"\n | \"claude-opus-4-1\"\n | \"claude-opus-4-1-20250805\"\n | \"claude-opus-4-20250514\"\n | \"claude-opus-4-5\"\n | \"claude-opus-4-5-20251101\"\n | \"claude-opus-4-6\"\n | \"claude-opus-4-7\"\n | \"claude-opus-4-8\"\n | \"claude-opus-5\"\n | \"claude-mythos-5\"\n | \"claude-mythos-preview\"\n | \"claude-sonnet-4-0\"\n | \"claude-sonnet-4-20250514\"\n | \"claude-sonnet-4-5\"\n | \"claude-sonnet-4-5-20250929\"\n | \"claude-sonnet-4-6\"\n | \"claude-sonnet-5\";\n\nexport type AnthropicCompletionModelId = ModelId<KnownAnthropicCompletionModelId>;\n\nconst CONTEXT_200K_32K = { contextWindow: 200_000, maxOutputTokens: 32_000 };\nconst CONTEXT_200K_64K = { contextWindow: 200_000, maxOutputTokens: 64_000 };\nconst CONTEXT_1M_128K = { contextWindow: 1_000_000, maxOutputTokens: 128_000 };\n\nexport const ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS = {\n \"claude-3-5-sonnet-20240620\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-5-sonnet-20241022\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-7-sonnet-20250219\": CONTEXT_200K_64K,\n \"claude-3-haiku-20240307\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-opus-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-sonnet-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-fable-5\": CONTEXT_1M_128K,\n \"claude-haiku-4-5\": CONTEXT_200K_64K,\n \"claude-haiku-4-5-20251001\": CONTEXT_200K_64K,\n \"claude-opus-4-0\": CONTEXT_200K_32K,\n \"claude-opus-4-1\": CONTEXT_200K_32K,\n \"claude-opus-4-1-20250805\": CONTEXT_200K_32K,\n \"claude-opus-4-20250514\": CONTEXT_200K_32K,\n \"claude-opus-4-5\": CONTEXT_200K_64K,\n \"claude-opus-4-5-20251101\": CONTEXT_200K_64K,\n \"claude-opus-4-6\": CONTEXT_1M_128K,\n \"claude-opus-4-7\": CONTEXT_1M_128K,\n \"claude-opus-4-8\": CONTEXT_1M_128K,\n \"claude-opus-5\": CONTEXT_1M_128K,\n \"claude-mythos-5\": CONTEXT_1M_128K,\n \"claude-mythos-preview\": CONTEXT_1M_128K,\n \"claude-sonnet-4-0\": CONTEXT_200K_64K,\n \"claude-sonnet-4-20250514\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5-20250929\": CONTEXT_200K_64K,\n \"claude-sonnet-4-6\": { contextWindow: 1_000_000, maxOutputTokens: 64_000 },\n \"claude-sonnet-5\": CONTEXT_1M_128K,\n} satisfies Readonly<Record<KnownAnthropicCompletionModelId, ModelContextLimits>>;\n","import {\n AnthropicVertex,\n type ClientOptions as AnthropicVertexSdkOptions,\n} from \"@anthropic-ai/vertex-sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicVertexManagedClientOptions = Omit<AnthropicVertexSdkOptions, \"maxRetries\"> & {\n client?: never;\n};\n\ntype AnthropicVertexInjectedClientOptions = {\n client: AnthropicVertex;\n} & {\n [Key in Exclude<keyof AnthropicVertexManagedClientOptions, \"client\">]?: never;\n};\n\nexport type AnthropicVertexClientOptions =\n | AnthropicVertexManagedClientOptions\n | AnthropicVertexInjectedClientOptions;\n\nexport type AnthropicVertexCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicVertexCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicVertexClient {\n private readonly sdk: AnthropicVertex;\n\n constructor(options: AnthropicVertexClientOptions) {\n const { client, ...clientOptions } = options;\n if (client !== undefined) {\n const conflict = Object.keys(clientOptions)[0];\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicVertexClient cannot combine client with ${conflict}.`);\n }\n this.sdk = client;\n return;\n }\n this.sdk = new AnthropicVertex({ ...clientOptions, maxRetries: 0 });\n }\n\n completionModel(\n options: AnthropicVertexCompletionModelOptions,\n ): AnthropicVertexCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAAO,eAAe;AACtB;AAAA,EAEE;AAAA,OAEK;AACP;AAAA,EAGE;AAAA,OACK;;;ACPP;AAAA,EAEE;AAAA,EAKA;AAAA,EAMA;AAAA,EAWA;AAAA,EAEA;AAAA,OACK;;;AC9BP;AAAA,EAGE;AAAA,OACK;AAMA,SAAS,uBACd,SACA,UAAyC,CAAC,GAC3B;AACf,QAAM,WAA0B,CAAC;AACjC,MAAI,QAAQ,gCAAgC,QAAQ,QAAQ,iBAAiB,QAAW;AACtF,aAAS,KAAK,EAAE,MAAM,UAAU,SAAS,QAAQ,aAAa,CAAC;AAAA,EACjE;AACA,WAAS,KAAK,GAAG,QAAQ,YAAY,OAAO,CAAC,YAAY,QAAQ,SAAS,QAAQ,CAAC;AACnF,QAAM,YAAY,mBAAmB,QAAQ,SAAS;AACtD,MAAI,cAAc,QAAW;AAC3B,aAAS,KAAK,SAAS;AAAA,EACzB;AACA,WAAS,KAAK,GAAG,QAAQ,YAAY,OAAO,CAAC,YAAY,QAAQ,SAAS,QAAQ,CAAC;AACnF,SAAO;AACT;;;ACvBO,SAAS,cAAc,OAAkD;AAC9E,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEO,SAAS,WAAW,OAAwB;AACjD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI;AACpF;AAEO,SAAS,WAAW,OAAoC;AAC7D,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;;;AF4CA,IAAM,qBAAqB;AAEpB,IAAM,2BAAN,MAA4E;AAAA,EAWjF,YACmB,QACR,SACA,eACT;AAHiB;AACR;AACA;AAAA,EACR;AAAA,EAHgB;AAAA,EACR;AAAA,EACA;AAAA,EAbF,WAAW;AAAA,EACX,eAA4C;AAAA,IACnD,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,cAAc;AAAA,IACd,WAAW;AAAA,EACb;AAAA,EAOQ,YAA6C;AACnD,WAAO,KAAK,kBAAkB,SAC1B,SACA,EAAE,SAAS,KAAK,SAAS,SAAS,KAAK,cAAc;AAAA,EAC3D;AAAA,EAEA,aACE,SACA,UAA4C,CAAC,GACjC;AACZ,UAAM,SAAS,0BAA0B,KAAK,SAAS,OAAO;AAC9D,QAAI,QAAQ,WAAW,MAAM;AAC3B,aAAO,SAAS;AAAA,IAClB;AACA,WAAO,uBAAuB,QAAQ,SAAS,OAAO;AAAA,EACxD;AAAA,EAEA,MAAM,WACJ,SACA,SAC6B;AAC7B,qCAAiC,MAAM,OAAO;AAC9C,UAAM,SAAS,0BAA0B,KAAK,SAAS,OAAO;AAC9D,UAAM,WAAW,MAAM,KAAK,cAAc,QAAQ,wBAAwB,OAAO,CAAC;AAClF,WAAO,iBAAiB,qBAAqB,QAAQ,GAAG,KAAK,UAAU,CAAC;AAAA,EAC1E;AAAA,EAEQ,cACN,QACA,SACkB;AAClB,UAAM,WAAW,KAAK,OAAO;AAC7B,UAAM,SAAS,SAAS;AACxB,WAAO,OAAO,KAAK,UAAU,QAAQ,OAAO;AAAA,EAC9C;AAAA,EAEA,OAAO,iBACL,SACA,SAC2C;AAC3C,qCAAiC,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AACnE,UAAM,SAAS,EAAE,GAAG,0BAA0B,KAAK,SAAS,OAAO,GAAG,QAAQ,KAAK;AACnF,UAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,wBAAwB,OAAO,CAAC;AAChF,UAAM,eAAe,oBAAI,IAAsC;AAC/D,UAAM,kBAAkB,oBAAI,IAAoB;AAChD,UAAM,cAAc,MAAM,MAAM;AAChC,UAAM,oBAAoB,gCAAgC;AAC1D,QAAI,iBAAiB;AACrB,QAAI,kBAAkB;AACtB,QAAI,mBAAmB;AACvB,QAAI;AACJ,QAAI;AACJ,qBAAiB,SAAS,QAA6C;AACrE,YAAM,0BAA0B,+BAA+B;AAC/D,UAAI,cAAc,KAAK,GAAG;AACxB,YAAI,MAAM,SAAS,mBAAmB,cAAc,MAAM,OAAO,GAAG;AAClE,4BAAkB,WAAW,MAAM,QAAQ,EAAE,KAAK;AAClD,cAAI,MAAM,QAAQ,gBAAgB,UAAa,MAAM,QAAQ,gBAAgB,MAAM;AACjF,yCAA6B;AAAA,cAC3B;AAAA,cACA,MAAM,QAAQ;AAAA,cACd;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,MAAM,SAAS,mBAAmB,cAAc,MAAM,KAAK,GAAG;AAChE,cAAI,MAAM,MAAM,gBAAgB,UAAa,MAAM,MAAM,gBAAgB,MAAM;AAC7E,yCAA6B;AAAA,cAC3B;AAAA,cACA,MAAM,MAAM;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,yBACE,0BAA0B,OAAO,aAAa,iBAAiB,KAAK;AAAA,MACxE;AAEA,UAAI,2BAA2B,iCAAiC,KAAK,GAAG;AACtE,cAAM,oBAAoB,qBAAqB,WAAW;AAAA,MAC5D;AAEA,UACE,cAAc,KAAK,KACnB,MAAM,SAAS,yBACf,cAAc,MAAM,aAAa,KACjC,MAAM,cAAc,SAAS,YAC7B;AACA,cAAM,QAAQ,yBAAyB,MAAM,OAAO,MAAM,eAAe,WAAW;AACpF,YAAI,aAAa,IAAI,MAAM,KAAK,KAAK,gBAAgB,IAAI,MAAM,EAAE,GAAG;AAClE,gBAAM,oBAAoB,qBAAqB,aAAa,MAAM,EAAE;AAAA,QACtE;AACA,qBAAa,IAAI,MAAM,OAAO,KAAK;AACnC,wBAAgB,IAAI,MAAM,IAAI,MAAM,KAAK;AACzC,0BAAkB;AAClB,cAAM,cAAc,MAAM,IAAI;AAAA,UAC5B,MAAM,MAAM;AAAA,UACZ,gBACE,MAAM,aAAa,SAAS,aAAa,MAAM,aAAa,OAAO;AAAA,QACvE,CAAC;AACD;AAAA,MACF;AAEA,UACE,cAAc,KAAK,KACnB,MAAM,SAAS,yBACf,cAAc,MAAM,KAAK,KACzB,MAAM,MAAM,SAAS,oBACrB;AACA,cAAM,QAAQ,yBAAyB,MAAM,OAAO,WAAW;AAC/D,cAAM,QAAQ,aAAa,IAAI,KAAK;AACpC,YAAI,UAAU,QAAW;AACvB,gBAAM,oBAAoB,qBAAqB,WAAW;AAAA,QAC5D;AACA,YAAI,MAAM,UAAU,MAAM,WAAW;AACnC,gBAAM,oBAAoB,qBAAqB,aAAa,MAAM,EAAE;AAAA,QACtE;AACA,YAAI,OAAO,MAAM,MAAM,iBAAiB,UAAU;AAChD,gBAAM,oBAAoB,0BAA0B,aAAa,MAAM,EAAE;AAAA,QAC3E;AACA,YAAI,MAAM,aAAa,SAAS,YAAY;AAC1C,gBAAM,oBAAoB,0BAA0B,aAAa,MAAM,EAAE;AAAA,QAC3E;AACA,cAAM,iBAAiB;AACvB,cAAM,eAAe,MAAM,MAAM;AACjC,cAAM,cAAc,MAAM,IAAI,EAAE,gBAAgB,MAAM,MAAM,aAAa,CAAC;AAC1E;AAAA,MACF;AAEA,UAAI,cAAc,KAAK,KAAK,MAAM,SAAS,sBAAsB;AAC/D,cAAM,QAAQ,iCAAiC,MAAM,KAAK;AAC1D,cAAM,QAAQ,UAAU,SAAY,SAAY,aAAa,IAAI,KAAK;AACtE,YAAI,UAAU,QAAW;AACvB,cAAI,MAAM,QAAQ;AAChB,kBAAM,oBAAoB,qBAAqB,aAAa,MAAM,EAAE;AAAA,UACtE;AACA,gBAAM,SAAS;AACf;AAAA,QACF;AAAA,MACF;AAEA,UAAI,cAAc,KAAK,KAAK,MAAM,SAAS,gBAAgB;AACzD,2BAAmB;AACnB,cAAM,eAAe,cAAc,MAAM,OAAO,IAAI,MAAM,UAAU;AACpE,YAAI,cAAc,gBAAgB,UAAa,aAAa,gBAAgB,MAAM;AAChF,uCAA6B;AAAA,YAC3B;AAAA,YACA,aAAa;AAAA,YACb;AAAA,UACF;AAAA,QACF;AACA,cAAM,yBAAyB,2BAA2B,YAAY;AACtE,YAAI,mBAAmB,wBAAwB;AAC7C,gBAAM,YACJ,iBAAiB,SAAY,MAAM,MAAM,IAAI,sBAAsB,YAAY;AACjF,gBAAM,gBAAgB,iBAClB,WAAW,WAAW,aAAa,iBAAiB,IACpD;AACJ,gBAAM,mBAAmB;AAAA,YACvB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,qCAA2B,kBAAkB,0BAA0B;AACvE,2CAAiC,kBAAkB,IAAI;AAAA,QACzD;AACA,mBAAW,SAAS,aAAa,OAAO,GAAG;AACzC,gBAAM,aAAa,4BAA4B,OAAO,WAAW;AACjE,cAAI,eAAe,OAAW,OAAM;AAAA,QACtC;AAEA,cAAM,eACJ,iBAAiB,SACb,8BAA8B,YAAY,IAC1C,6BAA6B,OAAO,iBAAiB,WAAW;AACtE,cAAM,WAAW,iBACb;AAAA,UACE,GAAG;AAAA,UACH,OAAO,WAAW,aAAa,OAAO,aAAa,iBAAiB;AAAA,QACtE,IACA;AACJ,mCAA2B,UAAU,0BAA0B;AAC/D,yCAAiC,UAAU,mBAAmB,sBAAsB;AACpF,cAAM;AAAA,UACJ,MAAM;AAAA,UACN,UAAU,iBAAiB,UAAU,KAAK,UAAU,CAAC;AAAA,QACvD;AACA;AAAA,MACF;AAEA,UAAI,cAAc,KAAK,KAAK,MAAM,SAAS,SAAS;AAClD,2BAAmB;AAAA,MACrB;AAEA,iBAAW,UAAU,yBAAyB,KAAK,GAAG;AACpD,cAAM;AAAA,MACR;AAEA,UAAI,iBAAkB;AAAA,IACxB;AAEA,QAAI,mBAAmB,CAAC,kBAAkB;AACxC,YAAM,oBAAoB,qBAAqB,WAAW;AAAA,IAC5D;AAAA,EACF;AACF;AAEA,SAAS,iCAAiC,OAAyB;AACjE,SACE,cAAc,KAAK,MAClB,MAAM,SAAS,yBAAyB,MAAM,SAAS;AAE5D;AASA,SAAS,kCAA8D;AACrE,SAAO;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,0BAA0B;AAAA,EAC5B;AACF;AAEA,SAAS,0BACP,OACA,OACA,QACS;AACT,MAAI,UAAU;AACd,MAAI,sBAAsB,KAAK;AAAA,IAC7B;AAAA,IACA,MAAM,cAAc,MAAM,oBAAoB,MAAM;AAAA,EACtD;AAEA,MAAI,MAAM,SAAS,mBAAmB,cAAc,MAAM,OAAO,GAAG;AAClE,UAAM,SAAS,cAAc,MAAM,QAAQ,KAAK,IAAI,MAAM,QAAQ,QAAQ;AAC1E,QAAI,WAAW,QAAW;AACxB,UAAI,kBAAkB,QAAQ;AAC5B,8BAAsB,WAAW,OAAO,YAAY;AACpD,eAAO,cAAc;AACrB,kBAAU;AAAA,MACZ;AACA,UAAI,6BAA6B,QAAQ;AACvC,cAAM,oBAAoB,WAAW,OAAO,uBAAuB;AACnE,eAAO,oBAAoB;AAC3B,kBAAU;AAAA,MACZ;AACA,UAAI,iCAAiC,QAAQ;AAC3C,cAAM,2BAA2B,WAAW,OAAO,2BAA2B;AAC9E,eAAO,2BAA2B;AAClC,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM,SAAS,iBAAiB;AAClC,UAAM,SAAS,cAAc,MAAM,KAAK,IAAI,MAAM,QAAQ;AAC1D,QAAI,WAAW,UAAa,mBAAmB,QAAQ;AACrD,YAAM,eAAe,KAAK,IAAI,MAAM,cAAc,WAAW,OAAO,aAAa,CAAC;AAClF,aAAO,eAAe;AACtB,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,MAAI,SAAS;AACX,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,WAAW,MAAa,QAAe,QAA2C;AACzF,QAAM,0BAA0B,KAAK;AAAA,IACnC;AAAA,IACA,KAAK,cAAc,KAAK,oBAAoB,KAAK;AAAA,EACnD;AACA,QAAM,4BAA4B,KAAK;AAAA,IACrC;AAAA,IACA,OAAO,cAAc,OAAO,oBAAoB,OAAO;AAAA,EACzD;AACA,QAAM,sBAAsB,OAAO,cAC/B,4BACA;AACJ,QAAM,eAAe,OAAO,eAAe,OAAO,eAAe,KAAK;AACtE,QAAM,oBAAoB,OAAO,oBAC7B,OAAO,oBACP,KAAK;AACT,QAAM,2BAA2B,OAAO,2BACpC,OAAO,2BACP,KAAK;AACT,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,UAAU,OAAqB;AACtC,MAAI,OAAc,EAAE,GAAG,MAAM;AAC7B,MAAI,MAAM,YAAY,OAAW,QAAO,EAAE,GAAG,MAAM,SAAS,EAAE,GAAG,MAAM,QAAQ,EAAE;AACjF,SAAO;AACT;AAEA,SAAS,6BACP,aACA,WACA,OACoB;AACpB,QAAM,WAA+B;AAAA,IACnC,QAAQ,CAAC;AAAA,IACT,OAAO,UAAU,KAAK;AAAA,IACtB;AAAA,EACF;AACA,MAAI,cAAc,OAAW,UAAS,YAAY;AAClD,SAAO;AACT;AAEA,SAAS,yBACP,YACA,OACA,OAC0B;AAC1B,QAAM,QAAQ,yBAAyB,YAAY,KAAK;AACxD,QAAM,KAAK,mBAAmB,MAAM,IAAI,KAAK;AAC7C,QAAM,OAAO,iBAAiB,MAAM,MAAM,IAAI,KAAK;AACnD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,yBAAyB,MAAM,OAAO,IAAI,KAAK;AAAA,IAC7D,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,WAAW;AAAA,EACb;AACF;AAEA,SAAS,yBACP,OACA,YACA,OAC0B;AAC1B,MAAI,CAAC,cAAc,KAAK,KAAK,CAAC,YAAY,KAAK,GAAG;AAChD,UAAM,oBAAoB,0BAA0B,OAAO,UAAU;AAAA,EACvE;AAEA,MAAI,kBAAkB,KAAK,GAAG;AAC5B,WAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAEA,QAAM,OAAO,KAAK,UAAU,KAAK;AACjC,MAAI,SAAS,QAAW;AACtB,UAAM,oBAAoB,0BAA0B,OAAO,UAAU;AAAA,EACvE;AACA,SAAO,EAAE,MAAM,YAAY,KAAK;AAClC;AAEA,SAAS,4BACP,OACA,OACwC;AACxC,MAAI,MAAM,UAAW,QAAO;AAE5B,MAAI,MAAM,aAAa,SAAS,YAAY;AAC1C,UAAM,YAAY;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,gBAAgB;AACxB,8BAA0B,MAAM,aAAa,MAAM,IAAI,KAAK;AAC5D,UAAM,YAAY;AAClB,WAAO;AAAA,EACT;AACA,QAAM,YAAY;AAClB,SAAO,cAAc,MAAM,IAAI,EAAE,gBAAgB,KAAK,CAAC;AACzD;AAEA,SAAS,0BAA0B,MAAc,YAAoB,OAAoB;AACvF,QAAM,SAAS,yBAAyB,IAAI;AAC5C,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,oBAAoB,4BAA4B,OAAO,UAAU;AAAA,EACzE;AACA,MAAI,OAAO,SAAS,WAAW;AAC7B,UAAM,oBAAoB,0BAA0B,OAAO,UAAU;AAAA,EACvE;AACF;AAEA,SAAS,yBACP,MACmF;AACnF,MAAI;AACJ,MAAI;AACF,YAAQ,KAAK,MAAM,IAAI;AAAA,EACzB,QAAQ;AACN,WAAO,EAAE,MAAM,YAAY;AAAA,EAC7B;AACA,SAAO,YAAY,KAAK,IAAI,EAAE,MAAM,SAAS,MAAM,IAAI,EAAE,MAAM,UAAU;AAC3E;AAEA,SAAS,kBAAkB,OAA2B;AACpD,SACE,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,KAAK,KAAK,EAAE,WAAW;AAElC;AAEA,SAAS,mBAAmB,OAAgB,OAAsB;AAChE,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAC1D,UAAM,oBAAoB,qBAAqB,KAAK;AAAA,EACtD;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAgB,YAAoB,OAAsB;AAClF,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAC1D,UAAM,oBAAoB,qBAAqB,OAAO,UAAU;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,OAAgB,OAAsB;AACtE,QAAM,QAAQ,iCAAiC,KAAK;AACpD,MAAI,UAAU,QAAW;AACvB,UAAM,oBAAoB,qBAAqB,KAAK;AAAA,EACtD;AACA,SAAO;AACT;AAEA,SAAS,iCAAiC,OAAoC;AAC5E,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,SAAS,IAAI,QAAQ;AACtF;AAEO,SAAS,0BACd,SACA,SACuB;AACvB,QAAM,WAAW,gBAAgB,OAAO;AACxC,QAAM,SAAS,mBAAmB,SAAS,QAAQ;AACnD,MACE,QAAQ,oBAAoB,WAC3B,CAAC,cAAc,QAAQ,eAAe,KAAK,CAAC,YAAY,QAAQ,eAAe,IAChF;AACA,UAAM,IAAI,UAAU,kDAAkD;AAAA,EACxE;AACA,QAAM,kBAAkB,QAAQ,mBAAmB,CAAC;AACpD,QAAM,SAAgC;AAAA,IACpC,GAAG;AAAA,IACH,OAAO;AAAA,IACP,YAAY,QAAQ,aAAa;AAAA,IACjC,UAAU,SAAS,QAAQ,0BAA0B;AAAA,EACvD;AAEA,SAAO,OAAO;AAEd,MAAI,WAAW,QAAW;AACxB,WAAO,SAAS;AAAA,EAClB;AAEA,MAAI,QAAQ,MAAM,SAAS,GAAG;AAC5B,WAAO,QAAQ,QAAQ,MAAM,IAAI,yBAAyB;AAAA,EAC5D;AAEA,MAAI,QAAQ,gBAAgB,QAAW;AACrC,WAAO,cAAc,QAAQ;AAAA,EAC/B;AAEA,MAAI,QAAQ,eAAe,QAAW;AACpC,WAAO,cAAc,sBAAsB,QAAQ,UAAU;AAAA,EAC/D;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,SAG/B;AACA,SAAO,EAAE,QAAQ,SAAS,aAAa,YAAY,EAAE;AACvD;AAEA,SAAS,uBACP,QACA,SACA,SACY;AACZ,SAAO,kBAAkB;AAAA,IACvB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ,QAAQ,WAAW;AAAA,IAC3B,OAAO,WAAW,OAAO,KAAK;AAAA,IAC9B,eAAe,OAAO,KAAK,MAAM,EAAE,KAAK;AAAA,IACxC,cAAc,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,SAAS,SAAS;AAAA,IACxE,WAAW,QAAQ,MAAM;AAAA,IACzB,WAAW,QAAQ,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IAChD,WAAW,OAAO,OAAO,WAAW,YAAY,OAAO,OAAO,SAAS;AAAA,IACvE,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ,aAAa,WAAW,OAAO,UAAU;AAAA,IAC5D,YAAY,kBAAkB,QAAQ,UAAU;AAAA,IAChD,oBAAoB,cAAc,QAAQ,eAAe,IACrD,OAAO,KAAK,QAAQ,eAAe,EAAE,KAAK,IAC1C;AAAA,EACN,CAAC;AACH;AAEA,SAAS,kBAAkB,YAA2D;AACpF,MAAI,eAAe,UAAa,OAAO,eAAe,UAAU;AAC9D,WAAO;AAAA,EACT;AACA,SAAO,EAAE,MAAM,WAAW,MAAM,MAAM,WAAW,KAAK;AACxD;AAEA,SAAS,kBAAkB,QAA6C;AACtE,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/C,UAAI,CAAC,YAAY,KAAK,GAAG;AACvB,eAAO,CAAC;AAAA,MACV;AACA,aAAO,CAAC,CAAC,KAAK,KAAK,CAAC;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEA,SAAS,gBAAgB,SAA2C;AAClE,SAAO,uBAAuB,OAAO;AACvC;AAEA,SAAS,mBACP,SACA,UACoB;AACpB,QAAM,iBAAiB,SAAS;AAAA,IAAQ,CAAC,YACvC,QAAQ,SAAS,WAAW,CAAC,QAAQ,OAAO,IAAI,CAAC;AAAA,EACnD;AACA,MAAI,QAAQ,iBAAiB,QAAW;AACtC,mBAAe,QAAQ,QAAQ,YAAY;AAAA,EAC7C;AACA,SAAO,eAAe,WAAW,IAAI,SAAY,eAAe,KAAK,MAAM;AAC7E;AAEO,SAAS,qBAAqB,UAAuC;AAC1E,+BAA6B,QAAQ;AACrC,QAAM,SAAS,8BAA8B,QAAQ;AACrD,mCAAiC,QAAQ,KAAK;AAC9C,SAAO;AACT;AAEA,SAAS,8BAA8B,UAAuC;AAC5E,QAAM,MAAM,cAAc,QAAQ,IAAI,WAAW,CAAC;AAClD,QAAM,UAAU,MAAM,QAAQ,IAAI,OAAO,IAAI,IAAI,UAAU,CAAC;AAC5D,QAAM,SAAiC,CAAC;AACxC,QAAM,QAAQ,sBAAsB,GAAG;AAEvC,aAAW,SAAS,SAAS;AAC3B,QAAI,CAAC,cAAc,KAAK,GAAG;AACzB;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,UAAU,OAAO,MAAM,SAAS,UAAU;AAC3D,aAAO,KAAK,EAAE,MAAM,QAAQ,MAAM,MAAM,KAAK,CAAC;AAAA,IAChD;AAEA,QAAI,MAAM,SAAS,cAAc,OAAO,MAAM,aAAa,UAAU;AACnE,YAAM,OACJ,OAAO,MAAM,cAAc,WACvB,EAAE,MAAM,QAAQ,MAAM,MAAM,UAAU,WAAW,MAAM,UAAU,IACjE,EAAE,MAAM,QAAQ,MAAM,MAAM,SAAS;AAC3C,aAAO,KAAK,EAAE,MAAM,aAAa,MAAM,MAAM,UAAU,SAAS,CAAC,IAAI,EAAE,CAAC;AAAA,IAC1E;AAEA,QAAI,MAAM,SAAS,uBAAuB,OAAO,MAAM,SAAS,UAAU;AACxE,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,YAAY,MAAM,MAAM,KAAK,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,QAAI,MAAM,SAAS,YAAY;AAC7B,YAAM,KAAK,mBAAmB,MAAM,IAAI,KAAK;AAC7C,YAAM,OAAO,iBAAiB,MAAM,MAAM,IAAI,KAAK;AACnD,UAAI,CAAC,cAAc,MAAM,KAAK,KAAK,CAAC,YAAY,MAAM,KAAK,GAAG;AAC5D,cAAM,oBAAoB,0BAA0B,OAAO,EAAE;AAAA,MAC/D;AACA,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO,MAAM;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,SAA6B;AAAA,IACjC;AAAA,IACA;AAAA,IACA,aAAa;AAAA,EACf;AACA,6BAA2B,QAAQ,IAAI,WAAW;AAElD,MAAI,OAAO,IAAI,OAAO,UAAU;AAC9B,WAAO,YAAY,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;AAEA,SAAS,2BAA2B,UAA8B,OAAsB;AACtF,MAAI,UAAU,UAAa,UAAU,KAAM;AAC3C,WAAS,eAAe,OAAO,UAAU,WAAW,sBAAsB,KAAK,IAAI;AACnF,MAAI,OAAO,UAAU,SAAU,UAAS,uBAAuB;AACjE;AAEA,SAAS,sBAAsB,OAAuC;AACpE,MAAI,UAAU,cAAc,UAAU,gBAAiB,QAAO;AAC9D,MAAI,UAAU,gBAAgB,UAAU,gCAAiC,QAAO;AAChF,MAAI,UAAU,WAAY,QAAO;AACjC,MAAI,UAAU,UAAW,QAAO;AAChC,SAAO;AACT;AAEA,SAAS,iCACP,UACA,4BACM;AACN,QAAM,YAAY,SAAS,OAAO,OAAO,CAAC,YAAY,QAAQ,SAAS,WAAW;AAClF,MAAI,8BAA8B,UAAU,SAAS,GAAG;AACtD,+BAA2B,QAAQ;AAAA,EACrC,WAAW,SAAS,iBAAiB,cAAc;AACjD,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,MAAM,oBAAI,IAAY;AAC5B,aAAW,YAAY,WAAW;AAChC,QAAI,IAAI,IAAI,SAAS,UAAU,GAAG;AAChC,YAAM,oBAAoB,qBAAqB,SAAS,OAAO,SAAS,UAAU;AAAA,IACpF;AACA,QAAI,IAAI,SAAS,UAAU;AAAA,EAC7B;AACF;AAEA,SAAS,6BAA6B,UAAyB;AAC7D,MAAI,CAAC,cAAc,QAAQ,KAAK,CAAC,2BAA2B,QAAQ,EAAG;AACvE,QAAM,QAAQ,sBAAsB,QAAQ;AAC5C,QAAM,WAA+B,EAAE,QAAQ,CAAC,GAAG,OAAO,aAAa,SAAS;AAChF,6BAA2B,UAAU,SAAS,WAAW;AACzD,mCAAiC,UAAU,IAAI;AACjD;AAEA,SAAS,2BAA2B,SAA2B;AAC7D,SACE,cAAc,OAAO,KACrB,MAAM,QAAQ,QAAQ,OAAO,KAC7B,QAAQ,QAAQ,KAAK,CAAC,UAAU,cAAc,KAAK,KAAK,MAAM,SAAS,UAAU;AAErF;AAEA,SAAS,sBAAsB,SAAyC;AACtE,QAAM,QAAQ,cAAc,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC;AAC9D,SAAO;AAAA,IACL,WAAW,MAAM,YAAY;AAAA,IAC7B,WAAW,MAAM,aAAa;AAAA,IAC9B,WAAW,MAAM,uBAAuB;AAAA,IACxC,WAAW,MAAM,2BAA2B;AAAA,EAC9C;AACF;AAEA,SAAS,2BAA2B,UAAoC;AACtE,MAAI,SAAS,iBAAiB,QAAW;AACvC,UAAM,oBAAoB,wBAAwB,SAAS,KAAK;AAAA,EAClE;AACA,MAAI,SAAS,iBAAiB,UAAU;AACtC,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,SAAS,iBAAiB,kBAAkB;AAC9C,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,SAAS,iBAAiB,SAAS;AACrC,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,SAAS,iBAAiB,cAAc;AAC1C,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,kCAAkC,SAAkB,MAAe,OAAuB;AACjG,MAAI,YAAY,OAAW,QAAO;AAClC,MAAI,YAAY,MAAM;AACpB,UAAM,oBAAoB,qBAAqB,KAAK;AAAA,EACtD;AACA,SAAO;AACT;AAEA,SAAS,oBACP,MACA,OACA,YACA,cAC+B;AAC/B,QAAM,cAAc,UAAU,KAAK;AACnC,MAAI,SAAS,uBAAuB;AAClC,QAAI,iBAAiB,UAAU;AAC7B,YAAM,IAAI,UAAU,sEAAsE;AAAA,IAC5F;AACA,WAAO,IAAI,8BAA8B;AAAA,MACvC;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,SAAS,sBAAsB;AACjC,QAAI,iBAAiB,kBAAkB;AACrC,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,IAAI,8BAA8B;AAAA,MACvC;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,iBAAiB,YAAY,iBAAiB,kBAAkB;AAClE,UAAM,IAAI,UAAU,qEAAqE;AAAA,EAC3F;AACA,SAAO,IAAI,8BAA8B;AAAA,IACvC;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,eACP,qBACA,cACA,mBACA,0BACO;AACP,QAAM,cAAc,sBAAsB,oBAAoB;AAC9D,QAAM,cAAc,cAAc;AAClC,SAAO;AAAA,IACL,GAAG,MAAM,MAAM;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,MACP,yBAAyB;AAAA,MACzB,6BAA6B;AAAA,MAC7B,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,SAAS,yBAAyB,OAA8C;AACrF,MAAI,CAAC,cAAc,KAAK,KAAK,OAAO,MAAM,SAAS,UAAU;AAC3D,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,MAAM,SAAS,mBAAmB,cAAc,MAAM,OAAO,GAAG;AAClE,UAAM,KAAK,WAAW,MAAM,QAAQ,EAAE;AACtC,WAAO,OAAO,SAAY,CAAC,IAAI,CAAC,EAAE,MAAM,cAAc,GAAG,CAAC;AAAA,EAC5D;AAEA,MAAI,MAAM,SAAS,yBAAyB,cAAc,MAAM,aAAa,GAAG;AAC9E,UAAM,QAAQ,MAAM;AACpB,QAAI,MAAM,SAAS,YAAY;AAC7B,YAAM,QAAQ,yBAAyB,MAAM,OAAO,OAAO,MAAM,MAAM,CAAC;AACxE,aAAO;AAAA,QACL,cAAc,MAAM,IAAI;AAAA,UACtB,MAAM,MAAM;AAAA,UACZ,gBAAgB,MAAM,aAAa,SAAS,UAAU,SAAY,MAAM,aAAa;AAAA,QACvF,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,MAAM,SAAS,uBAAuB,OAAO,MAAM,SAAS,UAAU;AACxE,aAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,OAAO,MAAM;AAAA,UACb,IAAI,YAAY,WAAW,MAAM,KAAK,CAAC;AAAA,UACvC,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,MAAM,SAAS,yBAAyB,cAAc,MAAM,KAAK,GAAG;AACtE,UAAM,QAAQ,MAAM;AACpB,QAAI,MAAM,SAAS,gBAAgB,OAAO,MAAM,SAAS,UAAU;AACjE,aAAO,CAAC,EAAE,MAAM,cAAc,OAAO,MAAM,KAAK,CAAC;AAAA,IACnD;AAEA,QAAI,MAAM,SAAS,oBAAoB,OAAO,MAAM,aAAa,UAAU;AACzE,aAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,OAAO,MAAM;AAAA,UACb,IAAI,YAAY,WAAW,MAAM,KAAK,CAAC;AAAA,UACvC,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,qBAAqB,OAAO,MAAM,cAAc,UAAU;AAC3E,aAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,IAAI,YAAY,WAAW,MAAM,KAAK,CAAC;AAAA,UACvC,aAAa;AAAA,UACb,WAAW,MAAM;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAGA,QAAI,MAAM,SAAS,mBAAoB,QAAO,CAAC;AAAA,EACjD;AAEA,MAAI,MAAM,SAAS,kBAAkB,cAAc,MAAM,OAAO,GAAG;AACjE,WAAO,CAAC,EAAE,MAAM,SAAS,UAAU,qBAAqB,MAAM,OAAO,EAAE,CAAC;AAAA,EAC1E;AAEA,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO,CAAC,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,EACxD;AAEA,SAAO,CAAC;AACV;AAEA,SAAS,2BAA2B,SAA0C;AAC5E,MAAI,QAAQ,SAAS,UAAU;AAC7B,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,QAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,aAAO,CAAC,EAAE,MAAM,QAAQ,SAAS,QAAQ,QAAQ,CAAC;AAAA,IACpD;AACA,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,SAAS,QAAQ,QAAQ,IAAI,2BAA2B;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,SAAS,QAAQ,QAAQ,IAAI,CAAC,YAAY;AACxC,cAAI,QAAQ,SAAS,eAAe;AAClC,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AACA,iBAAO,4BAA4B,OAAO;AAAA,QAC5C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SACE,OAAO,QAAQ,YAAY,WACvB,QAAQ,UACR,QAAQ,QAAQ,QAAQ,CAAC,YAAqC;AAC5D,YAAI,QAAQ,SAAS,QAAQ;AAC3B,iBAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,KAAK,CAAC;AAAA,QAC9C;AAEA,YAAI,QAAQ,SAAS,aAAa;AAChC,iBAAO;AAAA,YACL;AAAA,cACE,MAAM;AAAA,cACN,IAAI,QAAQ,UAAU,QAAQ;AAAA,cAC9B,MAAM,QAAQ;AAAA,cACd,OAAO,QAAQ;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,QAAQ,SAAS,eAAe,QAAQ,YAAY,QAAW;AACjE,iBAAO,QAAQ,QAAQ,QAAQ,iCAAiC;AAAA,QAClE;AAEA,YAAI,QAAQ,SAAS,WAAW,QAAQ,SAAS,QAAQ;AACvD,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,CAAC;AAAA,MACV,CAAC;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,4BAA4B,SAAgD;AACnF,QAAM,QAA+B;AAAA,IACnC,MAAM;AAAA,IACN,aAAa,QAAQ,UAAU,QAAQ;AAAA,IACvC,SAAS,6BAA6B,OAAO;AAAA,EAC/C;AACA,MACE,QAAQ,OAAO,SAAS,gBACxB,QAAQ,OAAO,SAAS,gBACxB,QAAQ,OAAO,SAAS,oBACxB;AACA,UAAM,WAAW;AAAA,EACnB;AACA,SAAO;AACT;AAEA,SAAS,oCACP,SACkC;AAClC,MAAI,QAAQ,MAAM,CAAC,SAAS,KAAK,SAAS,MAAM,GAAG;AACjD,WAAO,QAAQ,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,IAAI;AAAA,EACnD;AAEA,SAAO,QAAQ,IAAI,CAAC,SAAS;AAC3B,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,IACzC;AACA,WAAO,qBAAqB,IAAI;AAAA,EAClC,CAAC;AACH;AAEA,SAAS,6BAA6B,SAA2D;AAC/F,QAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,SAAS,UAAU,OAAO,SAAS,cAAc;AAC1D,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,SAAS,UAAU,OAAO,SAAS,cAAc;AAC1D,WAAO,KAAK,UAAU,OAAO,KAAK;AAAA,EACpC;AACA,MAAI,OAAO,SAAS,oBAAoB;AACtC,WAAO,OAAO,UAAU;AAAA,EAC1B;AACA,SAAO,oCAAoC,OAAO,KAAK;AACzD;AAEA,SAAS,kCAAkC,SAAmD;AAC5F,MAAI,QAAQ,SAAS,UAAU,QAAQ,SAAS,WAAW;AACzD,UAAM,QAA+B;AAAA,MACnC,MAAM;AAAA,MACN,UAAU,QAAQ;AAAA,IACpB;AACA,QAAI,QAAQ,SAAS,UAAU,QAAQ,cAAc,QAAW;AAC9D,YAAM,YAAY,QAAQ;AAAA,IAC5B;AACA,WAAO,CAAC,KAAK;AAAA,EACf;AAEA,MAAI,QAAQ,SAAS,YAAY;AAC/B,WAAO,CAAC,EAAE,MAAM,qBAAqB,MAAM,QAAQ,KAAK,CAAC;AAAA,EAC3D;AAEA,SAAO,CAAC;AACV;AAEA,SAAS,4BAA4B,SAAiD;AACpF,MAAI,QAAQ,SAAS,QAAQ;AAC3B,WAAO,EAAE,MAAM,QAAQ,MAAM,QAAQ,KAAK;AAAA,EAC5C;AAEA,MAAI,QAAQ,SAAS,SAAS;AAC5B,WAAO,sBAAsB,OAAO;AAAA,EACtC;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,WAAO,qBAAqB,OAAO;AAAA,EACrC;AAEA,QAAM,IAAI,MAAM,wDAAwD;AAC1E;AAEA,SAAS,sBAAsB,OAAyC;AACtE,MAAI,MAAM,MAAM,SAAS,OAAO;AAC9B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,MAAM,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,MAAM,aAAa;AAAA,MAC/B,MAAM,MAAM,MAAM;AAAA,IACpB;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,MAAuC;AACnE,MAAI,KAAK,KAAK,SAAS,QAAQ;AAC7B,WAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,KAAK;AAAA,EAC9C;AAEA,MAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;AACvC,WAAO,sBAAsB;AAAA,MAC3B,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,MAAI,KAAK,cAAc,mBAAmB;AACxC,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAEA,MAAI,KAAK,KAAK,SAAS,OAAO;AAC5B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,KAAK,KAAK;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY,KAAK;AAAA,MACjB,MAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,MAA6C;AAC9E,SAAO;AAAA,IACL,MAAM,KAAK;AAAA,IACX,aAAa,KAAK;AAAA,IAClB,cAAc,KAAK;AAAA,EACrB;AACF;AAEA,SAAS,sBAAsB,YAAiC;AAC9D,MAAI,eAAe,QAAQ;AACzB,WAAO,EAAE,MAAM,OAAO;AAAA,EACxB;AAEA,MAAI,eAAe,YAAY;AAC7B,WAAO,EAAE,MAAM,MAAM;AAAA,EACvB;AAEA,MAAI,eAAe,QAAQ;AACzB,WAAO,EAAE,MAAM,OAAO;AAAA,EACxB;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,WAAW;AAAA,EACnB;AACF;AAEA,SAAS,cACP,IACA,QAC4B;AAC5B,QAAM,QAAoC,EAAE,MAAM,mBAAmB,GAAG;AACxE,MAAI,OAAO,SAAS,OAAW,OAAM,OAAO,OAAO;AACnD,MAAI,OAAO,mBAAmB,OAAW,OAAM,iBAAiB,OAAO;AACvE,SAAO;AACT;;;AG9oCA,IAAM,mBAAmB,EAAE,eAAe,KAAS,iBAAiB,KAAO;AAC3E,IAAM,mBAAmB,EAAE,eAAe,KAAS,iBAAiB,KAAO;AAC3E,IAAM,kBAAkB,EAAE,eAAe,KAAW,iBAAiB,MAAQ;AAEtE,IAAM,4CAA4C;AAAA,EACvD,8BAA8B,EAAE,eAAe,KAAS,iBAAiB,KAAM;AAAA,EAC/E,8BAA8B,EAAE,eAAe,KAAS,iBAAiB,KAAM;AAAA,EAC/E,8BAA8B;AAAA,EAC9B,2BAA2B,EAAE,eAAe,KAAS,iBAAiB,KAAM;AAAA,EAC5E,0BAA0B,EAAE,eAAe,KAAS,iBAAiB,KAAM;AAAA,EAC3E,4BAA4B,EAAE,eAAe,KAAS,iBAAiB,KAAM;AAAA,EAC7E,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,8BAA8B;AAAA,EAC9B,qBAAqB,EAAE,eAAe,KAAW,iBAAiB,KAAO;AAAA,EACzE,mBAAmB;AACrB;;;AJ5BO,IAAM,kBAAN,MAAoD;AAAA,EACxC;AAAA,EAEjB,YAAY,SAAiC;AAC3C,QAAI,QAAQ,WAAW,QAAW;AAChC,6CAAuC,SAAS,CAAC,UAAU,SAAS,CAAC;AACrE,WAAK,MAAM,QAAQ;AACnB;AAAA,IACF;AACA,SAAK,MAAM,IAAI,UAAU;AAAA,MACvB,QAAQ,cAAc,QAAQ,MAAM;AAAA,MACpC,SAAS,QAAQ;AAAA,MACjB,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,SAA0E;AACxF,UAAM,UAAU,eAAe,QAAQ,OAAO;AAC9C,WAAO,IAAI;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,UAAqD,CAAC,GAAuB;AAC5F,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,IAAI,OAAO,KAAK,QAAW;AAAA,QACrD,QAAQ,QAAQ;AAAA,QAChB,YAAY;AAAA,MACd,CAAC;AACD,YAAM,QAAQ,MAAM,0BAA0B,QAAQ,GACnD,IAAI,aAAa,EACjB,OAAO,aAAa;AACvB,aAAO,EAAE,KAAK;AAAA,IAChB,SAAS,OAAO;AACd,YAAM,oBAAoB,aAAa,KAAK;AAAA,IAC9C;AAAA,EACF;AACF;AAEA,SAAS,uCAAuC,SAAiB,MAA+B;AAC9F,QAAM,WAAW,KAAK,KAAK,CAAC,QAAQ,OAAO,OAAO;AAClD,MAAI,aAAa,QAAW;AAC1B,UAAM,IAAI,UAAU,8CAA8C,QAAQ,GAAG;AAAA,EAC/E;AACF;AAEA,SAAS,cAAc,QAAoC;AACzD,MAAI,WAAW,UAAa,OAAO,KAAK,EAAE,WAAW,GAAG;AACtD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,eAAuC,SAA2B;AACzE,MAAI,QAAQ,KAAK,EAAE,WAAW,GAAG;AAC/B,UAAM,IAAI,UAAU,oCAAoC;AAAA,EAC1D;AACA,SAAO;AACT;AAEA,eAAe,0BAA0B,UAAuC;AAC9E,MAAI,gBAAgB,QAAQ,GAAG;AAC7B,UAAM,SAAoB,CAAC;AAC3B,qBAAiB,SAAS,UAAU;AAClC,aAAO,KAAK,KAAK;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ,KAAK,MAAM,QAAQ,SAAS,IAAI,GAAG;AACtD,WAAO,SAAS;AAAA,EAClB;AAEA,SAAO,CAAC;AACV;AAEA,SAAS,cAAc,OAAuD;AAC5E,MAAI,CAAC,SAAS,KAAK,KAAK,OAAO,MAAM,OAAO,UAAU;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,YACJ,OAAO,MAAM,eAAe,WACxB,sBAAsB,MAAM,UAAU,IACtC,OAAO,MAAM,eAAe,WAC1B,MAAM,aACN;AAER,QAAM,cAAyC;AAAA,IAC7C,IAAI,MAAM;AAAA,EACZ;AACA,MAAI,OAAO,MAAM,iBAAiB,UAAU;AAC1C,gBAAY,OAAO,MAAM;AAAA,EAC3B;AACA,MAAI,OAAO,MAAM,SAAS,UAAU;AAClC,gBAAY,OAAO,MAAM;AAAA,EAC3B;AACA,MAAI,OAAO,MAAM,gBAAgB,UAAU;AACzC,gBAAY,cAAc,MAAM;AAAA,EAClC;AACA,MAAI,OAAO,MAAM,SAAS,UAAU;AAClC,gBAAY,OAAO,MAAM;AAAA,EAC3B;AACA,MAAI,cAAc,QAAW;AAC3B,gBAAY,YAAY;AAAA,EAC1B;AACA,MAAI,OAAO,MAAM,aAAa,UAAU;AACtC,gBAAY,UAAU,MAAM;AAAA,EAC9B;AACA,MAAI,OAAO,MAAM,qBAAqB,UAAU;AAC9C,gBAAY,gBAAgB,MAAM;AAAA,EACpC;AACA,MAAI,OAAO,MAAM,mBAAmB,UAAU;AAC5C,gBAAY,gBAAgB,MAAM;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAmC;AAChE,QAAM,OAAO,KAAK,MAAM,KAAK;AAC7B,SAAO,OAAO,MAAM,IAAI,IAAI,SAAY,KAAK,MAAM,OAAO,GAAI;AAChE;AAEA,SAAS,cACP,OACoC;AACpC,SAAO,UAAU;AACnB;AAEA,SAAS,oBAAoB,UAAkB,OAAmC;AAChF,MAAI,iBAAiB,mBAAmB;AACtC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,cAAc,KAAK;AACtC,SAAO,IAAI,kBAAkB,GAAG,QAAQ,0BAA0B,gBAAgB,KAAK,CAAC,IAAI;AAAA,IAC1F;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,cAAc,OAAoC;AACzD,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,MAAM,WAAW,UAAU;AACpC,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,OAAO,MAAM,eAAe,UAAU;AACxC,WAAO,MAAM;AAAA,EACf;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAAwB;AAC/C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,gBAAgB,OAAiD;AACxE,SAAO,SAAS,KAAK,KAAK,OAAO,iBAAiB;AACpD;;;AK3NA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EAEE,6BAAAA;AAAA,OAEK;AA4BA,IAAM,wBAAN,MAA4B;AAAA,EAChB;AAAA,EAEjB,YAAY,SAAuC;AACjD,UAAM,EAAE,QAAQ,GAAG,cAAc,IAAI;AACrC,QAAI,WAAW,QAAW;AACxB,YAAM,WAAW,OAAO,KAAK,aAAa,EAAE,CAAC;AAC7C,UAAI,aAAa,QAAW;AAC1B,cAAM,IAAI,UAAU,oDAAoD,QAAQ,GAAG;AAAA,MACrF;AACA,WAAK,MAAM;AACX;AAAA,IACF;AACA,SAAK,MAAM,IAAI,gBAAgB,EAAE,GAAG,eAAe,YAAY,EAAE,CAAC;AAAA,EACpE;AAAA,EAEA,gBACE,SACsC;AACtC,UAAM,UAAUC,gBAAe,QAAQ,OAAO;AAC9C,WAAO,IAAI;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACAC;AAAA,QACE;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAASD,gBAAuC,SAA2B;AACzE,MAAI,QAAQ,KAAK,EAAE,WAAW,GAAG;AAC/B,UAAM,IAAI,UAAU,oCAAoC;AAAA,EAC1D;AACA,SAAO;AACT;","names":["resolveModelContextLimits","requireModelId","resolveModelContextLimits"]}
1
+ {"version":3,"sources":["../src/anthropic/index.ts","../src/anthropic/client.ts","../src/anthropic/completion.ts","../src/request-messages.ts","../src/utils.ts","../src/anthropic/models.ts","../src/anthropic/vertex-client.ts"],"sourcesContent":["export {\n AnthropicClient,\n type AnthropicClientOptions,\n type AnthropicCompletionModelHandle,\n type AnthropicCompletionModelOptions,\n} from \"./client\";\nexport type { AnthropicCompletionModelId, KnownAnthropicCompletionModelId } from \"./models\";\nexport {\n AnthropicVertexClient,\n type AnthropicVertexClientOptions,\n type AnthropicVertexCompletionModelHandle,\n type AnthropicVertexCompletionModelOptions,\n} from \"./vertex-client\";\n","import Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport {\n type ModelList,\n type ModelListingClient,\n ModelListingError,\n} from \"@anvia/core/model-listing\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicManagedClientOptions = {\n apiKey: string;\n baseUrl?: string | undefined;\n client?: never;\n};\n\ntype AnthropicInjectedClientOptions = {\n client: Anthropic;\n apiKey?: never;\n baseUrl?: never;\n};\n\nexport type AnthropicClientOptions = AnthropicManagedClientOptions | AnthropicInjectedClientOptions;\n\nexport type AnthropicCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicClient implements ModelListingClient {\n private readonly sdk: Anthropic;\n\n constructor(options: AnthropicClientOptions) {\n if (options.client !== undefined) {\n rejectManagedOptionsWithInjectedClient(options, [\"apiKey\", \"baseUrl\"]);\n this.sdk = options.client;\n return;\n }\n this.sdk = new Anthropic({\n apiKey: requireApiKey(options.apiKey),\n baseURL: options.baseUrl,\n maxRetries: 0,\n });\n }\n\n completionModel(options: AnthropicCompletionModelOptions): AnthropicCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n\n async listModels(options: { abortSignal?: AbortSignal | undefined } = {}): Promise<ModelList> {\n try {\n const response = await this.sdk.models.list(undefined, {\n signal: options.abortSignal,\n maxRetries: 0,\n });\n const data = (await collectModelsFromResponse(response))\n .map(toListedModel)\n .filter(isListedModel);\n return { data };\n } catch (error) {\n throw toModelListingError(\"Anthropic\", error);\n }\n }\n}\n\nfunction rejectManagedOptionsWithInjectedClient(options: object, keys: readonly string[]): void {\n const conflict = keys.find((key) => key in options);\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicClient cannot combine client with ${conflict}.`);\n }\n}\n\nfunction requireApiKey(apiKey: string | undefined): string {\n if (apiKey === undefined || apiKey.trim().length === 0) {\n throw new Error(\n \"Missing Anthropic credentials. Pass apiKey when constructing AnthropicClient.\",\n );\n }\n\n return apiKey;\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n\nasync function collectModelsFromResponse(response: unknown): Promise<unknown[]> {\n if (isAsyncIterable(response)) {\n const models: unknown[] = [];\n for await (const model of response) {\n models.push(model);\n }\n return models;\n }\n\n if (Array.isArray(response)) {\n return response;\n }\n\n if (isObject(response) && Array.isArray(response.data)) {\n return response.data;\n }\n\n return [];\n}\n\nfunction toListedModel(model: unknown): ModelList[\"data\"][number] | undefined {\n if (!isObject(model) || typeof model.id !== \"string\") {\n return undefined;\n }\n\n const createdAt =\n typeof model.created_at === \"string\"\n ? secondsFromDateString(model.created_at)\n : typeof model.created_at === \"number\"\n ? model.created_at\n : undefined;\n\n const listedModel: ModelList[\"data\"][number] = {\n id: model.id,\n };\n if (typeof model.display_name === \"string\") {\n listedModel.name = model.display_name;\n }\n if (typeof model.name === \"string\") {\n listedModel.name = model.name;\n }\n if (typeof model.description === \"string\") {\n listedModel.description = model.description;\n }\n if (typeof model.type === \"string\") {\n listedModel.type = model.type;\n }\n if (createdAt !== undefined) {\n listedModel.createdAt = createdAt;\n }\n if (typeof model.owned_by === \"string\") {\n listedModel.ownedBy = model.owned_by;\n }\n if (typeof model.max_input_tokens === \"number\") {\n listedModel.contextLength = model.max_input_tokens;\n }\n if (typeof model.context_length === \"number\") {\n listedModel.contextLength = model.context_length;\n }\n return listedModel;\n}\n\nfunction secondsFromDateString(value: string): number | undefined {\n const time = Date.parse(value);\n return Number.isNaN(time) ? undefined : Math.floor(time / 1000);\n}\n\nfunction isListedModel(\n model: ModelList[\"data\"][number] | undefined,\n): model is ModelList[\"data\"][number] {\n return model !== undefined;\n}\n\nfunction toModelListingError(provider: string, error: unknown): ModelListingError {\n if (error instanceof ModelListingError) {\n return error;\n }\n\n const statusCode = getStatusCode(error);\n return new ModelListingError(`${provider} model listing failed: ${getErrorMessage(error)}`, {\n provider,\n statusCode,\n cause: error,\n });\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (!isObject(error)) {\n return undefined;\n }\n\n if (typeof error.status === \"number\") {\n return error.status;\n }\n\n if (typeof error.statusCode === \"number\") {\n return error.statusCode;\n }\n\n return undefined;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return isObject(value) && Symbol.asyncIterator in value;\n}\n","import type { Anthropic } from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport type { ModelContextLimits } from \"@anvia/core/completion\";\nimport {\n type AssistantContentPart,\n assertCompletionRequestSupported,\n type CompletionFinishReason,\n type CompletionModelCapabilities,\n type CompletionModelInfo,\n type CompletionModelStreamEvent,\n CompletionProviderOutputError,\n type CompletionProviderOutputErrorKind,\n type CompletionRequest,\n type CompletionResponse,\n type FilePart,\n type ImagePart,\n isJsonValue,\n type JsonObject,\n type JsonValue,\n type Message as MessageType,\n type ModelCallOptions,\n type ReasoningDetail,\n type StreamingCompletionModel,\n type ToolChoice,\n type ToolDefinition,\n type ToolResultContentPart,\n type ToolResultPart,\n Usage,\n type UserContentPart,\n withContextUsage,\n} from \"@anvia/core/completion\";\nimport { orderedRequestMessages } from \"../request-messages\";\nimport { isPlainObject, numberFrom, stringFrom } from \"../utils\";\nimport type { AnthropicCompletionModelId } from \"./models\";\n\ntype AnthropicCreateParams = Record<string, unknown>;\ntype AnthropicMessage = Record<string, unknown>;\ntype AnthropicContentBlock = Record<string, unknown>;\ntype AnthropicMessageCreate = (\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n) => Promise<unknown>;\n\ntype AnthropicStreamToolInput = { type: \"empty\" } | { type: \"complete\"; text: string };\n\ntype AnthropicStreamToolState = {\n index: number;\n id: string;\n name: string;\n initialInput: AnthropicStreamToolInput;\n partialJson: string;\n hasPartialJson: boolean;\n closed: boolean;\n finalized: boolean;\n};\n\nconst DEFAULT_MAX_TOKENS = 1024;\n\nexport class AnthropicCompletionModel implements StreamingCompletionModel<unknown> {\n readonly provider = \"anthropic\";\n readonly capabilities: CompletionModelCapabilities = {\n streaming: true,\n tools: true,\n toolChoice: true,\n imageInput: true,\n documentInput: true,\n outputSchema: false,\n reasoning: true,\n };\n constructor(\n private readonly client: Anthropic | AnthropicVertex,\n readonly modelId: AnthropicCompletionModelId,\n readonly contextLimits?: ModelContextLimits,\n ) {}\n\n private modelInfo(): CompletionModelInfo | undefined {\n return this.contextLimits === undefined\n ? undefined\n : { modelId: this.modelId, context: this.contextLimits };\n }\n\n traceRequest(\n request: CompletionRequest,\n options: { stream?: boolean | undefined } = {},\n ): JsonObject {\n const params = toAnthropicMessagesParams(this.modelId, request);\n if (options.stream === true) {\n params.stream = true;\n }\n return providerRequestSummary(params, request, options);\n }\n\n async completion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): Promise<CompletionResponse> {\n assertCompletionRequestSupported(this, request);\n const params = toAnthropicMessagesParams(this.modelId, request);\n const response = await this.createMessage(params, anthropicRequestOptions(options));\n return withContextUsage(fromAnthropicMessage(response), this.modelInfo());\n }\n\n private createMessage(\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n ): Promise<unknown> {\n const messages = this.client.messages;\n const create = messages.create as unknown as AnthropicMessageCreate;\n return create.call(messages, params, options);\n }\n\n async *streamCompletion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): AsyncIterable<CompletionModelStreamEvent> {\n assertCompletionRequestSupported(this, request, { streaming: true });\n const params = { ...toAnthropicMessagesParams(this.modelId, request), stream: true };\n const stream = await this.createMessage(params, anthropicRequestOptions(options));\n const toolsByIndex = new Map<number, AnthropicStreamToolState>();\n const toolIndexesById = new Map<string, number>();\n const streamUsage = Usage.empty();\n const streamUsageFields = emptyAnthropicStreamUsageFields();\n let hasStreamUsage = false;\n let hasToolProgress = false;\n let hasTerminalEvent = false;\n let streamMessageId: string | undefined;\n let streamProviderFinishReason: unknown;\n for await (const event of stream as unknown as AsyncIterable<unknown>) {\n const hadProviderFinishReason = streamProviderFinishReason !== undefined;\n if (isPlainObject(event)) {\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n streamMessageId = stringFrom(event.message.id) ?? streamMessageId;\n if (event.message.stop_reason !== undefined && event.message.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.message.stop_reason,\n streamUsage,\n );\n }\n }\n if (event.type === \"message_delta\" && isPlainObject(event.delta)) {\n if (event.delta.stop_reason !== undefined && event.delta.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.delta.stop_reason,\n streamUsage,\n );\n }\n }\n hasStreamUsage =\n applyAnthropicStreamUsage(event, streamUsage, streamUsageFields) || hasStreamUsage;\n }\n\n if (hadProviderFinishReason && isAnthropicSemanticProgressEvent(event)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_start\" &&\n isPlainObject(event.content_block) &&\n event.content_block.type === \"tool_use\"\n ) {\n const state = startAnthropicStreamTool(event.index, event.content_block, streamUsage);\n if (toolsByIndex.has(state.index) || toolIndexesById.has(state.id)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n toolsByIndex.set(state.index, state);\n toolIndexesById.set(state.id, state.index);\n hasToolProgress = true;\n yield toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta:\n state.initialInput.type === \"complete\" ? state.initialInput.text : undefined,\n });\n continue;\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_delta\" &&\n isPlainObject(event.delta) &&\n event.delta.type === \"input_json_delta\"\n ) {\n const index = anthropicToolStreamIndex(event.index, streamUsage);\n const state = toolsByIndex.get(index);\n if (state === undefined) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n if (state.closed || state.finalized) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n if (typeof event.delta.partial_json !== \"string\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n if (state.initialInput.type === \"complete\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n state.hasPartialJson = true;\n state.partialJson += event.delta.partial_json;\n yield toolCallDelta(state.id, { argumentsDelta: event.delta.partial_json });\n continue;\n }\n\n if (isPlainObject(event) && event.type === \"content_block_stop\") {\n const index = optionalAnthropicToolStreamIndex(event.index);\n const state = index === undefined ? undefined : toolsByIndex.get(index);\n if (state !== undefined) {\n if (state.closed) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n state.closed = true;\n continue;\n }\n }\n\n if (isPlainObject(event) && event.type === \"message_stop\") {\n hasTerminalEvent = true;\n const finalMessage = isPlainObject(event.message) ? event.message : undefined;\n if (finalMessage?.stop_reason !== undefined && finalMessage.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n finalMessage.stop_reason,\n streamUsage,\n );\n }\n const hasFinalMessageToolUse = anthropicMessageHasToolUse(finalMessage);\n if (hasToolProgress || hasFinalMessageToolUse) {\n const baseUsage =\n finalMessage === undefined ? Usage.empty() : anthropicMessageUsage(finalMessage);\n const terminalUsage = hasStreamUsage\n ? mergeUsage(baseUsage, streamUsage, streamUsageFields)\n : baseUsage;\n const terminalResponse = emptyAnthropicStreamResponse(\n event,\n streamMessageId,\n terminalUsage,\n );\n applyAnthropicFinishReason(terminalResponse, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(terminalResponse, true);\n }\n for (const state of toolsByIndex.values()) {\n const finalDelta = finalizeAnthropicStreamTool(state, streamUsage);\n if (finalDelta !== undefined) yield finalDelta;\n }\n\n const baseResponse =\n finalMessage !== undefined\n ? fromAnthropicMessageUnchecked(finalMessage)\n : emptyAnthropicStreamResponse(event, streamMessageId, streamUsage);\n const response = hasStreamUsage\n ? {\n ...baseResponse,\n usage: mergeUsage(baseResponse.usage, streamUsage, streamUsageFields),\n }\n : baseResponse;\n applyAnthropicFinishReason(response, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(response, hasToolProgress || hasFinalMessageToolUse);\n yield {\n type: \"final\",\n response: withContextUsage(response, this.modelInfo()),\n };\n return;\n }\n\n if (isPlainObject(event) && event.type === \"error\") {\n hasTerminalEvent = true;\n }\n\n for (const mapped of fromAnthropicStreamEvent(event)) {\n yield mapped;\n }\n\n if (hasTerminalEvent) return;\n }\n\n if (hasToolProgress && !hasTerminalEvent) {\n throw providerOutputError(\"incomplete-stream\", streamUsage);\n }\n }\n}\n\nfunction isAnthropicSemanticProgressEvent(event: unknown): boolean {\n return (\n isPlainObject(event) &&\n (event.type === \"content_block_start\" || event.type === \"content_block_delta\")\n );\n}\n\ntype AnthropicStreamUsageFields = {\n inputTokens: boolean;\n outputTokens: boolean;\n cachedInputTokens: boolean;\n cacheCreationInputTokens: boolean;\n};\n\nfunction emptyAnthropicStreamUsageFields(): AnthropicStreamUsageFields {\n return {\n inputTokens: false,\n outputTokens: false,\n cachedInputTokens: false,\n cacheCreationInputTokens: false,\n };\n}\n\nfunction applyAnthropicStreamUsage(\n event: Record<string, unknown>,\n usage: Usage,\n fields: AnthropicStreamUsageFields,\n): boolean {\n let changed = false;\n let uncachedInputTokens = Math.max(\n 0,\n usage.inputTokens - usage.cachedInputTokens - usage.cacheCreationInputTokens,\n );\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const source = isPlainObject(event.message.usage) ? event.message.usage : undefined;\n if (source !== undefined) {\n if (\"input_tokens\" in source) {\n uncachedInputTokens = numberFrom(source.input_tokens);\n fields.inputTokens = true;\n changed = true;\n }\n if (\"cache_read_input_tokens\" in source) {\n usage.cachedInputTokens = numberFrom(source.cache_read_input_tokens);\n fields.cachedInputTokens = true;\n changed = true;\n }\n if (\"cache_creation_input_tokens\" in source) {\n usage.cacheCreationInputTokens = numberFrom(source.cache_creation_input_tokens);\n fields.cacheCreationInputTokens = true;\n changed = true;\n }\n }\n }\n\n if (event.type === \"message_delta\") {\n const source = isPlainObject(event.usage) ? event.usage : undefined;\n if (source !== undefined && \"output_tokens\" in source) {\n usage.outputTokens = Math.max(usage.outputTokens, numberFrom(source.output_tokens));\n fields.outputTokens = true;\n changed = true;\n }\n }\n\n if (changed) {\n Object.assign(\n usage,\n anthropicUsage(\n uncachedInputTokens,\n usage.outputTokens,\n usage.cachedInputTokens,\n usage.cacheCreationInputTokens,\n ),\n );\n }\n\n return changed;\n}\n\nfunction mergeUsage(base: Usage, stream: Usage, fields: AnthropicStreamUsageFields): Usage {\n const baseUncachedInputTokens = Math.max(\n 0,\n base.inputTokens - base.cachedInputTokens - base.cacheCreationInputTokens,\n );\n const streamUncachedInputTokens = Math.max(\n 0,\n stream.inputTokens - stream.cachedInputTokens - stream.cacheCreationInputTokens,\n );\n const uncachedInputTokens = fields.inputTokens\n ? streamUncachedInputTokens\n : baseUncachedInputTokens;\n const outputTokens = fields.outputTokens ? stream.outputTokens : base.outputTokens;\n const cachedInputTokens = fields.cachedInputTokens\n ? stream.cachedInputTokens\n : base.cachedInputTokens;\n const cacheCreationInputTokens = fields.cacheCreationInputTokens\n ? stream.cacheCreationInputTokens\n : base.cacheCreationInputTokens;\n return anthropicUsage(\n uncachedInputTokens,\n outputTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n );\n}\n\nfunction copyUsage(usage: Usage): Usage {\n let copy: Usage = { ...usage };\n if (usage.details !== undefined) copy = { ...copy, details: { ...usage.details } };\n return copy;\n}\n\nfunction emptyAnthropicStreamResponse(\n rawResponse: unknown,\n messageId: string | undefined,\n usage: Usage,\n): CompletionResponse {\n const response: CompletionResponse = {\n choice: [],\n usage: copyUsage(usage),\n rawResponse,\n };\n if (messageId !== undefined) response.messageId = messageId;\n return response;\n}\n\nfunction startAnthropicStreamTool(\n indexValue: unknown,\n block: Record<string, unknown>,\n usage: Usage,\n): AnthropicStreamToolState {\n const index = anthropicToolStreamIndex(indexValue, usage);\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n return {\n index,\n id,\n name,\n initialInput: anthropicStreamToolInput(block.input, id, usage),\n partialJson: \"\",\n hasPartialJson: false,\n closed: false,\n finalized: false,\n };\n}\n\nfunction anthropicStreamToolInput(\n input: unknown,\n toolCallId: string,\n usage: Usage,\n): AnthropicStreamToolInput {\n if (!isPlainObject(input) || !isJsonValue(input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n\n if (isEmptyJsonObject(input)) {\n return { type: \"empty\" };\n }\n\n const text = JSON.stringify(input);\n if (text === undefined) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n return { type: \"complete\", text };\n}\n\nfunction finalizeAnthropicStreamTool(\n state: AnthropicStreamToolState,\n usage: Usage,\n): CompletionModelStreamEvent | undefined {\n if (state.finalized) return undefined;\n\n if (state.initialInput.type === \"complete\") {\n state.finalized = true;\n return undefined;\n }\n\n if (state.hasPartialJson) {\n assertSerializedToolInput(state.partialJson, state.id, usage);\n state.finalized = true;\n return undefined;\n }\n state.finalized = true;\n return toolCallDelta(state.id, { argumentsDelta: \"{}\" });\n}\n\nfunction assertSerializedToolInput(text: string, toolCallId: string, usage: Usage): void {\n const parsed = parseSerializedToolInput(text);\n if (parsed.type === \"malformed\") {\n throw providerOutputError(\"malformed-tool-arguments\", usage, toolCallId);\n }\n if (parsed.type === \"invalid\") {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n}\n\nfunction parseSerializedToolInput(\n text: string,\n): { type: \"valid\"; value: JsonValue } | { type: \"malformed\" } | { type: \"invalid\" } {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n return { type: \"malformed\" };\n }\n return isJsonValue(value) ? { type: \"valid\", value } : { type: \"invalid\" };\n}\n\nfunction isEmptyJsonObject(value: JsonValue): boolean {\n return (\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n value !== null &&\n Object.keys(value).length === 0\n );\n}\n\nfunction requiredToolCallId(value: unknown, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return value;\n}\n\nfunction requiredToolName(value: unknown, toolCallId: string, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage, toolCallId);\n }\n return value;\n}\n\nfunction anthropicToolStreamIndex(value: unknown, usage: Usage): number {\n const index = optionalAnthropicToolStreamIndex(value);\n if (index === undefined) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return index;\n}\n\nfunction optionalAnthropicToolStreamIndex(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : undefined;\n}\n\nexport function toAnthropicMessagesParams(\n modelId: AnthropicCompletionModelId,\n request: CompletionRequest,\n): AnthropicCreateParams {\n const messages = requestMessages(request);\n const system = systemFromMessages(request, messages);\n if (\n request.providerOptions !== undefined &&\n (!isPlainObject(request.providerOptions) || !isJsonValue(request.providerOptions))\n ) {\n throw new TypeError(\"Anthropic providerOptions must be a JSON object.\");\n }\n const providerOptions = request.providerOptions ?? {};\n const params: AnthropicCreateParams = {\n ...providerOptions,\n model: modelId,\n max_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,\n messages: messages.flatMap(messageToAnthropicMessages),\n };\n\n delete params.tools;\n\n if (system !== undefined) {\n params.system = system;\n }\n\n if (request.tools.length > 0) {\n params.tools = request.tools.map(toolDefinitionToAnthropic);\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.toolChoice !== undefined) {\n params.tool_choice = toolChoiceToAnthropic(request.toolChoice);\n }\n\n return params;\n}\n\nfunction anthropicRequestOptions(options: ModelCallOptions | undefined): {\n signal?: AbortSignal | undefined;\n maxRetries: 0;\n} {\n return { signal: options?.abortSignal, maxRetries: 0 };\n}\n\nfunction providerRequestSummary(\n params: AnthropicCreateParams,\n request: CompletionRequest,\n options: { stream?: boolean | undefined },\n): JsonObject {\n return compactJsonObject({\n provider: \"anthropic\",\n api: \"messages\",\n stream: options.stream === true,\n model: stringFrom(params.model),\n parameterKeys: Object.keys(params).sort(),\n messageCount: Array.isArray(params.messages) ? params.messages.length : undefined,\n toolCount: request.tools.length,\n toolNames: request.tools.map((tool) => tool.name),\n hasSystem: typeof params.system === \"string\" && params.system.length > 0,\n temperature: request.temperature,\n maxTokens: request.maxTokens ?? numberFrom(params.max_tokens),\n toolChoice: toolChoiceSummary(request.toolChoice),\n providerOptionKeys: isPlainObject(request.providerOptions)\n ? Object.keys(request.providerOptions).sort()\n : undefined,\n });\n}\n\nfunction toolChoiceSummary(toolChoice: ToolChoice | undefined): JsonValue | undefined {\n if (toolChoice === undefined || typeof toolChoice === \"string\") {\n return toolChoice;\n }\n return { type: toolChoice.type, name: toolChoice.name };\n}\n\nfunction compactJsonObject(values: Record<string, unknown>): JsonObject {\n return Object.fromEntries(\n Object.entries(values).flatMap(([key, value]) => {\n if (!isJsonValue(value)) {\n return [];\n }\n return [[key, value]];\n }),\n ) as JsonObject;\n}\n\nfunction requestMessages(request: CompletionRequest): MessageType[] {\n return orderedRequestMessages(request);\n}\n\nfunction systemFromMessages(\n request: CompletionRequest,\n messages: MessageType[],\n): string | undefined {\n const systemMessages = messages.flatMap((message) =>\n message.role === \"system\" ? [message.content] : [],\n );\n if (request.instructions !== undefined) {\n systemMessages.unshift(request.instructions);\n }\n return systemMessages.length === 0 ? undefined : systemMessages.join(\"\\n\\n\");\n}\n\nexport function fromAnthropicMessage(response: unknown): CompletionResponse {\n assertAnthropicRawToolFinish(response);\n const result = fromAnthropicMessageUnchecked(response);\n assertAnthropicResponseIntegrity(result, false);\n return result;\n}\n\nfunction fromAnthropicMessageUnchecked(response: unknown): CompletionResponse {\n const raw = isPlainObject(response) ? response : {};\n const content = Array.isArray(raw.content) ? raw.content : [];\n const choice: AssistantContentPart[] = [];\n const usage = anthropicMessageUsage(raw);\n\n for (const block of content) {\n if (!isPlainObject(block)) {\n continue;\n }\n\n if (block.type === \"text\" && typeof block.text === \"string\") {\n choice.push({ type: \"text\", text: block.text });\n }\n\n if (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n const text: Extract<ReasoningDetail, { type: \"text\" }> =\n typeof block.signature === \"string\"\n ? { type: \"text\", text: block.thinking, signature: block.signature }\n : { type: \"text\", text: block.thinking };\n choice.push({ type: \"reasoning\", text: block.thinking, details: [text] });\n }\n\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n choice.push({\n type: \"reasoning\",\n text: \"\",\n details: [{ type: \"redacted\", data: block.data }],\n });\n }\n\n if (block.type === \"tool_use\") {\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n if (!isPlainObject(block.input) || !isJsonValue(block.input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, id);\n }\n choice.push({\n type: \"tool-call\",\n toolCallId: id,\n callId: id,\n toolName: name,\n input: block.input,\n });\n }\n }\n\n const result: CompletionResponse = {\n choice,\n usage,\n rawResponse: response,\n };\n applyAnthropicFinishReason(result, raw.stop_reason);\n\n if (typeof raw.id === \"string\") {\n result.messageId = raw.id;\n }\n\n return result;\n}\n\nfunction applyAnthropicFinishReason(response: CompletionResponse, value: unknown): void {\n if (value === undefined || value === null) return;\n response.finishReason = typeof value === \"string\" ? anthropicFinishReason(value) : \"other\";\n if (typeof value === \"string\") response.providerFinishReason = value;\n}\n\nfunction anthropicFinishReason(value: string): CompletionFinishReason {\n if (value === \"end_turn\" || value === \"stop_sequence\") return \"stop\";\n if (value === \"max_tokens\" || value === \"model_context_window_exceeded\") return \"length\";\n if (value === \"tool_use\") return \"tool-calls\";\n if (value === \"refusal\") return \"content-filter\";\n return \"other\";\n}\n\nfunction assertAnthropicResponseIntegrity(\n response: CompletionResponse,\n hasAccumulatedToolProgress: boolean,\n): void {\n const toolCalls = response.choice.filter((content) => content.type === \"tool-call\");\n if (hasAccumulatedToolProgress || toolCalls.length > 0) {\n assertSafeToolFinishReason(response);\n } else if (response.finishReason === \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n\n const ids = new Set<string>();\n for (const toolCall of toolCalls) {\n if (ids.has(toolCall.toolCallId)) {\n throw providerOutputError(\"invalid-tool-call\", response.usage, toolCall.toolCallId);\n }\n ids.add(toolCall.toolCallId);\n }\n}\n\nfunction assertAnthropicRawToolFinish(response: unknown): void {\n if (!isPlainObject(response) || !anthropicMessageHasToolUse(response)) return;\n const usage = anthropicMessageUsage(response);\n const terminal: CompletionResponse = { choice: [], usage, rawResponse: response };\n applyAnthropicFinishReason(terminal, response.stop_reason);\n assertAnthropicResponseIntegrity(terminal, true);\n}\n\nfunction anthropicMessageHasToolUse(message: unknown): boolean {\n return (\n isPlainObject(message) &&\n Array.isArray(message.content) &&\n message.content.some((block) => isPlainObject(block) && block.type === \"tool_use\")\n );\n}\n\nfunction anthropicMessageUsage(message: Record<string, unknown>): Usage {\n const usage = isPlainObject(message.usage) ? message.usage : {};\n return anthropicUsage(\n numberFrom(usage.input_tokens),\n numberFrom(usage.output_tokens),\n numberFrom(usage.cache_read_input_tokens),\n numberFrom(usage.cache_creation_input_tokens),\n );\n}\n\nfunction assertSafeToolFinishReason(response: CompletionResponse): void {\n if (response.finishReason === undefined) {\n throw providerOutputError(\"incomplete-tool-call\", response.usage);\n }\n if (response.finishReason === \"length\") {\n throw providerOutputError(\n \"truncated-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"content-filter\") {\n throw providerOutputError(\n \"filtered-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"other\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason !== \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n}\n\nfunction acceptAnthropicStreamFinishReason(current: unknown, next: unknown, usage: Usage): unknown {\n if (current === undefined) return next;\n if (current !== next) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return current;\n}\n\nfunction providerOutputError(\n kind: CompletionProviderOutputErrorKind,\n usage: Usage,\n toolCallId?: string,\n finishReason?: CompletionFinishReason,\n): CompletionProviderOutputError {\n const copiedUsage = copyUsage(usage);\n if (kind === \"truncated-tool-call\") {\n if (finishReason !== \"length\") {\n throw new TypeError('Anthropic truncated-tool-call errors require finish reason \"length\".');\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (kind === \"filtered-tool-call\") {\n if (finishReason !== \"content-filter\") {\n throw new TypeError(\n 'Anthropic filtered-tool-call errors require finish reason \"content-filter\".',\n );\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (finishReason === \"length\" || finishReason === \"content-filter\") {\n throw new TypeError(\"Anthropic provider output error kind contradicts its finish reason.\");\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n}\n\nfunction anthropicUsage(\n uncachedInputTokens: number,\n outputTokens: number,\n cachedInputTokens: number,\n cacheCreationInputTokens: number,\n): Usage {\n const inputTokens = uncachedInputTokens + cachedInputTokens + cacheCreationInputTokens;\n const totalTokens = inputTokens + outputTokens;\n return {\n ...Usage.empty(),\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n details: {\n input: uncachedInputTokens,\n cache_read_input_tokens: cachedInputTokens,\n cache_creation_input_tokens: cacheCreationInputTokens,\n output: outputTokens,\n total: totalTokens,\n },\n };\n}\n\nexport function fromAnthropicStreamEvent(event: unknown): CompletionModelStreamEvent[] {\n if (!isPlainObject(event) || typeof event.type !== \"string\") {\n return [];\n }\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const id = stringFrom(event.message.id);\n return id === undefined ? [] : [{ type: \"message_id\", id }];\n }\n\n if (event.type === \"content_block_start\" && isPlainObject(event.content_block)) {\n const block = event.content_block;\n if (block.type === \"tool_use\") {\n const state = startAnthropicStreamTool(event.index, block, Usage.empty());\n return [\n toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta: state.initialInput.type === \"empty\" ? undefined : state.initialInput.text,\n }),\n ];\n }\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: block.data,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"redacted\",\n },\n ];\n }\n return [];\n }\n\n if (event.type === \"content_block_delta\" && isPlainObject(event.delta)) {\n const delta = event.delta;\n if (delta.type === \"text_delta\" && typeof delta.text === \"string\") {\n return [{ type: \"text_delta\", delta: delta.text }];\n }\n\n if (delta.type === \"thinking_delta\" && typeof delta.thinking === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: delta.thinking,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n },\n ];\n }\n\n if (delta.type === \"signature_delta\" && typeof delta.signature === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: \"\",\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n signature: delta.signature,\n },\n ];\n }\n\n // Tool argument deltas do not repeat the tool id and require stream-level state.\n if (delta.type === \"input_json_delta\") return [];\n }\n\n if (event.type === \"message_stop\" && isPlainObject(event.message)) {\n return [{ type: \"final\", response: fromAnthropicMessage(event.message) }];\n }\n\n if (event.type === \"error\") {\n return [{ type: \"error\", error: event.error ?? event }];\n }\n\n return [];\n}\n\nfunction messageToAnthropicMessages(message: MessageType): AnthropicMessage[] {\n if (message.role === \"system\") {\n return [];\n }\n\n if (message.role === \"user\") {\n if (typeof message.content === \"string\") {\n return [{ role: \"user\", content: message.content }];\n }\n return [\n {\n role: \"user\",\n content: message.content.map(userContentToAnthropicBlock),\n },\n ];\n }\n\n if (message.role === \"tool\") {\n return [\n {\n role: \"user\",\n content: message.content.map((content) => {\n if (content.type !== \"tool-result\") {\n throw new TypeError(\n \"Anvia interaction responses must be resolved by Agent before provider calls.\",\n );\n }\n return toolContentToAnthropicBlock(content);\n }),\n },\n ];\n }\n\n return [\n {\n role: \"assistant\",\n content:\n typeof message.content === \"string\"\n ? message.content\n : message.content.flatMap((content): AnthropicContentBlock[] => {\n if (content.type === \"text\") {\n return [{ type: \"text\", text: content.text }];\n }\n\n if (content.type === \"tool-call\") {\n return [\n {\n type: \"tool_use\",\n id: content.callId ?? content.toolCallId,\n name: content.toolName,\n input: content.input,\n },\n ];\n }\n\n if (content.type === \"reasoning\" && content.details !== undefined) {\n return content.details.flatMap(reasoningContentToAnthropicBlocks);\n }\n\n if (content.type === \"image\" || content.type === \"file\") {\n throw new Error(\n \"Anthropic Messages does not support image or file content in assistant history\",\n );\n }\n\n return [];\n }),\n },\n ];\n}\n\nfunction toolContentToAnthropicBlock(content: ToolResultPart): AnthropicContentBlock {\n const block: AnthropicContentBlock = {\n type: \"tool_result\",\n tool_use_id: content.callId ?? content.toolCallId,\n content: toolResultToAnthropicContent(content),\n };\n if (\n content.output.type === \"error-text\" ||\n content.output.type === \"error-json\" ||\n content.output.type === \"execution-denied\"\n ) {\n block.is_error = true;\n }\n return block;\n}\n\nfunction toolResultContentToAnthropicContent(\n content: readonly ToolResultContentPart[],\n): string | AnthropicContentBlock[] {\n if (content.every((item) => item.type === \"text\")) {\n return content.map((item) => item.text).join(\"\\n\");\n }\n\n return content.map((item) => {\n if (item.type === \"text\") {\n return { type: \"text\", text: item.text };\n }\n return fileToAnthropicBlock(item);\n });\n}\n\nfunction toolResultToAnthropicContent(content: ToolResultPart): string | AnthropicContentBlock[] {\n const output = content.output;\n if (output.type === \"text\" || output.type === \"error-text\") {\n return output.value;\n }\n if (output.type === \"json\" || output.type === \"error-json\") {\n return JSON.stringify(output.value);\n }\n if (output.type === \"execution-denied\") {\n return output.reason ?? \"Tool execution was denied.\";\n }\n return toolResultContentToAnthropicContent(output.value);\n}\n\nfunction reasoningContentToAnthropicBlocks(content: ReasoningDetail): AnthropicContentBlock[] {\n if (content.type === \"text\" || content.type === \"summary\") {\n const block: AnthropicContentBlock = {\n type: \"thinking\",\n thinking: content.text,\n };\n if (content.type === \"text\" && content.signature !== undefined) {\n block.signature = content.signature;\n }\n return [block];\n }\n\n if (content.type === \"redacted\") {\n return [{ type: \"redacted_thinking\", data: content.data }];\n }\n\n return [];\n}\n\nfunction userContentToAnthropicBlock(content: UserContentPart): AnthropicContentBlock {\n if (content.type === \"text\") {\n return { type: \"text\", text: content.text };\n }\n\n if (content.type === \"image\") {\n return imageToAnthropicBlock(content);\n }\n\n if (content.type === \"file\") {\n return fileToAnthropicBlock(content);\n }\n\n throw new Error(\"Tool results must be mapped before user content blocks\");\n}\n\nfunction imageToAnthropicBlock(image: ImagePart): AnthropicContentBlock {\n if (image.image.type === \"url\") {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: image.image.url,\n },\n };\n }\n\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: image.mediaType ?? \"image/png\",\n data: image.image.data,\n },\n };\n}\n\nfunction fileToAnthropicBlock(file: FilePart): AnthropicContentBlock {\n if (file.data.type === \"text\") {\n return { type: \"text\", text: file.data.text };\n }\n\n if (file.mediaType.startsWith(\"image/\")) {\n return imageToAnthropicBlock({\n type: \"image\",\n image: file.data,\n mediaType: file.mediaType,\n });\n }\n\n if (file.mediaType !== \"application/pdf\") {\n throw new Error(\"Anthropic Messages only supports image and PDF file attachments\");\n }\n\n if (file.data.type === \"url\") {\n return {\n type: \"document\",\n source: {\n type: \"url\",\n url: file.data.url,\n },\n };\n }\n\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: file.mediaType,\n data: file.data.data,\n },\n };\n}\n\nfunction toolDefinitionToAnthropic(tool: ToolDefinition): AnthropicContentBlock {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n };\n}\n\nfunction toolChoiceToAnthropic(toolChoice: ToolChoice): unknown {\n if (toolChoice === \"auto\") {\n return { type: \"auto\" };\n }\n\n if (toolChoice === \"required\") {\n return { type: \"any\" };\n }\n\n if (toolChoice === \"none\") {\n return { type: \"none\" };\n }\n\n return {\n type: \"tool\",\n name: toolChoice.name,\n };\n}\n\nfunction toolCallDelta(\n id: string,\n values: { name?: string | undefined; argumentsDelta?: string | undefined },\n): CompletionModelStreamEvent {\n const event: CompletionModelStreamEvent = { type: \"tool_call_delta\", id };\n if (values.name !== undefined) event.name = values.name;\n if (values.argumentsDelta !== undefined) event.argumentsDelta = values.argumentsDelta;\n return event;\n}\n\nexport const anthropicMessageHelpers = {\n messageToAnthropicMessages,\n toolDefinitionToAnthropic,\n};\n","import {\n type CompletionRequest,\n type Message as MessageType,\n normalizeDocuments,\n} from \"@anvia/core/completion\";\n\nexport type OrderedRequestMessagesOptions = {\n includeInstructionsAsSystem?: boolean;\n};\n\nexport function orderedRequestMessages(\n request: CompletionRequest,\n options: OrderedRequestMessagesOptions = {},\n): MessageType[] {\n const messages: MessageType[] = [];\n if (options.includeInstructionsAsSystem === true && request.instructions !== undefined) {\n messages.push({ role: \"system\", content: request.instructions });\n }\n messages.push(...request.chatHistory.filter((message) => message.role === \"system\"));\n const documents = normalizeDocuments(request.documents);\n if (documents !== undefined) {\n messages.push(documents);\n }\n messages.push(...request.chatHistory.filter((message) => message.role !== \"system\"));\n return messages;\n}\n","import type { JsonObject } from \"@anvia/core/completion\";\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function numberFrom(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n}\n\nexport function stringFrom(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function schemaName(schema: JsonObject): string {\n return typeof schema.title === \"string\" ? schema.title : \"response_schema\";\n}\n","import type { ModelContextLimits } from \"@anvia/core/completion\";\nimport type { ModelId } from \"@anvia/core/model-listing\";\n\nexport type KnownAnthropicCompletionModelId =\n | \"claude-3-5-sonnet-20240620\"\n | \"claude-3-5-sonnet-20241022\"\n | \"claude-3-7-sonnet-20250219\"\n | \"claude-3-haiku-20240307\"\n | \"claude-3-opus-20240229\"\n | \"claude-3-sonnet-20240229\"\n | \"claude-fable-5\"\n | \"claude-haiku-4-5\"\n | \"claude-haiku-4-5-20251001\"\n | \"claude-opus-4-0\"\n | \"claude-opus-4-1\"\n | \"claude-opus-4-1-20250805\"\n | \"claude-opus-4-20250514\"\n | \"claude-opus-4-5\"\n | \"claude-opus-4-5-20251101\"\n | \"claude-opus-4-6\"\n | \"claude-opus-4-7\"\n | \"claude-opus-4-8\"\n | \"claude-opus-5\"\n | \"claude-mythos-5\"\n | \"claude-mythos-preview\"\n | \"claude-sonnet-4-0\"\n | \"claude-sonnet-4-20250514\"\n | \"claude-sonnet-4-5\"\n | \"claude-sonnet-4-5-20250929\"\n | \"claude-sonnet-4-6\"\n | \"claude-sonnet-5\";\n\nexport type AnthropicCompletionModelId = ModelId<KnownAnthropicCompletionModelId>;\n\nconst CONTEXT_200K_32K = { contextWindow: 200_000, maxOutputTokens: 32_000 };\nconst CONTEXT_200K_64K = { contextWindow: 200_000, maxOutputTokens: 64_000 };\nconst CONTEXT_1M_128K = { contextWindow: 1_000_000, maxOutputTokens: 128_000 };\n\nexport const ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS = {\n \"claude-3-5-sonnet-20240620\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-5-sonnet-20241022\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-7-sonnet-20250219\": CONTEXT_200K_64K,\n \"claude-3-haiku-20240307\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-opus-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-sonnet-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-fable-5\": CONTEXT_1M_128K,\n \"claude-haiku-4-5\": CONTEXT_200K_64K,\n \"claude-haiku-4-5-20251001\": CONTEXT_200K_64K,\n \"claude-opus-4-0\": CONTEXT_200K_32K,\n \"claude-opus-4-1\": CONTEXT_200K_32K,\n \"claude-opus-4-1-20250805\": CONTEXT_200K_32K,\n \"claude-opus-4-20250514\": CONTEXT_200K_32K,\n \"claude-opus-4-5\": CONTEXT_200K_64K,\n \"claude-opus-4-5-20251101\": CONTEXT_200K_64K,\n \"claude-opus-4-6\": CONTEXT_1M_128K,\n \"claude-opus-4-7\": CONTEXT_1M_128K,\n \"claude-opus-4-8\": CONTEXT_1M_128K,\n \"claude-opus-5\": CONTEXT_1M_128K,\n \"claude-mythos-5\": CONTEXT_1M_128K,\n \"claude-mythos-preview\": CONTEXT_1M_128K,\n \"claude-sonnet-4-0\": CONTEXT_200K_64K,\n \"claude-sonnet-4-20250514\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5-20250929\": CONTEXT_200K_64K,\n \"claude-sonnet-4-6\": { contextWindow: 1_000_000, maxOutputTokens: 64_000 },\n \"claude-sonnet-5\": CONTEXT_1M_128K,\n} satisfies Readonly<Record<KnownAnthropicCompletionModelId, ModelContextLimits>>;\n","import {\n AnthropicVertex,\n type ClientOptions as AnthropicVertexSdkOptions,\n} from \"@anthropic-ai/vertex-sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicVertexManagedClientOptions = Omit<AnthropicVertexSdkOptions, \"maxRetries\"> & {\n client?: never;\n};\n\ntype AnthropicVertexInjectedClientOptions = {\n client: AnthropicVertex;\n} & {\n [Key in Exclude<keyof AnthropicVertexManagedClientOptions, \"client\">]?: never;\n};\n\nexport type AnthropicVertexClientOptions =\n | AnthropicVertexManagedClientOptions\n | AnthropicVertexInjectedClientOptions;\n\nexport type AnthropicVertexCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicVertexCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicVertexClient {\n private readonly sdk: AnthropicVertex;\n\n constructor(options: AnthropicVertexClientOptions) {\n const { client, ...clientOptions } = options;\n if (client !== undefined) {\n const conflict = Object.keys(clientOptions)[0];\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicVertexClient cannot combine client with ${conflict}.`);\n }\n this.sdk = client;\n return;\n }\n this.sdk = new AnthropicVertex({ ...clientOptions, maxRetries: 0 });\n }\n\n completionModel(\n options: AnthropicVertexCompletionModelOptions,\n ): AnthropicVertexCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n"],"mappings":"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","names":["resolveModelContextLimits","requireModelId","resolveModelContextLimits"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvia/anthropic",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Anthropic provider adapter for Anvia.",
5
5
  "author": "anvia",
6
6
  "maintainer": "Indra Zulfi",
@@ -26,18 +26,18 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@anthropic-ai/sdk": "^0.117.1",
30
- "@anthropic-ai/vertex-sdk": "^0.19.4"
29
+ "@anthropic-ai/sdk": "^0.120.0",
30
+ "@anthropic-ai/vertex-sdk": "^0.19.5"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^24.9.1",
34
34
  "tsup": "^8.5.0",
35
35
  "typescript": "^5.9.3",
36
36
  "vitest": "^4.0.8",
37
- "@anvia/core": "1.0.0"
37
+ "@anvia/core": "1.0.1"
38
38
  },
39
39
  "peerDependencies": {
40
- "@anvia/core": "1.0.0"
40
+ "@anvia/core": "1.0.1"
41
41
  },
42
42
  "scripts": {
43
43
  "prebuild": "test -f ../core/dist/index.d.ts || pnpm --filter @anvia/core build",