Files
tyx_AI_xhs/packages/shared-contracts/src/bootstrap.ts
T

45 lines
1.6 KiB
TypeScript

import { Type, type Static } from "@sinclair/typebox";
const ModelIdSchema = Type.String({ maxLength: 80, pattern: "^[a-z0-9][a-z0-9.-]+$" });
export const BootstrapResponseSchema = Type.Object(
{
app_version: Type.String({ maxLength: 40, pattern: "^[0-9]+\\.[0-9]+\\.[0-9]+(?:[-+][A-Za-z0-9.-]+)?$" }),
dependencies: Type.Array(
Type.Object(
{
service_id: Type.String({ maxLength: 60, pattern: "^[a-z][a-z0-9_-]+$" }),
status: Type.Union([
Type.Literal("available"),
Type.Literal("paused"),
Type.Literal("degraded"),
Type.Literal("unavailable"),
]),
},
{ additionalProperties: false },
),
),
model_summary: Type.Object(
{
config_set_version: Type.Union([Type.Integer({ minimum: 0 }), Type.Null()]),
configured_default_model_id: Type.Union([ModelIdSchema, Type.Null()]),
recommended_model_id: Type.Union([ModelIdSchema, Type.Null()]),
runtime_availability_version: Type.Union([Type.Integer({ minimum: 0 }), Type.Null()]),
},
{ additionalProperties: false },
),
public_features: Type.Array(
Type.Object(
{
feature_id: Type.String({ maxLength: 80, pattern: "^[a-z][a-z0-9_-]+$" }),
status: Type.Union([Type.Literal("enabled"), Type.Literal("disabled"), Type.Literal("paused")]),
},
{ additionalProperties: false },
),
),
},
{ additionalProperties: false, $id: "BootstrapResponse" },
);
export type BootstrapResponse = Static<typeof BootstrapResponseSchema>;