@camstack/system 1.2.30 → 1.2.32

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.
Files changed (60) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.d.ts +10 -0
  6. package/dist/builtins/alerts/alerts.addon.js +60 -1
  7. package/dist/builtins/alerts/alerts.addon.mjs +60 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +135 -92
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +135 -92
  10. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +12 -14
  11. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +6 -6
  12. package/dist/builtins/console-logging/index.js +1 -1
  13. package/dist/builtins/console-logging/index.mjs +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  17. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  18. package/dist/builtins/hub-forwarder/index.js +1 -1
  19. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  20. package/dist/builtins/liveness-monitor/index.d.ts +2 -0
  21. package/dist/builtins/liveness-monitor/index.js +6 -0
  22. package/dist/builtins/liveness-monitor/index.mjs +2 -0
  23. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +67 -0
  24. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +32 -0
  25. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +216 -0
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +212 -0
  27. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  29. package/dist/builtins/local-network/local-network.addon.js +1 -1
  30. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  31. package/dist/builtins/loki-logging/index.js +1 -1
  32. package/dist/builtins/loki-logging/index.mjs +1 -1
  33. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  35. package/dist/builtins/platform-probe/index.js +1 -1
  36. package/dist/builtins/platform-probe/index.mjs +1 -1
  37. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/snapshot/index.js +1 -1
  40. package/dist/builtins/snapshot/index.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/integration-registry.d.ts +3 -3
  44. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +6 -8
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -25
  46. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -25
  47. package/dist/builtins/storage-orchestrator/location-store.d.ts +17 -24
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +0 -6
  49. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +130 -121
  50. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +130 -121
  51. package/dist/builtins/system-config/system-config.addon.js +1 -1
  52. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  53. package/dist/builtins/winston-logging/index.js +1 -1
  54. package/dist/builtins/winston-logging/index.mjs +1 -1
  55. package/dist/{dist-Dr_P0DOB.mjs → dist-BL_FHWPP.mjs} +33 -2
  56. package/dist/{dist-VIwdvws5.js → dist-CSs1A90r.js} +33 -2
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.js +365 -224
  59. package/dist/index.mjs +365 -225
  60. package/package.json +10 -1
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 { A as extractNestedAddonId, At as scopeKey, Dt as parseJsonUnknown$1, Et as parseJsonObject, F as isObjectInput, G as objectInputDeclaresAddonId, H as looseSchema, I as isVoidInput, J as procedureAuthKey, L as kebabToCamel, Mt as EventCategory$1, N as isArrayOutputSchema, Ot as readinessKey, P as isCollectionArrayMethod, R as lifecycleJobSchema, St as expandCapMethods, V as logLevelAtMost, _t as asNumber, at as errMsg$1, bt as emitDownForOwnedCaps, c as RUNTIME_DEFAULTS, ct as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gt as asJsonObject$1, kt as resolveCapMount, lt as DEVICE_STATUS_METHOD, m as addonSettingsCapability, mt as ReadinessTimeoutError, pt as ReadinessRegistry, s as METHOD_ACCESS_MAP, st as DATAPLANE_SECRET_HEADER$1, t as ALL_CAPABILITY_DEFINITIONS, vt as asString$1, yt as createEvent } from "./dist-Dr_P0DOB.mjs";
2
+ import { A as extractNestedAddonId, At as scopeKey, Dt as parseJsonUnknown$1, Et as parseJsonObject, F as isObjectInput, G as objectInputDeclaresAddonId, H as looseSchema, I as isVoidInput, J as procedureAuthKey, L as kebabToCamel, Mt as EventCategory$1, N as isArrayOutputSchema, Ot as readinessKey, P as isCollectionArrayMethod, R as lifecycleJobSchema, St as expandCapMethods, V as logLevelAtMost, _t as asNumber, at as errMsg$1, bt as emitDownForOwnedCaps, c as RUNTIME_DEFAULTS, ct as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gt as asJsonObject$1, kt as resolveCapMount, lt as DEVICE_STATUS_METHOD, m as addonSettingsCapability, mt as ReadinessTimeoutError, pt as ReadinessRegistry, s as METHOD_ACCESS_MAP, st as DATAPLANE_SECRET_HEADER$1, t as ALL_CAPABILITY_DEFINITIONS, vt as asString$1, yt as createEvent } from "./dist-BL_FHWPP.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-Cp9f4dk6.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-Ck4-9K9m.mjs";
5
5
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BkP504Vq.mjs";
@@ -16,6 +16,8 @@ import "./builtins/storage-orchestrator/index.mjs";
16
16
  import NativeMetricsAddon, { t as NativeMetricsProvider } from "./builtins/native-metrics/native-metrics.addon.mjs";
17
17
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
18
18
  import "./builtins/alerts/index.mjs";
19
+ import { LivenessMonitorAddon } from "./builtins/liveness-monitor/liveness-monitor.addon.mjs";
20
+ import "./builtins/liveness-monitor/index.mjs";
19
21
  import { SystemConfigAddon } from "./builtins/system-config/system-config.addon.mjs";
20
22
  import "./builtins/system-config/index.mjs";
21
23
  import { LocalAuthAddon, a as require_ms, i as AuthManager, n as ApiKeyManager, o as require_safe_buffer, r as UserManager, t as ScopedTokenManager } from "./builtins/local-auth/local-auth.addon.mjs";
@@ -2069,18 +2071,47 @@ function serializeSetting(value) {
2069
2071
  valueType: "json"
2070
2072
  };
2071
2073
  }
2072
- function deserializeSetting(value, valueType) {
2074
+ /**
2075
+ * Decode a settings row back to its value.
2076
+ *
2077
+ * `raw` is `unknown`, not `string`, on purpose: the collection surface parses
2078
+ * any TEXT column whose value starts with `{` or `[`, so a `json` setting
2079
+ * arrives here ALREADY an object. Coercing it with `String(...)` first — which
2080
+ * is what a straight port of the `table*` version did — produced the literal
2081
+ * `"[object Object]"`.
2082
+ */
2083
+ function deserializeSetting(raw, valueType) {
2084
+ if (valueType === "json") {
2085
+ if (typeof raw !== "string") return raw;
2086
+ try {
2087
+ return JSON.parse(raw);
2088
+ } catch {
2089
+ return raw;
2090
+ }
2091
+ }
2092
+ const value = String(raw);
2073
2093
  switch (valueType) {
2074
2094
  case "number": return Number(value);
2075
2095
  case "boolean": return value === "true";
2076
- case "json": try {
2077
- return JSON.parse(value);
2078
- } catch {
2079
- return value;
2080
- }
2081
2096
  default: return value;
2082
2097
  }
2083
2098
  }
2099
+ /**
2100
+ * Read an `info` blob off a row.
2101
+ *
2102
+ * The column is declared `JSON`, so the surface hands back a parsed object —
2103
+ * but rows written before B2 by an older build are still raw strings on disk
2104
+ * for as long as they go un-rewritten, and a string that fails to parse must
2105
+ * not take the whole record down.
2106
+ */
2107
+ function isPlainObject(value) {
2108
+ return value !== null && typeof value === "object" && !Array.isArray(value);
2109
+ }
2110
+ function readInfo(raw) {
2111
+ if (typeof raw === "string") return parseJsonObject(raw) ?? {};
2112
+ if (isPlainObject(raw)) return { ...raw };
2113
+ return {};
2114
+ }
2084
2115
  var integrationCounter = 0;
2085
2116
  var deviceCounter = 0;
2086
2117
  function nextIntegrationId() {
@@ -2089,52 +2120,50 @@ function nextIntegrationId() {
2089
2120
  function nextDeviceId() {
2090
2121
  return `dev_${String(++deviceCounter).padStart(4, "0")}`;
2091
2122
  }
2092
- var INTEGRATIONS_SCHEMA = {
2093
- columns: [
2094
- {
2095
- name: "id",
2096
- type: "TEXT",
2097
- primaryKey: true
2098
- },
2099
- {
2100
- name: "addon_id",
2101
- type: "TEXT",
2102
- notNull: true
2103
- },
2104
- {
2105
- name: "name",
2106
- type: "TEXT",
2107
- notNull: true
2108
- },
2109
- {
2110
- name: "enabled",
2111
- type: "INTEGER",
2112
- notNull: true,
2113
- defaultValue: 1
2114
- },
2115
- {
2116
- name: "info",
2117
- type: "TEXT",
2118
- notNull: true,
2119
- defaultValue: "{}"
2120
- },
2121
- {
2122
- name: "created_at",
2123
- type: "INTEGER",
2124
- notNull: true
2125
- },
2126
- {
2127
- name: "updated_at",
2128
- type: "INTEGER",
2129
- notNull: true
2130
- }
2131
- ],
2132
- indexes: [{
2133
- name: "idx_integrations_addon",
2134
- columns: ["addon_id"]
2135
- }]
2136
- };
2137
- var INTEGRATION_SETTINGS_SCHEMA = { columns: [
2123
+ var INTEGRATIONS_COLUMNS = [
2124
+ {
2125
+ name: "id",
2126
+ type: "TEXT",
2127
+ primaryKey: true
2128
+ },
2129
+ {
2130
+ name: "addon_id",
2131
+ type: "TEXT",
2132
+ notNull: true
2133
+ },
2134
+ {
2135
+ name: "name",
2136
+ type: "TEXT",
2137
+ notNull: true
2138
+ },
2139
+ {
2140
+ name: "enabled",
2141
+ type: "INTEGER",
2142
+ notNull: true,
2143
+ defaultValue: 1
2144
+ },
2145
+ {
2146
+ name: "info",
2147
+ type: "JSON",
2148
+ notNull: true,
2149
+ defaultValue: "{}"
2150
+ },
2151
+ {
2152
+ name: "created_at",
2153
+ type: "INTEGER",
2154
+ notNull: true
2155
+ },
2156
+ {
2157
+ name: "updated_at",
2158
+ type: "INTEGER",
2159
+ notNull: true
2160
+ }
2161
+ ];
2162
+ var INTEGRATIONS_INDEXES = [{
2163
+ name: "idx_integrations_addon",
2164
+ columns: ["addon_id"]
2165
+ }];
2166
+ var INTEGRATION_SETTINGS_COLUMNS = [
2138
2167
  {
2139
2168
  name: "integration_id",
2140
2169
  type: "TEXT",
@@ -2156,76 +2185,74 @@ var INTEGRATION_SETTINGS_SCHEMA = { columns: [
2156
2185
  notNull: true,
2157
2186
  defaultValue: "string"
2158
2187
  }
2159
- ] };
2160
- var DEVICES_SCHEMA = {
2161
- columns: [
2162
- {
2163
- name: "id",
2164
- type: "TEXT",
2165
- primaryKey: true
2166
- },
2167
- {
2168
- name: "integration_id",
2169
- type: "TEXT",
2170
- notNull: true
2171
- },
2172
- {
2173
- name: "stable_id",
2174
- type: "TEXT",
2175
- notNull: true,
2176
- unique: true
2177
- },
2178
- {
2179
- name: "type",
2180
- type: "TEXT",
2181
- notNull: true,
2182
- defaultValue: "camera"
2183
- },
2184
- {
2185
- name: "name",
2186
- type: "TEXT",
2187
- notNull: true
2188
- },
2189
- {
2190
- name: "enabled",
2191
- type: "INTEGER",
2192
- notNull: true,
2193
- defaultValue: 1
2194
- },
2195
- {
2196
- name: "info",
2197
- type: "TEXT",
2198
- notNull: true,
2199
- defaultValue: "{}"
2200
- },
2201
- {
2202
- name: "created_at",
2203
- type: "INTEGER",
2204
- notNull: true
2205
- },
2206
- {
2207
- name: "updated_at",
2208
- type: "INTEGER",
2209
- notNull: true
2210
- }
2211
- ],
2212
- indexes: [
2213
- {
2214
- name: "idx_devices_integration",
2215
- columns: ["integration_id"]
2216
- },
2217
- {
2218
- name: "idx_devices_stable",
2219
- columns: ["stable_id"],
2220
- unique: true
2221
- },
2222
- {
2223
- name: "idx_devices_type",
2224
- columns: ["type"]
2225
- }
2226
- ]
2227
- };
2228
- var DEVICE_SETTINGS_SCHEMA = { columns: [
2188
+ ];
2189
+ var DEVICES_COLUMNS = [
2190
+ {
2191
+ name: "id",
2192
+ type: "TEXT",
2193
+ primaryKey: true
2194
+ },
2195
+ {
2196
+ name: "integration_id",
2197
+ type: "TEXT",
2198
+ notNull: true
2199
+ },
2200
+ {
2201
+ name: "stable_id",
2202
+ type: "TEXT",
2203
+ notNull: true,
2204
+ unique: true
2205
+ },
2206
+ {
2207
+ name: "type",
2208
+ type: "TEXT",
2209
+ notNull: true,
2210
+ defaultValue: "camera"
2211
+ },
2212
+ {
2213
+ name: "name",
2214
+ type: "TEXT",
2215
+ notNull: true
2216
+ },
2217
+ {
2218
+ name: "enabled",
2219
+ type: "INTEGER",
2220
+ notNull: true,
2221
+ defaultValue: 1
2222
+ },
2223
+ {
2224
+ name: "info",
2225
+ type: "JSON",
2226
+ notNull: true,
2227
+ defaultValue: "{}"
2228
+ },
2229
+ {
2230
+ name: "created_at",
2231
+ type: "INTEGER",
2232
+ notNull: true
2233
+ },
2234
+ {
2235
+ name: "updated_at",
2236
+ type: "INTEGER",
2237
+ notNull: true
2238
+ }
2239
+ ];
2240
+ var DEVICES_INDEXES = [
2241
+ {
2242
+ name: "idx_devices_integration",
2243
+ columns: ["integration_id"]
2244
+ },
2245
+ {
2246
+ name: "idx_devices_stable",
2247
+ columns: ["stable_id"],
2248
+ unique: true
2249
+ },
2250
+ {
2251
+ name: "idx_devices_type",
2252
+ columns: ["type"]
2253
+ }
2254
+ ];
2255
+ var DEVICE_SETTINGS_COLUMNS = [
2229
2256
  {
2230
2257
  name: "device_id",
2231
2258
  type: "TEXT",
@@ -2247,51 +2274,80 @@ var DEVICE_SETTINGS_SCHEMA = { columns: [
2247
2274
  notNull: true,
2248
2275
  defaultValue: "string"
2249
2276
  }
2250
- ] };
2277
+ ];
2278
+ var INTEGRATIONS = "integrations";
2279
+ var INTEGRATION_SETTINGS = "integration_settings";
2280
+ var DEVICES = "devices";
2281
+ var DEVICE_SETTINGS = "device_settings_kv";
2251
2282
  var IntegrationRegistry = class {
2252
- backend;
2283
+ store;
2253
2284
  constructor(backend) {
2254
- this.backend = backend;
2285
+ this.store = backend;
2255
2286
  }
2256
2287
  async initialize() {
2257
- await this.backend.ensureTable?.("integrations", INTEGRATIONS_SCHEMA);
2258
- await this.backend.ensureTable?.("integration_settings", INTEGRATION_SETTINGS_SCHEMA);
2259
- await this.backend.ensureTable?.("devices", DEVICES_SCHEMA);
2260
- await this.backend.ensureTable?.("device_settings_kv", DEVICE_SETTINGS_SCHEMA);
2261
- const ints = await this.backend.tableQuery?.("integrations", {
2262
- orderBy: {
2263
- field: "id",
2264
- direction: "desc"
2265
- },
2266
- limit: 1
2267
- }) ?? [];
2288
+ await this.store.declareCollection({
2289
+ collection: INTEGRATIONS,
2290
+ columns: INTEGRATIONS_COLUMNS,
2291
+ indexes: INTEGRATIONS_INDEXES
2292
+ });
2293
+ await this.store.declareCollection({
2294
+ collection: INTEGRATION_SETTINGS,
2295
+ columns: INTEGRATION_SETTINGS_COLUMNS
2296
+ });
2297
+ await this.store.declareCollection({
2298
+ collection: DEVICES,
2299
+ columns: DEVICES_COLUMNS,
2300
+ indexes: DEVICES_INDEXES
2301
+ });
2302
+ await this.store.declareCollection({
2303
+ collection: DEVICE_SETTINGS,
2304
+ columns: DEVICE_SETTINGS_COLUMNS
2305
+ });
2306
+ const ints = await this.store.query({
2307
+ collection: INTEGRATIONS,
2308
+ filter: {
2309
+ orderBy: {
2310
+ field: "id",
2311
+ direction: "desc"
2312
+ },
2313
+ limit: 1
2314
+ }
2315
+ });
2268
2316
  if (ints[0]) {
2269
- const num = parseInt(String(ints[0]["id"]).replace("int_", ""), 10);
2317
+ const num = parseInt(ints[0].id.replace("int_", ""), 10);
2270
2318
  if (!isNaN(num)) integrationCounter = num;
2271
2319
  }
2272
- const devs = await this.backend.tableQuery?.("devices", {
2273
- orderBy: {
2274
- field: "id",
2275
- direction: "desc"
2276
- },
2277
- limit: 1
2278
- }) ?? [];
2320
+ const devs = await this.store.query({
2321
+ collection: DEVICES,
2322
+ filter: {
2323
+ orderBy: {
2324
+ field: "id",
2325
+ direction: "desc"
2326
+ },
2327
+ limit: 1
2328
+ }
2329
+ });
2279
2330
  if (devs[0]) {
2280
- const num = parseInt(String(devs[0]["id"]).replace("dev_", ""), 10);
2331
+ const num = parseInt(devs[0].id.replace("dev_", ""), 10);
2281
2332
  if (!isNaN(num)) deviceCounter = num;
2282
2333
  }
2283
2334
  }
2284
2335
  async createIntegration(input) {
2285
2336
  const id = nextIntegrationId();
2286
2337
  const now = Math.floor(Date.now() / 1e3);
2287
- await this.backend.tableInsert?.("integrations", {
2288
- id,
2289
- addon_id: input.addonId,
2290
- name: input.name,
2291
- enabled: input.enabled !== false ? 1 : 0,
2292
- info: JSON.stringify(input.info ?? {}),
2293
- created_at: now,
2294
- updated_at: now
2338
+ await this.store.insert({
2339
+ collection: INTEGRATIONS,
2340
+ record: {
2341
+ id,
2342
+ data: {
2343
+ addon_id: input.addonId,
2344
+ name: input.name,
2345
+ enabled: input.enabled !== false ? 1 : 0,
2346
+ info: input.info ?? {},
2347
+ created_at: now,
2348
+ updated_at: now
2349
+ }
2350
+ }
2295
2351
  });
2296
2352
  if (input.settings) await this.setIntegrationSettings(id, input.settings);
2297
2353
  return {
@@ -2305,52 +2361,95 @@ var IntegrationRegistry = class {
2305
2361
  };
2306
2362
  }
2307
2363
  async getIntegration(id) {
2308
- const row = await this.backend.tableGet?.("integrations", { id });
2309
- return row ? this.mapIntegration(row) : null;
2364
+ const rows = await this.store.query({
2365
+ collection: INTEGRATIONS,
2366
+ filter: {
2367
+ where: { id },
2368
+ limit: 1
2369
+ }
2370
+ });
2371
+ return rows[0] ? this.mapIntegration(rows[0].data) : null;
2310
2372
  }
2311
2373
  async getIntegrationByAddonId(addonId) {
2312
- const row = await this.backend.tableGet?.("integrations", { addon_id: addonId });
2313
- return row ? this.mapIntegration(row) : null;
2374
+ const rows = await this.store.query({
2375
+ collection: INTEGRATIONS,
2376
+ filter: {
2377
+ where: { addon_id: addonId },
2378
+ limit: 1
2379
+ }
2380
+ });
2381
+ return rows[0] ? this.mapIntegration(rows[0].data) : null;
2314
2382
  }
2315
2383
  async listIntegrations() {
2316
- return (await this.backend.tableQuery?.("integrations", { orderBy: {
2317
- field: "created_at",
2318
- direction: "asc"
2319
- } }) ?? []).map((r) => this.mapIntegration(r));
2384
+ return (await this.store.query({
2385
+ collection: INTEGRATIONS,
2386
+ filter: { orderBy: {
2387
+ field: "created_at",
2388
+ direction: "asc"
2389
+ } }
2390
+ })).map((r) => this.mapIntegration(r.data));
2320
2391
  }
2321
2392
  async updateIntegration(id, updates) {
2322
2393
  const updateRow = { updated_at: Math.floor(Date.now() / 1e3) };
2323
2394
  if (updates.name !== void 0) updateRow["name"] = updates.name;
2324
2395
  if (updates.enabled !== void 0) updateRow["enabled"] = updates.enabled ? 1 : 0;
2325
- if (updates.info !== void 0) updateRow["info"] = JSON.stringify(updates.info);
2326
- await this.backend.tableUpdate?.("integrations", { id }, updateRow);
2396
+ if (updates.info !== void 0) updateRow["info"] = updates.info;
2397
+ await this.store.updateWhere({
2398
+ collection: INTEGRATIONS,
2399
+ filter: { where: { id } },
2400
+ data: updateRow
2401
+ });
2327
2402
  return this.getIntegration(id);
2328
2403
  }
2329
2404
  async deleteIntegration(id) {
2330
2405
  const devices = await this.listDevices(id);
2331
- for (const d of devices) await this.backend.tableDelete?.("device_settings_kv", { device_id: d.id });
2332
- await this.backend.tableDelete?.("devices", { integration_id: id });
2333
- await this.backend.tableDelete?.("integration_settings", { integration_id: id });
2334
- await this.backend.tableDelete?.("integrations", { id });
2406
+ for (const d of devices) await this.store.deleteWhere({
2407
+ collection: DEVICE_SETTINGS,
2408
+ filter: { where: { device_id: d.id } }
2409
+ });
2410
+ await this.store.deleteWhere({
2411
+ collection: DEVICES,
2412
+ filter: { where: { integration_id: id } }
2413
+ });
2414
+ await this.store.deleteWhere({
2415
+ collection: INTEGRATION_SETTINGS,
2416
+ filter: { where: { integration_id: id } }
2417
+ });
2418
+ await this.store.deleteWhere({
2419
+ collection: INTEGRATIONS,
2420
+ filter: { where: { id } }
2421
+ });
2335
2422
  return true;
2336
2423
  }
2337
2424
  async getIntegrationSettings(integrationId) {
2338
2425
  const result = {};
2339
- const rows = await this.backend.tableQuery?.("integration_settings", { where: { integration_id: integrationId } }) ?? [];
2340
- for (const row of rows) result[String(row["key"])] = deserializeSetting(String(row["value"]), String(row["value_type"]));
2426
+ const rows = await this.store.query({
2427
+ collection: INTEGRATION_SETTINGS,
2428
+ filter: { where: { integration_id: integrationId } }
2429
+ });
2430
+ for (const row of rows) result[String(row.data["key"])] = deserializeSetting(row.data["value"], String(row.data["value_type"]));
2341
2431
  return result;
2342
2432
  }
2343
2433
  async setIntegrationSetting(integrationId, key, value) {
2344
2434
  const s = serializeSetting(value);
2345
- await this.backend.tableDelete?.("integration_settings", {
2346
- integration_id: integrationId,
2347
- key
2435
+ await this.store.deleteWhere({
2436
+ collection: INTEGRATION_SETTINGS,
2437
+ filter: { where: {
2438
+ integration_id: integrationId,
2439
+ key
2440
+ } }
2348
2441
  });
2349
- await this.backend.tableInsert?.("integration_settings", {
2350
- integration_id: integrationId,
2351
- key,
2352
- value: s.value,
2353
- value_type: s.valueType
2442
+ await this.store.insert({
2443
+ collection: INTEGRATION_SETTINGS,
2444
+ record: {
2445
+ id: `${integrationId}:${key}`,
2446
+ data: {
2447
+ integration_id: integrationId,
2448
+ key,
2449
+ value: s.value,
2450
+ value_type: s.valueType
2451
+ }
2452
+ }
2354
2453
  });
2355
2454
  }
2356
2455
  async setIntegrationSettings(integrationId, settings) {
@@ -2359,16 +2458,21 @@ var IntegrationRegistry = class {
2359
2458
  async createDevice(input) {
2360
2459
  const id = nextDeviceId();
2361
2460
  const now = Math.floor(Date.now() / 1e3);
2362
- await this.backend.tableInsert?.("devices", {
2363
- id,
2364
- integration_id: input.integrationId,
2365
- stable_id: input.stableId,
2366
- type: input.type,
2367
- name: input.name,
2368
- enabled: input.enabled !== false ? 1 : 0,
2369
- info: JSON.stringify(input.info ?? {}),
2370
- created_at: now,
2371
- updated_at: now
2461
+ await this.store.insert({
2462
+ collection: DEVICES,
2463
+ record: {
2464
+ id,
2465
+ data: {
2466
+ integration_id: input.integrationId,
2467
+ stable_id: input.stableId,
2468
+ type: input.type,
2469
+ name: input.name,
2470
+ enabled: input.enabled !== false ? 1 : 0,
2471
+ info: input.info ?? {},
2472
+ created_at: now,
2473
+ updated_at: now
2474
+ }
2475
+ }
2372
2476
  });
2373
2477
  if (input.settings) await this.setDeviceSettings(id, input.settings);
2374
2478
  return {
@@ -2384,65 +2488,101 @@ var IntegrationRegistry = class {
2384
2488
  };
2385
2489
  }
2386
2490
  async getDevice(id) {
2387
- const row = await this.backend.tableGet?.("devices", { id });
2388
- return row ? this.mapDevice(row) : null;
2491
+ const rows = await this.store.query({
2492
+ collection: DEVICES,
2493
+ filter: {
2494
+ where: { id },
2495
+ limit: 1
2496
+ }
2497
+ });
2498
+ return rows[0] ? this.mapDevice(rows[0].data) : null;
2389
2499
  }
2390
2500
  async getDeviceByStableId(stableId) {
2391
- const row = await this.backend.tableGet?.("devices", { stable_id: stableId });
2392
- return row ? this.mapDevice(row) : null;
2501
+ const rows = await this.store.query({
2502
+ collection: DEVICES,
2503
+ filter: {
2504
+ where: { stable_id: stableId },
2505
+ limit: 1
2506
+ }
2507
+ });
2508
+ return rows[0] ? this.mapDevice(rows[0].data) : null;
2393
2509
  }
2394
2510
  async listDevices(integrationId) {
2395
- const options = integrationId ? {
2396
- where: { integration_id: integrationId },
2397
- orderBy: {
2398
- field: "created_at",
2399
- direction: "asc"
2511
+ return (await this.store.query({
2512
+ collection: DEVICES,
2513
+ filter: {
2514
+ ...integrationId ? { where: { integration_id: integrationId } } : {},
2515
+ orderBy: {
2516
+ field: "created_at",
2517
+ direction: "asc"
2518
+ }
2400
2519
  }
2401
- } : { orderBy: {
2402
- field: "created_at",
2403
- direction: "asc"
2404
- } };
2405
- return (await this.backend.tableQuery?.("devices", options) ?? []).map((r) => this.mapDevice(r));
2520
+ })).map((r) => this.mapDevice(r.data));
2406
2521
  }
2407
2522
  async listCameras() {
2408
- return (await this.backend.tableQuery?.("devices", {
2409
- where: { type: "camera" },
2410
- orderBy: {
2411
- field: "created_at",
2412
- direction: "asc"
2523
+ return (await this.store.query({
2524
+ collection: DEVICES,
2525
+ filter: {
2526
+ where: { type: "camera" },
2527
+ orderBy: {
2528
+ field: "created_at",
2529
+ direction: "asc"
2530
+ }
2413
2531
  }
2414
- }) ?? []).map((r) => this.mapDevice(r));
2532
+ })).map((r) => this.mapDevice(r.data));
2415
2533
  }
2416
2534
  async updateDevice(id, updates) {
2417
2535
  const updateRow = { updated_at: Math.floor(Date.now() / 1e3) };
2418
2536
  if (updates.name !== void 0) updateRow["name"] = updates.name;
2419
2537
  if (updates.enabled !== void 0) updateRow["enabled"] = updates.enabled ? 1 : 0;
2420
- if (updates.info !== void 0) updateRow["info"] = JSON.stringify(updates.info);
2421
- await this.backend.tableUpdate?.("devices", { id }, updateRow);
2538
+ if (updates.info !== void 0) updateRow["info"] = updates.info;
2539
+ await this.store.updateWhere({
2540
+ collection: DEVICES,
2541
+ filter: { where: { id } },
2542
+ data: updateRow
2543
+ });
2422
2544
  return this.getDevice(id);
2423
2545
  }
2424
2546
  async deleteDevice(id) {
2425
- await this.backend.tableDelete?.("device_settings_kv", { device_id: id });
2426
- await this.backend.tableDelete?.("devices", { id });
2547
+ await this.store.deleteWhere({
2548
+ collection: DEVICE_SETTINGS,
2549
+ filter: { where: { device_id: id } }
2550
+ });
2551
+ await this.store.deleteWhere({
2552
+ collection: DEVICES,
2553
+ filter: { where: { id } }
2554
+ });
2427
2555
  return true;
2428
2556
  }
2429
2557
  async getDeviceSettings(deviceId) {
2430
2558
  const result = {};
2431
- const rows = await this.backend.tableQuery?.("device_settings_kv", { where: { device_id: deviceId } }) ?? [];
2432
- for (const row of rows) result[String(row["key"])] = deserializeSetting(String(row["value"]), String(row["value_type"]));
2559
+ const rows = await this.store.query({
2560
+ collection: DEVICE_SETTINGS,
2561
+ filter: { where: { device_id: deviceId } }
2562
+ });
2563
+ for (const row of rows) result[String(row.data["key"])] = deserializeSetting(row.data["value"], String(row.data["value_type"]));
2433
2564
  return result;
2434
2565
  }
2435
2566
  async setDeviceSetting(deviceId, key, value) {
2436
2567
  const s = serializeSetting(value);
2437
- await this.backend.tableDelete?.("device_settings_kv", {
2438
- device_id: deviceId,
2439
- key
2568
+ await this.store.deleteWhere({
2569
+ collection: DEVICE_SETTINGS,
2570
+ filter: { where: {
2571
+ device_id: deviceId,
2572
+ key
2573
+ } }
2440
2574
  });
2441
- await this.backend.tableInsert?.("device_settings_kv", {
2442
- device_id: deviceId,
2443
- key,
2444
- value: s.value,
2445
- value_type: s.valueType
2575
+ await this.store.insert({
2576
+ collection: DEVICE_SETTINGS,
2577
+ record: {
2578
+ id: `${deviceId}:${key}`,
2579
+ data: {
2580
+ device_id: deviceId,
2581
+ key,
2582
+ value: s.value,
2583
+ value_type: s.valueType
2584
+ }
2585
+ }
2446
2586
  });
2447
2587
  }
2448
2588
  async setDeviceSettings(deviceId, settings) {
@@ -2454,7 +2594,7 @@ var IntegrationRegistry = class {
2454
2594
  addonId: String(row["addon_id"]),
2455
2595
  name: String(row["name"]),
2456
2596
  enabled: row["enabled"] === 1,
2457
- info: typeof row["info"] === "string" ? parseJsonObject(row["info"]) ?? {} : {},
2597
+ info: readInfo(row["info"]),
2458
2598
  createdAt: Number(row["created_at"]),
2459
2599
  updatedAt: Number(row["updated_at"])
2460
2600
  };
@@ -2467,7 +2607,7 @@ var IntegrationRegistry = class {
2467
2607
  type: String(row["type"]),
2468
2608
  name: String(row["name"]),
2469
2609
  enabled: row["enabled"] === 1,
2470
- info: typeof row["info"] === "string" ? parseJsonObject(row["info"]) ?? {} : {},
2610
+ info: readInfo(row["info"]),
2471
2611
  createdAt: Number(row["created_at"]),
2472
2612
  updatedAt: Number(row["updated_at"])
2473
2613
  };
@@ -94208,4 +94348,4 @@ var LifecycleJobEngine = class {
94208
94348
  }
94209
94349
  };
94210
94350
  //#endregion
94211
- export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CustomActionRegistry, DEFAULT_DATA_PATH, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LifecycleJobEngine, LifecycleStateMachine, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LokiDestination, LokiLoggingAddon, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, RESTART_MARKER_FILE, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, __resetCapUsageRegistryForTests, adaptBrokerToCluster, addonSettingsCapability, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, capActionName, capActionSuffix, capBareAction, capServiceName, classifyCapRoute, clearPendingRestart, clusterEventTopic, clusterSecretMatches, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonService, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCoreCapService, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createKernelHwAccel, createLocalTransport, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, detectWorkspacePackagesDir, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, expandCapMethods, fetchJson, findInPath, formatLogLine, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, installManifestNativeDeps, installManifestPythonDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcChildLink, ipcParentLink, isAddonDeploySource, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceNewer, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, parseCapAction, parseRangeHeader, parseTokenizedUrl, proxyToUpstream, readPendingRestart, readinessKey, registerEventBusService, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runNpm, scheduleSelfRestart, scopeKey, scopesAllowDeviceCap, serializeTypedArrays, setHubConnected, setNodeEventInterest, startHeapWatch, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, writePendingRestart };
94351
+ export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CustomActionRegistry, DEFAULT_DATA_PATH, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LokiDestination, LokiLoggingAddon, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, RESTART_MARKER_FILE, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, __resetCapUsageRegistryForTests, adaptBrokerToCluster, addonSettingsCapability, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, capActionName, capActionSuffix, capBareAction, capServiceName, classifyCapRoute, clearPendingRestart, clusterEventTopic, clusterSecretMatches, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonService, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCoreCapService, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createKernelHwAccel, createLocalTransport, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, detectWorkspacePackagesDir, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, expandCapMethods, fetchJson, findInPath, formatLogLine, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, installManifestNativeDeps, installManifestPythonDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcChildLink, ipcParentLink, isAddonDeploySource, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceNewer, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, parseCapAction, parseRangeHeader, parseTokenizedUrl, proxyToUpstream, readPendingRestart, readinessKey, registerEventBusService, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runNpm, scheduleSelfRestart, scopeKey, scopesAllowDeviceCap, serializeTypedArrays, setHubConnected, setNodeEventInterest, startHeapWatch, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, writePendingRestart };