Image input

This commit is contained in:
Ian Gulliver
2026-10-14 20:07:26 -07:00
parent bd8702ee87
commit 9e741ede32
27 changed files with 1044 additions and 122 deletions
+102
View File
@@ -299,6 +299,41 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/blobs": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** @description Stores an image for use in a message. The body is the raw image; its type is detected from the bytes and must be PNG, JPEG, GIF or WebP. At most 5 MiB. */
post: operations["uploadBlob"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/blobs/{blobId}": {
parameters: {
query?: never;
header?: never;
path: {
blobId: string;
};
cookie?: never;
};
get: operations["getBlob"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/inbox": {
parameters: {
query?: never;
@@ -491,12 +526,24 @@ export interface components {
SessionCreate: {
prompt: string;
model?: string;
/** @description Blob ids from uploadBlob, sent to the agent as images alongside the prompt. */
images?: string[];
};
MessageCreate: {
/** @description May be empty when images are given. */
text: string;
/** @description Blob ids from uploadBlob, sent to the agent as images alongside the text. */
images?: string[];
/** @description Model for this turn and later ones. When it differs from the session's model, the session switches before the message is sent. */
model?: string;
};
Blob: {
id: string;
content_type: string;
created_by: string;
/** Format: date-time */
created_at: string;
};
Attachment: {
/** @enum {string} */
kind: "file" | "diff" | "image" | "diagram" | "task" | "snapshot" | "url";
@@ -1120,6 +1167,61 @@ export interface operations {
409: components["responses"]["Error"];
};
};
uploadBlob: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"image/png": string;
"image/jpeg": string;
"image/gif": string;
"image/webp": string;
};
};
responses: {
/** @description The stored blob. */
201: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["Blob"];
};
};
400: components["responses"]["Error"];
413: components["responses"]["Error"];
};
};
getBlob: {
parameters: {
query?: never;
header?: never;
path: {
blobId: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description The blob's bytes, with its content type. */
200: {
headers: {
[name: string]: unknown;
};
content: {
"image/png": string;
"image/jpeg": string;
"image/gif": string;
"image/webp": string;
};
};
404: components["responses"]["Error"];
};
};
listInbox: {
parameters: {
query?: {