@camstack/addon-pipeline 1.2.367 → 1.2.368

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 (35) hide show
  1. package/dist/audio-analyzer/index.js +3 -3
  2. package/dist/audio-analyzer/index.mjs +3 -3
  3. package/dist/{custom-model-catalog-CESZ9DM5.js → custom-model-catalog-BY-aEI2s.js} +2 -2
  4. package/dist/{custom-model-catalog-BqKEZYFI.mjs → custom-model-catalog-Bnel86hH.mjs} +2 -2
  5. package/dist/detection-pipeline/index.js +4 -4
  6. package/dist/detection-pipeline/index.mjs +4 -4
  7. package/dist/{dist-ClKIJKn0.mjs → dist-5AhGOWWu.mjs} +381 -0
  8. package/dist/{dist-BmQm6_nm.js → dist-DDXsZaRH.js} +381 -0
  9. package/dist/{model-catalogs-B3lwxS5R.js → model-catalogs-DJN58c_U.js} +1 -1
  10. package/dist/{model-catalogs-DKHNVZC0.mjs → model-catalogs-DWR9EsGI.mjs} +1 -1
  11. package/dist/motion-wasm/index.js +1 -1
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/{node-BqTmCMlP.js → node-CiciZWts.js} +1 -1
  14. package/dist/{node-DlpWXqvO.mjs → node-DqZJFOzR.mjs} +1 -1
  15. package/dist/pipeline-runner/index.js +3 -3
  16. package/dist/pipeline-runner/index.mjs +3 -3
  17. package/dist/{process-memory-DHF3ynR3.js → process-memory-BRu19Dgr.js} +1 -1
  18. package/dist/{process-memory-BjIiiXGZ.mjs → process-memory-Batknjjt.mjs} +1 -1
  19. package/dist/recorder/index.js +3 -2
  20. package/dist/recorder/index.mjs +3 -2
  21. package/dist/{segment-demux-js-D1Up0mTP.js → segment-demux-js-0CRf7GAb.js} +2 -2
  22. package/dist/{segment-demux-js-Du_eAog1.mjs → segment-demux-js-dlhO3Q8W.mjs} +2 -2
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CRxJwkgE.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CSajlHKC.mjs} +2 -2
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BfVREmhg.mjs +26 -0
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-5KL24-a_.mjs +26 -0
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-DEnYuDjZ.mjs → hostInit-KJ1eka58.mjs} +2 -2
  30. package/dist/stream-broker/index.js +123 -57
  31. package/dist/stream-broker/index.mjs +123 -57
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CIBBQAJc.mjs +0 -26
  35. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DNGQ-Tic.mjs +0 -26
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BmQm6_nm.js");
7
- const require_model_catalogs = require("../model-catalogs-B3lwxS5R.js");
8
- const require_process_memory = require("../process-memory-DHF3ynR3.js");
6
+ const require_dist = require("../dist-DDXsZaRH.js");
7
+ const require_model_catalogs = require("../model-catalogs-DJN58c_U.js");
8
+ const require_process_memory = require("../process-memory-BRu19Dgr.js");
9
9
  let node_fs = require("node:fs");
10
10
  node_fs = require_chunk.__toESM(node_fs);
11
11
  let node_path = require("node:path");
@@ -1,7 +1,7 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { An as BaseAddon, F as PoolMemoryWatchdog, Fn as audioChunkBytesPerSample, Ft as mapAudioLabelToMacro, Kn as nodePin, On as errMsg, Q as audioAnalyzerCapability, Vn as hydrateSchema, Z as audioAnalysisCapability, cr as EventCategory, h as DEFAULT_AUDIO_ANALYZER_CONFIG, on as resolvePoolMemoryPolicy, r as AUDIO_BACKEND_CHOICES, zn as expandAudioChunkToF32le } from "../dist-ClKIJKn0.mjs";
3
- import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-DKHNVZC0.mjs";
4
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-BjIiiXGZ.mjs";
2
+ import { An as BaseAddon, F as PoolMemoryWatchdog, Fn as audioChunkBytesPerSample, Ft as mapAudioLabelToMacro, Kn as nodePin, On as errMsg, Q as audioAnalyzerCapability, Vn as hydrateSchema, Z as audioAnalysisCapability, cr as EventCategory, h as DEFAULT_AUDIO_ANALYZER_CONFIG, on as resolvePoolMemoryPolicy, r as AUDIO_BACKEND_CHOICES, zn as expandAudioChunkToF32le } from "../dist-5AhGOWWu.mjs";
3
+ import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-DWR9EsGI.mjs";
4
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-Batknjjt.mjs";
5
5
  import * as fs from "node:fs";
6
6
  import * as path$1 from "node:path";
7
7
  import { ensureModel } from "@camstack/system/addon-utils";
@@ -1,5 +1,5 @@
1
- const require_dist = require("./dist-BmQm6_nm.js");
2
- const require_model_catalogs = require("./model-catalogs-B3lwxS5R.js");
1
+ const require_dist = require("./dist-DDXsZaRH.js");
2
+ const require_model_catalogs = require("./model-catalogs-DJN58c_U.js");
3
3
  const require_worker_protocol = require("./worker-protocol-C-G8qmye.js");
4
4
  let node_crypto = require("node:crypto");
5
5
  //#region src/detection-pipeline/registry/effective-confidence.ts
@@ -1,5 +1,5 @@
1
- import { $ as audioKindId, b as DEVICE_BACKEND_TO_FORMAT, dn as stepModelRunsOnFormat, f as COCO_80_LABELS, i as AUDIO_MACRO_LABELS, k as LABEL_SUPPLY_VOCABULARIES, kt as inferModelProvider, p as COCO_TO_MACRO } from "./dist-ClKIJKn0.mjs";
2
- import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-DKHNVZC0.mjs";
1
+ import { $ as audioKindId, b as DEVICE_BACKEND_TO_FORMAT, dn as stepModelRunsOnFormat, f as COCO_80_LABELS, i as AUDIO_MACRO_LABELS, k as LABEL_SUPPLY_VOCABULARIES, kt as inferModelProvider, p as COCO_TO_MACRO } from "./dist-5AhGOWWu.mjs";
2
+ import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-DWR9EsGI.mjs";
3
3
  import { t as isWorkerReply } from "./worker-protocol-D_NzPcnh.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  //#region src/detection-pipeline/registry/effective-confidence.ts
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BmQm6_nm.js");
7
- const require_node = require("../node-BqTmCMlP.js");
8
- const require_custom_model_catalog = require("../custom-model-catalog-CESZ9DM5.js");
6
+ const require_dist = require("../dist-DDXsZaRH.js");
7
+ const require_node = require("../node-CiciZWts.js");
8
+ const require_custom_model_catalog = require("../custom-model-catalog-BY-aEI2s.js");
9
9
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
10
- const require_process_memory = require("../process-memory-DHF3ynR3.js");
10
+ const require_process_memory = require("../process-memory-BRu19Dgr.js");
11
11
  let node_os = require("node:os");
12
12
  node_os = require_chunk.__toESM(node_os);
13
13
  let node_fs = require("node:fs");
@@ -1,9 +1,9 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { An as BaseAddon, Bn as hfModelUrl, F as PoolMemoryWatchdog, Gt as pickClusterStepSettings, In as createEvent, Jt as pipelineExecutorCapability, Kn as nodePin, Nt as loadContributionCapability, O as LABEL_SUPPLY_MACRO, On as errMsg$1, Ut as overlayClusterStepSettings, Vn as hydrateSchema, Vt as modelBindingKey, X as applyModelBoundSettings, Yn as sleep, Zn as array, bt as evaluateZoneRules, cr as EventCategory, d as CLUSTER_MODEL_SCOPED_STEPS, dn as stepModelRunsOnFormat, dt as defaultDeviceFor$1, g as DEFAULT_CLUSTER_STEP_SETTINGS, gn as supportedRuntimes$1, gt as detectionPipelineCapability, jt as linkedLabelStepId, ln as rootSuppliesOf, n as APPLE_SA_TO_MACRO, on as resolvePoolMemoryPolicy, or as string, ot as collectModelBoundKeys, q as YAMNET_TO_MACRO, rr as object, sr as union, st as containingParentIndex, tn as resolveClusterStepModelId, un as runtimeDevices$1, yt as enumerateInferenceDevices } from "../dist-ClKIJKn0.mjs";
3
- import { s as readProcessCost } from "../node-DlpWXqvO.mjs";
4
- import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog-BqKEZYFI.mjs";
2
+ import { An as BaseAddon, Bn as hfModelUrl, F as PoolMemoryWatchdog, Gt as pickClusterStepSettings, In as createEvent, Jt as pipelineExecutorCapability, Kn as nodePin, Nt as loadContributionCapability, O as LABEL_SUPPLY_MACRO, On as errMsg$1, Ut as overlayClusterStepSettings, Vn as hydrateSchema, Vt as modelBindingKey, X as applyModelBoundSettings, Yn as sleep, Zn as array, bt as evaluateZoneRules, cr as EventCategory, d as CLUSTER_MODEL_SCOPED_STEPS, dn as stepModelRunsOnFormat, dt as defaultDeviceFor$1, g as DEFAULT_CLUSTER_STEP_SETTINGS, gn as supportedRuntimes$1, gt as detectionPipelineCapability, jt as linkedLabelStepId, ln as rootSuppliesOf, n as APPLE_SA_TO_MACRO, on as resolvePoolMemoryPolicy, or as string, ot as collectModelBoundKeys, q as YAMNET_TO_MACRO, rr as object, sr as union, st as containingParentIndex, tn as resolveClusterStepModelId, un as runtimeDevices$1, yt as enumerateInferenceDevices } from "../dist-5AhGOWWu.mjs";
3
+ import { s as readProcessCost } from "../node-DqZJFOzR.mjs";
4
+ import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog-Bnel86hH.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
6
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-BjIiiXGZ.mjs";
6
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-Batknjjt.mjs";
7
7
  import * as os$1 from "node:os";
8
8
  import * as fs from "node:fs";
9
9
  import * as path$1 from "node:path";
@@ -14652,6 +14652,167 @@ var ConvertResultSchema = object({
14652
14652
  files: array(string()).readonly()
14653
14653
  })).readonly()
14654
14654
  });
14655
+ /**
14656
+ * Device certificates (D855) — the wire contract shared by the hub, the admin
14657
+ * UI and the native viewer.
14658
+ *
14659
+ * A device (a phone) generates its OWN P-256 key pair in hardware (Secure
14660
+ * Enclave / Android Keystore / a non-extractable WebCrypto key). The private
14661
+ * key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
14662
+ * dedicated device CA; the device later proves possession of the key by
14663
+ * signing a hub-issued nonce, and the hub answers with the same session a
14664
+ * password login opens.
14665
+ *
14666
+ * Everything on the wire is a small string (a PEM, a base64url signature):
14667
+ * D613 is about bulk bytes, and a certificate is ~600 bytes.
14668
+ */
14669
+ /** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
14670
+ var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
14671
+ /** First line of every signed message; a change of format bumps the version. */
14672
+ var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
14673
+ _enum([
14674
+ "login",
14675
+ "renew",
14676
+ "revoke"
14677
+ ]);
14678
+ var DevicePlatformSchema = _enum([
14679
+ "ios",
14680
+ "android",
14681
+ "web",
14682
+ "other"
14683
+ ]);
14684
+ var Base64UrlSchema = string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
14685
+ var PemSchema = string().min(1).max(16384);
14686
+ /**
14687
+ * Why a device-certificate endpoint said no. Distinct from a transport / 5xx
14688
+ * failure: those carry no reason and mean "try again", never "the credential is
14689
+ * dead". The viewer switches on this exhaustively.
14690
+ */
14691
+ var DeviceRefusalReasonSchema = _enum([
14692
+ "revoked",
14693
+ "unknown-credential",
14694
+ "expired",
14695
+ "bad-signature",
14696
+ "nonce-invalid",
14697
+ "rate-limited",
14698
+ "invalid-certificate",
14699
+ "superseded",
14700
+ "user-gone",
14701
+ "unavailable",
14702
+ "code-invalid",
14703
+ "self-enrollment-disabled",
14704
+ "step-up-required",
14705
+ "bad-public-key"
14706
+ ]);
14707
+ var DeviceRefusalSchema = object({
14708
+ ok: literal(false),
14709
+ reason: DeviceRefusalReasonSchema,
14710
+ definitive: boolean(),
14711
+ retryAfterSeconds: number().optional()
14712
+ });
14713
+ object({
14714
+ code: string().min(1).max(256),
14715
+ /** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
14716
+ publicKeySpki: Base64UrlSchema,
14717
+ deviceName: string().min(1).max(80).optional(),
14718
+ platform: DevicePlatformSchema
14719
+ });
14720
+ discriminatedUnion("ok", [object({
14721
+ credentialId: string(),
14722
+ certPem: PemSchema,
14723
+ /** The device CA certificate the leaf chains to. */
14724
+ chainPem: PemSchema,
14725
+ notAfter: number(),
14726
+ user: object({
14727
+ id: string(),
14728
+ username: string()
14729
+ })
14730
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
14731
+ object({
14732
+ /** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
14733
+ proof: string().min(1).max(512),
14734
+ publicKeySpki: Base64UrlSchema,
14735
+ deviceName: string().min(1).max(80),
14736
+ platform: DevicePlatformSchema
14737
+ });
14738
+ object({
14739
+ proof: string(),
14740
+ expiresAt: number()
14741
+ });
14742
+ discriminatedUnion("ok", [object({
14743
+ nonce: string(),
14744
+ /** The origin to put in the signed message. The app compares it to the hub it dialled. */
14745
+ origin: string(),
14746
+ expiresAt: number(),
14747
+ signature: literal(DEVICE_CERT_SIGNATURE)
14748
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
14749
+ object({
14750
+ certPem: PemSchema,
14751
+ nonce: string().min(1).max(256),
14752
+ /** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
14753
+ signature: Base64UrlSchema
14754
+ });
14755
+ discriminatedUnion("ok", [object({
14756
+ credentialId: string(),
14757
+ certPem: PemSchema,
14758
+ chainPem: PemSchema,
14759
+ notAfter: number()
14760
+ }).extend({ ok: literal(true) }), DeviceRefusalSchema]);
14761
+ discriminatedUnion("ok", [object({
14762
+ ok: literal(true),
14763
+ credentialId: string(),
14764
+ sessionsEnded: number().int()
14765
+ }), DeviceRefusalSchema]);
14766
+ var DeviceCredentialStatusSchema = _enum([
14767
+ "active",
14768
+ "expired",
14769
+ "revoked"
14770
+ ]);
14771
+ var DeviceCredentialSchema = object({
14772
+ id: string(),
14773
+ userId: string(),
14774
+ username: string().nullable(),
14775
+ deviceName: string(),
14776
+ platform: DevicePlatformSchema,
14777
+ enrolledVia: _enum(["qr", "self"]),
14778
+ /** SHA-256 of the leaf certificate DER, colon-hex. */
14779
+ fingerprint: string(),
14780
+ issuedAt: number(),
14781
+ expiresAt: number(),
14782
+ lastUsedAt: number().nullable(),
14783
+ lastUsedFrom: string().nullable(),
14784
+ revokedAt: number().nullable(),
14785
+ /** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
14786
+ revokedBy: string().nullable(),
14787
+ status: DeviceCredentialStatusSchema
14788
+ });
14789
+ var StartEnrollmentOutputSchema = object({
14790
+ /** Shown once; only its hash is kept. */
14791
+ code: string(),
14792
+ expiresAt: number(),
14793
+ /** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
14794
+ enrollUrl: string(),
14795
+ /** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
14796
+ hubOrigin: string().nullable(),
14797
+ /** Every origin the apps may try (role `appConnections`). */
14798
+ hubOrigins: array(string())
14799
+ });
14800
+ object({
14801
+ kind: literal("device-certificate"),
14802
+ id: literal("device-certificate"),
14803
+ label: string(),
14804
+ stage: literal("primary"),
14805
+ /** tRPC paths under the hub's `auth` router, so a client names no literal. */
14806
+ challengePath: literal("auth.getDeviceChallenge"),
14807
+ revokePath: literal("auth.revokeOwnDeviceCertificate"),
14808
+ enrollSelfPath: literal("auth.enrollSelf"),
14809
+ loginPath: literal("auth.loginWithDeviceCertificate"),
14810
+ renewPath: literal("auth.renewDeviceCertificate"),
14811
+ signature: literal(DEVICE_CERT_SIGNATURE),
14812
+ messageVersion: literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
14813
+ /** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
14814
+ clients: array(_enum(["native", "web"]))
14815
+ });
14655
14816
  var ExpressionBindingSourceSchema = union([
14656
14817
  object({
14657
14818
  kind: literal("field").optional(),
@@ -18675,6 +18836,136 @@ method(object({
18675
18836
  kind: "mutation",
18676
18837
  auth: "admin"
18677
18838
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
18839
+ var DeviceCaStatusSchema = discriminatedUnion("state", [
18840
+ object({ state: literal("absent") }),
18841
+ object({
18842
+ state: literal("ready"),
18843
+ subject: string(),
18844
+ fingerprintSha256: string(),
18845
+ validTo: string()
18846
+ }),
18847
+ object({
18848
+ state: literal("unavailable"),
18849
+ reason: string()
18850
+ })
18851
+ ]);
18852
+ var DeviceCertificateSettingsSchema = object({ selfEnrollment: _enum(["allowed", "disabled"]) });
18853
+ method(object({
18854
+ userId: string().min(1).optional(),
18855
+ includeRevoked: boolean().default(false)
18856
+ }), array(DeviceCredentialSchema).readonly(), { auth: "admin" }), method(object({
18857
+ userId: string().min(1),
18858
+ deviceName: string().min(1).max(80)
18859
+ }), StartEnrollmentOutputSchema, {
18860
+ kind: "mutation",
18861
+ auth: "admin",
18862
+ caller: "required"
18863
+ }), method(object({ id: string().min(1) }), object({
18864
+ revoked: boolean(),
18865
+ sessionsEnded: number().int(),
18866
+ status: DeviceCredentialStatusSchema
18867
+ }), {
18868
+ kind: "mutation",
18869
+ auth: "admin",
18870
+ caller: "required"
18871
+ }), method(object({}), DeviceCertificateSettingsSchema, { auth: "admin" }), method(DeviceCertificateSettingsSchema, DeviceCertificateSettingsSchema, {
18872
+ kind: "mutation",
18873
+ auth: "admin"
18874
+ }), method(object({ id: string().min(1) }), object({ result: _enum([
18875
+ "deleted",
18876
+ "live",
18877
+ "unknown"
18878
+ ]) }), {
18879
+ kind: "mutation",
18880
+ auth: "admin",
18881
+ caller: "required"
18882
+ }), method(object({}), DeviceCaStatusSchema, { auth: "admin" }), method(object({
18883
+ id: string().min(1),
18884
+ deviceName: string().min(1).max(80)
18885
+ }), object({ renamed: boolean() }), {
18886
+ kind: "mutation",
18887
+ auth: "admin"
18888
+ });
18889
+ /**
18890
+ * `node-certificates` - what a node holds and the two renewals the hub drives
18891
+ * (D856): the node's MESH leaf (mutual TLS to the hub) and its HTTPS leaf (issued
18892
+ * from the hub's local CA so a device that trusts the hub root trusts the node).
18893
+ *
18894
+ * Provided by the AGENT RUNTIME (the synthetic `agent-runtime` addon id, like
18895
+ * `server-management`): the hub reaches it through the ordinary node-pinned
18896
+ * capability call - no new Moleculer action. The hub's own certificates are
18897
+ * handled in-process by the hub (`certificates` router), so this cap has no hub
18898
+ * provider.
18899
+ *
18900
+ * No private key ever crosses the mesh: the node generates its key pair, sends a
18901
+ * CSR, and the hub returns only the signed certificate.
18902
+ */
18903
+ var MeshLeafInfoSchema = object({
18904
+ cn: string(),
18905
+ serial: string(),
18906
+ fingerprintSha256: string(),
18907
+ notBefore: number(),
18908
+ notAfter: number()
18909
+ });
18910
+ var HttpsLeafInfoSchema = object({
18911
+ fingerprintSha256: string(),
18912
+ issuer: string(),
18913
+ sans: array(string()),
18914
+ notBefore: number(),
18915
+ notAfter: number()
18916
+ });
18917
+ var NodeHttpsStateSchema = discriminatedUnion("state", [object({
18918
+ state: literal("served"),
18919
+ leaf: HttpsLeafInfoSchema
18920
+ }), object({
18921
+ state: literal("not-issued"),
18922
+ reason: string()
18923
+ })]);
18924
+ method(object({}), object({
18925
+ nodeId: string(),
18926
+ mesh: MeshLeafInfoSchema.nullable(),
18927
+ https: NodeHttpsStateSchema
18928
+ }), { auth: "admin" }), method(object({}), object({ csrPem: string() }), {
18929
+ kind: "mutation",
18930
+ auth: "admin"
18931
+ }), method(object({
18932
+ certPem: string().min(1),
18933
+ caCertPem: string().min(1),
18934
+ confirmWithinMs: number().int().min(1e4).max(6e5)
18935
+ }), object({
18936
+ fingerprintSha256: string(),
18937
+ serial: string()
18938
+ }), {
18939
+ kind: "mutation",
18940
+ auth: "admin"
18941
+ }), method(object({ fingerprintSha256: string() }), object({ confirmed: boolean() }), {
18942
+ kind: "mutation",
18943
+ auth: "admin"
18944
+ }), method(object({}), object({ rolledBack: boolean() }), {
18945
+ kind: "mutation",
18946
+ auth: "admin"
18947
+ }), method(object({}), object({
18948
+ csrPem: string(),
18949
+ hostnames: array(string()),
18950
+ addresses: array(string()),
18951
+ /** SHA-256 of the hub local CA this node pinned at its first install; `null` before one. */
18952
+ pinnedCaFingerprintSha256: string().nullable()
18953
+ }), {
18954
+ kind: "mutation",
18955
+ auth: "admin"
18956
+ }), method(object({
18957
+ certPem: string().min(1),
18958
+ caCertPem: string().min(1),
18959
+ /**
18960
+ * The hub signals that its local CA was rotated (D227) and this leaf chains to the NEW
18961
+ * one. Only the hub, over the authenticated mesh, can say so; a leaf with a different CA
18962
+ * and no signal is refused.
18963
+ */
18964
+ caRotation: boolean().optional()
18965
+ }), HttpsLeafInfoSchema, {
18966
+ kind: "mutation",
18967
+ auth: "admin"
18968
+ });
18678
18969
  var KeychainKeySourceSchema = object({
18679
18970
  kind: _enum([
18680
18971
  "config-file",
@@ -66495,6 +66786,54 @@ Object.freeze({
66495
66786
  addonId: null,
66496
66787
  access: "create"
66497
66788
  },
66789
+ "deviceCredentials.deleteDeviceCredential": {
66790
+ capName: "device-credentials",
66791
+ capScope: "system",
66792
+ addonId: null,
66793
+ access: "delete"
66794
+ },
66795
+ "deviceCredentials.getDeviceCaStatus": {
66796
+ capName: "device-credentials",
66797
+ capScope: "system",
66798
+ addonId: null,
66799
+ access: "view"
66800
+ },
66801
+ "deviceCredentials.getDeviceCertificateSettings": {
66802
+ capName: "device-credentials",
66803
+ capScope: "system",
66804
+ addonId: null,
66805
+ access: "view"
66806
+ },
66807
+ "deviceCredentials.listDeviceCredentials": {
66808
+ capName: "device-credentials",
66809
+ capScope: "system",
66810
+ addonId: null,
66811
+ access: "view"
66812
+ },
66813
+ "deviceCredentials.renameDeviceCredential": {
66814
+ capName: "device-credentials",
66815
+ capScope: "system",
66816
+ addonId: null,
66817
+ access: "create"
66818
+ },
66819
+ "deviceCredentials.revokeDeviceCredential": {
66820
+ capName: "device-credentials",
66821
+ capScope: "system",
66822
+ addonId: null,
66823
+ access: "delete"
66824
+ },
66825
+ "deviceCredentials.setDeviceCertificateSettings": {
66826
+ capName: "device-credentials",
66827
+ capScope: "system",
66828
+ addonId: null,
66829
+ access: "create"
66830
+ },
66831
+ "deviceCredentials.startEnrollment": {
66832
+ capName: "device-credentials",
66833
+ capScope: "system",
66834
+ addonId: null,
66835
+ access: "create"
66836
+ },
66498
66837
  "deviceDiscovery.adoptDevice": {
66499
66838
  capName: "device-discovery",
66500
66839
  capScope: "device",
@@ -68655,6 +68994,48 @@ Object.freeze({
68655
68994
  addonId: null,
68656
68995
  access: "create"
68657
68996
  },
68997
+ "nodeCertificates.confirmMeshLeaf": {
68998
+ capName: "node-certificates",
68999
+ capScope: "system",
69000
+ addonId: null,
69001
+ access: "create"
69002
+ },
69003
+ "nodeCertificates.getCertificates": {
69004
+ capName: "node-certificates",
69005
+ capScope: "system",
69006
+ addonId: null,
69007
+ access: "view"
69008
+ },
69009
+ "nodeCertificates.installHttpsCertificate": {
69010
+ capName: "node-certificates",
69011
+ capScope: "system",
69012
+ addonId: null,
69013
+ access: "create"
69014
+ },
69015
+ "nodeCertificates.installMeshLeaf": {
69016
+ capName: "node-certificates",
69017
+ capScope: "system",
69018
+ addonId: null,
69019
+ access: "create"
69020
+ },
69021
+ "nodeCertificates.prepareHttpsCertificate": {
69022
+ capName: "node-certificates",
69023
+ capScope: "system",
69024
+ addonId: null,
69025
+ access: "create"
69026
+ },
69027
+ "nodeCertificates.prepareMeshRenewal": {
69028
+ capName: "node-certificates",
69029
+ capScope: "system",
69030
+ addonId: null,
69031
+ access: "create"
69032
+ },
69033
+ "nodeCertificates.rollbackMeshLeaf": {
69034
+ capName: "node-certificates",
69035
+ capScope: "system",
69036
+ addonId: null,
69037
+ access: "create"
69038
+ },
68658
69039
  "nodes.clusterAddonStatus": {
68659
69040
  capName: "nodes",
68660
69041
  capScope: "system",