@camstack/addon-provider-rtsp 0.1.25 → 0.1.26
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/addon.js +168 -5
- package/dist/addon.js.map +1 -1
- package/dist/addon.mjs +168 -5
- package/dist/addon.mjs.map +1 -1
- package/package.json +1 -1
package/dist/addon.mjs
CHANGED
|
@@ -8693,10 +8693,30 @@ const StatusSchema = object({
|
|
|
8693
8693
|
}
|
|
8694
8694
|
});
|
|
8695
8695
|
const LinkStateSchema = _enum(["unlinked", "linked", "error"]);
|
|
8696
|
+
const ExportSetupFieldSchema = object({
|
|
8697
|
+
label: string(),
|
|
8698
|
+
value: string(),
|
|
8699
|
+
/** Mask the value by default + render a reveal toggle (client id, secrets). */
|
|
8700
|
+
secret: boolean().optional()
|
|
8701
|
+
});
|
|
8702
|
+
const ExportSetupSchema = object({
|
|
8703
|
+
/** A string to render as a scannable QR — HAP `X-HM://…` URI, a pairing URL, etc. Omitted when there's nothing to scan. */
|
|
8704
|
+
qr: string().optional(),
|
|
8705
|
+
/** Label/value rows shown with a copy button (HAP setup code, OAuth URLs, client id, linked-account count, …). */
|
|
8706
|
+
fields: array(ExportSetupFieldSchema).readonly().optional(),
|
|
8707
|
+
/** Free-form operator instructions rendered above the fields. */
|
|
8708
|
+
note: string().optional()
|
|
8709
|
+
});
|
|
8696
8710
|
const DeviceExportStatusSchema = object({
|
|
8697
8711
|
linkState: LinkStateSchema,
|
|
8698
8712
|
exposedDeviceCount: number(),
|
|
8699
|
-
error: string().optional()
|
|
8713
|
+
error: string().optional(),
|
|
8714
|
+
/**
|
|
8715
|
+
* Optional pairing/account info the panel renders in a generic
|
|
8716
|
+
* "Setup" section. Addon-agnostic — the addon id identifies the
|
|
8717
|
+
* export target, never an `ecosystem` key here.
|
|
8718
|
+
*/
|
|
8719
|
+
setup: ExportSetupSchema.optional()
|
|
8700
8720
|
});
|
|
8701
8721
|
const DeviceKindSchema = string();
|
|
8702
8722
|
const ExposedDeviceSchema = object({
|
|
@@ -12134,7 +12154,25 @@ const MeshStatusSchema = object({
|
|
|
12134
12154
|
* doesn't rotate keys for the bound host. Operator-facing surface
|
|
12135
12155
|
* for "your access expires on …" banners.
|
|
12136
12156
|
*/
|
|
12137
|
-
keyExpiry: number().nullable()
|
|
12157
|
+
keyExpiry: number().nullable(),
|
|
12158
|
+
// ── Onboard-daemon handoff (Tailscale, generic slot) ────────────
|
|
12159
|
+
/**
|
|
12160
|
+
* When the provider runs its OWN mesh daemon (e.g. the Tailscale
|
|
12161
|
+
* client addon in `onboard` mode spawns a private `tailscaled`),
|
|
12162
|
+
* this carries the local control-socket path. Companion addons that
|
|
12163
|
+
* must drive the SAME daemon — chiefly `tailscale-ingress` for
|
|
12164
|
+
* Serve/Funnel — read it to point their CLI at the right socket
|
|
12165
|
+
* instead of the system default. Empty when the provider uses the
|
|
12166
|
+
* host's system daemon (or doesn't have the concept).
|
|
12167
|
+
*/
|
|
12168
|
+
daemonSocket: string().optional(),
|
|
12169
|
+
/**
|
|
12170
|
+
* Path to the mesh CLI binary the provider downloaded for onboard
|
|
12171
|
+
* mode. Companion addons reuse it so they don't need a system
|
|
12172
|
+
* install when the operator chose a fully self-contained mesh.
|
|
12173
|
+
* Empty in host mode.
|
|
12174
|
+
*/
|
|
12175
|
+
daemonCliPath: string().optional()
|
|
12138
12176
|
});
|
|
12139
12177
|
({
|
|
12140
12178
|
methods: {
|
|
@@ -13020,6 +13058,21 @@ const AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
13020
13058
|
const RestartAddonResultSchema = unknown();
|
|
13021
13059
|
const InstallPackageResultSchema = unknown();
|
|
13022
13060
|
const ReloadPackagesResultSchema = unknown();
|
|
13061
|
+
const UpdateFrameworkPackageResultSchema = object({
|
|
13062
|
+
packageName: string(),
|
|
13063
|
+
fromVersion: string(),
|
|
13064
|
+
toVersion: string(),
|
|
13065
|
+
/** Ms-epoch the server scheduled its self-restart. */
|
|
13066
|
+
restartingAt: number()
|
|
13067
|
+
});
|
|
13068
|
+
const FrameworkPackageStatusSchema = object({
|
|
13069
|
+
packageName: string(),
|
|
13070
|
+
currentVersion: string(),
|
|
13071
|
+
latestVersion: string().nullable(),
|
|
13072
|
+
hasUpdate: boolean(),
|
|
13073
|
+
/** Optional manifest description for the row tooltip. */
|
|
13074
|
+
description: string().optional()
|
|
13075
|
+
});
|
|
13023
13076
|
const LogStreamEntrySchema = object({
|
|
13024
13077
|
timestamp: string(),
|
|
13025
13078
|
level: string(),
|
|
@@ -13079,13 +13132,29 @@ const CustomActionInputSchema = object({
|
|
|
13079
13132
|
object({ query: string().optional() }),
|
|
13080
13133
|
array(SearchResultSchema)
|
|
13081
13134
|
),
|
|
13135
|
+
/**
|
|
13136
|
+
* Available package updates for a node. `nodeId` omitted (or
|
|
13137
|
+
* `'hub'`) checks the hub's own installed packages; an agent
|
|
13138
|
+
* `nodeId` checks that agent's installed roster against npm
|
|
13139
|
+
* (the hub does the npm lookups + diff — agents stay npm-free).
|
|
13140
|
+
*/
|
|
13082
13141
|
listUpdates: method(
|
|
13083
|
-
|
|
13142
|
+
object({ nodeId: string().optional() }),
|
|
13084
13143
|
array(PackageUpdateSchema).readonly(),
|
|
13085
13144
|
{ auth: "admin" }
|
|
13086
13145
|
),
|
|
13146
|
+
/**
|
|
13147
|
+
* Update one package on a node. `nodeId` omitted (or `'hub'`)
|
|
13148
|
+
* installs on the hub via npm; an agent `nodeId` makes the hub
|
|
13149
|
+
* pack the resolved version and push the tarball to that agent
|
|
13150
|
+
* (`$agent.deploy` + `$agent.reload`) — agents need no npm runtime.
|
|
13151
|
+
*/
|
|
13087
13152
|
updatePackage: method(
|
|
13088
|
-
object({
|
|
13153
|
+
object({
|
|
13154
|
+
name: string().min(1),
|
|
13155
|
+
version: string().optional(),
|
|
13156
|
+
nodeId: string().optional()
|
|
13157
|
+
}),
|
|
13089
13158
|
unknown(),
|
|
13090
13159
|
{ kind: "mutation", auth: "admin" }
|
|
13091
13160
|
),
|
|
@@ -13106,12 +13175,105 @@ const CustomActionInputSchema = object({
|
|
|
13106
13175
|
object({ rolledBackTo: string().nullable() }),
|
|
13107
13176
|
{ kind: "mutation", auth: "admin" }
|
|
13108
13177
|
),
|
|
13109
|
-
|
|
13178
|
+
/** Re-check updates for a node, bypassing any cache. `nodeId`
|
|
13179
|
+
* omitted (or `'hub'`) refreshes the hub; an agent `nodeId`
|
|
13180
|
+
* re-checks that agent's roster. */
|
|
13181
|
+
forceRefresh: method(
|
|
13182
|
+
object({ nodeId: string().optional() }),
|
|
13183
|
+
unknown(),
|
|
13184
|
+
{ kind: "mutation", auth: "admin" }
|
|
13185
|
+
),
|
|
13110
13186
|
restartServer: method(
|
|
13111
13187
|
object({ confirm: literal(true) }),
|
|
13112
13188
|
unknown(),
|
|
13113
13189
|
{ kind: "mutation", auth: "admin" }
|
|
13114
13190
|
),
|
|
13191
|
+
/**
|
|
13192
|
+
* Most-recent restart marker (kind / packageName / from→to versions
|
|
13193
|
+
* / requestedBy / requestedAt). Returns `null` when this process
|
|
13194
|
+
* didn't boot from a tracked restart, or when the
|
|
13195
|
+
* post-boot retention window (5 min) has elapsed.
|
|
13196
|
+
*
|
|
13197
|
+
* Drives the admin-UI reconnect overlay's success toast — the
|
|
13198
|
+
* `system.restart-completed` event itself is fired before the
|
|
13199
|
+
* client has time to re-subscribe, so the client queries this on
|
|
13200
|
+
* first reconnect instead.
|
|
13201
|
+
*/
|
|
13202
|
+
getLastRestart: method(
|
|
13203
|
+
_void(),
|
|
13204
|
+
object({
|
|
13205
|
+
kind: _enum(["framework-update", "manual", "system"]),
|
|
13206
|
+
packageName: string().optional(),
|
|
13207
|
+
fromVersion: string().optional(),
|
|
13208
|
+
toVersion: string().optional(),
|
|
13209
|
+
requestedBy: string().optional(),
|
|
13210
|
+
requestedAt: number()
|
|
13211
|
+
}).nullable(),
|
|
13212
|
+
{ auth: "admin" }
|
|
13213
|
+
),
|
|
13214
|
+
/**
|
|
13215
|
+
* Snapshot of the framework packages installed under the hub's
|
|
13216
|
+
* `<appRoot>/node_modules/`. Each row carries the currently
|
|
13217
|
+
* installed version and (best-effort) the latest version
|
|
13218
|
+
* available on npm. Drives the admin-UI "System packages" panel.
|
|
13219
|
+
*
|
|
13220
|
+
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
13221
|
+
*/
|
|
13222
|
+
listFrameworkPackages: method(
|
|
13223
|
+
_void(),
|
|
13224
|
+
array(FrameworkPackageStatusSchema).readonly(),
|
|
13225
|
+
{ auth: "admin" }
|
|
13226
|
+
),
|
|
13227
|
+
/**
|
|
13228
|
+
* Cluster-wide capability-provider discovery. Returns the list of
|
|
13229
|
+
* `{ addonId, mode, isActive }` tuples for whatever addon(s)
|
|
13230
|
+
* currently provide the requested capability across the cluster.
|
|
13231
|
+
*
|
|
13232
|
+
* Why this lives on `addons` (and not on a `capabilities` cap of
|
|
13233
|
+
* its own): the hub's main-process `CapabilityRegistry` already
|
|
13234
|
+
* aggregates registrations from every forked group-runner and
|
|
13235
|
+
* remote agent via Moleculer event propagation — there's no
|
|
13236
|
+
* cross-process registry mirror to build, just an introspection
|
|
13237
|
+
* shim.
|
|
13238
|
+
*
|
|
13239
|
+
* Use this from addon code when you need to know whether another
|
|
13240
|
+
* addon has registered a specific cap (e.g. `tailscale-ingress`
|
|
13241
|
+
* checking `tailscale-client` is up before calling `tailscale
|
|
13242
|
+
* serve`). Don't reach for `ctx.capabilities.getCollectionEntries`
|
|
13243
|
+
* — that reads the LOCAL registry of the calling addon's group
|
|
13244
|
+
* runner and never sees providers in other processes. See
|
|
13245
|
+
* `CLAUDE.md` → Critical rules → ctx.api vs ctx.capabilities.
|
|
13246
|
+
*/
|
|
13247
|
+
listCapabilityProviders: method(
|
|
13248
|
+
object({ capName: string().min(1) }),
|
|
13249
|
+
array(object({
|
|
13250
|
+
addonId: string(),
|
|
13251
|
+
mode: _enum(["singleton", "collection"]),
|
|
13252
|
+
isActive: boolean()
|
|
13253
|
+
})).readonly()
|
|
13254
|
+
),
|
|
13255
|
+
/**
|
|
13256
|
+
* Live-update one of the framework packages marked
|
|
13257
|
+
* `camstack.system: true` (`@camstack/types|kernel|core|sdk|ui-library`).
|
|
13258
|
+
* Runs `npm install --prefix <appRoot> <name>@<version> --no-save`,
|
|
13259
|
+
* writes a `.restart-pending` marker, emits `system.restarting`
|
|
13260
|
+
* and schedules a graceful process exit. The supervisor (Docker /
|
|
13261
|
+
* Electron / systemd) brings the hub back up; on first boot after
|
|
13262
|
+
* the restart the marker fires `system.restart-completed`.
|
|
13263
|
+
*
|
|
13264
|
+
* `version` defaults to `'latest'`. The allow-list of valid
|
|
13265
|
+
* `packageName` values is enforced server-side.
|
|
13266
|
+
*
|
|
13267
|
+
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
13268
|
+
*/
|
|
13269
|
+
updateFrameworkPackage: method(
|
|
13270
|
+
object({
|
|
13271
|
+
packageName: string().min(1),
|
|
13272
|
+
version: string().optional()
|
|
13273
|
+
}),
|
|
13274
|
+
UpdateFrameworkPackageResultSchema,
|
|
13275
|
+
{ kind: "mutation", auth: "admin" }
|
|
13276
|
+
),
|
|
13115
13277
|
getVersions: method(
|
|
13116
13278
|
object({ name: string() }),
|
|
13117
13279
|
array(PackageVersionInfoSchema).readonly()
|
|
@@ -13182,6 +13344,7 @@ var EventCategory = /* @__PURE__ */ ((EventCategory2) => {
|
|
|
13182
13344
|
EventCategory2["SystemBoot"] = "system.boot";
|
|
13183
13345
|
EventCategory2["SystemAddonsReady"] = "system.addons-ready";
|
|
13184
13346
|
EventCategory2["SystemRestarting"] = "system.restarting";
|
|
13347
|
+
EventCategory2["SystemRestartCompleted"] = "system.restart-completed";
|
|
13185
13348
|
EventCategory2["SystemReadyState"] = "system.ready-state";
|
|
13186
13349
|
EventCategory2["AddonStarted"] = "addon.started";
|
|
13187
13350
|
EventCategory2["AddonStopped"] = "addon.stopped";
|