@camstack/system 1.2.67 → 1.2.69

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 (55) 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.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  9. package/dist/builtins/console-logging/index.js +1 -1
  10. package/dist/builtins/console-logging/index.mjs +1 -1
  11. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  12. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  13. package/dist/builtins/device-manager/adoption-job-engine.d.ts +89 -0
  14. package/dist/builtins/device-manager/device-manager.addon.d.ts +8 -0
  15. package/dist/builtins/device-manager/device-manager.addon.js +329 -2
  16. package/dist/builtins/device-manager/device-manager.addon.mjs +329 -2
  17. package/dist/builtins/device-manager/device-provider-context.d.ts +3 -0
  18. package/dist/builtins/device-manager/device-queries.d.ts +3 -0
  19. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  20. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  21. package/dist/builtins/hub-forwarder/index.js +1 -1
  22. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  23. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  24. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  25. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  26. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  27. package/dist/builtins/local-network/local-network.addon.js +1 -1
  28. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  29. package/dist/builtins/loki-logging/index.js +1 -1
  30. package/dist/builtins/loki-logging/index.mjs +1 -1
  31. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  32. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  33. package/dist/builtins/platform-probe/index.js +1 -1
  34. package/dist/builtins/platform-probe/index.mjs +1 -1
  35. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  36. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  37. package/dist/builtins/snapshot/index.js +339 -2
  38. package/dist/builtins/snapshot/index.mjs +339 -2
  39. package/dist/builtins/snapshot/snapshot-link-url.d.ts +66 -0
  40. package/dist/builtins/snapshot/snapshot.addon.d.ts +79 -0
  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/sqlite-settings.addon.js +1 -1
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/system-config/system-config.addon.js +1 -1
  48. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  49. package/dist/builtins/winston-logging/index.js +1 -1
  50. package/dist/builtins/winston-logging/index.mjs +1 -1
  51. package/dist/{dist-CbS6uoSb.mjs → dist-C-QzFJ8v.mjs} +313 -1
  52. package/dist/{dist-NRYjb8qK.js → dist-D7wC-S4p.js} +313 -1
  53. package/dist/index.js +1 -1
  54. package/dist/index.mjs +1 -1
  55. package/package.json +1 -1
@@ -1,6 +1,294 @@
1
- import { A as deviceManagerCapability, F as enumerateItemArrayFields, I as enumerateSchemaFields, M as deviceStatusCapability, Rt as sleep, St as WELL_KNOWN_TAB_MAP, Z as normalizeUnit, _t as DeviceFeature, a as CAP_NAMES_WITH_STATUS, et as parseStreamParamsFormPatch, ft as errMsg, j as deviceStateCapability, jt as isDeviceConfigCap, p as STREAM_PROFILE_META, pt as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, vt as DeviceRole, w as buildStreamParamsConfigSchema, yt as DeviceType, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { A as deviceManagerCapability, F as enumerateItemArrayFields, I as enumerateSchemaFields, M as deviceStatusCapability, Rt as sleep, St as WELL_KNOWN_TAB_MAP, Z as normalizeUnit, _t as DeviceFeature, a as CAP_NAMES_WITH_STATUS, et as parseStreamParamsFormPatch, ft as errMsg, j as deviceStateCapability, jt as isDeviceConfigCap, p as STREAM_PROFILE_META, pt as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, vt as DeviceRole, w as buildStreamParamsConfigSchema, yt as DeviceType, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
3
3
  import { randomUUID } from "node:crypto";
4
+ //#region src/builtins/device-manager/adoption-job-engine.ts
5
+ /** How many finished jobs are kept per (addonId, integrationId). */
6
+ var JOB_HISTORY = 20;
7
+ function snapshot(j) {
8
+ let adopted = 0;
9
+ let alreadyAdopted = 0;
10
+ let failed = 0;
11
+ let processed = 0;
12
+ let accessoriesCreated = 0;
13
+ for (const r of j.results) {
14
+ if (r.outcome === "cancelled") continue;
15
+ processed += 1;
16
+ accessoriesCreated += r.accessoryCount;
17
+ if (r.outcome === "adopted") adopted += 1;
18
+ else if (r.outcome === "already-adopted") alreadyAdopted += 1;
19
+ else if (r.outcome === "failed") failed += 1;
20
+ }
21
+ return {
22
+ jobId: j.jobId,
23
+ addonId: j.addonId,
24
+ integrationId: j.integrationId,
25
+ state: j.state,
26
+ total: j.total,
27
+ processed,
28
+ adopted,
29
+ alreadyAdopted,
30
+ failed,
31
+ accessoriesCreated,
32
+ currentChildNativeId: j.currentChildNativeId,
33
+ results: j.results.map((r) => ({
34
+ childNativeId: r.childNativeId,
35
+ outcome: r.outcome,
36
+ parentDeviceId: r.parentDeviceId,
37
+ accessoryCount: r.accessoryCount,
38
+ error: r.error
39
+ })),
40
+ startedAt: j.startedAt,
41
+ finishedAt: j.finishedAt,
42
+ error: j.error
43
+ };
44
+ }
45
+ var AdoptionJobEngine = class {
46
+ deps;
47
+ jobs = /* @__PURE__ */ new Map();
48
+ seq = 0;
49
+ constructor(deps) {
50
+ this.deps = deps;
51
+ }
52
+ now() {
53
+ return this.deps.now?.() ?? Date.now();
54
+ }
55
+ newId() {
56
+ if (this.deps.newId) return this.deps.newId();
57
+ this.seq += 1;
58
+ return `adopt-${Date.now().toString(36)}-${this.seq}`;
59
+ }
60
+ /**
61
+ * Accept the batch and return immediately. The provider is resolved BEFORE
62
+ * returning so an unroutable `addonId` is refused at the call the operator
63
+ * made, not buried in a job they have to go looking for.
64
+ */
65
+ async start(input) {
66
+ const provider = await this.deps.resolveProvider(input.addonId);
67
+ const job = {
68
+ jobId: this.newId(),
69
+ addonId: input.addonId,
70
+ integrationId: input.integrationId,
71
+ state: "running",
72
+ total: input.childNativeIds.length,
73
+ currentChildNativeId: null,
74
+ results: [],
75
+ startedAt: this.now(),
76
+ finishedAt: null,
77
+ error: null,
78
+ cancelRequested: false,
79
+ done: Promise.resolve()
80
+ };
81
+ this.jobs.set(job.jobId, job);
82
+ this.prune(input.addonId, input.integrationId);
83
+ this.deps.logger.info("adoption job started", {
84
+ tags: { addonId: input.addonId },
85
+ meta: {
86
+ jobId: job.jobId,
87
+ integrationId: input.integrationId,
88
+ total: job.total
89
+ }
90
+ });
91
+ job.done = this.run(job, provider, input);
92
+ return { jobId: job.jobId };
93
+ }
94
+ get(jobId) {
95
+ const j = this.jobs.get(jobId);
96
+ return j ? snapshot(j) : null;
97
+ }
98
+ list(filter) {
99
+ return [...this.jobs.values()].filter((j) => (filter.addonId === void 0 || j.addonId === filter.addonId) && (filter.integrationId === void 0 || j.integrationId === filter.integrationId)).sort((a, b) => b.startedAt - a.startedAt || b.jobId.localeCompare(a.jobId)).map(snapshot);
100
+ }
101
+ /** Cooperative cancel — the in-flight candidate finishes, the rest do not start. */
102
+ cancel(jobId) {
103
+ const job = this.jobs.get(jobId);
104
+ if (!job || job.state !== "running") return false;
105
+ job.cancelRequested = true;
106
+ this.deps.logger.info("adoption job cancel requested", {
107
+ tags: { addonId: job.addonId },
108
+ meta: {
109
+ jobId,
110
+ integrationId: job.integrationId
111
+ }
112
+ });
113
+ return true;
114
+ }
115
+ /** Test-only: await the detached loop. Never called by production code. */
116
+ async waitForTest(jobId) {
117
+ await this.jobs.get(jobId)?.done;
118
+ }
119
+ prune(addonId, integrationId) {
120
+ const finished = [...this.jobs.values()].filter((j) => j.addonId === addonId && j.integrationId === integrationId && j.state !== "running").sort((a, b) => b.startedAt - a.startedAt);
121
+ for (const j of finished.slice(JOB_HISTORY)) this.jobs.delete(j.jobId);
122
+ }
123
+ async run(job, provider, input) {
124
+ try {
125
+ const already = await this.alreadyAdopted(provider, input, job);
126
+ for (const childNativeId of input.childNativeIds) {
127
+ if (job.cancelRequested) {
128
+ job.results.push({
129
+ childNativeId,
130
+ outcome: "cancelled",
131
+ parentDeviceId: null,
132
+ accessoryCount: 0,
133
+ error: null
134
+ });
135
+ continue;
136
+ }
137
+ if (already.has(childNativeId)) {
138
+ job.results.push({
139
+ childNativeId,
140
+ outcome: "already-adopted",
141
+ parentDeviceId: null,
142
+ accessoryCount: 0,
143
+ error: null
144
+ });
145
+ this.deps.logger.info("adoption job: candidate already adopted, skipped", {
146
+ tags: { addonId: job.addonId },
147
+ meta: {
148
+ jobId: job.jobId,
149
+ integrationId: job.integrationId,
150
+ childNativeId
151
+ }
152
+ });
153
+ continue;
154
+ }
155
+ job.currentChildNativeId = childNativeId;
156
+ await this.adoptOne(job, provider, input, childNativeId);
157
+ job.currentChildNativeId = null;
158
+ }
159
+ job.state = job.cancelRequested ? "cancelled" : "done";
160
+ } catch (err) {
161
+ job.state = "failed";
162
+ job.error = errMsg(err);
163
+ this.deps.logger.error("adoption job failed", {
164
+ tags: { addonId: job.addonId },
165
+ meta: {
166
+ jobId: job.jobId,
167
+ integrationId: job.integrationId,
168
+ error: job.error
169
+ }
170
+ });
171
+ } finally {
172
+ job.currentChildNativeId = null;
173
+ job.finishedAt = this.now();
174
+ const s = snapshot(job);
175
+ this.deps.logger.info("adoption job finished", {
176
+ tags: { addonId: job.addonId },
177
+ meta: {
178
+ jobId: job.jobId,
179
+ integrationId: job.integrationId,
180
+ state: s.state,
181
+ total: s.total,
182
+ adopted: s.adopted,
183
+ alreadyAdopted: s.alreadyAdopted,
184
+ failed: s.failed,
185
+ accessoriesCreated: s.accessoriesCreated,
186
+ durationMs: (s.finishedAt ?? 0) - s.startedAt
187
+ }
188
+ });
189
+ }
190
+ }
191
+ /**
192
+ * One `listCandidates` snapshot at job start. A read that FAILS must not be
193
+ * read as "nothing is adopted" — that would send every candidate to the
194
+ * provider and turn a safe retry back into a wall of duplicate-stableId
195
+ * errors — so a failure yields an empty set AND a warning, and the
196
+ * per-candidate failure path stays the backstop.
197
+ */
198
+ async alreadyAdopted(provider, input, job) {
199
+ try {
200
+ const page = await provider.listCandidates({
201
+ integrationId: input.integrationId,
202
+ page: 1,
203
+ pageSize: 2e4,
204
+ ...input.filter !== void 0 ? { filter: input.filter } : {}
205
+ });
206
+ const out = /* @__PURE__ */ new Set();
207
+ for (const c of page.candidates) if (c.alreadyAdopted === true) out.add(c.childNativeId);
208
+ return out;
209
+ } catch (err) {
210
+ this.deps.logger.warn("adoption job: pre-flight listCandidates failed — every candidate will be attempted", {
211
+ tags: { addonId: job.addonId },
212
+ meta: {
213
+ jobId: job.jobId,
214
+ integrationId: job.integrationId,
215
+ error: errMsg(err)
216
+ }
217
+ });
218
+ return /* @__PURE__ */ new Set();
219
+ }
220
+ }
221
+ async adoptOne(job, provider, input, childNativeId) {
222
+ const startedAt = this.now();
223
+ try {
224
+ const per = input.perCandidate?.[childNativeId];
225
+ const entry = (await provider.adopt({
226
+ integrationId: input.integrationId,
227
+ childNativeIds: [childNativeId],
228
+ ...input.filter !== void 0 ? { filter: input.filter } : {},
229
+ ...input.importLocations !== void 0 ? { importLocations: input.importLocations } : {},
230
+ ...per !== void 0 ? { perCandidate: { [childNativeId]: per } } : {}
231
+ })).adopted[0];
232
+ if (!entry) {
233
+ job.results.push({
234
+ childNativeId,
235
+ outcome: "failed",
236
+ parentDeviceId: null,
237
+ accessoryCount: 0,
238
+ error: "provider returned no adopted entry"
239
+ });
240
+ this.deps.logger.warn("adoption job: provider adopted nothing for candidate", {
241
+ tags: { addonId: job.addonId },
242
+ meta: {
243
+ jobId: job.jobId,
244
+ integrationId: job.integrationId,
245
+ childNativeId
246
+ }
247
+ });
248
+ return;
249
+ }
250
+ job.results.push({
251
+ childNativeId,
252
+ outcome: "adopted",
253
+ parentDeviceId: entry.parentDeviceId,
254
+ accessoryCount: entry.accessoryDeviceIds.length,
255
+ error: null
256
+ });
257
+ this.deps.logger.info("adoption job: candidate adopted", {
258
+ tags: {
259
+ deviceId: entry.parentDeviceId,
260
+ addonId: job.addonId
261
+ },
262
+ meta: {
263
+ jobId: job.jobId,
264
+ integrationId: job.integrationId,
265
+ childNativeId,
266
+ accessories: entry.accessoryDeviceIds.length,
267
+ durationMs: this.now() - startedAt
268
+ }
269
+ });
270
+ } catch (err) {
271
+ job.results.push({
272
+ childNativeId,
273
+ outcome: "failed",
274
+ parentDeviceId: null,
275
+ accessoryCount: 0,
276
+ error: errMsg(err)
277
+ });
278
+ this.deps.logger.warn("adoption job: candidate failed", {
279
+ tags: { addonId: job.addonId },
280
+ meta: {
281
+ jobId: job.jobId,
282
+ integrationId: job.integrationId,
283
+ childNativeId,
284
+ durationMs: this.now() - startedAt,
285
+ error: errMsg(err)
286
+ }
287
+ });
288
+ }
289
+ }
290
+ };
291
+ //#endregion
4
292
  //#region src/builtins/device-manager/day-night-config-schema.ts
5
293
  var MODE_LABELS = {
6
294
  auto: "Auto",
@@ -1123,6 +1411,27 @@ async function adoptionRelease(pctx, input) {
1123
1411
  const { addonId, ...rest } = input;
1124
1412
  return (await pctx.host.requireDeviceAdoptionProvider(addonId)).release(rest);
1125
1413
  }
1414
+ async function adoptionStartJob(pctx, input) {
1415
+ const { addonId, integrationId, childNativeIds, filter, importLocations, perCandidate } = input;
1416
+ return pctx.host.adoptionJobs.start({
1417
+ addonId,
1418
+ integrationId,
1419
+ childNativeIds,
1420
+ ...filter !== void 0 ? { filter } : {},
1421
+ ...importLocations !== void 0 ? { importLocations } : {},
1422
+ ...perCandidate !== void 0 ? { perCandidate } : {}
1423
+ });
1424
+ }
1425
+ async function adoptionListJobs(pctx, input) {
1426
+ const { addonId, integrationId } = input;
1427
+ return pctx.host.adoptionJobs.list({
1428
+ addonId,
1429
+ ...integrationId !== void 0 ? { integrationId } : {}
1430
+ });
1431
+ }
1432
+ async function adoptionCancelJob(pctx, input) {
1433
+ return { cancelled: pctx.host.adoptionJobs.cancel(input.jobId) };
1434
+ }
1126
1435
  async function adoptionResync(pctx, input) {
1127
1436
  const { camDeviceId, resetToSource } = input;
1128
1437
  let owningAddonId = pctx.registry?.getAddonId(camDeviceId) ?? null;
@@ -3924,6 +4233,8 @@ var DeviceManagerAddon = class extends BaseAddon {
3924
4233
  * the D3 re-handshake after device restore is the reliable replacement.
3925
4234
  */
3926
4235
  remoteNativeCaps = /* @__PURE__ */ new Map();
4236
+ /** Background adoption jobs — lazily constructed (needs `ctx.logger`). */
4237
+ adoptionJobEngine = null;
3927
4238
  /** The runtime-state mirror, asserted present (constructed in onInitialize). */
3928
4239
  get stateMirror() {
3929
4240
  if (!this.stateMirrorImpl) throw new Error("DeviceManagerAddon: state mirror accessed before onInitialize");
@@ -3949,9 +4260,22 @@ var DeviceManagerAddon = class extends BaseAddon {
3949
4260
  resolveDeviceProbed: (deviceId) => this.stateMirror.resolveDeviceProbed(deviceId),
3950
4261
  waitDeviceProvider: (addonId, timeoutMs) => this.waitDeviceProvider(addonId, timeoutMs),
3951
4262
  requireDeviceProvider: (addonId) => this.requireDeviceProvider(addonId),
3952
- requireDeviceAdoptionProvider: (addonId) => this.requireDeviceAdoptionProvider(addonId)
4263
+ requireDeviceAdoptionProvider: (addonId) => this.requireDeviceAdoptionProvider(addonId),
4264
+ adoptionJobs: this.adoptionJobsImpl
3953
4265
  };
3954
4266
  }
4267
+ /**
4268
+ * Background adoption jobs. In-RAM and process-lifetime: a restart forgets
4269
+ * them, which is safe because adoption is keyed by a stable id — re-running a
4270
+ * job re-adopts nothing (see `AdoptionJobEngine`).
4271
+ */
4272
+ get adoptionJobsImpl() {
4273
+ if (!this.adoptionJobEngine) this.adoptionJobEngine = new AdoptionJobEngine({
4274
+ resolveProvider: async (addonId) => this.requireDeviceAdoptionProvider(addonId),
4275
+ logger: this.ctx.logger
4276
+ });
4277
+ return this.adoptionJobEngine;
4278
+ }
3955
4279
  /** Wait for a device-provider by addonId, returning null on timeout. */
3956
4280
  async waitDeviceProvider(addonId, timeoutMs = 5e3) {
3957
4281
  const provider = await this.capabilityRegistry?.waitForProvider("device-provider", addonId, timeoutMs);
@@ -4131,6 +4455,9 @@ var DeviceManagerAddon = class extends BaseAddon {
4131
4455
  adoptionRefresh: (input) => adoptionRefresh(pctx, input),
4132
4456
  adoptionAdopt: (input) => adoptionAdopt(pctx, input),
4133
4457
  adoptionRelease: (input) => adoptionRelease(pctx, input),
4458
+ adoptionStartJob: (input) => adoptionStartJob(pctx, input),
4459
+ adoptionListJobs: (input) => adoptionListJobs(pctx, input),
4460
+ adoptionCancelJob: (input) => adoptionCancelJob(pctx, input),
4134
4461
  adoptionResync: (input) => adoptionResync(pctx, input),
4135
4462
  discoveryProviders: async () => {
4136
4463
  return { providers: (await this.listDiscoveryCapableProviderIds()).map((addonId) => ({
@@ -1,4 +1,5 @@
1
1
  import { AddonContext, ICapabilityRegistry, IDeviceAdoptionProvider, IDeviceManagerProvider, IDeviceOpsProvider, IDeviceRegistry, InferProvider, deviceProviderCapability } from '@camstack/types';
2
+ import { AdoptionJobEngine } from './adoption-job-engine.js';
2
3
  import { BindingsDeps } from './device-bindings-store.js';
3
4
  import { DeviceManagerSettings, DeviceMetaStore } from './device-meta-store.js';
4
5
  type IDeviceProviderCap = InferProvider<typeof deviceProviderCapability>;
@@ -29,6 +30,8 @@ export interface ProviderHost {
29
30
  requireDeviceProvider(addonId: string): Promise<IDeviceProviderCap>;
30
31
  /** Require a device-adoption provider by addonId — throws if not found. */
31
32
  requireDeviceAdoptionProvider(addonId: string): Promise<IDeviceAdoptionProvider>;
33
+ /** Background adoption jobs — the deadline-free form of `adoptionAdopt`. */
34
+ readonly adoptionJobs: AdoptionJobEngine;
32
35
  }
33
36
  /**
34
37
  * Full context the provider-method modules consume. `provider` is a lazy getter
@@ -33,6 +33,9 @@ export declare function adoptionListCandidates(pctx: ProviderContext, input: Par
33
33
  export declare function adoptionRefresh(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionRefresh']>[0]): ReturnType<IDeviceManagerProvider['adoptionRefresh']>;
34
34
  export declare function adoptionAdopt(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionAdopt']>[0]): ReturnType<IDeviceManagerProvider['adoptionAdopt']>;
35
35
  export declare function adoptionRelease(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionRelease']>[0]): ReturnType<IDeviceManagerProvider['adoptionRelease']>;
36
+ export declare function adoptionStartJob(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionStartJob']>[0]): ReturnType<IDeviceManagerProvider['adoptionStartJob']>;
37
+ export declare function adoptionListJobs(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionListJobs']>[0]): ReturnType<IDeviceManagerProvider['adoptionListJobs']>;
38
+ export declare function adoptionCancelJob(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionCancelJob']>[0]): ReturnType<IDeviceManagerProvider['adoptionCancelJob']>;
36
39
  export declare function adoptionResync(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['adoptionResync']>[0]): ReturnType<IDeviceManagerProvider['adoptionResync']>;
37
40
  export declare function testField(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['testField']>[0]): ReturnType<IDeviceManagerProvider['testField']>;
38
41
  export {};
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { C as bareAddonId, Et as createEvent, H as isSameAddonId, N as doorbellCapability, ft as errMsg, pt as BaseAddon, yt as DeviceType, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { C as bareAddonId, Et as createEvent, H as isSameAddonId, N as doorbellCapability, ft as errMsg, pt as BaseAddon, yt as DeviceType, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  //#region src/builtins/doorbell/trigger-engine.ts
3
3
  /**
4
4
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { pt as BaseAddon, q as logDestinationCapability } from "../../dist-CbS6uoSb.mjs";
1
+ import { pt as BaseAddon, q as logDestinationCapability } from "../../dist-C-QzFJ8v.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-NRYjb8qK.js");
3
+ const require_dist = require("../../dist-D7wC-S4p.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { Et as createEvent, ft as errMsg, pt as BaseAddon, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { Et as createEvent, ft as errMsg, pt as BaseAddon, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Q as oauthIntegrationCapability, g as UserRecordSchema, lt as userManagementCapability, m as ScopedTokenSchema, pt as BaseAddon, r as ApiKeyRecordSchema, x as authProviderCapability } from "../../dist-CbS6uoSb.mjs";
2
+ import { Q as oauthIntegrationCapability, g as UserRecordSchema, lt as userManagementCapability, m as ScopedTokenSchema, pt as BaseAddon, r as ApiKeyRecordSchema, x as authProviderCapability } from "../../dist-C-QzFJ8v.mjs";
3
3
  import * as crypto$2 from "node:crypto";
4
4
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -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-NRYjb8qK.js");
3
+ const require_dist = require("../../dist-D7wC-S4p.js");
4
4
  let node_os = require("node:os");
5
5
  node_os = require_chunk.__toESM(node_os);
6
6
  //#region src/builtins/local-network/local-network.addon.ts
@@ -1,4 +1,4 @@
1
- import { K as localNetworkCapability, pt as BaseAddon, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { K as localNetworkCapability, pt as BaseAddon, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  import * as os from "node:os";
3
3
  //#region src/builtins/local-network/local-network.addon.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { pt as BaseAddon, q as logDestinationCapability } from "../../dist-CbS6uoSb.mjs";
1
+ import { pt as BaseAddon, q as logDestinationCapability } from "../../dist-C-QzFJ8v.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_util = require("node:util");
@@ -1,4 +1,4 @@
1
- import { Et as createEvent, X as metricsProviderCapability, pt as BaseAddon, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { Et as createEvent, X as metricsProviderCapability, pt as BaseAddon, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { promisify } from "node:util";
4
4
  import { execFile, execFileSync } from "node:child_process";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_util = require("node:util");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Ot as emitReadiness, P as enumerateInferenceDevices, ft as errMsg, pt as BaseAddon, rt as scoreRuntimes, tt as platformProbeCapability, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
2
+ import { Ot as emitReadiness, P as enumerateInferenceDevices, ft as errMsg, pt as BaseAddon, rt as scoreRuntimes, tt as platformProbeCapability, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { promisify } from "node:util";
5
5
  import { execFile } from "node:child_process";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-NRYjb8qK.js");
6
+ const require_dist = require("../../dist-D7wC-S4p.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { pt as BaseAddon, zt as EventCategory } from "../../dist-CbS6uoSb.mjs";
1
+ import { pt as BaseAddon, zt as EventCategory } from "../../dist-C-QzFJ8v.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative