@anvia/core 0.12.8 → 0.13.0
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/agent/index.d.ts +11 -11
- package/dist/agent/index.js +6 -6
- package/dist/{agent-BB9vVH6P.d.ts → agent-CXvjoW0J.d.ts} +7 -7
- package/dist/audio-generation/index.d.ts +1 -1
- package/dist/{chunk-SHORX7TZ.js → chunk-46IR5ZTN.js} +2 -2
- package/dist/{chunk-2STANSN6.js → chunk-7BV5JBJW.js} +4 -4
- package/dist/{chunk-QVFOCNF6.js → chunk-7H3TQN3I.js} +99 -10
- package/dist/chunk-7H3TQN3I.js.map +1 -0
- package/dist/{chunk-EGZCTSEW.js → chunk-HLISYYCB.js} +4 -4
- package/dist/{chunk-WRNPY5C6.js → chunk-JT4U4FGG.js} +3 -3
- package/dist/{chunk-UDISNNKR.js → chunk-MU3UPROJ.js} +51 -11
- package/dist/chunk-MU3UPROJ.js.map +1 -0
- package/dist/{chunk-IN5NPAWL.js → chunk-OCYL4AB6.js} +5 -5
- package/dist/{chunk-FUJ3POKH.js → chunk-W53PLBOL.js} +2 -2
- package/dist/completion/index.d.ts +3 -3
- package/dist/completion/index.js +4 -2
- package/dist/evals/index.d.ts +8 -8
- package/dist/evals/index.js +7 -7
- package/dist/extractor/index.d.ts +8 -8
- package/dist/extractor/index.js +7 -7
- package/dist/guardrails/index.d.ts +1 -1
- package/dist/hooks/index.d.ts +3 -3
- package/dist/image-generation/index.d.ts +1 -1
- package/dist/{index-CM-V4LS3.d.ts → index-ZQAiHW5Q.d.ts} +2 -2
- package/dist/index.d.ts +12 -12
- package/dist/index.js +10 -8
- package/dist/internal/agent.d.ts +8 -8
- package/dist/internal/agent.js +5 -5
- package/dist/{create-completion-CC8-Ep3w.d.ts → json-C5a6auAm.d.ts} +4 -2
- package/dist/loaders/index.d.ts +1 -1
- package/dist/mcp/index.d.ts +4 -4
- package/dist/memory/index.d.ts +3 -3
- package/dist/{middleware-i-jLsLom.d.ts → middleware-Cc_-sosu.d.ts} +3 -3
- package/dist/observability/index.d.ts +3 -3
- package/dist/pipeline/index.d.ts +8 -8
- package/dist/request/index.d.ts +8 -8
- package/dist/request/index.js +4 -4
- package/dist/skills/index.d.ts +4 -4
- package/dist/skills/index.js +2 -2
- package/dist/{think-tool-BKDCOJh5.d.ts → think-tool-DvhOlrL8.d.ts} +1 -1
- package/dist/tool/index.d.ts +5 -5
- package/dist/tool/index.js +2 -2
- package/dist/{tool-f2stpvUP.d.ts → tool-6f9bK92X.d.ts} +1 -1
- package/dist/transcription/index.d.ts +1 -1
- package/dist/{types-5JgWDgaM.d.ts → types-BG3s2WzI.d.ts} +2 -2
- package/dist/{types-b6fOVoW1.d.ts → types-BZQlZ4Vs.d.ts} +1 -1
- package/dist/{types-Dh7gfoGw.d.ts → types-BaYwqozV.d.ts} +1 -1
- package/dist/{types-DmvXANwl.d.ts → types-C708DOhL.d.ts} +1 -1
- package/dist/{types-bNDxj4Tt.d.ts → types-CNeDsGjw.d.ts} +1 -1
- package/dist/{types-C15r7N_4.d.ts → types-DzdJOf35.d.ts} +17 -6
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +2 -2
- package/dist/vector-store/index.d.ts +4 -4
- package/package.json +1 -1
- package/dist/chunk-QVFOCNF6.js.map +0 -1
- package/dist/chunk-UDISNNKR.js.map +0 -1
- /package/dist/{chunk-SHORX7TZ.js.map → chunk-46IR5ZTN.js.map} +0 -0
- /package/dist/{chunk-2STANSN6.js.map → chunk-7BV5JBJW.js.map} +0 -0
- /package/dist/{chunk-EGZCTSEW.js.map → chunk-HLISYYCB.js.map} +0 -0
- /package/dist/{chunk-WRNPY5C6.js.map → chunk-JT4U4FGG.js.map} +0 -0
- /package/dist/{chunk-IN5NPAWL.js.map → chunk-OCYL4AB6.js.map} +0 -0
- /package/dist/{chunk-FUJ3POKH.js.map → chunk-W53PLBOL.js.map} +0 -0
|
@@ -93,26 +93,37 @@ type ToolResult = {
|
|
|
93
93
|
toolName?: string;
|
|
94
94
|
content: ToolResultContent[];
|
|
95
95
|
};
|
|
96
|
+
type MessageOptions = {
|
|
97
|
+
metadata?: JsonValue | undefined;
|
|
98
|
+
};
|
|
99
|
+
type AssistantMessageOptions = MessageOptions & {
|
|
100
|
+
id?: string | undefined;
|
|
101
|
+
};
|
|
96
102
|
type ToolResultOptions = {
|
|
97
103
|
callId?: string | undefined;
|
|
98
104
|
toolName?: string | undefined;
|
|
99
105
|
};
|
|
106
|
+
type ToolResultMessageOptions = ToolResultOptions & MessageOptions;
|
|
100
107
|
type SystemMessage = {
|
|
101
108
|
role: "system";
|
|
102
109
|
content: string;
|
|
110
|
+
metadata?: JsonValue;
|
|
103
111
|
};
|
|
104
112
|
type UserMessage = {
|
|
105
113
|
role: "user";
|
|
106
114
|
content: UserContent[];
|
|
115
|
+
metadata?: JsonValue;
|
|
107
116
|
};
|
|
108
117
|
type AssistantMessage = {
|
|
109
118
|
role: "assistant";
|
|
110
119
|
id?: string;
|
|
111
120
|
content: AssistantContent[];
|
|
121
|
+
metadata?: JsonValue;
|
|
112
122
|
};
|
|
113
123
|
type ToolMessage = {
|
|
114
124
|
role: "tool";
|
|
115
125
|
content: ToolContent[];
|
|
126
|
+
metadata?: JsonValue;
|
|
116
127
|
};
|
|
117
128
|
type UserContent = Text | ImageContent | DocumentContent;
|
|
118
129
|
declare const UserContent: {
|
|
@@ -156,11 +167,11 @@ declare const AssistantContent: {
|
|
|
156
167
|
declare function reasoningDisplayText(reasoning: Reasoning | ReasoningContent[]): string;
|
|
157
168
|
type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage;
|
|
158
169
|
declare const Message: {
|
|
159
|
-
system(content: string): Message;
|
|
160
|
-
user(content: string | UserContent[]): Message;
|
|
161
|
-
assistant(content: string | AssistantContent[],
|
|
162
|
-
tool(content: ToolContent | ToolContent[]): Message;
|
|
163
|
-
toolResult(id: string, output: unknown, options?:
|
|
170
|
+
system(content: string, options?: MessageOptions): Message;
|
|
171
|
+
user(content: string | UserContent[], options?: MessageOptions): Message;
|
|
172
|
+
assistant(content: string | AssistantContent[], idOrOptions?: string | AssistantMessageOptions): Message;
|
|
173
|
+
tool(content: ToolContent | ToolContent[], options?: MessageOptions): Message;
|
|
174
|
+
toolResult(id: string, output: unknown, options?: ToolResultMessageOptions): Message;
|
|
164
175
|
};
|
|
165
176
|
type ToolChoice = "auto" | "required" | "none" | {
|
|
166
177
|
type: "function";
|
|
@@ -258,4 +269,4 @@ declare function assertCompletionRequestSupported(model: CompletionModel, reques
|
|
|
258
269
|
}): void;
|
|
259
270
|
declare function textFromAssistantContent(content: AssistantContent[]): string;
|
|
260
271
|
|
|
261
|
-
export { AssistantContent as A,
|
|
272
|
+
export { AssistantContent as A, type ReasoningContentType as B, type CompletionModel as C, type Document as D, type StreamingCompletionModel as E, type ToolFunction as F, assertCompletionRequestSupported as G, reasoningDisplayText as H, type ImageContent as I, type JsonObject as J, textFromAssistantContent as K, Message as M, type Reasoning as R, type SystemMessage as S, type Text as T, Usage as U, type AssistantMessage as a, type AssistantMessageOptions as b, type CompletionRequest as c, type CompletionResponse as d, type JsonPrimitive as e, type JsonValue as f, type MessageOptions as g, type ToolCall as h, ToolContent as i, type ToolDefinition as j, type ToolMessage as k, type ToolResult as l, type ToolResultContent as m, type ToolResultMessageOptions as n, type ToolResultOptions as o, UserContent as p, type UserMessage as q, isToolResultContentArray as r, serializeToolResultOutput as s, type ToolChoice as t, CompletionCapabilityError as u, type CompletionModelCapabilities as v, type CompletionStreamEvent as w, type DocumentContent as x, type ImageDetail as y, type ReasoningContent as z };
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { y as ImageDetail, f as JsonValue, U as Usage, M as Message } from '../types-DzdJOf35.js';
|
|
2
2
|
|
|
3
3
|
type UIMessageRole = "system" | "user" | "assistant" | "tool";
|
|
4
4
|
type UIError = {
|
package/dist/ui/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as VectorMetadataValue, V as VectorMetadata, E as EmbeddingModel, c as EmbeddedDocument, d as Embedding } from '../types-DHHZztGO.js';
|
|
2
|
-
import { T as Tool } from '../tool-
|
|
3
|
-
import { V as VectorFilter, a as VectorSearchIndex, I as IndexStrategy, b as VectorSearchRequest, c as VectorSearchResult, d as VectorInspectRequest, e as VectorInspectPage, f as VectorSearchToolOptions } from '../types-
|
|
4
|
-
export { L as LshOptions, g as VectorInspectItem } from '../types-
|
|
5
|
-
import '../types-
|
|
2
|
+
import { T as Tool } from '../tool-6f9bK92X.js';
|
|
3
|
+
import { V as VectorFilter, a as VectorSearchIndex, I as IndexStrategy, b as VectorSearchRequest, c as VectorSearchResult, d as VectorInspectRequest, e as VectorInspectPage, f as VectorSearchToolOptions } from '../types-C708DOhL.js';
|
|
4
|
+
export { L as LshOptions, g as VectorInspectItem } from '../types-C708DOhL.js';
|
|
5
|
+
import '../types-DzdJOf35.js';
|
|
6
6
|
|
|
7
7
|
declare const vectorFilter: {
|
|
8
8
|
eq(key: string, value: VectorMetadataValue): VectorFilter;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/completion/types.ts"],"sourcesContent":["export type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport type JsonObject = { [key: string]: JsonValue | undefined };\n\nexport type Document = {\n id: string;\n text: string;\n additionalProps?: Record<string, string>;\n};\n\nexport type Text = {\n type: \"text\";\n text: string;\n signature?: string;\n};\n\nexport type ImageDetail = \"auto\" | \"low\" | \"high\";\n\nexport type ImageContent = {\n type: \"image\";\n source:\n | {\n type: \"url\";\n url: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n };\n detail?: ImageDetail;\n};\n\nexport type DocumentContent = {\n type: \"document\";\n source:\n | {\n type: \"url\";\n url: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"text\";\n text: string;\n mediaType?: string;\n filename?: string;\n };\n};\n\nexport type Reasoning = {\n type: \"reasoning\";\n text: string;\n id?: string;\n content?: ReasoningContent[];\n};\n\nexport type ReasoningContent =\n | {\n type: \"text\";\n text: string;\n signature?: string;\n }\n | {\n type: \"summary\";\n text: string;\n }\n | {\n type: \"encrypted\";\n data: string;\n }\n | {\n type: \"redacted\";\n data: string;\n };\n\nexport type ReasoningContentType = ReasoningContent[\"type\"];\n\nexport type ToolFunction = {\n name: string;\n arguments: JsonValue;\n};\n\nexport type ToolCall = {\n type: \"tool_call\";\n id: string;\n callId?: string;\n function: ToolFunction;\n signature?: string;\n additionalParams?: JsonValue;\n};\n\nexport type ToolResultContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mediaType?: string };\n\nexport type ToolResult = {\n type: \"tool_result\";\n id: string;\n callId?: string;\n toolName?: string;\n content: ToolResultContent[];\n};\n\ntype ToolResultOptions = {\n callId?: string | undefined;\n toolName?: string | undefined;\n};\n\nexport type UserContent = Text | ImageContent | DocumentContent;\nexport type AssistantContent = Text | ToolCall | Reasoning | ImageContent;\nexport type ToolContent = ToolResult;\n\nexport type SystemMessage = {\n role: \"system\";\n content: string;\n};\n\nexport type UserMessage = {\n role: \"user\";\n content: UserContent[];\n};\n\nexport type AssistantMessage = {\n role: \"assistant\";\n id?: string;\n content: AssistantContent[];\n};\n\nexport type ToolMessage = {\n role: \"tool\";\n content: ToolContent[];\n};\n\nexport type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage;\n\nexport const UserContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n documentUrl(\n url: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"url\", url, mediaType }\n : { type: \"url\", url, mediaType, filename: options.filename },\n };\n },\n documentBase64(\n data: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"base64\", data, mediaType }\n : { type: \"base64\", data, mediaType, filename: options.filename },\n };\n },\n documentText(text: string): Text {\n return { type: \"text\", text };\n },\n};\n\nexport const ToolContent = {\n toolResult(\n id: string,\n content: string | ToolResultContent[],\n callIdOrOptions?: string | ToolResultOptions,\n toolName?: string,\n ): ToolResult {\n const normalized =\n typeof content === \"string\" ? [{ type: \"text\" as const, text: content }] : content;\n const options = normalizeToolResultOptions(callIdOrOptions, toolName);\n const result: ToolResult = { type: \"tool_result\", id, content: normalized };\n if (options.callId !== undefined) {\n result.callId = options.callId;\n }\n if (options.toolName !== undefined) {\n result.toolName = options.toolName;\n }\n return result;\n },\n};\n\nfunction normalizeToolResultOptions(\n callIdOrOptions?: string | ToolResultOptions,\n toolName?: string,\n): ToolResultOptions {\n if (callIdOrOptions === undefined) {\n return toolName === undefined ? {} : { toolName };\n }\n if (typeof callIdOrOptions === \"string\") {\n return toolName === undefined\n ? { callId: callIdOrOptions }\n : { callId: callIdOrOptions, toolName };\n }\n return toolName === undefined ? callIdOrOptions : { ...callIdOrOptions, toolName };\n}\n\nexport function serializeToolResultOutput(output: unknown): string {\n if (typeof output === \"string\") {\n return output;\n }\n\n try {\n const serialized = JSON.stringify(output);\n return serialized === undefined ? String(output) : serialized;\n } catch {\n return String(output);\n }\n}\n\nexport function isToolResultContentArray(value: unknown): value is ToolResultContent[] {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n value.every((item) => {\n if (typeof item !== \"object\" || item === null || !(\"type\" in item)) {\n return false;\n }\n if (item.type === \"text\") {\n return \"text\" in item && typeof item.text === \"string\";\n }\n if (item.type === \"image\") {\n return (\n \"data\" in item &&\n typeof item.data === \"string\" &&\n (!(\"mediaType\" in item) ||\n item.mediaType === undefined ||\n typeof item.mediaType === \"string\")\n );\n }\n return false;\n })\n );\n}\n\nexport const AssistantContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n reasoning(text: string, id?: string): Reasoning {\n return id === undefined ? { type: \"reasoning\", text } : { type: \"reasoning\", text, id };\n },\n reasoningFromContent(content: ReasoningContent[], id?: string): Reasoning {\n const text = reasoningDisplayText(content);\n const reasoning: Reasoning = { type: \"reasoning\", text, content };\n return id === undefined ? reasoning : { ...reasoning, id };\n },\n reasoningSummary(text: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"summary\", text }], id);\n },\n reasoningEncrypted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"encrypted\", data }], id);\n },\n reasoningRedacted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"redacted\", data }], id);\n },\n toolCall(id: string, name: string, args: JsonValue, callId?: string): ToolCall {\n const base: ToolCall = {\n type: \"tool_call\",\n id,\n function: {\n name,\n arguments: args,\n },\n };\n return callId === undefined ? base : { ...base, callId };\n },\n};\n\nexport function reasoningDisplayText(reasoning: Reasoning | ReasoningContent[]): string {\n const content = Array.isArray(reasoning) ? reasoning : reasoning.content;\n if (content === undefined) {\n return Array.isArray(reasoning) ? \"\" : reasoning.text;\n }\n return content\n .flatMap((item) => {\n if (item.type === \"text\" || item.type === \"summary\") {\n return [item.text];\n }\n return [];\n })\n .join(\"\");\n}\n\nexport const Message = {\n system(content: string): Message {\n return { role: \"system\", content };\n },\n user(content: string | UserContent[]): Message {\n return {\n role: \"user\",\n content: typeof content === \"string\" ? [UserContent.text(content)] : content,\n };\n },\n assistant(content: string | AssistantContent[], id?: string): Message {\n const normalized = typeof content === \"string\" ? [AssistantContent.text(content)] : content;\n return id === undefined\n ? { role: \"assistant\", content: normalized }\n : { role: \"assistant\", id, content: normalized };\n },\n tool(content: ToolContent | ToolContent[]): Message {\n return {\n role: \"tool\",\n content: Array.isArray(content) ? content : [content],\n };\n },\n toolResult(id: string, output: unknown, options: ToolResultOptions = {}): Message {\n const content = isToolResultContentArray(output) ? output : serializeToolResultOutput(output);\n return Message.tool(ToolContent.toolResult(id, content, options));\n },\n};\n\nexport type ToolChoice =\n | \"auto\"\n | \"required\"\n | \"none\"\n | {\n type: \"function\";\n name: string;\n };\n\nexport type ToolDefinition = {\n name: string;\n description: string;\n parameters: JsonObject;\n};\n\nexport type Usage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n cachedInputTokens: number;\n cacheCreationInputTokens: number;\n};\n\nexport const Usage = {\n empty(): Usage {\n return {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n cacheCreationInputTokens: 0,\n };\n },\n add(left: Usage, right: Usage): Usage {\n return {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n totalTokens: left.totalTokens + right.totalTokens,\n cachedInputTokens: left.cachedInputTokens + right.cachedInputTokens,\n cacheCreationInputTokens: left.cacheCreationInputTokens + right.cacheCreationInputTokens,\n };\n },\n};\n\nexport type CompletionRequest<ModelName extends string = string> = {\n model?: ModelName;\n instructions?: string;\n chatHistory: Message[];\n documents: Document[];\n tools: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n toolChoice?: ToolChoice;\n additionalParams?: JsonValue;\n outputSchema?: JsonObject;\n};\n\nexport type CompletionResponse<RawResponse = unknown> = {\n choice: AssistantContent[];\n usage: Usage;\n rawResponse: RawResponse;\n messageId?: string;\n};\n\nexport type CompletionModelCapabilities = {\n streaming: boolean;\n tools: boolean;\n toolChoice: boolean;\n imageInput: boolean;\n documentInput: boolean;\n outputSchema: boolean;\n reasoning: boolean;\n};\n\nexport interface CompletionModel<RawResponse = unknown, ModelName extends string = string> {\n readonly provider: string;\n readonly defaultModel: ModelName;\n readonly capabilities: CompletionModelCapabilities;\n traceRequest?(\n request: CompletionRequest<ModelName>,\n options?: { stream?: boolean | undefined },\n ): JsonObject | undefined;\n completion(request: CompletionRequest<ModelName>): Promise<CompletionResponse<RawResponse>>;\n}\n\nexport type CompletionStreamEvent<RawResponse = unknown> =\n | {\n type: \"text_delta\";\n delta: string;\n }\n | {\n type: \"reasoning_delta\";\n delta: string;\n id?: string;\n contentType?: ReasoningContentType;\n signature?: string;\n }\n | {\n type: \"tool_call_delta\";\n id: string;\n callId?: string;\n name?: string;\n argumentsDelta?: string;\n signature?: string;\n }\n | {\n type: \"tool_call\";\n toolCall: ToolCall;\n }\n | {\n type: \"message_id\";\n id: string;\n }\n | {\n type: \"final\";\n response: CompletionResponse<RawResponse>;\n }\n | {\n type: \"error\";\n error: unknown;\n };\n\nexport interface StreamingCompletionModel<RawResponse = unknown, ModelName extends string = string>\n extends CompletionModel<RawResponse, ModelName> {\n streamCompletion(\n request: CompletionRequest<ModelName>,\n ): AsyncIterable<CompletionStreamEvent<RawResponse>>;\n}\n\nexport class CompletionCapabilityError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CompletionCapabilityError\";\n }\n}\n\nexport function assertCompletionRequestSupported(\n model: CompletionModel,\n request: CompletionRequest,\n options: { streaming?: boolean | undefined } = {},\n): void {\n const modelLabel = `${model.provider}:${request.model ?? model.defaultModel}`;\n const capabilities = model.capabilities;\n\n if (options.streaming === true && !capabilities.streaming) {\n throw new CompletionCapabilityError(`${modelLabel} does not support streaming completions.`);\n }\n\n if (request.tools.length > 0 && !capabilities.tools) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool definitions.`);\n }\n\n if (request.toolChoice !== undefined && !capabilities.toolChoice) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool choice.`);\n }\n\n if (request.outputSchema !== undefined && !capabilities.outputSchema) {\n throw new CompletionCapabilityError(`${modelLabel} does not support output schemas.`);\n }\n\n if (!capabilities.imageInput && requestHasImageInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support image input.`);\n }\n\n if (!capabilities.documentInput && requestHasFileDocumentInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support document file input.`);\n }\n}\n\nexport function textFromAssistantContent(content: AssistantContent[]): string {\n return content.flatMap((item) => (item.type === \"text\" ? [item.text] : [])).join(\"\\n\");\n}\n\nfunction requestHasImageInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"system\" ? false : message.content.some((content) => content.type === \"image\"),\n );\n}\n\nfunction requestHasFileDocumentInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"user\"\n ? message.content.some(\n (content) => content.type === \"document\" && content.source.type !== \"text\",\n )\n : false,\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/messages.ts"],"sourcesContent":["import {\n AssistantContent,\n type AssistantContent as AssistantContentType,\n type Message as CoreMessage,\n type DocumentContent,\n type ImageContent,\n type ImageDetail,\n type JsonValue,\n Message,\n reasoningDisplayText,\n serializeToolResultOutput,\n ToolContent,\n type ToolContent as ToolContentType,\n type ToolResultContent,\n UserContent,\n type UserContent as UserContentType,\n} from \"../completion/types\";\nimport type { UIAttachment, UIMessage, UIMessagePart } from \"./types\";\n\ntype UIToolPartLocation = {\n messageIndex: number;\n partIndex: number;\n};\n\ntype UIToolPartLocations = {\n byToolCallId: Map<string, UIToolPartLocation>;\n byCallId: Map<string, UIToolPartLocation>;\n};\n\ntype UIToolMessagePart = Extract<UIMessagePart, { type: \"tool\" }>;\n\nexport function uiMessagesToCoreMessages(messages: UIMessage[]): CoreMessage[] {\n const coreMessages: CoreMessage[] = [];\n\n for (const message of messages) {\n const text = textFromUIParts(message.parts);\n\n if (message.role === \"system\") {\n if (text.length > 0) {\n coreMessages.push(Message.system(text));\n }\n continue;\n }\n\n if (message.role === \"user\") {\n const content: UserContentType[] = [];\n for (const part of message.parts) {\n if (part.type === \"text\") {\n content.push(UserContent.text(part.text));\n continue;\n }\n if (part.type === \"attachment\") {\n content.push(attachmentToUserContent(part.attachment));\n continue;\n }\n if (part.type === \"data\" && isUserContent(part.data)) {\n content.push(part.data);\n continue;\n }\n throw new TypeError(\n \"User UI messages can only be converted from text, attachment, or image/document data parts.\",\n );\n }\n if (content.length > 0) {\n coreMessages.push(Message.user(content));\n }\n continue;\n }\n\n if (message.role === \"assistant\") {\n const content: AssistantContentType[] = [];\n const toolResults: ToolContentType[] = [];\n for (const part of message.parts) {\n if (part.type === \"text\" && part.text.length > 0) {\n content.push(AssistantContent.text(part.text));\n continue;\n }\n if (part.type === \"reasoning\" && part.text.length > 0) {\n content.push(AssistantContent.reasoning(part.text, part.reasoningId));\n continue;\n }\n if (\n part.type === \"tool\" &&\n (part.state === \"input-streaming\" ||\n part.state === \"input-available\" ||\n part.state === \"output-available\")\n ) {\n content.push(\n AssistantContent.toolCall(\n part.toolCallId,\n part.toolName,\n part.input ?? {},\n part.callId,\n ),\n );\n if (part.state === \"output-available\") {\n toolResults.push(\n ToolContent.toolResult(part.toolCallId, outputToToolResultContent(part.output), {\n callId: part.callId,\n toolName: part.toolName,\n }),\n );\n }\n }\n }\n if (content.length > 0) {\n coreMessages.push(Message.assistant(content, message.id));\n }\n if (toolResults.length > 0) {\n coreMessages.push(Message.tool(toolResults));\n }\n continue;\n }\n\n const toolResults: ToolContentType[] = [];\n for (const part of message.parts) {\n if (part.type !== \"tool\" || part.state !== \"output-available\") {\n continue;\n }\n toolResults.push(\n ToolContent.toolResult(part.toolCallId, outputToToolResultContent(part.output), {\n callId: part.callId,\n toolName: part.toolName,\n }),\n );\n }\n if (toolResults.length > 0) {\n coreMessages.push(Message.tool(toolResults));\n }\n }\n\n return coreMessages;\n}\n\nexport function coreMessagesToUIMessages(messages: CoreMessage[]): UIMessage[] {\n const uiMessages: UIMessage[] = [];\n const toolPartLocations: UIToolPartLocations = {\n byToolCallId: new Map(),\n byCallId: new Map(),\n };\n\n for (const message of messages) {\n if (message.role === \"system\") {\n uiMessages.push({\n id: createId(\"msg\"),\n role: \"system\",\n parts: [{ id: createId(\"part\"), type: \"text\", text: message.content }],\n });\n continue;\n }\n\n if (message.role === \"user\") {\n const parts: UIMessagePart[] = [];\n for (const content of message.content) {\n if (content.type === \"text\") {\n parts.push({ id: createId(\"part\"), type: \"text\", text: content.text });\n } else {\n parts.push({\n id: createId(\"part\"),\n type: \"attachment\",\n attachment: userContentToAttachment(content),\n });\n }\n }\n uiMessages.push({ id: createId(\"msg\"), role: \"user\", parts });\n continue;\n }\n\n if (message.role === \"assistant\") {\n const parts: UIMessagePart[] = [];\n for (const content of message.content) {\n if (content.type === \"text\") {\n parts.push({ id: createId(\"part\"), type: \"text\", text: content.text });\n continue;\n }\n if (content.type === \"reasoning\") {\n const part: UIMessagePart = {\n id: createId(\"part\"),\n type: \"reasoning\",\n text: reasoningDisplayText(content),\n };\n if (content.id !== undefined) {\n part.reasoningId = content.id;\n }\n parts.push(part);\n continue;\n }\n if (content.type === \"tool_call\") {\n const part: UIMessagePart = {\n id: toolPartId(content.id),\n type: \"tool\",\n toolName: content.function.name,\n toolCallId: content.id,\n state: \"input-available\",\n input: content.function.arguments,\n };\n if (content.callId !== undefined) {\n part.callId = content.callId;\n }\n parts.push(part);\n continue;\n }\n parts.push({\n id: createId(\"part\"),\n type: \"data\",\n name: content.type,\n data: content as JsonValue,\n });\n }\n const messageIndex = uiMessages.length;\n uiMessages.push({ id: message.id ?? createId(\"msg\"), role: \"assistant\", parts });\n registerToolPartLocations(parts, messageIndex, toolPartLocations);\n continue;\n }\n\n const parts: UIMessagePart[] = [];\n for (const content of message.content) {\n const part: UIToolMessagePart = {\n id: toolPartId(content.id),\n type: \"tool\",\n toolName: toolNameForResult(content, uiMessages, toolPartLocations),\n toolCallId: content.id,\n state: \"output-available\",\n output: toolResultContentToJson(content.content),\n };\n if (content.callId !== undefined) {\n part.callId = content.callId;\n }\n if (mergeToolResultPart(uiMessages, toolPartLocations, part)) {\n continue;\n }\n parts.push(part);\n }\n if (parts.length > 0) {\n uiMessages.push({ id: createId(\"msg\"), role: \"tool\", parts });\n }\n }\n\n return uiMessages;\n}\n\nfunction registerToolPartLocations(\n parts: UIMessagePart[],\n messageIndex: number,\n toolPartLocations: UIToolPartLocations,\n): void {\n for (const [partIndex, part] of parts.entries()) {\n if (part.type !== \"tool\") {\n continue;\n }\n const location = { messageIndex, partIndex };\n toolPartLocations.byToolCallId.set(part.toolCallId, location);\n if (part.callId !== undefined) {\n toolPartLocations.byCallId.set(part.callId, location);\n }\n }\n}\n\nfunction mergeToolResultPart(\n uiMessages: UIMessage[],\n toolPartLocations: UIToolPartLocations,\n resultPart: UIMessagePart,\n): boolean {\n if (resultPart.type !== \"tool\") {\n return false;\n }\n\n const location = findToolPartLocation(\n resultPart.toolCallId,\n resultPart.callId,\n toolPartLocations,\n );\n if (location === undefined) {\n return false;\n }\n\n const message = uiMessages[location.messageIndex];\n const currentPart = message?.parts[location.partIndex];\n if (message === undefined || currentPart?.type !== \"tool\") {\n return false;\n }\n\n const mergedPart: UIToolMessagePart = {\n ...currentPart,\n toolName: resultPart.toolName === \"tool\" ? currentPart.toolName : resultPart.toolName,\n state: \"output-available\",\n ...(resultPart.output === undefined ? {} : { output: resultPart.output }),\n };\n if (currentPart.callId === undefined && resultPart.callId !== undefined) {\n mergedPart.callId = resultPart.callId;\n toolPartLocations.byCallId.set(resultPart.callId, location);\n }\n\n const nextParts = [...message.parts];\n nextParts[location.partIndex] = mergedPart;\n uiMessages[location.messageIndex] = { ...message, parts: nextParts };\n return true;\n}\n\nfunction findToolPartLocation(\n toolCallId: string,\n callId: string | undefined,\n toolPartLocations: UIToolPartLocations,\n): UIToolPartLocation | undefined {\n return (\n (callId === undefined ? undefined : toolPartLocations.byCallId.get(callId)) ??\n toolPartLocations.byToolCallId.get(toolCallId)\n );\n}\n\nfunction toolNameForResult(\n content: ToolContentType,\n uiMessages: UIMessage[],\n toolPartLocations: UIToolPartLocations,\n): string {\n if (content.toolName !== undefined) {\n return content.toolName;\n }\n\n const location = findToolPartLocation(content.id, content.callId, toolPartLocations);\n const part =\n location === undefined\n ? undefined\n : uiMessages[location.messageIndex]?.parts[location.partIndex];\n return part?.type === \"tool\" ? part.toolName : \"tool\";\n}\n\nexport function isUIMessage(value: unknown): value is UIMessage {\n return (\n isRecord(value) &&\n typeof value.id === \"string\" &&\n isUIMessageRole(value.role) &&\n Array.isArray(value.parts)\n );\n}\n\nexport function isUIMessageArray(value: unknown): value is UIMessage[] {\n return Array.isArray(value) && value.every(isUIMessage);\n}\n\nfunction textFromUIParts(parts: UIMessagePart[]): string {\n return parts.flatMap((part) => (part.type === \"text\" ? [part.text] : [])).join(\"\");\n}\n\nfunction outputToToolResultContent(output: JsonValue | undefined): ToolResultContent[] {\n return [{ type: \"text\", text: serializeToolResultOutput(output ?? null) }];\n}\n\nfunction attachmentToUserContent(attachment: UIAttachment): UserContentType {\n if (attachment.type === \"image\" || isImageFileAttachment(attachment)) {\n if (attachment.url !== undefined) {\n return UserContent.imageUrl(attachment.url, imageOptions(attachment));\n }\n if (attachment.data !== undefined && attachment.mediaType !== undefined) {\n return UserContent.imageBase64(\n attachment.data,\n attachment.mediaType,\n imageOptions(attachment),\n );\n }\n throw new TypeError(\"Image attachments require a url or base64 data with mediaType.\");\n }\n\n if (attachment.text !== undefined) {\n return {\n type: \"document\",\n source: {\n type: \"text\",\n text: attachment.text,\n ...(attachment.mediaType === undefined ? {} : { mediaType: attachment.mediaType }),\n ...(attachment.name === undefined ? {} : { filename: attachment.name }),\n },\n };\n }\n\n const mediaType = attachment.mediaType ?? \"application/octet-stream\";\n if (attachment.url !== undefined) {\n return UserContent.documentUrl(attachment.url, mediaType, documentOptions(attachment));\n }\n if (attachment.data !== undefined) {\n return UserContent.documentBase64(attachment.data, mediaType, documentOptions(attachment));\n }\n\n throw new TypeError(\"Document attachments require a url, base64 data, or text.\");\n}\n\nfunction userContentToAttachment(content: ImageContent | DocumentContent): UIAttachment {\n if (content.type === \"image\") {\n const attachment: UIAttachment = {\n id: createId(\"attachment\"),\n type: \"image\",\n ...(content.detail === undefined ? {} : { detail: content.detail }),\n };\n if (content.source.type === \"url\") {\n attachment.url = content.source.url;\n } else {\n attachment.data = content.source.data;\n attachment.mediaType = content.source.mediaType;\n }\n return attachment;\n }\n\n const attachment: UIAttachment = {\n id: createId(\"attachment\"),\n type: \"document\",\n };\n if (content.source.type === \"url\") {\n attachment.url = content.source.url;\n attachment.mediaType = content.source.mediaType;\n if (content.source.filename !== undefined) {\n attachment.name = content.source.filename;\n }\n } else if (content.source.type === \"base64\") {\n attachment.data = content.source.data;\n attachment.mediaType = content.source.mediaType;\n if (content.source.filename !== undefined) {\n attachment.name = content.source.filename;\n }\n } else {\n attachment.text = content.source.text;\n if (content.source.mediaType !== undefined) {\n attachment.mediaType = content.source.mediaType;\n }\n if (content.source.filename !== undefined) {\n attachment.name = content.source.filename;\n }\n }\n return attachment;\n}\n\nfunction isImageFileAttachment(attachment: UIAttachment): boolean {\n return attachment.type === \"file\" && attachment.mediaType?.startsWith(\"image/\") === true;\n}\n\nfunction imageOptions(attachment: UIAttachment): { detail?: ImageDetail } {\n return attachment.detail === undefined ? {} : { detail: attachment.detail };\n}\n\nfunction documentOptions(attachment: UIAttachment): { filename?: string } {\n return attachment.name === undefined ? {} : { filename: attachment.name };\n}\n\nfunction toolResultContentToJson(content: ToolResultContent[]): JsonValue {\n if (content.length === 1 && content[0]?.type === \"text\") {\n return content[0].text;\n }\n return content as JsonValue;\n}\n\nfunction isUserContent(value: unknown): value is UserContentType {\n if (!isRecord(value)) {\n return false;\n }\n\n if (value.type === \"text\") {\n return typeof value.text === \"string\";\n }\n\n if (value.type === \"image\") {\n return isImageContent(value);\n }\n\n if (value.type === \"document\") {\n return isDocumentContent(value);\n }\n\n return false;\n}\n\nfunction isImageContent(value: Record<string, unknown>): boolean {\n if (!isRecord(value.source)) {\n return false;\n }\n\n if (value.source.type === \"url\") {\n return typeof value.source.url === \"string\";\n }\n\n if (value.source.type === \"base64\") {\n return typeof value.source.data === \"string\" && typeof value.source.mediaType === \"string\";\n }\n\n return false;\n}\n\nfunction isDocumentContent(value: Record<string, unknown>): boolean {\n if (!isRecord(value.source)) {\n return false;\n }\n\n if (value.source.type === \"url\") {\n return typeof value.source.url === \"string\" && typeof value.source.mediaType === \"string\";\n }\n\n if (value.source.type === \"base64\") {\n return typeof value.source.data === \"string\" && typeof value.source.mediaType === \"string\";\n }\n\n if (value.source.type === \"text\") {\n return (\n typeof value.source.text === \"string\" &&\n (value.source.mediaType === undefined || typeof value.source.mediaType === \"string\")\n );\n }\n\n return false;\n}\n\nfunction toolPartId(toolCallId: string): string {\n return `tool_${toolCallId}`;\n}\n\nlet nextId = 0;\n\nfunction createId(prefix: string): string {\n const random = globalThis.crypto?.randomUUID?.();\n if (random !== undefined) {\n return `${prefix}_${random}`;\n }\n nextId += 1;\n return `${prefix}_${nextId.toString(36)}`;\n}\n\nfunction isUIMessageRole(value: unknown): value is UIMessage[\"role\"] {\n return value === \"system\" || value === \"user\" || value === \"assistant\" || value === \"tool\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":"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","names":["toolResults","parts","attachment"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|