@camstack/addon-advanced-notifier 1.0.4 → 1.0.5

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/addon.js CHANGED
@@ -4986,6 +4986,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
4986
4986
  */
4987
4987
  EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
4988
4988
  /**
4989
+ * Per-node detection-engine runtime-provisioning transition. Emitted by
4990
+ * the detection-pipeline provider on every state change of its lazy
4991
+ * engine-provisioning machine (idle → installing → verifying → ready,
4992
+ * or → failed with a `nextRetryAt`). Payload is the
4993
+ * `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
4994
+ * node. The Pipeline page subscribes to drive a live "installing
4995
+ * OpenVINO… / ready" indicator per node without polling
4996
+ * `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
4997
+ * also reads the cap snapshot on mount / reconnect. Phase 2.
4998
+ */
4999
+ EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
5000
+ /**
4989
5001
  * Cluster topology snapshot. Carries the same payload returned by
4990
5002
  * `nodes.topology` (every reachable node + addons + processes).
4991
5003
  * Emitted by the hub on any agent / addon lifecycle change
@@ -9150,6 +9162,24 @@ var DetectorOutputSchema = object({
9150
9162
  inferenceMs: number(),
9151
9163
  modelId: string()
9152
9164
  });
9165
+ var EngineProvisioningSchema = object({
9166
+ runtimeId: _enum([
9167
+ "onnx",
9168
+ "openvino",
9169
+ "coreml"
9170
+ ]).nullable(),
9171
+ device: string().nullable(),
9172
+ state: _enum([
9173
+ "idle",
9174
+ "installing",
9175
+ "verifying",
9176
+ "ready",
9177
+ "failed"
9178
+ ]),
9179
+ progress: number().optional(),
9180
+ error: string().optional(),
9181
+ nextRetryAt: number().optional()
9182
+ });
9153
9183
  var PipelineStepInputSchema = lazy(() => object({
9154
9184
  addonId: string(),
9155
9185
  modelId: string(),
@@ -9218,7 +9248,7 @@ var PipelineRunResultBridge = custom();
9218
9248
  method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
9219
9249
  kind: "mutation",
9220
9250
  auth: "admin"
9221
- }), method(_void(), record(string(), object({
9251
+ }), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
9222
9252
  modelId: string(),
9223
9253
  settings: record(string(), unknown()).readonly()
9224
9254
  }))), method(object({ steps: record(string(), object({
@@ -12805,7 +12835,10 @@ var AgentAddonConfigSchema = object({
12805
12835
  modelId: string(),
12806
12836
  settings: record(string(), unknown()).readonly()
12807
12837
  });
12808
- var AgentPipelineSettingsSchema = object({ addonDefaults: record(string(), AgentAddonConfigSchema).readonly() });
12838
+ var AgentPipelineSettingsSchema = object({
12839
+ addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
12840
+ maxCameras: number().int().nonnegative().nullable().default(null)
12841
+ });
12809
12842
  var CameraPipelineForAgentSchema = object({
12810
12843
  steps: array(PipelineStepInputSchema).readonly(),
12811
12844
  audio: object({
@@ -12907,6 +12940,133 @@ var GlobalMetricsSchema = object({
12907
12940
  * capability providers.
12908
12941
  */
12909
12942
  var CapabilityBindingsSchema = record(string(), string());
12943
+ /** Source block — always present; derives from the stream catalog. */
12944
+ var CameraSourceStatusSchema = object({ streams: array(object({
12945
+ camStreamId: string(),
12946
+ codec: string(),
12947
+ width: number(),
12948
+ height: number(),
12949
+ fps: number(),
12950
+ kind: string()
12951
+ })).readonly() });
12952
+ /** Assignment block — always present (orchestrator-local, no remote call). */
12953
+ var CameraAssignmentStatusSchema = object({
12954
+ detectionNodeId: string().nullable(),
12955
+ decoderNodeId: string().nullable(),
12956
+ audioNodeId: string().nullable(),
12957
+ pinned: object({
12958
+ detection: boolean(),
12959
+ decoder: boolean(),
12960
+ audio: boolean()
12961
+ }),
12962
+ reasons: object({
12963
+ detection: string().optional(),
12964
+ decoder: string().optional(),
12965
+ audio: string().optional()
12966
+ })
12967
+ });
12968
+ /** Broker block — null when the broker stage is unreachable or inactive. */
12969
+ var CameraBrokerStatusSchema = object({
12970
+ profiles: array(object({
12971
+ profile: string(),
12972
+ status: string(),
12973
+ codec: string(),
12974
+ width: number(),
12975
+ height: number(),
12976
+ subscribers: number(),
12977
+ inFps: number(),
12978
+ outFps: number()
12979
+ })).readonly(),
12980
+ webrtcSessions: number(),
12981
+ rtspRestream: boolean()
12982
+ });
12983
+ /** Shared-memory ring statistics within the decoder block. */
12984
+ var CameraDecoderShmSchema = object({
12985
+ framesWritten: number(),
12986
+ getFrameHits: number(),
12987
+ getFrameMisses: number(),
12988
+ budgetMb: number()
12989
+ });
12990
+ /** Decoder block — null when the decoder stage is unreachable or inactive. */
12991
+ var CameraDecoderStatusSchema = object({
12992
+ nodeId: string(),
12993
+ formats: array(string()).readonly(),
12994
+ sessionCount: number(),
12995
+ shm: CameraDecoderShmSchema
12996
+ });
12997
+ /** Motion block — null when motion detection is not active for this device. */
12998
+ var CameraMotionStatusSchema = object({
12999
+ enabled: boolean(),
13000
+ fps: number()
13001
+ });
13002
+ /** Detection provisioning sub-block. */
13003
+ var CameraDetectionProvisioningSchema = object({
13004
+ state: _enum([
13005
+ "idle",
13006
+ "installing",
13007
+ "verifying",
13008
+ "ready",
13009
+ "failed"
13010
+ ]),
13011
+ error: string().optional()
13012
+ });
13013
+ /** Detection phase — derived from the runner's engine phase. */
13014
+ var CameraDetectionPhaseSchema = _enum([
13015
+ "idle",
13016
+ "watching",
13017
+ "active"
13018
+ ]);
13019
+ /** Detection block — null when no detection node is assigned or reachable. */
13020
+ var CameraDetectionStatusSchema = object({
13021
+ nodeId: string(),
13022
+ engine: object({
13023
+ backend: string(),
13024
+ device: string()
13025
+ }),
13026
+ phase: CameraDetectionPhaseSchema,
13027
+ configuredFps: number(),
13028
+ actualFps: number(),
13029
+ queueDepth: number(),
13030
+ avgInferenceMs: number(),
13031
+ provisioning: CameraDetectionProvisioningSchema
13032
+ });
13033
+ /** Audio block — null when no audio node is assigned or reachable. */
13034
+ var CameraAudioStatusSchema = object({
13035
+ nodeId: string(),
13036
+ enabled: boolean()
13037
+ });
13038
+ /** Recording block — null when no recording cap is active for this device. */
13039
+ var CameraRecordingStatusSchema = object({
13040
+ mode: _enum([
13041
+ "off",
13042
+ "continuous",
13043
+ "events"
13044
+ ]),
13045
+ active: boolean(),
13046
+ storageBytes: number()
13047
+ });
13048
+ /**
13049
+ * Aggregated per-camera pipeline status — server-composed, single call.
13050
+ *
13051
+ * The `assignment` and `source` blocks are always present.
13052
+ * Every other block is `null` when the stage is inactive or unreachable
13053
+ * during the bounded parallel fan-out in the orchestrator implementation.
13054
+ *
13055
+ * See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
13056
+ */
13057
+ var CameraStatusSchema = object({
13058
+ deviceId: number(),
13059
+ assignment: CameraAssignmentStatusSchema,
13060
+ source: CameraSourceStatusSchema,
13061
+ broker: CameraBrokerStatusSchema.nullable(),
13062
+ decoder: CameraDecoderStatusSchema.nullable(),
13063
+ motion: CameraMotionStatusSchema.nullable(),
13064
+ detection: CameraDetectionStatusSchema.nullable(),
13065
+ audio: CameraAudioStatusSchema.nullable(),
13066
+ recording: CameraRecordingStatusSchema.nullable(),
13067
+ /** Unix timestamp (ms) when this snapshot was composed server-side. */
13068
+ fetchedAt: number()
13069
+ });
12910
13070
  method(object({
12911
13071
  deviceId: number(),
12912
13072
  agentNodeId: string()
@@ -12974,6 +13134,12 @@ method(object({
12974
13134
  }), {
12975
13135
  kind: "mutation",
12976
13136
  auth: "admin"
13137
+ }), method(object({
13138
+ agentNodeId: string(),
13139
+ maxCameras: number().int().nonnegative().nullable()
13140
+ }), object({ success: literal(true) }), {
13141
+ kind: "mutation",
13142
+ auth: "admin"
12977
13143
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
12978
13144
  deviceId: number(),
12979
13145
  addonId: string(),
@@ -12999,7 +13165,7 @@ method(object({
12999
13165
  }), method(object({
13000
13166
  deviceId: number(),
13001
13167
  agentNodeId: string().optional()
13002
- }), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
13168
+ }), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
13003
13169
  name: string(),
13004
13170
  description: string().optional(),
13005
13171
  config: CameraPipelineConfigSchema
@@ -18811,6 +18977,12 @@ Object.freeze({
18811
18977
  addonId: null,
18812
18978
  access: "view"
18813
18979
  },
18980
+ "pipelineExecutor.getEngineProvisioning": {
18981
+ capName: "pipeline-executor",
18982
+ capScope: "system",
18983
+ addonId: null,
18984
+ access: "view"
18985
+ },
18814
18986
  "pipelineExecutor.getGlobalPipelineConfig": {
18815
18987
  capName: "pipeline-executor",
18816
18988
  capScope: "system",
@@ -19015,6 +19187,18 @@ Object.freeze({
19015
19187
  addonId: null,
19016
19188
  access: "view"
19017
19189
  },
19190
+ "pipelineOrchestrator.getCameraStatus": {
19191
+ capName: "pipeline-orchestrator",
19192
+ capScope: "system",
19193
+ addonId: null,
19194
+ access: "view"
19195
+ },
19196
+ "pipelineOrchestrator.getCameraStatuses": {
19197
+ capName: "pipeline-orchestrator",
19198
+ capScope: "system",
19199
+ addonId: null,
19200
+ access: "view"
19201
+ },
19018
19202
  "pipelineOrchestrator.getCameraStepOverrides": {
19019
19203
  capName: "pipeline-orchestrator",
19020
19204
  capScope: "system",
@@ -19099,6 +19283,12 @@ Object.freeze({
19099
19283
  addonId: null,
19100
19284
  access: "create"
19101
19285
  },
19286
+ "pipelineOrchestrator.setAgentMaxCameras": {
19287
+ capName: "pipeline-orchestrator",
19288
+ capScope: "system",
19289
+ addonId: null,
19290
+ access: "create"
19291
+ },
19102
19292
  "pipelineOrchestrator.setCameraPipelineForAgent": {
19103
19293
  capName: "pipeline-orchestrator",
19104
19294
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -4982,6 +4982,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
4982
4982
  */
4983
4983
  EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
4984
4984
  /**
4985
+ * Per-node detection-engine runtime-provisioning transition. Emitted by
4986
+ * the detection-pipeline provider on every state change of its lazy
4987
+ * engine-provisioning machine (idle → installing → verifying → ready,
4988
+ * or → failed with a `nextRetryAt`). Payload is the
4989
+ * `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
4990
+ * node. The Pipeline page subscribes to drive a live "installing
4991
+ * OpenVINO… / ready" indicator per node without polling
4992
+ * `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
4993
+ * also reads the cap snapshot on mount / reconnect. Phase 2.
4994
+ */
4995
+ EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
4996
+ /**
4985
4997
  * Cluster topology snapshot. Carries the same payload returned by
4986
4998
  * `nodes.topology` (every reachable node + addons + processes).
4987
4999
  * Emitted by the hub on any agent / addon lifecycle change
@@ -9146,6 +9158,24 @@ var DetectorOutputSchema = object({
9146
9158
  inferenceMs: number(),
9147
9159
  modelId: string()
9148
9160
  });
9161
+ var EngineProvisioningSchema = object({
9162
+ runtimeId: _enum([
9163
+ "onnx",
9164
+ "openvino",
9165
+ "coreml"
9166
+ ]).nullable(),
9167
+ device: string().nullable(),
9168
+ state: _enum([
9169
+ "idle",
9170
+ "installing",
9171
+ "verifying",
9172
+ "ready",
9173
+ "failed"
9174
+ ]),
9175
+ progress: number().optional(),
9176
+ error: string().optional(),
9177
+ nextRetryAt: number().optional()
9178
+ });
9149
9179
  var PipelineStepInputSchema = lazy(() => object({
9150
9180
  addonId: string(),
9151
9181
  modelId: string(),
@@ -9214,7 +9244,7 @@ var PipelineRunResultBridge = custom();
9214
9244
  method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngineChoiceSchema), method(PipelineEngineChoiceSchema, array(PipelineDefaultStepSchema)), method(_void(), PipelineEngineChoiceSchema, {
9215
9245
  kind: "mutation",
9216
9246
  auth: "admin"
9217
- }), method(_void(), record(string(), object({
9247
+ }), method(object({ nodeId: string() }), EngineProvisioningSchema), method(_void(), record(string(), object({
9218
9248
  modelId: string(),
9219
9249
  settings: record(string(), unknown()).readonly()
9220
9250
  }))), method(object({ steps: record(string(), object({
@@ -12801,7 +12831,10 @@ var AgentAddonConfigSchema = object({
12801
12831
  modelId: string(),
12802
12832
  settings: record(string(), unknown()).readonly()
12803
12833
  });
12804
- var AgentPipelineSettingsSchema = object({ addonDefaults: record(string(), AgentAddonConfigSchema).readonly() });
12834
+ var AgentPipelineSettingsSchema = object({
12835
+ addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
12836
+ maxCameras: number().int().nonnegative().nullable().default(null)
12837
+ });
12805
12838
  var CameraPipelineForAgentSchema = object({
12806
12839
  steps: array(PipelineStepInputSchema).readonly(),
12807
12840
  audio: object({
@@ -12903,6 +12936,133 @@ var GlobalMetricsSchema = object({
12903
12936
  * capability providers.
12904
12937
  */
12905
12938
  var CapabilityBindingsSchema = record(string(), string());
12939
+ /** Source block — always present; derives from the stream catalog. */
12940
+ var CameraSourceStatusSchema = object({ streams: array(object({
12941
+ camStreamId: string(),
12942
+ codec: string(),
12943
+ width: number(),
12944
+ height: number(),
12945
+ fps: number(),
12946
+ kind: string()
12947
+ })).readonly() });
12948
+ /** Assignment block — always present (orchestrator-local, no remote call). */
12949
+ var CameraAssignmentStatusSchema = object({
12950
+ detectionNodeId: string().nullable(),
12951
+ decoderNodeId: string().nullable(),
12952
+ audioNodeId: string().nullable(),
12953
+ pinned: object({
12954
+ detection: boolean(),
12955
+ decoder: boolean(),
12956
+ audio: boolean()
12957
+ }),
12958
+ reasons: object({
12959
+ detection: string().optional(),
12960
+ decoder: string().optional(),
12961
+ audio: string().optional()
12962
+ })
12963
+ });
12964
+ /** Broker block — null when the broker stage is unreachable or inactive. */
12965
+ var CameraBrokerStatusSchema = object({
12966
+ profiles: array(object({
12967
+ profile: string(),
12968
+ status: string(),
12969
+ codec: string(),
12970
+ width: number(),
12971
+ height: number(),
12972
+ subscribers: number(),
12973
+ inFps: number(),
12974
+ outFps: number()
12975
+ })).readonly(),
12976
+ webrtcSessions: number(),
12977
+ rtspRestream: boolean()
12978
+ });
12979
+ /** Shared-memory ring statistics within the decoder block. */
12980
+ var CameraDecoderShmSchema = object({
12981
+ framesWritten: number(),
12982
+ getFrameHits: number(),
12983
+ getFrameMisses: number(),
12984
+ budgetMb: number()
12985
+ });
12986
+ /** Decoder block — null when the decoder stage is unreachable or inactive. */
12987
+ var CameraDecoderStatusSchema = object({
12988
+ nodeId: string(),
12989
+ formats: array(string()).readonly(),
12990
+ sessionCount: number(),
12991
+ shm: CameraDecoderShmSchema
12992
+ });
12993
+ /** Motion block — null when motion detection is not active for this device. */
12994
+ var CameraMotionStatusSchema = object({
12995
+ enabled: boolean(),
12996
+ fps: number()
12997
+ });
12998
+ /** Detection provisioning sub-block. */
12999
+ var CameraDetectionProvisioningSchema = object({
13000
+ state: _enum([
13001
+ "idle",
13002
+ "installing",
13003
+ "verifying",
13004
+ "ready",
13005
+ "failed"
13006
+ ]),
13007
+ error: string().optional()
13008
+ });
13009
+ /** Detection phase — derived from the runner's engine phase. */
13010
+ var CameraDetectionPhaseSchema = _enum([
13011
+ "idle",
13012
+ "watching",
13013
+ "active"
13014
+ ]);
13015
+ /** Detection block — null when no detection node is assigned or reachable. */
13016
+ var CameraDetectionStatusSchema = object({
13017
+ nodeId: string(),
13018
+ engine: object({
13019
+ backend: string(),
13020
+ device: string()
13021
+ }),
13022
+ phase: CameraDetectionPhaseSchema,
13023
+ configuredFps: number(),
13024
+ actualFps: number(),
13025
+ queueDepth: number(),
13026
+ avgInferenceMs: number(),
13027
+ provisioning: CameraDetectionProvisioningSchema
13028
+ });
13029
+ /** Audio block — null when no audio node is assigned or reachable. */
13030
+ var CameraAudioStatusSchema = object({
13031
+ nodeId: string(),
13032
+ enabled: boolean()
13033
+ });
13034
+ /** Recording block — null when no recording cap is active for this device. */
13035
+ var CameraRecordingStatusSchema = object({
13036
+ mode: _enum([
13037
+ "off",
13038
+ "continuous",
13039
+ "events"
13040
+ ]),
13041
+ active: boolean(),
13042
+ storageBytes: number()
13043
+ });
13044
+ /**
13045
+ * Aggregated per-camera pipeline status — server-composed, single call.
13046
+ *
13047
+ * The `assignment` and `source` blocks are always present.
13048
+ * Every other block is `null` when the stage is inactive or unreachable
13049
+ * during the bounded parallel fan-out in the orchestrator implementation.
13050
+ *
13051
+ * See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
13052
+ */
13053
+ var CameraStatusSchema = object({
13054
+ deviceId: number(),
13055
+ assignment: CameraAssignmentStatusSchema,
13056
+ source: CameraSourceStatusSchema,
13057
+ broker: CameraBrokerStatusSchema.nullable(),
13058
+ decoder: CameraDecoderStatusSchema.nullable(),
13059
+ motion: CameraMotionStatusSchema.nullable(),
13060
+ detection: CameraDetectionStatusSchema.nullable(),
13061
+ audio: CameraAudioStatusSchema.nullable(),
13062
+ recording: CameraRecordingStatusSchema.nullable(),
13063
+ /** Unix timestamp (ms) when this snapshot was composed server-side. */
13064
+ fetchedAt: number()
13065
+ });
12906
13066
  method(object({
12907
13067
  deviceId: number(),
12908
13068
  agentNodeId: string()
@@ -12970,6 +13130,12 @@ method(object({
12970
13130
  }), {
12971
13131
  kind: "mutation",
12972
13132
  auth: "admin"
13133
+ }), method(object({
13134
+ agentNodeId: string(),
13135
+ maxCameras: number().int().nonnegative().nullable()
13136
+ }), object({ success: literal(true) }), {
13137
+ kind: "mutation",
13138
+ auth: "admin"
12973
13139
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
12974
13140
  deviceId: number(),
12975
13141
  addonId: string(),
@@ -12995,7 +13161,7 @@ method(object({
12995
13161
  }), method(object({
12996
13162
  deviceId: number(),
12997
13163
  agentNodeId: string().optional()
12998
- }), CameraPipelineConfigSchema), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
13164
+ }), CameraPipelineConfigSchema), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
12999
13165
  name: string(),
13000
13166
  description: string().optional(),
13001
13167
  config: CameraPipelineConfigSchema
@@ -18807,6 +18973,12 @@ Object.freeze({
18807
18973
  addonId: null,
18808
18974
  access: "view"
18809
18975
  },
18976
+ "pipelineExecutor.getEngineProvisioning": {
18977
+ capName: "pipeline-executor",
18978
+ capScope: "system",
18979
+ addonId: null,
18980
+ access: "view"
18981
+ },
18810
18982
  "pipelineExecutor.getGlobalPipelineConfig": {
18811
18983
  capName: "pipeline-executor",
18812
18984
  capScope: "system",
@@ -19011,6 +19183,18 @@ Object.freeze({
19011
19183
  addonId: null,
19012
19184
  access: "view"
19013
19185
  },
19186
+ "pipelineOrchestrator.getCameraStatus": {
19187
+ capName: "pipeline-orchestrator",
19188
+ capScope: "system",
19189
+ addonId: null,
19190
+ access: "view"
19191
+ },
19192
+ "pipelineOrchestrator.getCameraStatuses": {
19193
+ capName: "pipeline-orchestrator",
19194
+ capScope: "system",
19195
+ addonId: null,
19196
+ access: "view"
19197
+ },
19014
19198
  "pipelineOrchestrator.getCameraStepOverrides": {
19015
19199
  capName: "pipeline-orchestrator",
19016
19200
  capScope: "system",
@@ -19095,6 +19279,12 @@ Object.freeze({
19095
19279
  addonId: null,
19096
19280
  access: "create"
19097
19281
  },
19282
+ "pipelineOrchestrator.setAgentMaxCameras": {
19283
+ capName: "pipeline-orchestrator",
19284
+ capScope: "system",
19285
+ addonId: null,
19286
+ access: "create"
19287
+ },
19098
19288
  "pipelineOrchestrator.setCameraPipelineForAgent": {
19099
19289
  capName: "pipeline-orchestrator",
19100
19290
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-advanced-notifier",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Rules-based notification engine for CamStack",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",