@camstack/system 1.2.67 → 1.2.68
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/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +1 -1
- package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +339 -2
- package/dist/builtins/snapshot/index.mjs +339 -2
- package/dist/builtins/snapshot/snapshot-link-url.d.ts +66 -0
- package/dist/builtins/snapshot/snapshot.addon.d.ts +79 -0
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-CbS6uoSb.mjs → dist-D2J8RJ7m.mjs} +77 -0
- package/dist/{dist-NRYjb8qK.js → dist-Dhpte164.js} +77 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -17112,6 +17112,77 @@ var snapshotCapability = {
|
|
|
17112
17112
|
lastCapturedAt: z.number().nullable(),
|
|
17113
17113
|
cacheAgeMs: z.number().nullable(),
|
|
17114
17114
|
etag: z.string().nullable()
|
|
17115
|
+
}))),
|
|
17116
|
+
/**
|
|
17117
|
+
* Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
|
|
17118
|
+
* that makes those frames current.
|
|
17119
|
+
*
|
|
17120
|
+
* ## The problem it replaces
|
|
17121
|
+
*
|
|
17122
|
+
* `getSnapshotOverview` is cache-only by contract: it answers from whatever
|
|
17123
|
+
* the wrapper happens to hold and never captures. Under D93 the client
|
|
17124
|
+
* versions its image URL on that answer, and an image REQUEST is what enrols
|
|
17125
|
+
* a camera in the keep-warm loop. Both of those are satisfiable by the
|
|
17126
|
+
* client's own image cache — `expo-image` is URL-keyed and never revalidates
|
|
17127
|
+
* — so a URL painted in a previous session comes off disk with no network,
|
|
17128
|
+
* no enrolment, and nothing warming. Measured on the live hub: reopening
|
|
17129
|
+
* after two minutes idle painted 15 of 16 tiles at **168 s old** with zero
|
|
17130
|
+
* HTTP requests, and the fleet only recovered because a later poll happened
|
|
17131
|
+
* to observe a different identity.
|
|
17132
|
+
*
|
|
17133
|
+
* ## The two properties that fix it
|
|
17134
|
+
*
|
|
17135
|
+
* **It is an RPC, so no client cache can answer it.** The demand signal
|
|
17136
|
+
* always reaches the wrapper. This method therefore MAY create keep-warm
|
|
17137
|
+
* subscriptions, where `getSnapshotOverview` must never (D93) — the
|
|
17138
|
+
* distinction is not "one is newer" but that the overview poll is app-wide
|
|
17139
|
+
* (a creating overview would warm every camera on the install) while this is
|
|
17140
|
+
* called by a rendered surface naming the tiles it is actually painting, at
|
|
17141
|
+
* the width it is painting them.
|
|
17142
|
+
*
|
|
17143
|
+
* **It waits, briefly and boundedly, for the capture it triggered.** The
|
|
17144
|
+
* returned `capturedAt` is the frame the link will serve, not the frame the
|
|
17145
|
+
* cache held when the client asked, so a first paint is honest and current
|
|
17146
|
+
* instead of a generation behind. A device that does not settle inside the
|
|
17147
|
+
* bound still gets a link and its real (older) `capturedAt` — the next poll
|
|
17148
|
+
* carries it forward.
|
|
17149
|
+
*
|
|
17150
|
+
* `force` is never set on behalf of a client here. A sleeping battery camera
|
|
17151
|
+
* is reported with `sleeping: true` and the last frame it produced, however
|
|
17152
|
+
* old; the wrapper's existing sleep gate owns that decision and this method
|
|
17153
|
+
* adds no second one.
|
|
17154
|
+
*/
|
|
17155
|
+
getSnapshotLinks: systemMethod(z.object({
|
|
17156
|
+
/** The tiles a surface is actually rendering. One entry per (device,
|
|
17157
|
+
* width) the caller will paint — the width is snapped to the server's
|
|
17158
|
+
* ladder and becomes part of the link's SIGNED identity. */
|
|
17159
|
+
targets: z.array(z.object({
|
|
17160
|
+
deviceId: z.number(),
|
|
17161
|
+
/** Target width in px. Omit for the frame as captured — correct
|
|
17162
|
+
* for a full-bleed surface, wrong (and expensive) for a grid. */
|
|
17163
|
+
width: z.number().int().positive().optional()
|
|
17164
|
+
})).min(1).max(200) }), z.array(z.object({
|
|
17165
|
+
deviceId: z.number(),
|
|
17166
|
+
/** Root-relative signed path, or null when the link plane is not
|
|
17167
|
+
* served (no data-plane facility). Present even for a device that has
|
|
17168
|
+
* never captured — the request is what triggers the first one (D94). */
|
|
17169
|
+
url: z.string().nullable(),
|
|
17170
|
+
/** Epoch ms of the frame this link serves. Null = never captured.
|
|
17171
|
+
* THE honest age: the tRPC path carried none before this. */
|
|
17172
|
+
capturedAt: z.number().nullable(),
|
|
17173
|
+
/** Age of that frame at the moment the answer was built. */
|
|
17174
|
+
ageMs: z.number().nullable(),
|
|
17175
|
+
/** Epoch ms after which `url` stops verifying. */
|
|
17176
|
+
expiresAt: z.number().nullable(),
|
|
17177
|
+
/** Ladder rung the bytes are at; null = the frame as captured. */
|
|
17178
|
+
width: z.number().nullable(),
|
|
17179
|
+
/** The device has never produced a frame. An empty state, not a
|
|
17180
|
+
* failure — and never a reason to withhold the link (D94). */
|
|
17181
|
+
neverCaptured: z.boolean(),
|
|
17182
|
+
/** A sleeping battery camera: the frame is deliberately stale and will
|
|
17183
|
+
* NOT refresh in the background. A surface should say so rather than
|
|
17184
|
+
* present it as current. */
|
|
17185
|
+
sleeping: z.boolean()
|
|
17115
17186
|
})))
|
|
17116
17187
|
},
|
|
17117
17188
|
status: {
|
|
@@ -31425,6 +31496,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31425
31496
|
addonId: null,
|
|
31426
31497
|
access: "view"
|
|
31427
31498
|
},
|
|
31499
|
+
"snapshot.getSnapshotLinks": {
|
|
31500
|
+
capName: "snapshot",
|
|
31501
|
+
capScope: "device",
|
|
31502
|
+
addonId: null,
|
|
31503
|
+
access: "view"
|
|
31504
|
+
},
|
|
31428
31505
|
"snapshot.getSnapshotOverview": {
|
|
31429
31506
|
capName: "snapshot",
|
|
31430
31507
|
capScope: "device",
|
|
@@ -17112,6 +17112,77 @@ var snapshotCapability = {
|
|
|
17112
17112
|
lastCapturedAt: zod.z.number().nullable(),
|
|
17113
17113
|
cacheAgeMs: zod.z.number().nullable(),
|
|
17114
17114
|
etag: zod.z.string().nullable()
|
|
17115
|
+
}))),
|
|
17116
|
+
/**
|
|
17117
|
+
* Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
|
|
17118
|
+
* that makes those frames current.
|
|
17119
|
+
*
|
|
17120
|
+
* ## The problem it replaces
|
|
17121
|
+
*
|
|
17122
|
+
* `getSnapshotOverview` is cache-only by contract: it answers from whatever
|
|
17123
|
+
* the wrapper happens to hold and never captures. Under D93 the client
|
|
17124
|
+
* versions its image URL on that answer, and an image REQUEST is what enrols
|
|
17125
|
+
* a camera in the keep-warm loop. Both of those are satisfiable by the
|
|
17126
|
+
* client's own image cache — `expo-image` is URL-keyed and never revalidates
|
|
17127
|
+
* — so a URL painted in a previous session comes off disk with no network,
|
|
17128
|
+
* no enrolment, and nothing warming. Measured on the live hub: reopening
|
|
17129
|
+
* after two minutes idle painted 15 of 16 tiles at **168 s old** with zero
|
|
17130
|
+
* HTTP requests, and the fleet only recovered because a later poll happened
|
|
17131
|
+
* to observe a different identity.
|
|
17132
|
+
*
|
|
17133
|
+
* ## The two properties that fix it
|
|
17134
|
+
*
|
|
17135
|
+
* **It is an RPC, so no client cache can answer it.** The demand signal
|
|
17136
|
+
* always reaches the wrapper. This method therefore MAY create keep-warm
|
|
17137
|
+
* subscriptions, where `getSnapshotOverview` must never (D93) — the
|
|
17138
|
+
* distinction is not "one is newer" but that the overview poll is app-wide
|
|
17139
|
+
* (a creating overview would warm every camera on the install) while this is
|
|
17140
|
+
* called by a rendered surface naming the tiles it is actually painting, at
|
|
17141
|
+
* the width it is painting them.
|
|
17142
|
+
*
|
|
17143
|
+
* **It waits, briefly and boundedly, for the capture it triggered.** The
|
|
17144
|
+
* returned `capturedAt` is the frame the link will serve, not the frame the
|
|
17145
|
+
* cache held when the client asked, so a first paint is honest and current
|
|
17146
|
+
* instead of a generation behind. A device that does not settle inside the
|
|
17147
|
+
* bound still gets a link and its real (older) `capturedAt` — the next poll
|
|
17148
|
+
* carries it forward.
|
|
17149
|
+
*
|
|
17150
|
+
* `force` is never set on behalf of a client here. A sleeping battery camera
|
|
17151
|
+
* is reported with `sleeping: true` and the last frame it produced, however
|
|
17152
|
+
* old; the wrapper's existing sleep gate owns that decision and this method
|
|
17153
|
+
* adds no second one.
|
|
17154
|
+
*/
|
|
17155
|
+
getSnapshotLinks: systemMethod(zod.z.object({
|
|
17156
|
+
/** The tiles a surface is actually rendering. One entry per (device,
|
|
17157
|
+
* width) the caller will paint — the width is snapped to the server's
|
|
17158
|
+
* ladder and becomes part of the link's SIGNED identity. */
|
|
17159
|
+
targets: zod.z.array(zod.z.object({
|
|
17160
|
+
deviceId: zod.z.number(),
|
|
17161
|
+
/** Target width in px. Omit for the frame as captured — correct
|
|
17162
|
+
* for a full-bleed surface, wrong (and expensive) for a grid. */
|
|
17163
|
+
width: zod.z.number().int().positive().optional()
|
|
17164
|
+
})).min(1).max(200) }), zod.z.array(zod.z.object({
|
|
17165
|
+
deviceId: zod.z.number(),
|
|
17166
|
+
/** Root-relative signed path, or null when the link plane is not
|
|
17167
|
+
* served (no data-plane facility). Present even for a device that has
|
|
17168
|
+
* never captured — the request is what triggers the first one (D94). */
|
|
17169
|
+
url: zod.z.string().nullable(),
|
|
17170
|
+
/** Epoch ms of the frame this link serves. Null = never captured.
|
|
17171
|
+
* THE honest age: the tRPC path carried none before this. */
|
|
17172
|
+
capturedAt: zod.z.number().nullable(),
|
|
17173
|
+
/** Age of that frame at the moment the answer was built. */
|
|
17174
|
+
ageMs: zod.z.number().nullable(),
|
|
17175
|
+
/** Epoch ms after which `url` stops verifying. */
|
|
17176
|
+
expiresAt: zod.z.number().nullable(),
|
|
17177
|
+
/** Ladder rung the bytes are at; null = the frame as captured. */
|
|
17178
|
+
width: zod.z.number().nullable(),
|
|
17179
|
+
/** The device has never produced a frame. An empty state, not a
|
|
17180
|
+
* failure — and never a reason to withhold the link (D94). */
|
|
17181
|
+
neverCaptured: zod.z.boolean(),
|
|
17182
|
+
/** A sleeping battery camera: the frame is deliberately stale and will
|
|
17183
|
+
* NOT refresh in the background. A surface should say so rather than
|
|
17184
|
+
* present it as current. */
|
|
17185
|
+
sleeping: zod.z.boolean()
|
|
17115
17186
|
})))
|
|
17116
17187
|
},
|
|
17117
17188
|
status: {
|
|
@@ -31425,6 +31496,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31425
31496
|
addonId: null,
|
|
31426
31497
|
access: "view"
|
|
31427
31498
|
},
|
|
31499
|
+
"snapshot.getSnapshotLinks": {
|
|
31500
|
+
capName: "snapshot",
|
|
31501
|
+
capScope: "device",
|
|
31502
|
+
addonId: null,
|
|
31503
|
+
access: "view"
|
|
31504
|
+
},
|
|
31428
31505
|
"snapshot.getSnapshotOverview": {
|
|
31429
31506
|
capName: "snapshot",
|
|
31430
31507
|
capScope: "device",
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("./dist-
|
|
3
|
+
const require_dist = require("./dist-Dhpte164.js");
|
|
4
4
|
const require_model_download_service = require("./model-download-service-Caj1kaSi.js");
|
|
5
5
|
const require_manifest_python_deps = require("./manifest-python-deps-BE6l8Y4W.js");
|
|
6
6
|
const require_resource_monitor = require("./resource-monitor-DNNomR-i.js");
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import { $ as objectInputDeclaresAddonId, B as isCollectionArrayMethod, Ct as asJsonObject$1, Dt as emitDownForOwnedCaps, Et as createEvent, Ft as readinessKey, G as lifecycleJobSchema, It as resolveCapMount, J as logLevelAtMost, L as extractNestedAddonId, Lt as scopeKey, Nt as parseJsonObject, Pt as parseJsonUnknown$1, Tt as asString$1, U as isVoidInput, V as isObjectInput, W as kebabToCamel, Y as looseSchema, bt as ReadinessRegistry, d as METHOD_ACCESS_MAP, f as RUNTIME_DEFAULTS, ft as errMsg$1, gt as DEVICE_STATUS_METHOD, ht as DEVICE_SETTINGS_CONTRIBUTION_METHODS, kt as expandCapMethods, mt as DATAPLANE_SECRET_HEADER$1, nt as procedureAuthKey, t as ALL_CAPABILITY_DEFINITIONS, v as addonSettingsCapability, wt as asNumber, xt as ReadinessTimeoutError, z as isArrayOutputSchema, zt as EventCategory$1 } from "./dist-
|
|
2
|
+
import { $ as objectInputDeclaresAddonId, B as isCollectionArrayMethod, Ct as asJsonObject$1, Dt as emitDownForOwnedCaps, Et as createEvent, Ft as readinessKey, G as lifecycleJobSchema, It as resolveCapMount, J as logLevelAtMost, L as extractNestedAddonId, Lt as scopeKey, Nt as parseJsonObject, Pt as parseJsonUnknown$1, Tt as asString$1, U as isVoidInput, V as isObjectInput, W as kebabToCamel, Y as looseSchema, bt as ReadinessRegistry, d as METHOD_ACCESS_MAP, f as RUNTIME_DEFAULTS, ft as errMsg$1, gt as DEVICE_STATUS_METHOD, ht as DEVICE_SETTINGS_CONTRIBUTION_METHODS, kt as expandCapMethods, mt as DATAPLANE_SECRET_HEADER$1, nt as procedureAuthKey, t as ALL_CAPABILITY_DEFINITIONS, v as addonSettingsCapability, wt as asNumber, xt as ReadinessTimeoutError, z as isArrayOutputSchema, zt as EventCategory$1 } from "./dist-D2J8RJ7m.mjs";
|
|
3
3
|
import { a as downloadModel, c as getModelFilePath, d as contentTypeFor, f as createAuthenticatedFileServer, h as resolveFilePath, i as downloadFile, l as isModelDownloaded, m as parseTokenizedUrl, n as collectModelFiles, o as ensureModel, p as parseRangeHeader, r as deleteModelFromDisk, s as fetchJson, t as ModelDownloadService, u as createFileDataPlaneHandler } from "./model-download-service-CTBHzORJ.mjs";
|
|
4
4
|
import { $ as buildNativeCapProxy, A as createHubCapForwardService, B as AGENT_CAP_FWD_ACTION, C as brokerTransportLink, Ct as resolveAddonClass, D as localProviderLink, E as ipcParentLink, F as createUdsLogger, G as callWithServiceDiscovery, H as CapRouteResolver, I as createUdsLoggerWithControl, J as UdsLocalTransportServer, K as createLocalTransport, L as LocalChildClient, M as createUdsEventBridge, N as createUdsEventBus, O as HUB_CAP_FWD_ACTION, P as udsChildLogToWorkerEntry, Q as encodeFrame, R as LocalChildRegistry, S as brokerCallForCap, St as runNpm, T as ipcChildLink, U as CapRouteError, V as AGENT_CAP_FWD_SERVICE, W as classifyCapRoute, X as localEndpointPath, Y as SocketChannel, Z as FrameDecoder, _ as createKernelHwAccel, _t as CapabilityHandle, a as getWorkerDeviceRegistry, b as __resetCapUsageRegistryForTests, bt as installManifestNativeDeps, c as setHubConnected, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as getBrokerEventBus, dt as capBareAction, et as buildUdsNativeCapProxy, f as getMoleculerEventStats, ft as capServiceName, g as AddonDepsManager, gt as DeviceRegistry, h as subscribePassthrough, ht as serializeTypedArrays, i as createUdsAddonContext, it as mountNativeCapService, j as createParentUnownedCallHandler, k as HUB_CAP_FWD_SERVICE, l as EVENT_TOPIC_PREFIX, lt as capActionName, m as setNodeEventInterest, mt as deserializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as createAddonService, p as registerEventBusService, pt as parseCapAction, q as UdsLocalTransportClient, r as createAddonContext, s as getOrInitReadinessRegistryForClient, st as validateProviderRegistrations, t as installManifestPythonDeps, tt as createBrokerDeviceManagerApi, u as clusterEventTopic, ut as capActionSuffix, v as resolveHwAccel, vt as CapabilityUnavailableError, w as buildLinkChain, wt as createAddonDataPlaneFacility, x as getCapUsageRegistry, xt as resolveNpmInvocation, y as CapUsageRegistry, yt as copyBundledNativeModules, z as UDS_NO_ROUTE_PREFIX } from "./manifest-python-deps-Dz1ryHIN.mjs";
|
|
5
5
|
import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BkP504Vq.mjs";
|