feat(runtime): track node lifecycle and QUIC link state

This commit is contained in:
justme committed 2026-10-10 14:16:57 +08:00
1 parent 238046d959
commit 97ab3cc740
37 files changed
+864 -35

No files matched your search

+97
View File
@@ -1093,6 +1093,23 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/admin/links/{probe_id}/{agent_id}/retry": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Enable and immediately retry the Probe-to-Agent connection */
post: operations["links_retry"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/healthz": {
parameters: {
query?: never;
@@ -1314,6 +1331,7 @@ export interface components {
heartbeat: null | components["schemas"]["HeartbeatDto"];
/** Format: int32 */
endpoint_changes: number | string;
runtime_status: components["schemas"]["NodeRuntimeStatus"];
/** Format: date-time */
created_at: unknown;
/** Format: date-time */
@@ -1705,11 +1723,28 @@ export interface components {
linked: boolean;
override: null | boolean;
connected: boolean;
probe_runtime_status: components["schemas"]["NodeRuntimeStatus"];
agent_runtime_status: components["schemas"]["NodeRuntimeStatus"];
/** @default connecting */
connection_state: string;
connection_reason?: null | string;
last_error?: null | string;
/**
* Format: int32
* @default 0
*/
retry_attempt: number | string;
/** Format: int64 */
retry_in_ms?: null | number | string;
};
LinkMatrixDto: {
auto_link: boolean;
items: components["schemas"]["LinkDto"][];
};
LinkRetryDto: {
queued: boolean;
link: components["schemas"]["LinkDto"];
};
LocalLimitsDto: {
/** Format: double */
max_total_mbps: number | string;
@@ -1795,6 +1830,8 @@ export interface components {
passkey: null | string;
account: null | string;
};
/** @enum {unknown} */
NodeRuntimeStatus: "initializing" | "running" | "probe_paused" | "maintenance" | "stopping" | "offline" | "updating";
NodeUpdateDto: {
state: string;
current_digest: null | string;
@@ -2009,6 +2046,7 @@ export interface components {
revoked: boolean;
online: boolean;
connections: components["schemas"]["ProbeConnectionDto"][];
runtime_status: components["schemas"]["NodeRuntimeStatus"];
ipv6?: null | components["schemas"]["Ipv6DiagnosticDto"];
added_by?: null | string;
};
@@ -2072,6 +2110,15 @@ export interface components {
path_mtu: null | number | string;
/** Format: date-time */
at: unknown;
/** @default connecting */
state: string;
/**
* Format: int32
* @default 0
*/
retry_attempt: number | string;
/** Format: int64 */
retry_in_ms?: null | number | string;
};
RawChunkMetaDto: {
chunk_id: string;
@@ -6128,6 +6175,56 @@ export interface operations {
};
};
};
links_retry: {
parameters: {
query?: never;
header?: never;
path: {
probe_id: string;
agent_id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["LinkRetryDto"];
};
};
/** @description Unauthorized */
401: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Forbidden */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
};
};
health_get: {
parameters: {
query?: never;
+2
View File
@@ -7,6 +7,7 @@ type NarrowValue<V> = unknown extends V ? string : number extends V ? Exclude<V,
type Narrow<T> = { [K in keyof T]: NarrowValue<T[K]> }
export type AgentDto = Narrow<S['AgentDto']>
export type NodeRuntimeStatus = S['NodeRuntimeStatus']
export type AgentIpv6Dto = Narrow<S['AgentIpv6Dto']>
export type ConnectedProbeDto = Narrow<S['ConnectedProbeDto']>
export type ProbeDto = Narrow<S['ProbeDto']>
@@ -24,6 +25,7 @@ export type ReleaseDto = Narrow<S['ReleaseDto']>
export type ReleaseKeysDto = Narrow<S['ReleaseKeysDto']>
export type ReleaseKeyDto = Narrow<S['ReleaseKeyDto']>
export type LinkDto = Narrow<S['LinkDto']>
export type LinkRetryDto = Narrow<S['LinkRetryDto']>
export type LinkMatrixDto = Narrow<S['LinkMatrixDto']>
export type OverviewDto = Narrow<S['OverviewDto']>
export type OverviewLineDto = Narrow<S['OverviewLineDto']>