Files
app/frontend/src/client/schemas.gen.ts
T
root 3a8edae928 Supervise the loops a flow starts, and give up loudly
A node's subscription, schedule or poll loop was a bare asyncio task: one
that raised outside its own retry handling was simply gone, and the node
went on being listed as running while nothing listened any more.

Those loops now run under a supervisor that restarts them with a growing
delay and quarantines a flow that burns through five restarts in five
minutes — a flow crash-looping every second is worse than one that is
visibly stopped, and the dashboard can now say which.

The MQTT subscription loses its private five-second reconnect in the
process: one backoff policy per socket, and it belongs to the supervisor.
2026-08-16 07:23:02 +02:00

1453 lines
33 KiB
TypeScript

// This file is auto-generated by @hey-api/openapi-ts
export const Body_login_login_access_tokenSchema = {
properties: {
grant_type: {
anyOf: [
{
type: 'string',
pattern: '^password$'
},
{
type: 'null'
}
],
title: 'Grant Type'
},
username: {
type: 'string',
title: 'Username'
},
password: {
type: 'string',
format: 'password',
title: 'Password'
},
scope: {
type: 'string',
title: 'Scope',
default: ''
},
client_id: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Client Id'
},
client_secret: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
format: 'password',
title: 'Client Secret'
}
},
type: 'object',
required: ['username', 'password'],
title: 'Body_login-login_access_token'
} as const;
export const Body_oauth_tokenSchema = {
properties: {
grant_type: {
type: 'string',
title: 'Grant Type'
},
code: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Code'
},
redirect_uri: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Redirect Uri'
},
client_id: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Client Id'
},
code_verifier: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Code Verifier'
},
refresh_token: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Refresh Token'
},
resource: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Resource'
}
},
type: 'object',
required: ['grant_type'],
title: 'Body_oauth-token'
} as const;
export const DTypeSchema = {
type: 'string',
enum: ['float', 'int', 'str', 'bool', 'json'],
title: 'DType',
description: `Serializable payload types.
Binary payloads (tensors, images) will arrive later as explicitly declared
codec fields; until then everything on the wire is JSON.`
} as const;
export const FlowDef_InputSchema = {
properties: {
name: {
type: 'string',
title: 'Name'
},
title: {
type: 'string',
title: 'Title',
default: ''
},
nodes: {
items: {
'$ref': '#/components/schemas/NodeDef-Input'
},
type: 'array',
title: 'Nodes'
},
inputs: {
items: {
'$ref': '#/components/schemas/FlowInput-Input'
},
type: 'array',
title: 'Inputs'
},
version: {
type: 'integer',
title: 'Version',
default: 1
}
},
type: 'object',
required: ['name'],
title: 'FlowDef',
description: 'One atomic flow.'
} as const;
export const FlowDef_OutputSchema = {
properties: {
name: {
type: 'string',
title: 'Name'
},
title: {
type: 'string',
title: 'Title',
default: ''
},
nodes: {
items: {
'$ref': '#/components/schemas/NodeDef-Output'
},
type: 'array',
title: 'Nodes'
},
inputs: {
items: {
'$ref': '#/components/schemas/FlowInput-Output'
},
type: 'array',
title: 'Inputs'
},
version: {
type: 'integer',
title: 'Version',
default: 1
}
},
type: 'object',
required: ['name'],
title: 'FlowDef',
description: 'One atomic flow.'
} as const;
export const FlowDetailSchema = {
properties: {
definition: {
'$ref': '#/components/schemas/FlowDef-Output'
},
nodes: {
items: {
'$ref': '#/components/schemas/NodeStatusPublic'
},
type: 'array',
title: 'Nodes',
default: []
},
issues: {
items: {
'$ref': '#/components/schemas/ValidationIssue'
},
type: 'array',
title: 'Issues',
default: []
},
has_draft: {
type: 'boolean',
title: 'Has Draft',
default: false
},
enabled: {
type: 'boolean',
title: 'Enabled',
default: true
},
paused: {
type: 'boolean',
title: 'Paused',
default: false
}
},
type: 'object',
required: ['definition'],
title: 'FlowDetail',
description: `A flow plus how it is currently doing.
\`\`definition\`\` is the working copy — the unpublished draft when there is
one — because that is what the editor shows. \`\`nodes\`\` reports the
published flow, which is what is actually running.`
} as const;
export const FlowInput_InputSchema = {
properties: {
spec: {
'$ref': '#/components/schemas/MessageSpec'
},
initial: {
anyOf: [
{},
{
type: 'null'
}
],
title: 'Initial'
}
},
type: 'object',
required: ['spec'],
title: 'FlowInput',
description: 'A message the flow starts with rather than computes.'
} as const;
export const FlowInput_OutputSchema = {
properties: {
spec: {
'$ref': '#/components/schemas/MessageSpec'
},
initial: {
anyOf: [
{},
{
type: 'null'
}
],
title: 'Initial'
}
},
type: 'object',
required: ['spec'],
title: 'FlowInput',
description: 'A message the flow starts with rather than computes.'
} as const;
export const FlowStatePublicSchema = {
properties: {
values: {
additionalProperties: {
'$ref': '#/components/schemas/MessageValue'
},
type: 'object',
title: 'Values'
},
nodes: {
items: {
'$ref': '#/components/schemas/NodeStatusPublic'
},
type: 'array',
title: 'Nodes'
}
},
type: 'object',
title: 'FlowStatePublic'
} as const;
export const FlowSummarySchema = {
properties: {
name: {
type: 'string',
title: 'Name'
},
title: {
type: 'string',
title: 'Title',
default: ''
},
node_count: {
type: 'integer',
title: 'Node Count',
default: 0
},
error_count: {
type: 'integer',
title: 'Error Count',
default: 0
},
has_draft: {
type: 'boolean',
title: 'Has Draft',
default: false
},
enabled: {
type: 'boolean',
title: 'Enabled',
default: true
},
paused: {
type: 'boolean',
title: 'Paused',
default: false
},
quarantined: {
type: 'boolean',
title: 'Quarantined',
default: false
}
},
type: 'object',
required: ['name'],
title: 'FlowSummary'
} as const;
export const FlowsPublicSchema = {
properties: {
data: {
items: {
'$ref': '#/components/schemas/FlowSummary'
},
type: 'array',
title: 'Data'
},
count: {
type: 'integer',
title: 'Count'
}
},
type: 'object',
required: ['data', 'count'],
title: 'FlowsPublic'
} as const;
export const HTTPValidationErrorSchema = {
properties: {
detail: {
items: {
'$ref': '#/components/schemas/ValidationError'
},
type: 'array',
title: 'Detail'
}
},
type: 'object',
title: 'HTTPValidationError'
} as const;
export const HistoryPointSchema = {
properties: {
ts: {
type: 'number',
title: 'Ts'
},
value: {
type: 'number',
title: 'Value'
}
},
type: 'object',
required: ['ts', 'value'],
title: 'HistoryPoint',
description: 'One numeric value a message carried, and when.'
} as const;
export const LibraryNodeSchema = {
properties: {
name: {
type: 'string',
title: 'Name'
},
used_by: {
items: {
type: 'string'
},
type: 'array',
title: 'Used By'
}
},
type: 'object',
required: ['name'],
title: 'LibraryNode',
description: 'A node source shared across flows, and who is using it.'
} as const;
export const MessageSchema = {
properties: {
message: {
type: 'string',
title: 'Message'
}
},
type: 'object',
required: ['message'],
title: 'Message'
} as const;
export const MessageHistorySchema = {
properties: {
message: {
type: 'string',
title: 'Message'
},
numeric: {
type: 'boolean',
title: 'Numeric',
default: false
},
points: {
items: {
'$ref': '#/components/schemas/HistoryPoint'
},
type: 'array',
title: 'Points'
}
},
type: 'object',
required: ['message'],
title: 'MessageHistory',
description: `A message's recent numeric values, oldest first.
Only numbers are recorded, so \`\`numeric\`\` tells the panel whether an empty
series means "nothing plottable here" or "nothing has arrived yet".`
} as const;
export const MessageSpecSchema = {
properties: {
name: {
type: 'string',
title: 'Name',
default: ''
},
port: {
type: 'string',
title: 'Port',
default: ''
},
dtype: {
'$ref': '#/components/schemas/DType',
default: 'float'
},
interval: {
type: 'number',
minimum: 0,
title: 'Interval',
default: 0
}
},
type: 'object',
title: 'MessageSpec',
description: `A single port of a node, and the message it is bound to.
:param name: The message this port binds to. Bare names are qualified with
the flow name at load time; empty means the port is unbound.
:param port: The identifier the node function sees. Defaults to the last
segment of \`\`name\`\`, so unqualified flows read naturally.
:param dtype: Payload type, validated on every message that passes through.
:param interval: Deliver at most every this many seconds; 0 is every time.
On an output it holds back publishing, on an input it holds back waking
the node. The value is never lost — state keeps the latest — only the
delivery is skipped.`
} as const;
export const MessageValueSchema = {
properties: {
value: {
title: 'Value'
},
ts: {
anyOf: [
{
type: 'number'
},
{
type: 'null'
}
],
title: 'Ts'
}
},
type: 'object',
title: 'MessageValue',
description: 'The last payload seen on a message.'
} as const;
export const NewPasswordSchema = {
properties: {
token: {
type: 'string',
title: 'Token'
},
new_password: {
type: 'string',
maxLength: 128,
minLength: 8,
title: 'New Password'
}
},
type: 'object',
required: ['token', 'new_password'],
title: 'NewPassword'
} as const;
export const NodeDef_InputSchema = {
properties: {
id: {
type: 'string',
title: 'Id'
},
type: {
type: 'string',
title: 'Type',
default: 'python'
},
title: {
type: 'string',
title: 'Title',
default: ''
},
position: {
'$ref': '#/components/schemas/Position',
default: {
x: 0,
y: 0
}
},
params: {
additionalProperties: true,
type: 'object',
title: 'Params'
},
requires: {
items: {
'$ref': '#/components/schemas/MessageSpec'
},
type: 'array',
title: 'Requires'
},
provides: {
items: {
'$ref': '#/components/schemas/MessageSpec'
},
type: 'array',
title: 'Provides'
},
source_ref: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Source Ref'
}
},
type: 'object',
required: ['id'],
title: 'NodeDef',
description: 'A node as stored: identity, placement, configuration and ports.'
} as const;
export const NodeDef_OutputSchema = {
properties: {
id: {
type: 'string',
title: 'Id'
},
type: {
type: 'string',
title: 'Type',
default: 'python'
},
title: {
type: 'string',
title: 'Title',
default: ''
},
position: {
'$ref': '#/components/schemas/Position',
default: {
x: 0,
y: 0
}
},
params: {
additionalProperties: true,
type: 'object',
title: 'Params'
},
requires: {
items: {
'$ref': '#/components/schemas/MessageSpec'
},
type: 'array',
title: 'Requires'
},
provides: {
items: {
'$ref': '#/components/schemas/MessageSpec'
},
type: 'array',
title: 'Provides'
},
source_ref: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Source Ref'
}
},
type: 'object',
required: ['id'],
title: 'NodeDef',
description: 'A node as stored: identity, placement, configuration and ports.'
} as const;
export const NodeSourceSchema = {
properties: {
code: {
type: 'string',
title: 'Code'
}
},
type: 'object',
required: ['code'],
title: 'NodeSource',
description: 'The Python source of a node.'
} as const;
export const NodeStatusPublicSchema = {
properties: {
id: {
type: 'string',
title: 'Id'
},
status: {
type: 'string',
title: 'Status',
default: 'active'
},
error: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Error'
},
health: {
type: 'string',
enum: ['ok', 'degraded', 'down'],
title: 'Health',
default: 'ok'
},
health_detail: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Health Detail'
}
},
type: 'object',
required: ['id'],
title: 'NodeStatusPublic',
description: 'Whether a node loaded, and how its connection is doing.'
} as const;
export const NodeTypeInfoSchema = {
properties: {
type: {
type: 'string',
title: 'Type'
},
title: {
type: 'string',
title: 'Title'
},
description: {
type: 'string',
title: 'Description'
},
params_schema: {
additionalProperties: true,
type: 'object',
title: 'Params Schema'
},
has_source: {
type: 'boolean',
title: 'Has Source',
default: false
},
plugin: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Plugin'
}
},
type: 'object',
required: ['type', 'title', 'description'],
title: 'NodeTypeInfo',
description: 'A node type the editor can offer, with its parameter schema.'
} as const;
export const OAuthAuthorizeInfoSchema = {
properties: {
client_name: {
type: 'string',
title: 'Client Name'
},
redirect_uri: {
type: 'string',
title: 'Redirect Uri'
},
scope: {
type: 'string',
title: 'Scope'
}
},
type: 'object',
required: ['client_name', 'redirect_uri', 'scope'],
title: 'OAuthAuthorizeInfo',
description: 'What the consent page shows, all of it validated server-side.'
} as const;
export const OAuthAuthorizeRequestSchema = {
properties: {
client_id: {
type: 'string',
title: 'Client Id'
},
redirect_uri: {
type: 'string',
title: 'Redirect Uri'
},
code_challenge: {
type: 'string',
title: 'Code Challenge'
},
code_challenge_method: {
type: 'string',
title: 'Code Challenge Method',
default: 'S256'
},
state: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'State'
},
resource: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Resource'
},
scope: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Scope'
}
},
type: 'object',
required: ['client_id', 'redirect_uri', 'code_challenge'],
title: 'OAuthAuthorizeRequest'
} as const;
export const OAuthAuthorizeResponseSchema = {
properties: {
redirect_url: {
type: 'string',
title: 'Redirect Url'
}
},
type: 'object',
required: ['redirect_url'],
title: 'OAuthAuthorizeResponse'
} as const;
export const OAuthClientRegisterSchema = {
properties: {
client_name: {
type: 'string',
maxLength: 128,
title: 'Client Name',
default: 'MCP client'
},
redirect_uris: {
items: {
type: 'string'
},
type: 'array',
title: 'Redirect Uris'
},
grant_types: {
anyOf: [
{
items: {
type: 'string'
},
type: 'array'
},
{
type: 'null'
}
],
title: 'Grant Types'
},
response_types: {
anyOf: [
{
items: {
type: 'string'
},
type: 'array'
},
{
type: 'null'
}
],
title: 'Response Types'
},
token_endpoint_auth_method: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Token Endpoint Auth Method'
}
},
type: 'object',
required: ['redirect_uris'],
title: 'OAuthClientRegister',
description: 'RFC 7591 dynamic client registration request.'
} as const;
export const PositionSchema = {
properties: {
x: {
type: 'number',
title: 'X',
default: 0
},
y: {
type: 'number',
title: 'Y',
default: 0
}
},
type: 'object',
title: 'Position',
description: 'Where a node sits on the canvas.'
} as const;
export const PrivateUserCreateSchema = {
properties: {
email: {
type: 'string',
title: 'Email'
},
password: {
type: 'string',
title: 'Password'
},
full_name: {
type: 'string',
title: 'Full Name'
},
is_verified: {
type: 'boolean',
title: 'Is Verified',
default: false
}
},
type: 'object',
required: ['email', 'password', 'full_name'],
title: 'PrivateUserCreate'
} as const;
export const PublishRequestSchema = {
properties: {
version: {
type: 'integer',
title: 'Version'
}
},
type: 'object',
required: ['version'],
title: 'PublishRequest'
} as const;
export const RenameRequestSchema = {
properties: {
new_name: {
type: 'string',
title: 'New Name'
}
},
type: 'object',
required: ['new_name'],
title: 'RenameRequest'
} as const;
export const RunRequestSchema = {
properties: {
inputs: {
additionalProperties: true,
type: 'object',
title: 'Inputs',
default: {}
}
},
type: 'object',
title: 'RunRequest'
} as const;
export const SecretNamesSchema = {
properties: {
data: {
items: {
type: 'string'
},
type: 'array',
title: 'Data'
},
count: {
type: 'integer',
title: 'Count'
}
},
type: 'object',
required: ['data', 'count'],
title: 'SecretNames'
} as const;
export const SecretValueSchema = {
properties: {
value: {
type: 'string',
title: 'Value'
}
},
type: 'object',
required: ['value'],
title: 'SecretValue'
} as const;
export const ShareRequestSchema = {
properties: {
lib_name: {
type: 'string',
title: 'Lib Name'
}
},
type: 'object',
required: ['lib_name'],
title: 'ShareRequest'
} as const;
export const TokenSchema = {
properties: {
access_token: {
type: 'string',
title: 'Access Token'
},
token_type: {
type: 'string',
title: 'Token Type',
default: 'bearer'
}
},
type: 'object',
required: ['access_token'],
title: 'Token'
} as const;
export const TriggerRequestSchema = {
properties: {
values: {
additionalProperties: true,
type: 'object',
title: 'Values',
default: {}
}
},
type: 'object',
title: 'TriggerRequest'
} as const;
export const UpdatePasswordSchema = {
properties: {
current_password: {
type: 'string',
maxLength: 128,
minLength: 8,
title: 'Current Password'
},
new_password: {
type: 'string',
maxLength: 128,
minLength: 8,
title: 'New Password'
}
},
type: 'object',
required: ['current_password', 'new_password'],
title: 'UpdatePassword'
} as const;
export const UserCreateSchema = {
properties: {
email: {
type: 'string',
maxLength: 255,
format: 'email',
title: 'Email'
},
is_active: {
type: 'boolean',
title: 'Is Active',
default: true
},
is_superuser: {
type: 'boolean',
title: 'Is Superuser',
default: false
},
full_name: {
anyOf: [
{
type: 'string',
maxLength: 255
},
{
type: 'null'
}
],
title: 'Full Name'
},
password: {
type: 'string',
maxLength: 128,
minLength: 8,
title: 'Password'
}
},
type: 'object',
required: ['email', 'password'],
title: 'UserCreate'
} as const;
export const UserPublicSchema = {
properties: {
email: {
type: 'string',
maxLength: 255,
format: 'email',
title: 'Email'
},
is_active: {
type: 'boolean',
title: 'Is Active',
default: true
},
is_superuser: {
type: 'boolean',
title: 'Is Superuser',
default: false
},
full_name: {
anyOf: [
{
type: 'string',
maxLength: 255
},
{
type: 'null'
}
],
title: 'Full Name'
},
id: {
type: 'string',
format: 'uuid',
title: 'Id'
},
created_at: {
anyOf: [
{
type: 'string',
format: 'date-time'
},
{
type: 'null'
}
],
title: 'Created At'
}
},
type: 'object',
required: ['email', 'id'],
title: 'UserPublic'
} as const;
export const UserRegisterSchema = {
properties: {
email: {
type: 'string',
maxLength: 255,
format: 'email',
title: 'Email'
},
password: {
type: 'string',
maxLength: 128,
minLength: 8,
title: 'Password'
},
full_name: {
anyOf: [
{
type: 'string',
maxLength: 255
},
{
type: 'null'
}
],
title: 'Full Name'
}
},
type: 'object',
required: ['email', 'password'],
title: 'UserRegister'
} as const;
export const UserUpdateSchema = {
properties: {
email: {
anyOf: [
{
type: 'string',
maxLength: 255,
format: 'email'
},
{
type: 'null'
}
],
title: 'Email'
},
is_active: {
type: 'boolean',
title: 'Is Active',
default: true
},
is_superuser: {
type: 'boolean',
title: 'Is Superuser',
default: false
},
full_name: {
anyOf: [
{
type: 'string',
maxLength: 255
},
{
type: 'null'
}
],
title: 'Full Name'
},
password: {
anyOf: [
{
type: 'string',
maxLength: 128,
minLength: 8
},
{
type: 'null'
}
],
title: 'Password'
}
},
type: 'object',
title: 'UserUpdate'
} as const;
export const UserUpdateMeSchema = {
properties: {
full_name: {
anyOf: [
{
type: 'string',
maxLength: 255
},
{
type: 'null'
}
],
title: 'Full Name'
},
email: {
anyOf: [
{
type: 'string',
maxLength: 255,
format: 'email'
},
{
type: 'null'
}
],
title: 'Email'
}
},
type: 'object',
title: 'UserUpdateMe'
} as const;
export const UsersPublicSchema = {
properties: {
data: {
items: {
'$ref': '#/components/schemas/UserPublic'
},
type: 'array',
title: 'Data'
},
count: {
type: 'integer',
title: 'Count'
}
},
type: 'object',
required: ['data', 'count'],
title: 'UsersPublic'
} as const;
export const ValidationErrorSchema = {
properties: {
loc: {
items: {
anyOf: [
{
type: 'string'
},
{
type: 'integer'
}
]
},
type: 'array',
title: 'Location'
},
msg: {
type: 'string',
title: 'Message'
},
type: {
type: 'string',
title: 'Error Type'
}
},
type: 'object',
required: ['loc', 'msg', 'type'],
title: 'ValidationError'
} as const;
export const ValidationIssueSchema = {
properties: {
code: {
type: 'string',
enum: ['cycle', 'unconnected_input', 'missing_initial_value', 'node_error', 'unauthenticated_hook'],
title: 'Code'
},
message: {
type: 'string',
title: 'Message'
},
flow: {
type: 'string',
title: 'Flow',
default: ''
},
nodes: {
items: {
type: 'string'
},
type: 'array',
title: 'Nodes',
default: []
},
node: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Node'
},
port: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Port'
},
message_name: {
anyOf: [
{
type: 'string'
},
{
type: 'null'
}
],
title: 'Message Name'
}
},
type: 'object',
required: ['code', 'message'],
title: 'ValidationIssue',
description: 'A problem that keeps a flow from running correctly.'
} as const;
export const ValidationResultSchema = {
properties: {
issues: {
items: {
'$ref': '#/components/schemas/ValidationIssue'
},
type: 'array',
title: 'Issues',
default: []
}
},
type: 'object',
title: 'ValidationResult'
} as const;