app-server: expose image-context tri-state

This commit is contained in:
Colin Young
2026-02-10 13:03:57 -08:00
parent a6e9469fa4
commit 8db0700334
20 changed files with 733 additions and 22 deletions
@@ -3802,6 +3802,25 @@
],
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"ItemCompletedNotification": {
"properties": {
"item": {
@@ -6010,6 +6029,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -14405,6 +14405,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/v2/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -382,6 +382,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -701,6 +720,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -369,6 +369,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -574,6 +593,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -369,6 +369,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -574,6 +593,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -382,6 +382,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -701,6 +720,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -369,6 +369,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -574,6 +593,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -382,6 +382,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -701,6 +720,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -369,6 +369,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -574,6 +593,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -369,6 +369,25 @@
},
"type": "object"
},
"InputModality": {
"description": "Canonical user-input modality tags advertised by a model.",
"oneOf": [
{
"description": "Plain text turns and tool payloads.",
"enum": [
"text"
],
"type": "string"
},
{
"description": "Image attachments included in user turns.",
"enum": [
"image"
],
"type": "string"
}
]
},
"McpToolCallError": {
"properties": {
"message": {
@@ -574,6 +593,17 @@
"description": "Version of the CLI that created the thread.",
"type": "string"
},
"conversationModalities": {
"default": null,
"description": "Tri-state conversation modalities signal: - `None`: unknown / not yet determined - `Some([Text])`: known to be text-only - `Some([Text, Image])`: images are known to exist in context",
"items": {
"$ref": "#/definitions/InputModality"
},
"type": [
"array",
"null"
]
},
"createdAt": {
"description": "Unix timestamp (in seconds) when the thread was created.",
"format": "int64",
@@ -1,6 +1,7 @@
// GENERATED CODE! DO NOT MODIFY BY HAND!
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { InputModality } from "../InputModality";
import type { GitInfo } from "./GitInfo";
import type { SessionSource } from "./SessionSource";
import type { Turn } from "./Turn";
@@ -10,6 +11,13 @@ export type Thread = { id: string,
* Usually the first user message in the thread, if available.
*/
preview: string,
/**
* Tri-state conversation modalities signal:
* - `None`: unknown / not yet determined
* - `Some([Text])`: known to be text-only
* - `Some([Text, Image])`: images are known to exist in context
*/
conversationModalities: Array<InputModality> | null,
/**
* Model provider used for this thread (for example, 'openai').
*/
@@ -1958,6 +1958,12 @@ pub struct Thread {
pub id: String,
/// Usually the first user message in the thread, if available.
pub preview: String,
/// Tri-state conversation modalities signal:
/// - `None`: unknown / not yet determined
/// - `Some([Text])`: known to be text-only
/// - `Some([Text, Image])`: images are known to exist in context
#[serde(default)]
pub conversation_modalities: Option<Vec<InputModality>>,
/// Model provider used for this thread (for example, 'openai').
pub model_provider: String,
/// Unix timestamp (in seconds) when the thread was created.