@camstack/core 0.1.34 → 0.1.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/auth-manager.d.ts +8 -0
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/builtins/local-auth/local-auth.addon.d.ts.map +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +26 -5
- package/dist/builtins/local-auth/local-auth.addon.js.map +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +26 -5
- package/dist/builtins/local-auth/local-auth.addon.mjs.map +1 -1
- package/dist/builtins/mesh-orchestrator/mesh-orchestrator.addon.d.ts.map +1 -1
- package/dist/builtins/mesh-orchestrator/mesh-orchestrator.addon.js +32 -1
- package/dist/builtins/mesh-orchestrator/mesh-orchestrator.addon.js.map +1 -1
- package/dist/builtins/mesh-orchestrator/mesh-orchestrator.addon.mjs +32 -1
- package/dist/builtins/mesh-orchestrator/mesh-orchestrator.addon.mjs.map +1 -1
- package/dist/builtins/platform-probe/hardware-encoder-probe.d.ts +14 -0
- package/dist/builtins/platform-probe/hardware-encoder-probe.d.ts.map +1 -0
- package/dist/builtins/platform-probe/index.d.ts +2 -0
- package/dist/builtins/platform-probe/index.d.ts.map +1 -1
- package/dist/builtins/platform-probe/index.js +198 -5
- package/dist/builtins/platform-probe/index.js.map +1 -1
- package/dist/builtins/platform-probe/index.mjs +198 -6
- package/dist/builtins/platform-probe/index.mjs.map +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts.map +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +16 -0
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js.map +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +16 -0
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs.map +1 -1
- package/dist/index.js +373 -181
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +373 -181
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -37,7 +37,7 @@ let node_vm = require("node:vm");
|
|
|
37
37
|
node_vm = require_chunk.__toESM(node_vm);
|
|
38
38
|
let node_os = require("node:os");
|
|
39
39
|
node_os = require_chunk.__toESM(node_os);
|
|
40
|
-
//#region ../types/dist/index-
|
|
40
|
+
//#region ../types/dist/index-YnRVILXN.mjs
|
|
41
41
|
var MODEL_FORMATS = [
|
|
42
42
|
"onnx",
|
|
43
43
|
"coreml",
|
|
@@ -898,7 +898,7 @@ var DecodedFrameSchema = zod.z.object({
|
|
|
898
898
|
]),
|
|
899
899
|
timestamp: zod.z.number()
|
|
900
900
|
});
|
|
901
|
-
var BrokerStatusSchema = zod.z.enum([
|
|
901
|
+
var BrokerStatusSchema$1 = zod.z.enum([
|
|
902
902
|
"idle",
|
|
903
903
|
"connecting",
|
|
904
904
|
"streaming",
|
|
@@ -906,7 +906,7 @@ var BrokerStatusSchema = zod.z.enum([
|
|
|
906
906
|
"stopped"
|
|
907
907
|
]);
|
|
908
908
|
var BrokerStatsSchema = zod.z.object({
|
|
909
|
-
status: BrokerStatusSchema,
|
|
909
|
+
status: BrokerStatusSchema$1,
|
|
910
910
|
inputFps: zod.z.number(),
|
|
911
911
|
decodeFps: zod.z.number(),
|
|
912
912
|
encodedSubscribers: zod.z.number(),
|
|
@@ -1006,6 +1006,37 @@ zod.z.enum([
|
|
|
1006
1006
|
"disabled",
|
|
1007
1007
|
"waking"
|
|
1008
1008
|
]);
|
|
1009
|
+
var VideoCodecTargetSchema = zod.z.enum([
|
|
1010
|
+
"H264",
|
|
1011
|
+
"H265",
|
|
1012
|
+
"auto"
|
|
1013
|
+
]);
|
|
1014
|
+
var AudioCodecTargetSchema = zod.z.enum([
|
|
1015
|
+
"AAC",
|
|
1016
|
+
"Opus",
|
|
1017
|
+
"PCMU",
|
|
1018
|
+
"none"
|
|
1019
|
+
]);
|
|
1020
|
+
var MaxResolutionSchema = zod.z.object({
|
|
1021
|
+
width: zod.z.number().int().positive(),
|
|
1022
|
+
height: zod.z.number().int().positive()
|
|
1023
|
+
});
|
|
1024
|
+
var GetStreamWithCodecInputSchema = zod.z.object({
|
|
1025
|
+
deviceId: zod.z.number().int().nonnegative(),
|
|
1026
|
+
videoCodec: VideoCodecTargetSchema,
|
|
1027
|
+
audioCodec: AudioCodecTargetSchema.optional(),
|
|
1028
|
+
maxResolution: MaxResolutionSchema.optional(),
|
|
1029
|
+
tag: zod.z.string().optional()
|
|
1030
|
+
});
|
|
1031
|
+
var RtpSourceSchema = zod.z.object({
|
|
1032
|
+
url: zod.z.string(),
|
|
1033
|
+
videoCodec: zod.z.enum(["H264", "H265"]),
|
|
1034
|
+
audioCodec: zod.z.string(),
|
|
1035
|
+
resolution: MaxResolutionSchema,
|
|
1036
|
+
transcoded: zod.z.boolean(),
|
|
1037
|
+
encoder: zod.z.string(),
|
|
1038
|
+
pipelineKey: zod.z.string()
|
|
1039
|
+
});
|
|
1009
1040
|
method(zod.z.object({
|
|
1010
1041
|
deviceId: zod.z.number().int().nonnegative(),
|
|
1011
1042
|
camStreamId: zod.z.string().min(1),
|
|
@@ -1015,28 +1046,8 @@ method(zod.z.object({
|
|
|
1015
1046
|
resolution: CamStreamResolutionSchema.optional(),
|
|
1016
1047
|
fps: zod.z.number().positive().optional(),
|
|
1017
1048
|
label: zod.z.string().optional(),
|
|
1018
|
-
/**
|
|
1019
|
-
* Device-level features that the broker / manager / snapshot
|
|
1020
|
-
* orchestrator consult to derive per-stream policy (e.g.
|
|
1021
|
-
* `BatteryOperated` → relax stall watchdog, default pre-buffer
|
|
1022
|
-
* to off, raise snapshot rate-limit). Single source of truth —
|
|
1023
|
-
* publishers no longer set per-stream flags like `allowStall`.
|
|
1024
|
-
*/
|
|
1025
1049
|
deviceFeatures: zod.z.array(zod.z.string()).optional(),
|
|
1026
|
-
/**
|
|
1027
|
-
* Whether this stream participates in the broker's automatic
|
|
1028
|
-
* profile assignment. Defaults `true`. Publishers set `false` for
|
|
1029
|
-
* streams that should be SELECTABLE but not auto-picked — e.g.
|
|
1030
|
-
* Reolink publishes native Baichuan as eligible and RTSP/RTMP
|
|
1031
|
-
* mirrors as ineligible (still assignable manually via
|
|
1032
|
-
* `assignProfile`).
|
|
1033
|
-
*/
|
|
1034
1050
|
autoEligible: zod.z.boolean().optional(),
|
|
1035
|
-
/**
|
|
1036
|
-
* Transport-specific opaque metadata stashed alongside the stream
|
|
1037
|
-
* record. `pull-rfc4571` publishers put the SDP here so the broker
|
|
1038
|
-
* reader can route packets without an in-band DESCRIBE phase.
|
|
1039
|
-
*/
|
|
1040
1051
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
1041
1052
|
}), zod.z.object({ success: zod.z.literal(true) }), {
|
|
1042
1053
|
kind: "mutation",
|
|
@@ -1080,7 +1091,16 @@ method(zod.z.object({
|
|
|
1080
1091
|
}), method(zod.z.object({
|
|
1081
1092
|
streamId: zod.z.string(),
|
|
1082
1093
|
format: StreamFormatSchema
|
|
1083
|
-
}), zod.z.object({ url: zod.z.string() })), method(
|
|
1094
|
+
}), zod.z.object({ url: zod.z.string() })), method(GetStreamWithCodecInputSchema, RtpSourceSchema, {
|
|
1095
|
+
kind: "mutation",
|
|
1096
|
+
auth: "admin"
|
|
1097
|
+
}), method(zod.z.object({ pipelineKey: zod.z.string() }), zod.z.object({
|
|
1098
|
+
released: zod.z.boolean(),
|
|
1099
|
+
refcount: zod.z.number().int().nonnegative()
|
|
1100
|
+
}), {
|
|
1101
|
+
kind: "mutation",
|
|
1102
|
+
auth: "admin"
|
|
1103
|
+
}), method(zod.z.object({ brokerId: zod.z.string() }), zod.z.custom()), method(zod.z.object({
|
|
1084
1104
|
brokerId: zod.z.string(),
|
|
1085
1105
|
seconds: zod.z.number().min(0).max(30)
|
|
1086
1106
|
}), zod.z.void(), {
|
|
@@ -2451,14 +2471,25 @@ method(LogEntrySchema, zod.z.void(), { kind: "mutation" }), method(zod.z.object(
|
|
|
2451
2471
|
limit: zod.z.number().optional(),
|
|
2452
2472
|
tags: zod.z.record(zod.z.string(), zod.z.string()).optional()
|
|
2453
2473
|
}), zod.z.array(LogEntrySchema).readonly());
|
|
2454
|
-
|
|
2474
|
+
var StaticDirOutputSchema = zod.z.object({ staticDir: zod.z.string() });
|
|
2475
|
+
var VersionOutputSchema = zod.z.object({ version: zod.z.string() });
|
|
2476
|
+
method(zod.z.void(), StaticDirOutputSchema), method(zod.z.void(), VersionOutputSchema);
|
|
2455
2477
|
var SsoBridgeClaimsSchema = zod.z.object({
|
|
2456
2478
|
userId: zod.z.string(),
|
|
2457
2479
|
username: zod.z.string(),
|
|
2458
2480
|
isAdmin: zod.z.boolean(),
|
|
2459
2481
|
provider: zod.z.string(),
|
|
2460
2482
|
email: zod.z.string().optional(),
|
|
2461
|
-
displayName: zod.z.string().optional()
|
|
2483
|
+
displayName: zod.z.string().optional(),
|
|
2484
|
+
/**
|
|
2485
|
+
* Public HTTPS URL of the hub that issued this token. Used by
|
|
2486
|
+
* cloud-mode OAuth proxies (Alexa Smart Home Lambda, future Google
|
|
2487
|
+
* Home Lambda) to route a request back to the originating hub
|
|
2488
|
+
* without holding routing state of their own. The Lambda decodes the
|
|
2489
|
+
* JWT WITHOUT verifying the signature — the hub re-verifies on every
|
|
2490
|
+
* inbound call so trust still rests with the signing hub.
|
|
2491
|
+
*/
|
|
2492
|
+
hubUrl: zod.z.string().optional()
|
|
2462
2493
|
});
|
|
2463
2494
|
method(zod.z.object({
|
|
2464
2495
|
claims: SsoBridgeClaimsSchema,
|
|
@@ -2510,7 +2541,7 @@ method(zod.z.object({
|
|
|
2510
2541
|
auth: "admin",
|
|
2511
2542
|
access: "delete"
|
|
2512
2543
|
});
|
|
2513
|
-
var EmailAddressSchema = zod.z.
|
|
2544
|
+
var EmailAddressSchema = zod.z.email();
|
|
2514
2545
|
var SendEmailInputSchema = zod.z.object({
|
|
2515
2546
|
to: zod.z.union([EmailAddressSchema, zod.z.array(EmailAddressSchema).min(1)]),
|
|
2516
2547
|
cc: zod.z.array(EmailAddressSchema).optional(),
|
|
@@ -2552,133 +2583,94 @@ method(SendEmailInputSchema, SendEmailResultSchema, {
|
|
|
2552
2583
|
auth: "admin",
|
|
2553
2584
|
access: "view"
|
|
2554
2585
|
}), method(zod.z.void(), SmtpStatusSchema, { auth: "admin" });
|
|
2555
|
-
var
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2586
|
+
var BrokerKindSchema = zod.z.enum(["external", "embedded"]);
|
|
2587
|
+
var BrokerStatusSchema = zod.z.enum([
|
|
2588
|
+
"connected",
|
|
2589
|
+
"disconnected",
|
|
2590
|
+
"auth-failed",
|
|
2591
|
+
"unreachable",
|
|
2592
|
+
"tls-error"
|
|
2559
2593
|
]);
|
|
2560
|
-
var
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
/**
|
|
2569
|
-
|
|
2570
|
-
|
|
2594
|
+
var BrokerInfoSchema = zod.z.object({
|
|
2595
|
+
id: zod.z.string(),
|
|
2596
|
+
name: zod.z.string(),
|
|
2597
|
+
url: zod.z.string(),
|
|
2598
|
+
kind: BrokerKindSchema,
|
|
2599
|
+
status: BrokerStatusSchema,
|
|
2600
|
+
latencyMs: zod.z.number().nullable(),
|
|
2601
|
+
error: zod.z.string().optional(),
|
|
2602
|
+
/** Embedded brokers only: number of MQTT clients currently connected. */
|
|
2603
|
+
connectedClients: zod.z.number().int().nonnegative().optional(),
|
|
2604
|
+
/** Epoch ms of the last live probe (external) or aedes snapshot (embedded). */
|
|
2605
|
+
lastCheckedAt: zod.z.number().optional()
|
|
2606
|
+
});
|
|
2607
|
+
var BrokerConnectionDetailsSchema = zod.z.object({
|
|
2608
|
+
url: zod.z.string(),
|
|
2609
|
+
username: zod.z.string().optional(),
|
|
2610
|
+
password: zod.z.string().optional(),
|
|
2571
2611
|
/**
|
|
2572
|
-
*
|
|
2573
|
-
*
|
|
2574
|
-
*
|
|
2612
|
+
* Suggested prefix for `clientId`. Each consumer should suffix this
|
|
2613
|
+
* with its own discriminator (addon id, instance id) so reconnects
|
|
2614
|
+
* don't kick each other off (MQTT spec: clientId must be unique per
|
|
2615
|
+
* broker).
|
|
2575
2616
|
*/
|
|
2576
|
-
|
|
2617
|
+
clientIdPrefix: zod.z.string().optional()
|
|
2577
2618
|
});
|
|
2578
|
-
var
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
/** Subscription id from `subscribe`. */
|
|
2585
|
-
subscriptionId: zod.z.string() });
|
|
2586
|
-
var MqttStatusSchema = zod.z.object({
|
|
2587
|
-
/** True iff the addon has an active connection to the broker. */
|
|
2588
|
-
connected: zod.z.boolean(),
|
|
2589
|
-
/** Operator-visible host string (e.g. `mqtt://broker.example:1883`). */
|
|
2590
|
-
brokerUrl: zod.z.string(),
|
|
2591
|
-
/** Active subscription count (per-owner, NOT broker-side topic count). */
|
|
2592
|
-
subscriptionCount: zod.z.number().int(),
|
|
2593
|
-
/** Last error reported by the broker. */
|
|
2594
|
-
error: zod.z.string().optional(),
|
|
2595
|
-
/** Last successful connection timestamp (unix ms). */
|
|
2596
|
-
connectedAt: zod.z.number().optional()
|
|
2597
|
-
});
|
|
2598
|
-
var SubscriptionInfoSchema = zod.z.object({
|
|
2599
|
-
subscriptionId: zod.z.string(),
|
|
2600
|
-
topic: zod.z.string(),
|
|
2601
|
-
qos: QosSchema,
|
|
2602
|
-
owner: zod.z.string(),
|
|
2603
|
-
/** When this individual subscription was created. */
|
|
2604
|
-
createdAt: zod.z.number()
|
|
2619
|
+
var AddBrokerInputSchema = zod.z.object({
|
|
2620
|
+
name: zod.z.string().min(1),
|
|
2621
|
+
url: zod.z.string().regex(/^(mqtt|mqtts|ws|wss):\/\//, "URL must start with mqtt(s):// or ws(s)://"),
|
|
2622
|
+
username: zod.z.string().optional(),
|
|
2623
|
+
password: zod.z.string().optional(),
|
|
2624
|
+
clientIdPrefix: zod.z.string().optional()
|
|
2605
2625
|
});
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
})
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
/** HA service (e.g. `turn_on`, `toggle`). */
|
|
2623
|
-
service: zod.z.string(),
|
|
2624
|
-
/** Service-specific data payload (e.g. `{entity_id: 'light.kitchen', brightness: 200}`). */
|
|
2625
|
-
serviceData: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
2626
|
-
/** Optional target spec (entity_id / device_id / area_id). */
|
|
2627
|
-
target: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
2628
|
-
});
|
|
2629
|
-
var HaStateSchema = zod.z.object({
|
|
2630
|
-
entity_id: zod.z.string(),
|
|
2631
|
-
state: zod.z.string(),
|
|
2632
|
-
attributes: zod.z.record(zod.z.string(), zod.z.unknown()).default({}),
|
|
2633
|
-
last_changed: zod.z.string().optional(),
|
|
2634
|
-
last_updated: zod.z.string().optional()
|
|
2626
|
+
var AddBrokerResultSchema = zod.z.object({ id: zod.z.string() });
|
|
2627
|
+
var IdInputSchema = zod.z.object({ id: zod.z.string() });
|
|
2628
|
+
var TestResultSchema = zod.z.discriminatedUnion("ok", [zod.z.object({
|
|
2629
|
+
ok: zod.z.literal(true),
|
|
2630
|
+
latencyMs: zod.z.number()
|
|
2631
|
+
}), zod.z.object({
|
|
2632
|
+
ok: zod.z.literal(false),
|
|
2633
|
+
error: zod.z.string()
|
|
2634
|
+
})]);
|
|
2635
|
+
var StartEmbeddedInputSchema = zod.z.object({
|
|
2636
|
+
port: zod.z.number().int().min(1).max(65535).default(1883),
|
|
2637
|
+
/** Allow anonymous connect (no username/password). Default: false. */
|
|
2638
|
+
allowAnonymous: zod.z.boolean().default(false),
|
|
2639
|
+
/** Optional shared username/password for clients. */
|
|
2640
|
+
username: zod.z.string().optional(),
|
|
2641
|
+
password: zod.z.string().optional()
|
|
2635
2642
|
});
|
|
2636
|
-
var
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
/** Active per-owner subscription count. */
|
|
2640
|
-
subscriptionCount: zod.z.number().int(),
|
|
2641
|
-
/** Last error reported by the WebSocket. */
|
|
2642
|
-
error: zod.z.string().optional(),
|
|
2643
|
-
/** HA version reported during the auth handshake, when reachable. */
|
|
2644
|
-
haVersion: zod.z.string().optional(),
|
|
2645
|
-
connectedAt: zod.z.number().optional()
|
|
2643
|
+
var StartEmbeddedResultSchema = zod.z.object({
|
|
2644
|
+
id: zod.z.string(),
|
|
2645
|
+
url: zod.z.string()
|
|
2646
2646
|
});
|
|
2647
|
-
var
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
* `service_called`, etc.). Empty string = all events (firehose —
|
|
2651
|
-
* only for debugging).
|
|
2652
|
-
*/
|
|
2653
|
-
eventType: zod.z.string().optional(),
|
|
2654
|
-
/** Caller-supplied tag for listSubscriptions debugging. */
|
|
2655
|
-
owner: zod.z.string().optional()
|
|
2647
|
+
var StatusSchema = zod.z.object({
|
|
2648
|
+
brokerCount: zod.z.number(),
|
|
2649
|
+
embeddedRunning: zod.z.boolean()
|
|
2656
2650
|
});
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
createdAt: zod.z.number()
|
|
2651
|
+
method(zod.z.void(), zod.z.array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, zod.z.void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, zod.z.void(), { kind: "mutation" }), method(zod.z.void(), StatusSchema);
|
|
2652
|
+
var LinkStateSchema = zod.z.enum([
|
|
2653
|
+
"unlinked",
|
|
2654
|
+
"linked",
|
|
2655
|
+
"error"
|
|
2656
|
+
]);
|
|
2657
|
+
var DeviceExportStatusSchema = zod.z.object({
|
|
2658
|
+
linkState: LinkStateSchema,
|
|
2659
|
+
exposedDeviceCount: zod.z.number(),
|
|
2660
|
+
error: zod.z.string().optional()
|
|
2668
2661
|
});
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
}), method(zod.z.void(), zod.z.array(HaStateSchema).readonly(), { auth: "admin" }), method(zod.z.object({ entityId: zod.z.string() }), HaStateSchema.nullable(), { auth: "admin" }), method(zod.z.void(), zod.z.array(HaSubscriptionInfoSchema).readonly(), { auth: "admin" }), method(zod.z.void(), HaStatusSchema, { auth: "admin" });
|
|
2662
|
+
var DeviceKindSchema = zod.z.string();
|
|
2663
|
+
var ExposedDeviceSchema = zod.z.object({
|
|
2664
|
+
deviceId: zod.z.string(),
|
|
2665
|
+
exposedAs: zod.z.string().optional(),
|
|
2666
|
+
capabilities: zod.z.array(zod.z.string()).optional()
|
|
2667
|
+
});
|
|
2668
|
+
var ExposeInputSchema = zod.z.object({
|
|
2669
|
+
deviceId: zod.z.string(),
|
|
2670
|
+
capabilities: zod.z.array(zod.z.string()).optional()
|
|
2671
|
+
});
|
|
2672
|
+
var UnexposeInputSchema = zod.z.object({ deviceId: zod.z.string() });
|
|
2673
|
+
method(zod.z.void(), DeviceExportStatusSchema), method(zod.z.void(), zod.z.array(DeviceKindSchema)), method(zod.z.void(), zod.z.array(ExposedDeviceSchema)), method(ExposeInputSchema, zod.z.void(), { kind: "mutation" }), method(UnexposeInputSchema, zod.z.void(), { kind: "mutation" });
|
|
2682
2674
|
var AddonPageDeclarationSchema$1 = zod.z.object({
|
|
2683
2675
|
id: zod.z.string(),
|
|
2684
2676
|
label: zod.z.string(),
|
|
@@ -2934,6 +2926,14 @@ DeviceType.Camera, method(zod.z.object({ deviceId: zod.z.number().int().nonnegat
|
|
|
2934
2926
|
}), zod.z.object({
|
|
2935
2927
|
sessionId: zod.z.string(),
|
|
2936
2928
|
sdpOffer: zod.z.string()
|
|
2929
|
+
}), { kind: "mutation" }), method(zod.z.object({
|
|
2930
|
+
deviceId: zod.z.number().int().nonnegative(),
|
|
2931
|
+
target: WebrtcStreamTargetSchema.optional(),
|
|
2932
|
+
sdpOffer: zod.z.string(),
|
|
2933
|
+
sessionId: zod.z.string().optional()
|
|
2934
|
+
}), zod.z.object({
|
|
2935
|
+
sessionId: zod.z.string(),
|
|
2936
|
+
sdpAnswer: zod.z.string()
|
|
2937
2937
|
}), { kind: "mutation" }), method(zod.z.object({
|
|
2938
2938
|
deviceId: zod.z.number().int().nonnegative(),
|
|
2939
2939
|
sessionId: zod.z.string(),
|
|
@@ -3272,12 +3272,12 @@ method(zod.z.void(), zod.z.array(AudioCodecInfoSchema).readonly()), method(zod.z
|
|
|
3272
3272
|
}), zod.z.array(AudioEncodedChunkSchema), { kind: "mutation" }), method(zod.z.void(), zod.z.array(SessionInventoryEntrySchema).readonly());
|
|
3273
3273
|
var EmbeddingResultSchema = zod.z.object({
|
|
3274
3274
|
embedding: zod.z.array(zod.z.number()),
|
|
3275
|
-
|
|
3275
|
+
inferenceMs: zod.z.number()
|
|
3276
3276
|
});
|
|
3277
3277
|
var EmbeddingInfoSchema = zod.z.object({
|
|
3278
3278
|
modelId: zod.z.string(),
|
|
3279
|
-
|
|
3280
|
-
|
|
3279
|
+
embeddingDim: zod.z.number(),
|
|
3280
|
+
ready: zod.z.boolean()
|
|
3281
3281
|
});
|
|
3282
3282
|
method(zod.z.object({
|
|
3283
3283
|
crop: zod.z.instanceof(Uint8Array),
|
|
@@ -3618,7 +3618,20 @@ var NetworkAccessStatusSchema = zod.z.object({
|
|
|
3618
3618
|
endpoint: NetworkEndpointSchema.nullable(),
|
|
3619
3619
|
error: zod.z.string().optional()
|
|
3620
3620
|
});
|
|
3621
|
-
|
|
3621
|
+
var NetworkEndpointEntrySchema = NetworkEndpointSchema.extend({
|
|
3622
|
+
/**
|
|
3623
|
+
* Stable id within the provider — typically `<mode>-<sourcePort>` so
|
|
3624
|
+
* the orchestrator can dedupe across `listEndpoints` polls.
|
|
3625
|
+
*/
|
|
3626
|
+
id: zod.z.string(),
|
|
3627
|
+
/** Operator-facing label (mirrors `MeshEndpoint.label`). */
|
|
3628
|
+
label: zod.z.string(),
|
|
3629
|
+
/** Optional provider-specific mode tag, used for icon/colour in admin UI. */
|
|
3630
|
+
mode: zod.z.string().optional(),
|
|
3631
|
+
/** Originating local port the ingress fronts (informational). */
|
|
3632
|
+
sourcePort: zod.z.number().optional()
|
|
3633
|
+
});
|
|
3634
|
+
method(zod.z.void(), NetworkEndpointSchema, { kind: "mutation" }), method(zod.z.void(), zod.z.void(), { kind: "mutation" }), method(zod.z.void(), NetworkEndpointSchema.nullable()), method(zod.z.void(), NetworkAccessStatusSchema), method(zod.z.void(), zod.z.array(NetworkEndpointEntrySchema).readonly());
|
|
3622
3635
|
var RemoteAccessEndpointSchema = zod.z.object({
|
|
3623
3636
|
url: zod.z.string(),
|
|
3624
3637
|
hostname: zod.z.string(),
|
|
@@ -3731,28 +3744,78 @@ method(zod.z.object({
|
|
|
3731
3744
|
success: zod.z.boolean(),
|
|
3732
3745
|
error: zod.z.string().optional()
|
|
3733
3746
|
}), { kind: "mutation" });
|
|
3747
|
+
var NotificationRuleConditionsSchema = zod.z.object({
|
|
3748
|
+
deviceIds: zod.z.array(zod.z.number()).readonly().optional(),
|
|
3749
|
+
classNames: zod.z.array(zod.z.string()).readonly().optional(),
|
|
3750
|
+
zoneIds: zod.z.array(zod.z.string()).readonly().optional(),
|
|
3751
|
+
minConfidence: zod.z.number().optional(),
|
|
3752
|
+
source: zod.z.enum([
|
|
3753
|
+
"pipeline",
|
|
3754
|
+
"onboard",
|
|
3755
|
+
"any"
|
|
3756
|
+
]).optional(),
|
|
3757
|
+
schedule: zod.z.object({
|
|
3758
|
+
days: zod.z.array(zod.z.number()).readonly(),
|
|
3759
|
+
startHour: zod.z.number(),
|
|
3760
|
+
endHour: zod.z.number()
|
|
3761
|
+
}).optional(),
|
|
3762
|
+
cooldownSeconds: zod.z.number().optional(),
|
|
3763
|
+
minDwellSeconds: zod.z.number().optional()
|
|
3764
|
+
});
|
|
3765
|
+
var NotificationRuleTemplateSchema = zod.z.object({
|
|
3766
|
+
title: zod.z.string(),
|
|
3767
|
+
body: zod.z.string(),
|
|
3768
|
+
imageMode: zod.z.enum([
|
|
3769
|
+
"crop",
|
|
3770
|
+
"annotated",
|
|
3771
|
+
"full",
|
|
3772
|
+
"none"
|
|
3773
|
+
])
|
|
3774
|
+
});
|
|
3734
3775
|
var NotificationRuleSchema = zod.z.object({
|
|
3735
3776
|
id: zod.z.string(),
|
|
3736
3777
|
name: zod.z.string(),
|
|
3737
3778
|
enabled: zod.z.boolean(),
|
|
3738
|
-
|
|
3739
|
-
|
|
3779
|
+
eventTypes: zod.z.array(zod.z.string()).readonly(),
|
|
3780
|
+
conditions: NotificationRuleConditionsSchema,
|
|
3781
|
+
outputs: zod.z.array(zod.z.string()).readonly(),
|
|
3782
|
+
template: NotificationRuleTemplateSchema.optional(),
|
|
3783
|
+
priority: zod.z.enum([
|
|
3784
|
+
"low",
|
|
3785
|
+
"normal",
|
|
3786
|
+
"high",
|
|
3787
|
+
"critical"
|
|
3788
|
+
])
|
|
3789
|
+
});
|
|
3790
|
+
var NotificationTestResultSchema = zod.z.object({
|
|
3791
|
+
ruleId: zod.z.string(),
|
|
3792
|
+
eventId: zod.z.string(),
|
|
3793
|
+
timestamp: zod.z.number(),
|
|
3794
|
+
wouldFire: zod.z.boolean(),
|
|
3795
|
+
reason: zod.z.string().optional()
|
|
3740
3796
|
});
|
|
3741
3797
|
var NotificationHistoryEntrySchema = zod.z.object({
|
|
3742
3798
|
id: zod.z.string(),
|
|
3743
3799
|
ruleId: zod.z.string(),
|
|
3800
|
+
ruleName: zod.z.string(),
|
|
3801
|
+
eventId: zod.z.string(),
|
|
3744
3802
|
timestamp: zod.z.number(),
|
|
3745
|
-
|
|
3803
|
+
outputs: zod.z.array(zod.z.string()).readonly(),
|
|
3746
3804
|
success: zod.z.boolean(),
|
|
3747
|
-
error: zod.z.string().optional()
|
|
3805
|
+
error: zod.z.string().optional(),
|
|
3806
|
+
deviceId: zod.z.number().optional()
|
|
3748
3807
|
});
|
|
3749
|
-
|
|
3750
|
-
ruleId: zod.z.string(),
|
|
3751
|
-
lookbackMinutes: zod.z.number()
|
|
3752
|
-
}), zod.z.array(zod.z.record(zod.z.string(), zod.z.unknown())), { kind: "mutation" }), method(zod.z.object({
|
|
3808
|
+
var NotificationHistoryFilterSchema = zod.z.object({
|
|
3753
3809
|
ruleId: zod.z.string().optional(),
|
|
3810
|
+
deviceId: zod.z.number().optional(),
|
|
3811
|
+
from: zod.z.number().optional(),
|
|
3812
|
+
to: zod.z.number().optional(),
|
|
3754
3813
|
limit: zod.z.number().optional()
|
|
3755
|
-
})
|
|
3814
|
+
});
|
|
3815
|
+
method(zod.z.void(), zod.z.object({ rules: zod.z.array(NotificationRuleSchema).readonly() })), method(zod.z.object({ rule: NotificationRuleSchema }), zod.z.object({ success: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({ ruleId: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({
|
|
3816
|
+
ruleId: zod.z.string(),
|
|
3817
|
+
lookbackMinutes: zod.z.number()
|
|
3818
|
+
}), zod.z.object({ results: zod.z.array(NotificationTestResultSchema).readonly() }), { kind: "mutation" }), method(zod.z.object({ filter: NotificationHistoryFilterSchema.optional() }), zod.z.object({ entries: zod.z.array(NotificationHistoryEntrySchema).readonly() }));
|
|
3756
3819
|
var RecordingModeSchema = zod.z.enum([
|
|
3757
3820
|
"continuous",
|
|
3758
3821
|
"motion",
|
|
@@ -4440,6 +4503,22 @@ DeviceType.Camera, method(zod.z.object({ deviceId: zod.z.number() }), zod.z.obje
|
|
|
4440
4503
|
}), zod.z.void(), {
|
|
4441
4504
|
kind: "mutation",
|
|
4442
4505
|
auth: "admin"
|
|
4506
|
+
}), method(zod.z.object({ deviceId: zod.z.number() }), zod.z.object({ sessionId: zod.z.string() }), {
|
|
4507
|
+
kind: "mutation",
|
|
4508
|
+
auth: "admin"
|
|
4509
|
+
}), method(zod.z.object({
|
|
4510
|
+
deviceId: zod.z.number(),
|
|
4511
|
+
/** PCM frames as little-endian s16, mono. Base64-encoded so
|
|
4512
|
+
* the payload survives tRPC JSON serialization. */
|
|
4513
|
+
pcmBase64: zod.z.string(),
|
|
4514
|
+
/** Sequence number for ordering / dropping out-of-order frames. */
|
|
4515
|
+
sequenceNumber: zod.z.number().int()
|
|
4516
|
+
}), zod.z.object({ accepted: zod.z.boolean() }), {
|
|
4517
|
+
kind: "mutation",
|
|
4518
|
+
auth: "admin"
|
|
4519
|
+
}), method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
4520
|
+
kind: "mutation",
|
|
4521
|
+
auth: "admin"
|
|
4443
4522
|
}), zod.z.object({
|
|
4444
4523
|
deviceId: zod.z.number(),
|
|
4445
4524
|
status: IntercomStatusSchema
|
|
@@ -4491,6 +4570,40 @@ var HwAccelBackendInputSchema = zod.z.enum([
|
|
|
4491
4570
|
"none"
|
|
4492
4571
|
]).nullable().optional();
|
|
4493
4572
|
var HwAccelResolutionSchema = zod.z.object({ preferred: zod.z.array(zod.z.string()).readonly() });
|
|
4573
|
+
var HardwareEncoderIdSchema = zod.z.enum([
|
|
4574
|
+
"h264_videotoolbox",
|
|
4575
|
+
"hevc_videotoolbox",
|
|
4576
|
+
"h264_vaapi",
|
|
4577
|
+
"hevc_vaapi",
|
|
4578
|
+
"h264_nvenc",
|
|
4579
|
+
"hevc_nvenc",
|
|
4580
|
+
"h264_qsv",
|
|
4581
|
+
"hevc_qsv",
|
|
4582
|
+
"h264_amf",
|
|
4583
|
+
"hevc_amf",
|
|
4584
|
+
"libx264",
|
|
4585
|
+
"libx265"
|
|
4586
|
+
]);
|
|
4587
|
+
var HardwareEncoderProbeSchema = zod.z.object({
|
|
4588
|
+
encoder: HardwareEncoderIdSchema,
|
|
4589
|
+
codec: zod.z.enum(["H264", "H265"]),
|
|
4590
|
+
family: zod.z.enum([
|
|
4591
|
+
"videotoolbox",
|
|
4592
|
+
"vaapi",
|
|
4593
|
+
"nvenc",
|
|
4594
|
+
"qsv",
|
|
4595
|
+
"amf",
|
|
4596
|
+
"software"
|
|
4597
|
+
]),
|
|
4598
|
+
available: zod.z.boolean(),
|
|
4599
|
+
reason: zod.z.string().optional()
|
|
4600
|
+
});
|
|
4601
|
+
var HardwareEncodersSchema = zod.z.object({
|
|
4602
|
+
encoders: zod.z.array(HardwareEncoderProbeSchema).readonly(),
|
|
4603
|
+
defaultH264: HardwareEncoderIdSchema,
|
|
4604
|
+
defaultH265: HardwareEncoderIdSchema,
|
|
4605
|
+
probedAt: zod.z.number()
|
|
4606
|
+
});
|
|
4494
4607
|
var HardwarePlatformSchema = zod.z.enum([
|
|
4495
4608
|
"darwin",
|
|
4496
4609
|
"linux",
|
|
@@ -4553,7 +4666,10 @@ var ResolvedInferenceConfigSchema = zod.z.object({
|
|
|
4553
4666
|
method(zod.z.void(), PlatformCapabilitiesSchema), method(zod.z.void(), HardwareInfoSchema), method(zod.z.object({ requirements: zod.z.array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(zod.z.object({
|
|
4554
4667
|
prefer: HwAccelBackendInputSchema,
|
|
4555
4668
|
nodeId: zod.z.string().optional()
|
|
4556
|
-
}), HwAccelResolutionSchema)
|
|
4669
|
+
}), HwAccelResolutionSchema), method(zod.z.void(), HardwareEncodersSchema), method(zod.z.void(), HardwareEncodersSchema, {
|
|
4670
|
+
kind: "mutation",
|
|
4671
|
+
auth: "admin"
|
|
4672
|
+
});
|
|
4557
4673
|
var InterfaceKindEnum = zod.z.enum([
|
|
4558
4674
|
"lan",
|
|
4559
4675
|
"wifi",
|
|
@@ -4698,7 +4814,9 @@ var MeshPeerSchema = zod.z.object({
|
|
|
4698
4814
|
id: zod.z.string(),
|
|
4699
4815
|
/** Hostname / device name as shown in the mesh dashboard. */
|
|
4700
4816
|
hostname: zod.z.string(),
|
|
4701
|
-
/**
|
|
4817
|
+
/** MagicDNS / mesh DNS name (e.g. `peer-foo.tail-abc.ts.net`). Empty when the provider doesn't support DNS or peer-side resolution is disabled. */
|
|
4818
|
+
magicDns: zod.z.string(),
|
|
4819
|
+
/** Mesh IPv4 / IPv6 addresses combined. Multiple when dual-stacked. */
|
|
4702
4820
|
addresses: zod.z.array(zod.z.string()).readonly(),
|
|
4703
4821
|
/** Operating system reported by the peer (informational). */
|
|
4704
4822
|
os: zod.z.string().optional(),
|
|
@@ -4707,7 +4825,36 @@ var MeshPeerSchema = zod.z.object({
|
|
|
4707
4825
|
/** Last-seen timestamp (epoch ms). 0 when never seen. */
|
|
4708
4826
|
lastSeenMs: zod.z.number(),
|
|
4709
4827
|
/** True for the row representing the current host. */
|
|
4710
|
-
isSelf: zod.z.boolean()
|
|
4828
|
+
isSelf: zod.z.boolean(),
|
|
4829
|
+
/**
|
|
4830
|
+
* Connection mode to this peer:
|
|
4831
|
+
* - `direct`: NAT-traversed P2P (UDP punched)
|
|
4832
|
+
* - `relay`: traffic relayed through provider edge (Tailscale DERP)
|
|
4833
|
+
* - `idle`: peer reachable but no recent traffic / handshake
|
|
4834
|
+
*/
|
|
4835
|
+
connection: zod.z.enum([
|
|
4836
|
+
"direct",
|
|
4837
|
+
"relay",
|
|
4838
|
+
"idle"
|
|
4839
|
+
]),
|
|
4840
|
+
/** DERP region / relay node identifier when `connection: relay`. Null otherwise. */
|
|
4841
|
+
relay: zod.z.string().nullable(),
|
|
4842
|
+
/** Last successful handshake timestamp (epoch ms). 0 when never. */
|
|
4843
|
+
lastHandshakeMs: zod.z.number(),
|
|
4844
|
+
/** Bytes received from this peer since the daemon started. */
|
|
4845
|
+
rxBytes: zod.z.number(),
|
|
4846
|
+
/** Bytes transmitted to this peer since the daemon started. */
|
|
4847
|
+
txBytes: zod.z.number(),
|
|
4848
|
+
/** ACL tags this peer carries (e.g. `["tag:server"]`). Empty when human-owned. */
|
|
4849
|
+
tags: zod.z.array(zod.z.string()).readonly(),
|
|
4850
|
+
/** True when the peer advertises itself as an exit-node candidate. */
|
|
4851
|
+
exitNodeOption: zod.z.boolean(),
|
|
4852
|
+
/** Subnet routes the peer advertises (e.g. `["192.168.1.0/24"]`). */
|
|
4853
|
+
advertisedRoutes: zod.z.array(zod.z.string()).readonly(),
|
|
4854
|
+
/** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
|
|
4855
|
+
userLogin: zod.z.string().nullable(),
|
|
4856
|
+
/** Pre-auth key / machine-key expiry (epoch ms). Null when keys don't expire. */
|
|
4857
|
+
keyExpiry: zod.z.number().nullable()
|
|
4711
4858
|
});
|
|
4712
4859
|
var MeshStatusSchema = zod.z.object({
|
|
4713
4860
|
/** True when the host is joined and the daemon reports healthy. */
|
|
@@ -4721,22 +4868,37 @@ var MeshStatusSchema = zod.z.object({
|
|
|
4721
4868
|
/** Every endpoint this provider exposes for the current host. */
|
|
4722
4869
|
endpoints: zod.z.array(MeshEndpointSchema$1).readonly(),
|
|
4723
4870
|
/** Last error from the daemon, when not joined. */
|
|
4724
|
-
error: zod.z.string().optional()
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4728
|
-
*
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4871
|
+
error: zod.z.string().optional(),
|
|
4872
|
+
/**
|
|
4873
|
+
* Tenant / tailnet / network display name (Tailscale = tailnet
|
|
4874
|
+
* domain, Headscale = namespace, ZeroTier = network name). Empty
|
|
4875
|
+
* pre-join. Per-provider semantics, common slot.
|
|
4876
|
+
*/
|
|
4877
|
+
tenantName: zod.z.string(),
|
|
4878
|
+
/**
|
|
4879
|
+
* Mesh DNS suffix when the provider exposes peer-resolvable DNS
|
|
4880
|
+
* (Tailscale MagicDNS, Headscale MagicDNS, …). Empty when the
|
|
4881
|
+
* provider doesn't ship DNS (e.g. ZeroTier).
|
|
4882
|
+
*/
|
|
4883
|
+
magicDnsSuffix: zod.z.string(),
|
|
4884
|
+
/**
|
|
4885
|
+
* Authenticated user / account login bound to this host. Null when
|
|
4886
|
+
* the provider authenticates with a long-lived network token rather
|
|
4887
|
+
* than a user account (e.g. ZeroTier API token).
|
|
4888
|
+
*/
|
|
4889
|
+
userLogin: zod.z.string().nullable(),
|
|
4890
|
+
/**
|
|
4891
|
+
* Provider control-plane URL (Tailscale SaaS `https://login.tailscale.com`,
|
|
4892
|
+
* self-hosted Headscale, ZeroTier Central, …). Empty when not
|
|
4893
|
+
* applicable (rare).
|
|
4894
|
+
*/
|
|
4895
|
+
controlPlaneUrl: zod.z.string(),
|
|
4896
|
+
/**
|
|
4897
|
+
* Machine-key / node-key expiry (epoch ms). Null when the provider
|
|
4898
|
+
* doesn't rotate keys for the bound host. Operator-facing surface
|
|
4899
|
+
* for "your access expires on …" banners.
|
|
4900
|
+
*/
|
|
4901
|
+
keyExpiry: zod.z.number().nullable()
|
|
4740
4902
|
});
|
|
4741
4903
|
method(zod.z.void(), MeshStatusSchema), method(zod.z.object({
|
|
4742
4904
|
/** Provider-specific auth key. For Tailscale this is the
|
|
@@ -4744,7 +4906,11 @@ method(zod.z.void(), MeshStatusSchema), method(zod.z.object({
|
|
|
4744
4906
|
authKey: zod.z.string().min(8),
|
|
4745
4907
|
/** Optional hostname override the host should advertise. */
|
|
4746
4908
|
hostname: zod.z.string().optional()
|
|
4747
|
-
}), zod.z.object({ joined: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.
|
|
4909
|
+
}), zod.z.object({ joined: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({
|
|
4910
|
+
/** Optional hostname override the host should advertise once joined. */
|
|
4911
|
+
hostname: zod.z.string().optional() }), zod.z.object({
|
|
4912
|
+
/** Authentication URL the operator should open in a browser. */
|
|
4913
|
+
loginUrl: zod.z.string() }), { kind: "mutation" }), method(zod.z.void(), zod.z.object({ left: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.void(), zod.z.object({ loggedOut: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.void(), zod.z.object({ peers: zod.z.array(MeshPeerSchema).readonly() })), method(zod.z.object({
|
|
4748
4914
|
/** Optional auth key — when provided, probes the key validity
|
|
4749
4915
|
* against the provider's API. Omit when already joined to
|
|
4750
4916
|
* just ping the daemon. */
|
|
@@ -4783,13 +4949,26 @@ var MeshProviderInfoSchema = zod.z.object({
|
|
|
4783
4949
|
/** Active endpoints (mesh IP + MagicDNS + optional public Funnel). */
|
|
4784
4950
|
endpoints: zod.z.array(MeshEndpointSchema).readonly(),
|
|
4785
4951
|
/** Last error reported by the provider. */
|
|
4786
|
-
error: zod.z.string().optional()
|
|
4952
|
+
error: zod.z.string().optional(),
|
|
4953
|
+
/** Tenant / tailnet / network display name. Empty pre-join. */
|
|
4954
|
+
tenantName: zod.z.string(),
|
|
4955
|
+
/** Mesh DNS suffix (e.g. tailXXXX.ts.net). Empty when not configured. */
|
|
4956
|
+
magicDnsSuffix: zod.z.string(),
|
|
4957
|
+
/** Authenticated user / account login. Null for token-only providers. */
|
|
4958
|
+
userLogin: zod.z.string().nullable(),
|
|
4959
|
+
/** Provider control-plane URL. */
|
|
4960
|
+
controlPlaneUrl: zod.z.string(),
|
|
4961
|
+
/** Machine-key expiry (epoch ms). Null when keys don't rotate. */
|
|
4962
|
+
keyExpiry: zod.z.number().nullable()
|
|
4787
4963
|
});
|
|
4788
4964
|
method(zod.z.void(), zod.z.array(MeshProviderInfoSchema).readonly()), method(zod.z.object({
|
|
4789
4965
|
addonId: zod.z.string(),
|
|
4790
4966
|
authKey: zod.z.string().min(8),
|
|
4791
4967
|
hostname: zod.z.string().optional()
|
|
4792
|
-
}), zod.z.object({ joined: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({ addonId: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), { kind: "mutation" })
|
|
4968
|
+
}), zod.z.object({ joined: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({ addonId: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({
|
|
4969
|
+
addonId: zod.z.string(),
|
|
4970
|
+
hostname: zod.z.string().optional()
|
|
4971
|
+
}), zod.z.object({ loginUrl: zod.z.string() }), { kind: "mutation" }), method(zod.z.object({ addonId: zod.z.string() }), zod.z.object({ loggedOut: zod.z.literal(true) }), { kind: "mutation" }), method(zod.z.object({ addonId: zod.z.string() }), zod.z.object({ peers: zod.z.array(MeshPeerSchema).readonly() }));
|
|
4793
4972
|
var MethodAccessSchema = zod.z.enum([
|
|
4794
4973
|
"view",
|
|
4795
4974
|
"create",
|
|
@@ -4876,6 +5055,13 @@ var UserSummarySchema = zod.z.object({
|
|
|
4876
5055
|
allowedProviders: zod.z.union([zod.z.array(zod.z.string()), zod.z.literal("*")]),
|
|
4877
5056
|
allowedDevices: zod.z.record(zod.z.string(), zod.z.union([zod.z.array(zod.z.string()), zod.z.literal("*")])),
|
|
4878
5057
|
scopes: zod.z.array(TokenScopeSchema).default([]),
|
|
5058
|
+
/**
|
|
5059
|
+
* True iff this user has a CONFIRMED TOTP enrollment. Surfaced on
|
|
5060
|
+
* `listUsers` so the admin Users page can render the "Remove 2FA"
|
|
5061
|
+
* action conditionally without firing one `getTotpStatus` query per
|
|
5062
|
+
* row. Self-service enrollment lives on the user's profile page.
|
|
5063
|
+
*/
|
|
5064
|
+
totpEnabled: zod.z.boolean().default(false),
|
|
4879
5065
|
createdAt: zod.z.number(),
|
|
4880
5066
|
updatedAt: zod.z.number()
|
|
4881
5067
|
});
|
|
@@ -5138,6 +5324,12 @@ var NodeAddonInputSchema = zod.z.object({
|
|
|
5138
5324
|
nodeId: zod.z.string(),
|
|
5139
5325
|
addonId: zod.z.string()
|
|
5140
5326
|
});
|
|
5327
|
+
var NodeAddonEntrySchema = zod.z.object({
|
|
5328
|
+
id: zod.z.string(),
|
|
5329
|
+
status: zod.z.string(),
|
|
5330
|
+
version: zod.z.string().optional(),
|
|
5331
|
+
packageName: zod.z.string().optional()
|
|
5332
|
+
});
|
|
5141
5333
|
var SuccessSchema = zod.z.object({ success: zod.z.boolean() });
|
|
5142
5334
|
var RestartProcessResultSchema = zod.z.object({
|
|
5143
5335
|
success: zod.z.boolean(),
|
|
@@ -5178,7 +5370,7 @@ method(zod.z.void(), zod.z.array(TopologyNodeSchema).readonly(), { auth: "admin"
|
|
|
5178
5370
|
}), RenameNodeResultSchema, {
|
|
5179
5371
|
kind: "mutation",
|
|
5180
5372
|
auth: "admin"
|
|
5181
|
-
}), method(zod.z.void(), zod.z.record(zod.z.string(), ClusterAddonStatusEntrySchema), { auth: "admin" }), method(zod.z.object({
|
|
5373
|
+
}), method(zod.z.void(), zod.z.record(zod.z.string(), ClusterAddonStatusEntrySchema), { auth: "admin" }), method(zod.z.object({ nodeId: zod.z.string() }), zod.z.array(NodeAddonEntrySchema).readonly(), { auth: "admin" }), method(zod.z.object({
|
|
5182
5374
|
nodeId: zod.z.string(),
|
|
5183
5375
|
level: zod.z.string()
|
|
5184
5376
|
}), SuccessSchema, {
|