@camstack/addon-mqtt-broker 1.0.7 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mqtt-broker.addon.js +194 -1
- package/dist/mqtt-broker.addon.mjs +194 -1
- package/package.json +1 -1
|
@@ -4673,7 +4673,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4673
4673
|
return inst;
|
|
4674
4674
|
}
|
|
4675
4675
|
//#endregion
|
|
4676
|
-
//#region ../types/dist/sleep-
|
|
4676
|
+
//#region ../types/dist/sleep-BV7rLc6Y.mjs
|
|
4677
4677
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4678
4678
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4679
4679
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5152,6 +5152,12 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5152
5152
|
* Payload: `{ deviceId, childDeviceIds, hiddenChildIds }`.
|
|
5153
5153
|
*/
|
|
5154
5154
|
EventCategory["AccessoriesChanged"] = "accessories.onAccessoriesChanged";
|
|
5155
|
+
/**
|
|
5156
|
+
* Progress update from a running model conversion job.
|
|
5157
|
+
* Payload: `{ kind: 'model-convert', phase, sessionId?, pct?, detail? }`.
|
|
5158
|
+
* Emitted by `addon-model-studio` on the converting node.
|
|
5159
|
+
*/
|
|
5160
|
+
EventCategory["ModelConvertProgress"] = "model-convert.progress";
|
|
5155
5161
|
return EventCategory;
|
|
5156
5162
|
}({});
|
|
5157
5163
|
Object.fromEntries([
|
|
@@ -6673,6 +6679,13 @@ object({
|
|
|
6673
6679
|
unreachable: number()
|
|
6674
6680
|
})
|
|
6675
6681
|
});
|
|
6682
|
+
var LabelDefinitionSchema = object({
|
|
6683
|
+
id: string(),
|
|
6684
|
+
name: string(),
|
|
6685
|
+
category: string().optional(),
|
|
6686
|
+
description: string().optional(),
|
|
6687
|
+
icon: string().optional()
|
|
6688
|
+
});
|
|
6676
6689
|
var MODEL_FORMATS = [
|
|
6677
6690
|
"onnx",
|
|
6678
6691
|
"coreml",
|
|
@@ -6681,6 +6694,120 @@ var MODEL_FORMATS = [
|
|
|
6681
6694
|
"pt"
|
|
6682
6695
|
];
|
|
6683
6696
|
/**
|
|
6697
|
+
* Multi-file format payload.
|
|
6698
|
+
*
|
|
6699
|
+
* - Directory formats (`isDirectory: true`, e.g. `.mlpackage`): files
|
|
6700
|
+
* relative to the directory root — the downloader fetches each from
|
|
6701
|
+
* `{url}/{file}` into `{modelDir}/{file}`. If omitted, it probes the
|
|
6702
|
+
* HuggingFace API (slower).
|
|
6703
|
+
* - Single-file formats (no `isDirectory`, e.g. OpenVINO IR): sibling
|
|
6704
|
+
* files fetched from the SAME remote directory as `url` and stored flat
|
|
6705
|
+
* alongside the main file — e.g. `['camstack-yolov9t.bin']` for the IR
|
|
6706
|
+
* weights next to `camstack-yolov9t.xml`.
|
|
6707
|
+
*/
|
|
6708
|
+
var ModelFormatEntrySchema = object({
|
|
6709
|
+
url: string(),
|
|
6710
|
+
sizeMB: number(),
|
|
6711
|
+
/** Whether this format is a directory bundle (e.g., .mlpackage) rather than a single file */
|
|
6712
|
+
isDirectory: boolean().optional(),
|
|
6713
|
+
/** Multi-file payload (directory members or sibling files). */
|
|
6714
|
+
files: array(string()).readonly().optional(),
|
|
6715
|
+
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
6716
|
+
runtimes: array(_enum(["node", "python"])).readonly().optional()
|
|
6717
|
+
});
|
|
6718
|
+
/**
|
|
6719
|
+
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
6720
|
+
* The downloader fetches from `url` and saves to `{modelsDir}/{filename}`.
|
|
6721
|
+
*/
|
|
6722
|
+
var ModelExtraFileSchema = object({
|
|
6723
|
+
url: string(),
|
|
6724
|
+
filename: string(),
|
|
6725
|
+
sizeMB: number()
|
|
6726
|
+
});
|
|
6727
|
+
/**
|
|
6728
|
+
* Per-format payload map. Modelled as an explicit object (one optional key
|
|
6729
|
+
* per `ModelFormat`) rather than `z.record(enum, …)` — zod v4's enum-keyed
|
|
6730
|
+
* record requires every key, but a catalog entry only ships a subset of
|
|
6731
|
+
* formats.
|
|
6732
|
+
*/
|
|
6733
|
+
var ModelFormatsSchema = object({
|
|
6734
|
+
onnx: ModelFormatEntrySchema.optional(),
|
|
6735
|
+
coreml: ModelFormatEntrySchema.optional(),
|
|
6736
|
+
openvino: ModelFormatEntrySchema.optional(),
|
|
6737
|
+
tflite: ModelFormatEntrySchema.optional(),
|
|
6738
|
+
pt: ModelFormatEntrySchema.optional()
|
|
6739
|
+
});
|
|
6740
|
+
var ModelCatalogEntrySchema = object({
|
|
6741
|
+
id: string(),
|
|
6742
|
+
name: string(),
|
|
6743
|
+
description: string(),
|
|
6744
|
+
formats: ModelFormatsSchema,
|
|
6745
|
+
inputSize: object({
|
|
6746
|
+
width: number(),
|
|
6747
|
+
height: number()
|
|
6748
|
+
}),
|
|
6749
|
+
labels: array(LabelDefinitionSchema).readonly(),
|
|
6750
|
+
inputLayout: _enum(["nchw", "nhwc"]).optional(),
|
|
6751
|
+
inputNormalization: _enum([
|
|
6752
|
+
"zero-one",
|
|
6753
|
+
"imagenet",
|
|
6754
|
+
"none"
|
|
6755
|
+
]).optional(),
|
|
6756
|
+
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
6757
|
+
/**
|
|
6758
|
+
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
6759
|
+
* onto the canonical template) before this step runs, instead of a plain
|
|
6760
|
+
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
6761
|
+
* their embeddings are only discriminative on an aligned input. The face
|
|
6762
|
+
* detector that produced the parent detail must emit 5 landmarks.
|
|
6763
|
+
*/
|
|
6764
|
+
faceAlignment: boolean().optional(),
|
|
6765
|
+
/**
|
|
6766
|
+
* Auxiliary files required at runtime (labels JSON, charset dict, etc.).
|
|
6767
|
+
* Downloaded into the same modelsDir alongside the model file.
|
|
6768
|
+
*/
|
|
6769
|
+
extraFiles: array(ModelExtraFileSchema).readonly().optional()
|
|
6770
|
+
});
|
|
6771
|
+
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
6772
|
+
format: literal("openvino"),
|
|
6773
|
+
precisions: array(_enum(["fp16", "int8"])).min(1).readonly()
|
|
6774
|
+
}), object({ format: literal("coreml") })]);
|
|
6775
|
+
var ModelConvertMetadataSchema = object({
|
|
6776
|
+
id: string().regex(/^[a-zA-Z0-9._-]+$/),
|
|
6777
|
+
name: string(),
|
|
6778
|
+
labels: array(LabelDefinitionSchema).readonly(),
|
|
6779
|
+
inputSize: object({
|
|
6780
|
+
width: number(),
|
|
6781
|
+
height: number()
|
|
6782
|
+
}),
|
|
6783
|
+
inputLayout: _enum(["nchw", "nhwc"]).optional(),
|
|
6784
|
+
inputNormalization: _enum([
|
|
6785
|
+
"zero-one",
|
|
6786
|
+
"imagenet",
|
|
6787
|
+
"none"
|
|
6788
|
+
]).optional(),
|
|
6789
|
+
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
6790
|
+
outputFormat: _enum([
|
|
6791
|
+
"yolo",
|
|
6792
|
+
"ssd",
|
|
6793
|
+
"embedding",
|
|
6794
|
+
"classification",
|
|
6795
|
+
"ocr",
|
|
6796
|
+
"segmentation"
|
|
6797
|
+
]),
|
|
6798
|
+
faceAlignment: boolean().optional()
|
|
6799
|
+
});
|
|
6800
|
+
var ConvertResultSchema = object({
|
|
6801
|
+
entry: ModelCatalogEntrySchema,
|
|
6802
|
+
artifacts: array(object({
|
|
6803
|
+
format: _enum(MODEL_FORMATS),
|
|
6804
|
+
precision: _enum(["fp16", "int8"]).optional(),
|
|
6805
|
+
sizeMB: number(),
|
|
6806
|
+
validated: boolean(),
|
|
6807
|
+
files: array(string()).readonly()
|
|
6808
|
+
})).readonly()
|
|
6809
|
+
});
|
|
6810
|
+
/**
|
|
6684
6811
|
* Numeric day-of-week: 0 = Sunday … 6 = Saturday (matches `Date.getDay`).
|
|
6685
6812
|
* Named `RecordingWeekday` to avoid collision with the string-union
|
|
6686
6813
|
* `Weekday` exported from `interfaces/timezones.ts`.
|
|
@@ -12587,6 +12714,54 @@ var EnrichedWidgetMetadataSchema = WidgetMetadataSchema.extend({
|
|
|
12587
12714
|
bundleUrl: string()
|
|
12588
12715
|
});
|
|
12589
12716
|
method(_void(), array(EnrichedWidgetMetadataSchema).readonly());
|
|
12717
|
+
/**
|
|
12718
|
+
* `custom-model-registry` — collection cap exposing operator-registered
|
|
12719
|
+
* custom detection models. Each provider (today: `addon-model-studio`)
|
|
12720
|
+
* contributes a list of `CustomModelDescriptor`s; the hub auto-concatenates
|
|
12721
|
+
* them across providers (`concatCollection`).
|
|
12722
|
+
*
|
|
12723
|
+
* The detection-pipeline is *aware* of this cap: when at least one provider
|
|
12724
|
+
* exists it unions these descriptors into the per-step model picker and the
|
|
12725
|
+
* runtime model-resolution path, alongside the static catalog. When no
|
|
12726
|
+
* provider exists the consumer no-ops entirely (identical to the catalog-only
|
|
12727
|
+
* behaviour).
|
|
12728
|
+
*
|
|
12729
|
+
* A descriptor carries a full `ModelCatalogEntry` directly — the same shape
|
|
12730
|
+
* the static catalog uses — so the existing download/resolution code consumes
|
|
12731
|
+
* it unchanged. `stepId` is the detection step the model targets
|
|
12732
|
+
* (e.g. `'object-detection'`).
|
|
12733
|
+
*/
|
|
12734
|
+
var CustomModelDescriptorSchema = object({
|
|
12735
|
+
stepId: string(),
|
|
12736
|
+
entry: ModelCatalogEntrySchema
|
|
12737
|
+
});
|
|
12738
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
12739
|
+
method(object({
|
|
12740
|
+
nodeId: string(),
|
|
12741
|
+
modelId: string(),
|
|
12742
|
+
format: _enum(MODEL_FORMATS),
|
|
12743
|
+
entry: ModelCatalogEntrySchema
|
|
12744
|
+
}), object({
|
|
12745
|
+
ok: boolean(),
|
|
12746
|
+
/** sha256 of the staged tarball (empty for a hub-local no-op). */
|
|
12747
|
+
sha256: string(),
|
|
12748
|
+
bytes: number(),
|
|
12749
|
+
/** The target node's modelsDir the artifact landed in. */
|
|
12750
|
+
path: string()
|
|
12751
|
+
}), {
|
|
12752
|
+
kind: "mutation",
|
|
12753
|
+
auth: "admin"
|
|
12754
|
+
});
|
|
12755
|
+
method(object({
|
|
12756
|
+
sourceUrl: string(),
|
|
12757
|
+
metadata: ModelConvertMetadataSchema,
|
|
12758
|
+
targets: array(ConvertTargetSchema).min(1).readonly(),
|
|
12759
|
+
calibrationRef: string().optional(),
|
|
12760
|
+
sessionId: string().optional()
|
|
12761
|
+
}), ConvertResultSchema, {
|
|
12762
|
+
kind: "mutation",
|
|
12763
|
+
auth: "admin"
|
|
12764
|
+
});
|
|
12590
12765
|
var AddonHttpRouteSchema = object({
|
|
12591
12766
|
method: _enum([
|
|
12592
12767
|
"GET",
|
|
@@ -17481,6 +17656,12 @@ Object.freeze({
|
|
|
17481
17656
|
addonId: null,
|
|
17482
17657
|
access: "create"
|
|
17483
17658
|
},
|
|
17659
|
+
"customModelRegistry.listModels": {
|
|
17660
|
+
capName: "custom-model-registry",
|
|
17661
|
+
capScope: "system",
|
|
17662
|
+
addonId: null,
|
|
17663
|
+
access: "view"
|
|
17664
|
+
},
|
|
17484
17665
|
"decoder.createSession": {
|
|
17485
17666
|
capName: "decoder",
|
|
17486
17667
|
capScope: "system",
|
|
@@ -18705,6 +18886,18 @@ Object.freeze({
|
|
|
18705
18886
|
addonId: null,
|
|
18706
18887
|
access: "view"
|
|
18707
18888
|
},
|
|
18889
|
+
"modelConvert.convert": {
|
|
18890
|
+
capName: "model-convert",
|
|
18891
|
+
capScope: "system",
|
|
18892
|
+
addonId: null,
|
|
18893
|
+
access: "create"
|
|
18894
|
+
},
|
|
18895
|
+
"modelDistributor.distributeModel": {
|
|
18896
|
+
capName: "model-distributor",
|
|
18897
|
+
capScope: "system",
|
|
18898
|
+
addonId: null,
|
|
18899
|
+
access: "create"
|
|
18900
|
+
},
|
|
18708
18901
|
"motion.isDetected": {
|
|
18709
18902
|
capName: "motion",
|
|
18710
18903
|
capScope: "device",
|
|
@@ -4668,7 +4668,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4668
4668
|
return inst;
|
|
4669
4669
|
}
|
|
4670
4670
|
//#endregion
|
|
4671
|
-
//#region ../types/dist/sleep-
|
|
4671
|
+
//#region ../types/dist/sleep-BV7rLc6Y.mjs
|
|
4672
4672
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4673
4673
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4674
4674
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5147,6 +5147,12 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
5147
5147
|
* Payload: `{ deviceId, childDeviceIds, hiddenChildIds }`.
|
|
5148
5148
|
*/
|
|
5149
5149
|
EventCategory["AccessoriesChanged"] = "accessories.onAccessoriesChanged";
|
|
5150
|
+
/**
|
|
5151
|
+
* Progress update from a running model conversion job.
|
|
5152
|
+
* Payload: `{ kind: 'model-convert', phase, sessionId?, pct?, detail? }`.
|
|
5153
|
+
* Emitted by `addon-model-studio` on the converting node.
|
|
5154
|
+
*/
|
|
5155
|
+
EventCategory["ModelConvertProgress"] = "model-convert.progress";
|
|
5150
5156
|
return EventCategory;
|
|
5151
5157
|
}({});
|
|
5152
5158
|
Object.fromEntries([
|
|
@@ -6668,6 +6674,13 @@ object({
|
|
|
6668
6674
|
unreachable: number()
|
|
6669
6675
|
})
|
|
6670
6676
|
});
|
|
6677
|
+
var LabelDefinitionSchema = object({
|
|
6678
|
+
id: string(),
|
|
6679
|
+
name: string(),
|
|
6680
|
+
category: string().optional(),
|
|
6681
|
+
description: string().optional(),
|
|
6682
|
+
icon: string().optional()
|
|
6683
|
+
});
|
|
6671
6684
|
var MODEL_FORMATS = [
|
|
6672
6685
|
"onnx",
|
|
6673
6686
|
"coreml",
|
|
@@ -6676,6 +6689,120 @@ var MODEL_FORMATS = [
|
|
|
6676
6689
|
"pt"
|
|
6677
6690
|
];
|
|
6678
6691
|
/**
|
|
6692
|
+
* Multi-file format payload.
|
|
6693
|
+
*
|
|
6694
|
+
* - Directory formats (`isDirectory: true`, e.g. `.mlpackage`): files
|
|
6695
|
+
* relative to the directory root — the downloader fetches each from
|
|
6696
|
+
* `{url}/{file}` into `{modelDir}/{file}`. If omitted, it probes the
|
|
6697
|
+
* HuggingFace API (slower).
|
|
6698
|
+
* - Single-file formats (no `isDirectory`, e.g. OpenVINO IR): sibling
|
|
6699
|
+
* files fetched from the SAME remote directory as `url` and stored flat
|
|
6700
|
+
* alongside the main file — e.g. `['camstack-yolov9t.bin']` for the IR
|
|
6701
|
+
* weights next to `camstack-yolov9t.xml`.
|
|
6702
|
+
*/
|
|
6703
|
+
var ModelFormatEntrySchema = object({
|
|
6704
|
+
url: string(),
|
|
6705
|
+
sizeMB: number(),
|
|
6706
|
+
/** Whether this format is a directory bundle (e.g., .mlpackage) rather than a single file */
|
|
6707
|
+
isDirectory: boolean().optional(),
|
|
6708
|
+
/** Multi-file payload (directory members or sibling files). */
|
|
6709
|
+
files: array(string()).readonly().optional(),
|
|
6710
|
+
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
6711
|
+
runtimes: array(_enum(["node", "python"])).readonly().optional()
|
|
6712
|
+
});
|
|
6713
|
+
/**
|
|
6714
|
+
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
6715
|
+
* The downloader fetches from `url` and saves to `{modelsDir}/{filename}`.
|
|
6716
|
+
*/
|
|
6717
|
+
var ModelExtraFileSchema = object({
|
|
6718
|
+
url: string(),
|
|
6719
|
+
filename: string(),
|
|
6720
|
+
sizeMB: number()
|
|
6721
|
+
});
|
|
6722
|
+
/**
|
|
6723
|
+
* Per-format payload map. Modelled as an explicit object (one optional key
|
|
6724
|
+
* per `ModelFormat`) rather than `z.record(enum, …)` — zod v4's enum-keyed
|
|
6725
|
+
* record requires every key, but a catalog entry only ships a subset of
|
|
6726
|
+
* formats.
|
|
6727
|
+
*/
|
|
6728
|
+
var ModelFormatsSchema = object({
|
|
6729
|
+
onnx: ModelFormatEntrySchema.optional(),
|
|
6730
|
+
coreml: ModelFormatEntrySchema.optional(),
|
|
6731
|
+
openvino: ModelFormatEntrySchema.optional(),
|
|
6732
|
+
tflite: ModelFormatEntrySchema.optional(),
|
|
6733
|
+
pt: ModelFormatEntrySchema.optional()
|
|
6734
|
+
});
|
|
6735
|
+
var ModelCatalogEntrySchema = object({
|
|
6736
|
+
id: string(),
|
|
6737
|
+
name: string(),
|
|
6738
|
+
description: string(),
|
|
6739
|
+
formats: ModelFormatsSchema,
|
|
6740
|
+
inputSize: object({
|
|
6741
|
+
width: number(),
|
|
6742
|
+
height: number()
|
|
6743
|
+
}),
|
|
6744
|
+
labels: array(LabelDefinitionSchema).readonly(),
|
|
6745
|
+
inputLayout: _enum(["nchw", "nhwc"]).optional(),
|
|
6746
|
+
inputNormalization: _enum([
|
|
6747
|
+
"zero-one",
|
|
6748
|
+
"imagenet",
|
|
6749
|
+
"none"
|
|
6750
|
+
]).optional(),
|
|
6751
|
+
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
6752
|
+
/**
|
|
6753
|
+
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
6754
|
+
* onto the canonical template) before this step runs, instead of a plain
|
|
6755
|
+
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
6756
|
+
* their embeddings are only discriminative on an aligned input. The face
|
|
6757
|
+
* detector that produced the parent detail must emit 5 landmarks.
|
|
6758
|
+
*/
|
|
6759
|
+
faceAlignment: boolean().optional(),
|
|
6760
|
+
/**
|
|
6761
|
+
* Auxiliary files required at runtime (labels JSON, charset dict, etc.).
|
|
6762
|
+
* Downloaded into the same modelsDir alongside the model file.
|
|
6763
|
+
*/
|
|
6764
|
+
extraFiles: array(ModelExtraFileSchema).readonly().optional()
|
|
6765
|
+
});
|
|
6766
|
+
var ConvertTargetSchema = discriminatedUnion("format", [object({
|
|
6767
|
+
format: literal("openvino"),
|
|
6768
|
+
precisions: array(_enum(["fp16", "int8"])).min(1).readonly()
|
|
6769
|
+
}), object({ format: literal("coreml") })]);
|
|
6770
|
+
var ModelConvertMetadataSchema = object({
|
|
6771
|
+
id: string().regex(/^[a-zA-Z0-9._-]+$/),
|
|
6772
|
+
name: string(),
|
|
6773
|
+
labels: array(LabelDefinitionSchema).readonly(),
|
|
6774
|
+
inputSize: object({
|
|
6775
|
+
width: number(),
|
|
6776
|
+
height: number()
|
|
6777
|
+
}),
|
|
6778
|
+
inputLayout: _enum(["nchw", "nhwc"]).optional(),
|
|
6779
|
+
inputNormalization: _enum([
|
|
6780
|
+
"zero-one",
|
|
6781
|
+
"imagenet",
|
|
6782
|
+
"none"
|
|
6783
|
+
]).optional(),
|
|
6784
|
+
preprocessMode: _enum(["letterbox", "resize"]).optional(),
|
|
6785
|
+
outputFormat: _enum([
|
|
6786
|
+
"yolo",
|
|
6787
|
+
"ssd",
|
|
6788
|
+
"embedding",
|
|
6789
|
+
"classification",
|
|
6790
|
+
"ocr",
|
|
6791
|
+
"segmentation"
|
|
6792
|
+
]),
|
|
6793
|
+
faceAlignment: boolean().optional()
|
|
6794
|
+
});
|
|
6795
|
+
var ConvertResultSchema = object({
|
|
6796
|
+
entry: ModelCatalogEntrySchema,
|
|
6797
|
+
artifacts: array(object({
|
|
6798
|
+
format: _enum(MODEL_FORMATS),
|
|
6799
|
+
precision: _enum(["fp16", "int8"]).optional(),
|
|
6800
|
+
sizeMB: number(),
|
|
6801
|
+
validated: boolean(),
|
|
6802
|
+
files: array(string()).readonly()
|
|
6803
|
+
})).readonly()
|
|
6804
|
+
});
|
|
6805
|
+
/**
|
|
6679
6806
|
* Numeric day-of-week: 0 = Sunday … 6 = Saturday (matches `Date.getDay`).
|
|
6680
6807
|
* Named `RecordingWeekday` to avoid collision with the string-union
|
|
6681
6808
|
* `Weekday` exported from `interfaces/timezones.ts`.
|
|
@@ -12582,6 +12709,54 @@ var EnrichedWidgetMetadataSchema = WidgetMetadataSchema.extend({
|
|
|
12582
12709
|
bundleUrl: string()
|
|
12583
12710
|
});
|
|
12584
12711
|
method(_void(), array(EnrichedWidgetMetadataSchema).readonly());
|
|
12712
|
+
/**
|
|
12713
|
+
* `custom-model-registry` — collection cap exposing operator-registered
|
|
12714
|
+
* custom detection models. Each provider (today: `addon-model-studio`)
|
|
12715
|
+
* contributes a list of `CustomModelDescriptor`s; the hub auto-concatenates
|
|
12716
|
+
* them across providers (`concatCollection`).
|
|
12717
|
+
*
|
|
12718
|
+
* The detection-pipeline is *aware* of this cap: when at least one provider
|
|
12719
|
+
* exists it unions these descriptors into the per-step model picker and the
|
|
12720
|
+
* runtime model-resolution path, alongside the static catalog. When no
|
|
12721
|
+
* provider exists the consumer no-ops entirely (identical to the catalog-only
|
|
12722
|
+
* behaviour).
|
|
12723
|
+
*
|
|
12724
|
+
* A descriptor carries a full `ModelCatalogEntry` directly — the same shape
|
|
12725
|
+
* the static catalog uses — so the existing download/resolution code consumes
|
|
12726
|
+
* it unchanged. `stepId` is the detection step the model targets
|
|
12727
|
+
* (e.g. `'object-detection'`).
|
|
12728
|
+
*/
|
|
12729
|
+
var CustomModelDescriptorSchema = object({
|
|
12730
|
+
stepId: string(),
|
|
12731
|
+
entry: ModelCatalogEntrySchema
|
|
12732
|
+
});
|
|
12733
|
+
method(_void(), array(CustomModelDescriptorSchema).readonly());
|
|
12734
|
+
method(object({
|
|
12735
|
+
nodeId: string(),
|
|
12736
|
+
modelId: string(),
|
|
12737
|
+
format: _enum(MODEL_FORMATS),
|
|
12738
|
+
entry: ModelCatalogEntrySchema
|
|
12739
|
+
}), object({
|
|
12740
|
+
ok: boolean(),
|
|
12741
|
+
/** sha256 of the staged tarball (empty for a hub-local no-op). */
|
|
12742
|
+
sha256: string(),
|
|
12743
|
+
bytes: number(),
|
|
12744
|
+
/** The target node's modelsDir the artifact landed in. */
|
|
12745
|
+
path: string()
|
|
12746
|
+
}), {
|
|
12747
|
+
kind: "mutation",
|
|
12748
|
+
auth: "admin"
|
|
12749
|
+
});
|
|
12750
|
+
method(object({
|
|
12751
|
+
sourceUrl: string(),
|
|
12752
|
+
metadata: ModelConvertMetadataSchema,
|
|
12753
|
+
targets: array(ConvertTargetSchema).min(1).readonly(),
|
|
12754
|
+
calibrationRef: string().optional(),
|
|
12755
|
+
sessionId: string().optional()
|
|
12756
|
+
}), ConvertResultSchema, {
|
|
12757
|
+
kind: "mutation",
|
|
12758
|
+
auth: "admin"
|
|
12759
|
+
});
|
|
12585
12760
|
var AddonHttpRouteSchema = object({
|
|
12586
12761
|
method: _enum([
|
|
12587
12762
|
"GET",
|
|
@@ -17476,6 +17651,12 @@ Object.freeze({
|
|
|
17476
17651
|
addonId: null,
|
|
17477
17652
|
access: "create"
|
|
17478
17653
|
},
|
|
17654
|
+
"customModelRegistry.listModels": {
|
|
17655
|
+
capName: "custom-model-registry",
|
|
17656
|
+
capScope: "system",
|
|
17657
|
+
addonId: null,
|
|
17658
|
+
access: "view"
|
|
17659
|
+
},
|
|
17479
17660
|
"decoder.createSession": {
|
|
17480
17661
|
capName: "decoder",
|
|
17481
17662
|
capScope: "system",
|
|
@@ -18700,6 +18881,18 @@ Object.freeze({
|
|
|
18700
18881
|
addonId: null,
|
|
18701
18882
|
access: "view"
|
|
18702
18883
|
},
|
|
18884
|
+
"modelConvert.convert": {
|
|
18885
|
+
capName: "model-convert",
|
|
18886
|
+
capScope: "system",
|
|
18887
|
+
addonId: null,
|
|
18888
|
+
access: "create"
|
|
18889
|
+
},
|
|
18890
|
+
"modelDistributor.distributeModel": {
|
|
18891
|
+
capName: "model-distributor",
|
|
18892
|
+
capScope: "system",
|
|
18893
|
+
addonId: null,
|
|
18894
|
+
access: "create"
|
|
18895
|
+
},
|
|
18703
18896
|
"motion.isDetected": {
|
|
18704
18897
|
capName: "motion",
|
|
18705
18898
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-mqtt-broker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|