/** * @license * Copyright 2026 Steven Roussey * SPDX-License-Identifier: Apache-2.0 */ export type ContentBlockText = { readonly type: "text"; readonly text: string; }; export type ContentBlockImage = { readonly type: "image"; readonly mimeType: string; readonly data: string; }; export type ContentBlockToolUse = { readonly type: "tool_use"; readonly id: string; readonly name: string; readonly input: Record; }; /** * Blocks that may appear in a `tool_result`'s `content` array. Provider payloads * typically use text, image, and tool_use; nested `tool_result` is not modeled * here so the JSON schema can be embedded in parent task schemas without a * recursive `$ref` (which fails to resolve when `ContentBlockSchema` is nested * under a larger document such as `ToolCallingInputSchema`). */ export type ContentBlockInToolResultBody = ContentBlockText | ContentBlockImage | ContentBlockToolUse; export type ContentBlockToolResult = { readonly type: "tool_result"; readonly tool_use_id: string; readonly content: ReadonlyArray; readonly is_error: boolean | undefined; }; export type ContentBlock = ContentBlockText | ContentBlockImage | ContentBlockToolUse | ContentBlockToolResult; export type ChatRole = "user" | "assistant" | "tool" | "system"; export interface ChatMessage { readonly role: ChatRole; readonly content: ReadonlyArray; } export declare const ContentBlockSchema: { readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["text"]; }; readonly text: { readonly type: "string"; }; }; readonly required: readonly ["type", "text"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["image"]; }; readonly mimeType: { readonly type: "string"; }; readonly data: { readonly type: "string"; }; }; readonly required: readonly ["type", "mimeType", "data"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_use"]; }; readonly id: { readonly type: "string"; }; readonly name: { readonly type: "string"; }; readonly input: { readonly type: "object"; readonly additionalProperties: true; }; }; readonly required: readonly ["type", "id", "name", "input"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_result"]; }; readonly tool_use_id: { readonly type: "string"; }; readonly content: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["text"]; }; readonly text: { readonly type: "string"; }; }; readonly required: readonly ["type", "text"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["image"]; }; readonly mimeType: { readonly type: "string"; }; readonly data: { readonly type: "string"; }; }; readonly required: readonly ["type", "mimeType", "data"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_use"]; }; readonly id: { readonly type: "string"; }; readonly name: { readonly type: "string"; }; readonly input: { readonly type: "object"; readonly additionalProperties: true; }; }; readonly required: readonly ["type", "id", "name", "input"]; readonly additionalProperties: false; }]; }; }; readonly is_error: { readonly type: "boolean"; }; }; readonly required: readonly ["type", "tool_use_id", "content"]; readonly additionalProperties: false; }]; readonly title: "ContentBlock"; readonly description: "A single content block within a chat message"; }; export declare const ChatMessageSchema: { readonly type: "object"; readonly properties: { readonly role: { readonly type: "string"; readonly enum: readonly ["user", "assistant", "tool", "system"]; }; readonly content: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["text"]; }; readonly text: { readonly type: "string"; }; }; readonly required: readonly ["type", "text"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["image"]; }; readonly mimeType: { readonly type: "string"; }; readonly data: { readonly type: "string"; }; }; readonly required: readonly ["type", "mimeType", "data"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_use"]; }; readonly id: { readonly type: "string"; }; readonly name: { readonly type: "string"; }; readonly input: { readonly type: "object"; readonly additionalProperties: true; }; }; readonly required: readonly ["type", "id", "name", "input"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_result"]; }; readonly tool_use_id: { readonly type: "string"; }; readonly content: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["text"]; }; readonly text: { readonly type: "string"; }; }; readonly required: readonly ["type", "text"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["image"]; }; readonly mimeType: { readonly type: "string"; }; readonly data: { readonly type: "string"; }; }; readonly required: readonly ["type", "mimeType", "data"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly type: { readonly type: "string"; readonly enum: readonly ["tool_use"]; }; readonly id: { readonly type: "string"; }; readonly name: { readonly type: "string"; }; readonly input: { readonly type: "object"; readonly additionalProperties: true; }; }; readonly required: readonly ["type", "id", "name", "input"]; readonly additionalProperties: false; }]; }; }; readonly is_error: { readonly type: "boolean"; }; }; readonly required: readonly ["type", "tool_use_id", "content"]; readonly additionalProperties: false; }]; readonly title: "ContentBlock"; readonly description: "A single content block within a chat message"; }; }; }; readonly required: readonly ["role", "content"]; readonly additionalProperties: false; readonly title: "ChatMessage"; readonly description: "A single chat message with role and structured content blocks"; }; export declare function isContentBlockInToolResultBody(value: unknown): value is ContentBlockInToolResultBody; export declare function isContentBlock(value: unknown): value is ContentBlock; export declare function isChatMessage(value: unknown): value is ChatMessage; export declare function textMessage(role: ChatRole, text: string): ChatMessage; //# sourceMappingURL=ChatMessage.d.ts.map