@camstack/system 1.2.115 → 1.2.116

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 (61) 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/device-manager.addon.js +2 -2
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  20. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  21. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  22. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  23. package/dist/builtins/local-network/local-hostname.d.ts +15 -0
  24. package/dist/builtins/local-network/local-network.addon.d.ts +31 -7
  25. package/dist/builtins/local-network/local-network.addon.js +177 -28
  26. package/dist/builtins/local-network/local-network.addon.mjs +177 -28
  27. package/dist/builtins/loki-logging/index.js +1 -1
  28. package/dist/builtins/loki-logging/index.mjs +1 -1
  29. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  30. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  31. package/dist/builtins/platform-probe/index.js +1 -1
  32. package/dist/builtins/platform-probe/index.mjs +1 -1
  33. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  34. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  35. package/dist/builtins/snapshot/index.js +1 -1
  36. package/dist/builtins/snapshot/index.mjs +1 -1
  37. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  38. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  40. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  41. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  42. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  43. package/dist/builtins/system-config/system-config.addon.js +1 -1
  44. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  45. package/dist/builtins/winston-logging/index.js +1 -1
  46. package/dist/builtins/winston-logging/index.mjs +1 -1
  47. package/dist/{dist-Drb54SZD.mjs → dist-BpzbLPel.mjs} +139 -5
  48. package/dist/{dist-iAwSA2_f.js → dist-Cri60Jd0.js} +139 -5
  49. package/dist/http/lan-http-bind.d.ts +19 -0
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.js +29 -472
  52. package/dist/index.mjs +11 -468
  53. package/dist/lan-http-bind-BDJm4d-K.mjs +716 -0
  54. package/dist/lan-http-bind-CZ4EBeD_.js +848 -0
  55. package/dist/{retired-settings-keys-OfhqQio4.js → retired-settings-keys-BVAxT5XL.js} +1 -1
  56. package/dist/{retired-settings-keys-Dz5-7gjt.mjs → retired-settings-keys-SrxMH3OT.mjs} +1 -1
  57. package/dist/tls/cert-manager.d.ts +11 -0
  58. package/dist/tls/index.d.ts +3 -1
  59. package/dist/tls/tls-status.d.ts +16 -0
  60. package/dist/tls/uploaded-cert.d.ts +14 -0
  61. package/package.json +1 -1
@@ -19226,7 +19226,12 @@ var TerminalSessionInfoSchema = z.object({
19226
19226
  var TerminalProfileInfoSchema = z.object({
19227
19227
  profileId: z.string(),
19228
19228
  label: z.string(),
19229
- description: z.string().optional()
19229
+ description: z.string().optional(),
19230
+ /** Spawn defaults the instance form copies on create. */
19231
+ executable: z.string().optional(),
19232
+ args: z.array(z.string()).readonly().optional(),
19233
+ cwd: z.string().optional(),
19234
+ environment: z.array(z.string()).readonly().optional()
19230
19235
  });
19231
19236
  /**
19232
19237
  * A durable operator-created Terminal instance. Profiles are templates; only
@@ -19239,7 +19244,11 @@ var TerminalInstanceInfoSchema = z.object({
19239
19244
  profileId: z.string(),
19240
19245
  profileLabel: z.string(),
19241
19246
  name: z.string(),
19242
- enabled: z.boolean()
19247
+ enabled: z.boolean(),
19248
+ executable: z.string(),
19249
+ args: z.array(z.string()).readonly(),
19250
+ cwd: z.string(),
19251
+ environment: z.array(z.string()).readonly()
19243
19252
  });
19244
19253
  var TerminalLegacyCameraSchema = z.object({
19245
19254
  stableId: z.string(),
@@ -19285,7 +19294,22 @@ var terminalSessionCapability = {
19285
19294
  createInstance: method(z.object({
19286
19295
  targetNodeId: z.string().min(1),
19287
19296
  profileId: z.string().min(1),
19288
- name: z.string().trim().min(1).max(160).optional()
19297
+ name: z.string().trim().min(1).max(160).optional(),
19298
+ executable: z.string().max(1024).optional(),
19299
+ args: z.array(z.string().max(2048)).max(64).optional(),
19300
+ cwd: z.string().max(1024).optional(),
19301
+ environment: z.array(z.string().max(4096)).max(64).optional()
19302
+ }), TerminalInstanceInfoSchema, {
19303
+ kind: "mutation",
19304
+ auth: "admin"
19305
+ }),
19306
+ updateInstance: method(z.object({
19307
+ instanceId: z.string().min(1),
19308
+ name: z.string().trim().min(1).max(160).optional(),
19309
+ executable: z.string().max(1024).optional(),
19310
+ args: z.array(z.string().max(2048)).max(64).optional(),
19311
+ cwd: z.string().max(1024).optional(),
19312
+ environment: z.array(z.string().max(4096)).max(64).optional()
19289
19313
  }), TerminalInstanceInfoSchema, {
19290
19314
  kind: "mutation",
19291
19315
  auth: "admin"
@@ -19320,7 +19344,11 @@ var terminalSessionCapability = {
19320
19344
  openSession: method(z.object({
19321
19345
  profileId: z.string(),
19322
19346
  cols: z.number().int().positive(),
19323
- rows: z.number().int().positive()
19347
+ rows: z.number().int().positive(),
19348
+ executable: z.string().max(1024).optional(),
19349
+ args: z.array(z.string().max(2048)).max(64).optional(),
19350
+ cwd: z.string().max(1024).optional(),
19351
+ environment: z.array(z.string().max(4096)).max(64).optional()
19324
19352
  }), TerminalSessionInfoSchema, {
19325
19353
  kind: "mutation",
19326
19354
  auth: "admin"
@@ -23919,6 +23947,20 @@ var AllowedAddressesSchema = z.object({
23919
23947
  * Network Addresses admin page and persisted by the addon.
23920
23948
  */
23921
23949
  addresses: z.array(z.string()).readonly() });
23950
+ var TlsStatusSchema = z.object({
23951
+ mode: z.enum([
23952
+ "generated",
23953
+ "uploaded",
23954
+ "disabled"
23955
+ ]),
23956
+ leafFingerprintSha256: z.string().nullable(),
23957
+ caFingerprintSha256: z.string().nullable(),
23958
+ validTo: z.string().nullable(),
23959
+ sans: z.array(z.string()),
23960
+ caCertPem: z.string().nullable(),
23961
+ reissueError: z.string().nullable(),
23962
+ restartRequired: z.boolean()
23963
+ });
23922
23964
  var localNetworkCapability = {
23923
23965
  name: "local-network",
23924
23966
  scope: "system",
@@ -24024,7 +24066,34 @@ var localNetworkCapability = {
24024
24066
  * when the operator wants to wipe their manual edits and start
24025
24067
  * over from the auto-detected best matches.
24026
24068
  */
24027
- resetAllowlistToBestMatch: method(z.void(), AllowedAddressesSchema, { kind: "mutation" })
24069
+ resetAllowlistToBestMatch: method(z.void(), AllowedAddressesSchema, { kind: "mutation" }),
24070
+ /**
24071
+ * Live TLS material for the Network → Local access certificate card.
24072
+ * LAN HTTP / hostname are addon settings (`globalSettingsSchema`), not
24073
+ * a second store — this query is status, not configuration.
24074
+ */
24075
+ getTlsStatus: method(z.void(), TlsStatusSchema),
24076
+ /** Issue a new leaf under the existing local CA. Disabled in uploaded mode. */
24077
+ regenerateCertificate: method(z.object({ reason: z.string().optional() }), TlsStatusSchema, {
24078
+ kind: "mutation",
24079
+ auth: "admin"
24080
+ }),
24081
+ /** Replace the served material with operator-supplied PEMs. */
24082
+ uploadCertificate: method(z.object({
24083
+ certPem: z.string().min(1),
24084
+ keyPem: z.string().min(1),
24085
+ caPem: z.string().optional()
24086
+ }), TlsStatusSchema, {
24087
+ kind: "mutation",
24088
+ auth: "admin"
24089
+ }),
24090
+ /** The local CA PEM, or empty when there is none to download. */
24091
+ downloadCa: method(z.void(), z.object({ pem: z.string() })),
24092
+ /** Drop uploaded material and return to the generated local CA. */
24093
+ revertToGeneratedCertificate: method(z.void(), TlsStatusSchema, {
24094
+ kind: "mutation",
24095
+ auth: "admin"
24096
+ })
24028
24097
  },
24029
24098
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
24030
24099
  mount: { kind: "hub-only" }
@@ -32478,6 +32547,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
32478
32547
  addonId: null,
32479
32548
  access: "create"
32480
32549
  },
32550
+ "localNetwork.downloadCa": {
32551
+ capName: "local-network",
32552
+ capScope: "system",
32553
+ addonId: null,
32554
+ access: "view"
32555
+ },
32481
32556
  "localNetwork.getAllowedAddresses": {
32482
32557
  capName: "local-network",
32483
32558
  capScope: "system",
@@ -32502,18 +32577,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
32502
32577
  addonId: null,
32503
32578
  access: "view"
32504
32579
  },
32580
+ "localNetwork.getTlsStatus": {
32581
+ capName: "local-network",
32582
+ capScope: "system",
32583
+ addonId: null,
32584
+ access: "view"
32585
+ },
32505
32586
  "localNetwork.list": {
32506
32587
  capName: "local-network",
32507
32588
  capScope: "system",
32508
32589
  addonId: null,
32509
32590
  access: "view"
32510
32591
  },
32592
+ "localNetwork.regenerateCertificate": {
32593
+ capName: "local-network",
32594
+ capScope: "system",
32595
+ addonId: null,
32596
+ access: "create"
32597
+ },
32511
32598
  "localNetwork.resetAllowlistToBestMatch": {
32512
32599
  capName: "local-network",
32513
32600
  capScope: "system",
32514
32601
  addonId: null,
32515
32602
  access: "delete"
32516
32603
  },
32604
+ "localNetwork.revertToGeneratedCertificate": {
32605
+ capName: "local-network",
32606
+ capScope: "system",
32607
+ addonId: null,
32608
+ access: "create"
32609
+ },
32517
32610
  "localNetwork.setAllowedAddresses": {
32518
32611
  capName: "local-network",
32519
32612
  capScope: "system",
@@ -32526,6 +32619,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
32526
32619
  addonId: null,
32527
32620
  access: "create"
32528
32621
  },
32622
+ "localNetwork.uploadCertificate": {
32623
+ capName: "local-network",
32624
+ capScope: "system",
32625
+ addonId: null,
32626
+ access: "create"
32627
+ },
32529
32628
  "lockControl.lock": {
32530
32629
  capName: "lock-control",
32531
32630
  capScope: "device",
@@ -35406,6 +35505,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
35406
35505
  addonId: null,
35407
35506
  access: "create"
35408
35507
  },
35508
+ "terminalSession.updateInstance": {
35509
+ capName: "terminal-session",
35510
+ capScope: "system",
35511
+ addonId: null,
35512
+ access: "create"
35513
+ },
35409
35514
  "terminalSession.writeInput": {
35410
35515
  capName: "terminal-session",
35411
35516
  capScope: "system",
@@ -38173,6 +38278,35 @@ Object.freeze(Object.fromEntries([{
38173
38278
  }]
38174
38279
  }].map((s) => [s.stepId, s.defaultModelId])));
38175
38280
  z.string().min(1);
38281
+ var CLUSTER_STEP_SETTING_FIELDS = [{
38282
+ stepId: "face-embedding",
38283
+ key: "minLandmarkFaceSize",
38284
+ label: "Min face size for recognition (detection px)",
38285
+ description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
38286
+ type: "slider",
38287
+ min: 0,
38288
+ max: 64,
38289
+ step: 2,
38290
+ default: 24
38291
+ }];
38292
+ function clusterStepSettingKey(stepId, fieldKey) {
38293
+ return `clusterStepSetting:${stepId}:${fieldKey}`;
38294
+ }
38295
+ var ClusterSettingNumberSchema = z.number().finite();
38296
+ function readClusterStepSettings(config) {
38297
+ const out = {};
38298
+ for (const field of CLUSTER_STEP_SETTING_FIELDS) {
38299
+ const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
38300
+ const value = parsed.success ? parsed.data : field.default;
38301
+ const existing = out[field.stepId] ?? {};
38302
+ out[field.stepId] = {
38303
+ ...existing,
38304
+ [field.key]: value
38305
+ };
38306
+ }
38307
+ return out;
38308
+ }
38309
+ readClusterStepSettings({});
38176
38310
  z.object({
38177
38311
  /**
38178
38312
  * Fraction of the box's own size added on EACH side before cutting.
@@ -19226,7 +19226,12 @@ var TerminalSessionInfoSchema = zod.z.object({
19226
19226
  var TerminalProfileInfoSchema = zod.z.object({
19227
19227
  profileId: zod.z.string(),
19228
19228
  label: zod.z.string(),
19229
- description: zod.z.string().optional()
19229
+ description: zod.z.string().optional(),
19230
+ /** Spawn defaults the instance form copies on create. */
19231
+ executable: zod.z.string().optional(),
19232
+ args: zod.z.array(zod.z.string()).readonly().optional(),
19233
+ cwd: zod.z.string().optional(),
19234
+ environment: zod.z.array(zod.z.string()).readonly().optional()
19230
19235
  });
19231
19236
  /**
19232
19237
  * A durable operator-created Terminal instance. Profiles are templates; only
@@ -19239,7 +19244,11 @@ var TerminalInstanceInfoSchema = zod.z.object({
19239
19244
  profileId: zod.z.string(),
19240
19245
  profileLabel: zod.z.string(),
19241
19246
  name: zod.z.string(),
19242
- enabled: zod.z.boolean()
19247
+ enabled: zod.z.boolean(),
19248
+ executable: zod.z.string(),
19249
+ args: zod.z.array(zod.z.string()).readonly(),
19250
+ cwd: zod.z.string(),
19251
+ environment: zod.z.array(zod.z.string()).readonly()
19243
19252
  });
19244
19253
  var TerminalLegacyCameraSchema = zod.z.object({
19245
19254
  stableId: zod.z.string(),
@@ -19285,7 +19294,22 @@ var terminalSessionCapability = {
19285
19294
  createInstance: method(zod.z.object({
19286
19295
  targetNodeId: zod.z.string().min(1),
19287
19296
  profileId: zod.z.string().min(1),
19288
- name: zod.z.string().trim().min(1).max(160).optional()
19297
+ name: zod.z.string().trim().min(1).max(160).optional(),
19298
+ executable: zod.z.string().max(1024).optional(),
19299
+ args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
19300
+ cwd: zod.z.string().max(1024).optional(),
19301
+ environment: zod.z.array(zod.z.string().max(4096)).max(64).optional()
19302
+ }), TerminalInstanceInfoSchema, {
19303
+ kind: "mutation",
19304
+ auth: "admin"
19305
+ }),
19306
+ updateInstance: method(zod.z.object({
19307
+ instanceId: zod.z.string().min(1),
19308
+ name: zod.z.string().trim().min(1).max(160).optional(),
19309
+ executable: zod.z.string().max(1024).optional(),
19310
+ args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
19311
+ cwd: zod.z.string().max(1024).optional(),
19312
+ environment: zod.z.array(zod.z.string().max(4096)).max(64).optional()
19289
19313
  }), TerminalInstanceInfoSchema, {
19290
19314
  kind: "mutation",
19291
19315
  auth: "admin"
@@ -19320,7 +19344,11 @@ var terminalSessionCapability = {
19320
19344
  openSession: method(zod.z.object({
19321
19345
  profileId: zod.z.string(),
19322
19346
  cols: zod.z.number().int().positive(),
19323
- rows: zod.z.number().int().positive()
19347
+ rows: zod.z.number().int().positive(),
19348
+ executable: zod.z.string().max(1024).optional(),
19349
+ args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
19350
+ cwd: zod.z.string().max(1024).optional(),
19351
+ environment: zod.z.array(zod.z.string().max(4096)).max(64).optional()
19324
19352
  }), TerminalSessionInfoSchema, {
19325
19353
  kind: "mutation",
19326
19354
  auth: "admin"
@@ -23919,6 +23947,20 @@ var AllowedAddressesSchema = zod.z.object({
23919
23947
  * Network Addresses admin page and persisted by the addon.
23920
23948
  */
23921
23949
  addresses: zod.z.array(zod.z.string()).readonly() });
23950
+ var TlsStatusSchema = zod.z.object({
23951
+ mode: zod.z.enum([
23952
+ "generated",
23953
+ "uploaded",
23954
+ "disabled"
23955
+ ]),
23956
+ leafFingerprintSha256: zod.z.string().nullable(),
23957
+ caFingerprintSha256: zod.z.string().nullable(),
23958
+ validTo: zod.z.string().nullable(),
23959
+ sans: zod.z.array(zod.z.string()),
23960
+ caCertPem: zod.z.string().nullable(),
23961
+ reissueError: zod.z.string().nullable(),
23962
+ restartRequired: zod.z.boolean()
23963
+ });
23922
23964
  var localNetworkCapability = {
23923
23965
  name: "local-network",
23924
23966
  scope: "system",
@@ -24024,7 +24066,34 @@ var localNetworkCapability = {
24024
24066
  * when the operator wants to wipe their manual edits and start
24025
24067
  * over from the auto-detected best matches.
24026
24068
  */
24027
- resetAllowlistToBestMatch: method(zod.z.void(), AllowedAddressesSchema, { kind: "mutation" })
24069
+ resetAllowlistToBestMatch: method(zod.z.void(), AllowedAddressesSchema, { kind: "mutation" }),
24070
+ /**
24071
+ * Live TLS material for the Network → Local access certificate card.
24072
+ * LAN HTTP / hostname are addon settings (`globalSettingsSchema`), not
24073
+ * a second store — this query is status, not configuration.
24074
+ */
24075
+ getTlsStatus: method(zod.z.void(), TlsStatusSchema),
24076
+ /** Issue a new leaf under the existing local CA. Disabled in uploaded mode. */
24077
+ regenerateCertificate: method(zod.z.object({ reason: zod.z.string().optional() }), TlsStatusSchema, {
24078
+ kind: "mutation",
24079
+ auth: "admin"
24080
+ }),
24081
+ /** Replace the served material with operator-supplied PEMs. */
24082
+ uploadCertificate: method(zod.z.object({
24083
+ certPem: zod.z.string().min(1),
24084
+ keyPem: zod.z.string().min(1),
24085
+ caPem: zod.z.string().optional()
24086
+ }), TlsStatusSchema, {
24087
+ kind: "mutation",
24088
+ auth: "admin"
24089
+ }),
24090
+ /** The local CA PEM, or empty when there is none to download. */
24091
+ downloadCa: method(zod.z.void(), zod.z.object({ pem: zod.z.string() })),
24092
+ /** Drop uploaded material and return to the generated local CA. */
24093
+ revertToGeneratedCertificate: method(zod.z.void(), TlsStatusSchema, {
24094
+ kind: "mutation",
24095
+ auth: "admin"
24096
+ })
24028
24097
  },
24029
24098
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
24030
24099
  mount: { kind: "hub-only" }
@@ -32478,6 +32547,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
32478
32547
  addonId: null,
32479
32548
  access: "create"
32480
32549
  },
32550
+ "localNetwork.downloadCa": {
32551
+ capName: "local-network",
32552
+ capScope: "system",
32553
+ addonId: null,
32554
+ access: "view"
32555
+ },
32481
32556
  "localNetwork.getAllowedAddresses": {
32482
32557
  capName: "local-network",
32483
32558
  capScope: "system",
@@ -32502,18 +32577,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
32502
32577
  addonId: null,
32503
32578
  access: "view"
32504
32579
  },
32580
+ "localNetwork.getTlsStatus": {
32581
+ capName: "local-network",
32582
+ capScope: "system",
32583
+ addonId: null,
32584
+ access: "view"
32585
+ },
32505
32586
  "localNetwork.list": {
32506
32587
  capName: "local-network",
32507
32588
  capScope: "system",
32508
32589
  addonId: null,
32509
32590
  access: "view"
32510
32591
  },
32592
+ "localNetwork.regenerateCertificate": {
32593
+ capName: "local-network",
32594
+ capScope: "system",
32595
+ addonId: null,
32596
+ access: "create"
32597
+ },
32511
32598
  "localNetwork.resetAllowlistToBestMatch": {
32512
32599
  capName: "local-network",
32513
32600
  capScope: "system",
32514
32601
  addonId: null,
32515
32602
  access: "delete"
32516
32603
  },
32604
+ "localNetwork.revertToGeneratedCertificate": {
32605
+ capName: "local-network",
32606
+ capScope: "system",
32607
+ addonId: null,
32608
+ access: "create"
32609
+ },
32517
32610
  "localNetwork.setAllowedAddresses": {
32518
32611
  capName: "local-network",
32519
32612
  capScope: "system",
@@ -32526,6 +32619,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
32526
32619
  addonId: null,
32527
32620
  access: "create"
32528
32621
  },
32622
+ "localNetwork.uploadCertificate": {
32623
+ capName: "local-network",
32624
+ capScope: "system",
32625
+ addonId: null,
32626
+ access: "create"
32627
+ },
32529
32628
  "lockControl.lock": {
32530
32629
  capName: "lock-control",
32531
32630
  capScope: "device",
@@ -35406,6 +35505,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
35406
35505
  addonId: null,
35407
35506
  access: "create"
35408
35507
  },
35508
+ "terminalSession.updateInstance": {
35509
+ capName: "terminal-session",
35510
+ capScope: "system",
35511
+ addonId: null,
35512
+ access: "create"
35513
+ },
35409
35514
  "terminalSession.writeInput": {
35410
35515
  capName: "terminal-session",
35411
35516
  capScope: "system",
@@ -38173,6 +38278,35 @@ Object.freeze(Object.fromEntries([{
38173
38278
  }]
38174
38279
  }].map((s) => [s.stepId, s.defaultModelId])));
38175
38280
  zod.z.string().min(1);
38281
+ var CLUSTER_STEP_SETTING_FIELDS = [{
38282
+ stepId: "face-embedding",
38283
+ key: "minLandmarkFaceSize",
38284
+ label: "Min face size for recognition (detection px)",
38285
+ description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
38286
+ type: "slider",
38287
+ min: 0,
38288
+ max: 64,
38289
+ step: 2,
38290
+ default: 24
38291
+ }];
38292
+ function clusterStepSettingKey(stepId, fieldKey) {
38293
+ return `clusterStepSetting:${stepId}:${fieldKey}`;
38294
+ }
38295
+ var ClusterSettingNumberSchema = zod.z.number().finite();
38296
+ function readClusterStepSettings(config) {
38297
+ const out = {};
38298
+ for (const field of CLUSTER_STEP_SETTING_FIELDS) {
38299
+ const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
38300
+ const value = parsed.success ? parsed.data : field.default;
38301
+ const existing = out[field.stepId] ?? {};
38302
+ out[field.stepId] = {
38303
+ ...existing,
38304
+ [field.key]: value
38305
+ };
38306
+ }
38307
+ return out;
38308
+ }
38309
+ readClusterStepSettings({});
38176
38310
  zod.z.object({
38177
38311
  /**
38178
38312
  * Fraction of the box's own size added on EACH side before cutting.
@@ -0,0 +1,19 @@
1
+ import { IncomingMessage, ServerResponse } from 'node:http';
2
+ export interface LanHttpBindOptions {
3
+ readonly enabled: boolean;
4
+ readonly port: number;
5
+ readonly host: string;
6
+ }
7
+ export interface LanHttpBindResult {
8
+ readonly listening: boolean;
9
+ readonly error: string | null;
10
+ readonly port: number;
11
+ }
12
+ export type LanHttpRequestHandler = (req: IncomingMessage, res: ServerResponse) => void;
13
+ export declare const DEFAULT_LAN_HTTP_PORT = 4480;
14
+ export declare function registerLanHttpHandler(next: LanHttpRequestHandler | null): void;
15
+ export declare function readLanHttpState(): LanHttpBindResult;
16
+ export declare function applyLanHttp(options: LanHttpBindOptions): Promise<LanHttpBindResult>;
17
+ /** After the hub registers the Fastify request handler, bind whatever was pending. */
18
+ export declare function bindPendingLanHttp(): Promise<LanHttpBindResult>;
19
+ export declare function closeLanHttp(): Promise<void>;
package/dist/index.d.ts CHANGED
@@ -80,6 +80,7 @@ export { StorageLocationManager } from './storage/storage-location-manager.js';
80
80
  export type { IFileStorage, IStorageLocation, IStorageProvider as ICoreStorageProvider, IStructuredStorage, QueryFilter, StorageRecord, } from './storage/storage-manager.js';
81
81
  export { StorageManager } from './storage/storage-manager.js';
82
82
  export * from './tls/index.js';
83
+ export { applyLanHttp, bindPendingLanHttp, closeLanHttp, DEFAULT_LAN_HTTP_PORT, readLanHttpState, registerLanHttpHandler, } from './http/lan-http-bind.js';
83
84
  export { IntegrationRegistry } from './builtins/sqlite-storage/integration-registry.js';
84
85
  export { type EnsureAddonNativePrebuildsOptions, ensureAddonNativePrebuilds, type NativeEnsureOutcome, type NativeEnsureResult, } from './kernel/deps/ensure-addon-natives.js';
85
86
  export { type EnsureNativePrebuildsOptions, ensureNativePrebuilds, hasDotNode, NATIVE_SCAN_DEPTH, type PrebuildFetchFn, type PrebuildTarget, TRADITIONAL_NATIVE_PACKAGES, } from './kernel/deps/ensure-native-prebuilds.js';