import { Type, type Static } from '@sinclair/typebox'; import { AgentStatusSchema, RuntimeStateSchema } from '@/contracts/agent-info'; import { UsageSchema } from '@/types/usage'; /** Session-addressed runtime metadata. Internal runtime IDs never cross this projection. */ export const SessionRuntimeInfoSchema = Type.Object({ session_id: Type.String({ minLength: 1 }), cwd: Type.String({ minLength: 1 }), title: Type.Optional(Type.String()), model: Type.Optional(Type.String()), provider: Type.Optional(Type.String()), mode: Type.Optional(Type.String()), /** * The active model's reasoning effort (saga p7m8jp.3). Secret-free, optional + additive — * old payloads remain valid. Absent when the model has no reasoning effort support or when * the runtime is an older version that does not project it. */ reasoning_effort: Type.Optional(Type.String()), status: AgentStatusSchema, runtime_state: RuntimeStateSchema, created_at: Type.Integer({ minimum: 0 }), usage: Type.Optional(UsageSchema), }, { additionalProperties: false }); export type SessionRuntimeInfo = Static;