@camstack/addon-provider-homematic 1.0.3 → 1.0.4

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 (3) hide show
  1. package/dist/addon.js +122 -27
  2. package/dist/addon.mjs +122 -27
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -5154,14 +5154,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
5154
5154
  EventCategory["DeviceSleeping"] = "device.sleeping";
5155
5155
  EventCategory["RetentionCleanup"] = "retention.cleanup";
5156
5156
  /**
5157
- * Progress snapshot emitted by `BulkUpdateCoordinator` on every state
5158
- * transition (item status change, phase change, completion, cancel).
5159
- * Payload is `BulkUpdateState`. Admin UI subscribes via `useLiveEvent`
5160
- * to drive the sticky `BulkUpdateBanner` and per-row `AddonRowBadge`.
5161
- *
5162
- * Spec: docs/superpowers/specs/2026-05-21-addons-bulk-update-progress-design.md
5157
+ * Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
5158
+ * emitted F3 removed the coordinator that produced it; "Update all" now runs
5159
+ * as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
5160
+ * (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
5161
+ * in F4 once live bulk progress is re-implemented over the engine events.
5163
5162
  */
5164
5163
  EventCategory["AddonsBulkUpdateProgress"] = "addons.bulk-update-progress";
5164
+ EventCategory["AddonsJobProgress"] = "addons.job-progress";
5165
+ EventCategory["AddonsJobLog"] = "addons.job-log";
5165
5166
  /**
5166
5167
  * A container's child visibility toggled (hidden/shown). Emitted by the
5167
5168
  * `accessories` cap when a child device is hidden or revealed.
@@ -18825,6 +18826,69 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
18825
18826
  kind: "mutation",
18826
18827
  auth: "admin"
18827
18828
  });
18829
+ var jobKindSchema = _enum([
18830
+ "install",
18831
+ "update",
18832
+ "uninstall",
18833
+ "restart"
18834
+ ]);
18835
+ var taskPhaseSchema = _enum([
18836
+ "queued",
18837
+ "fetching",
18838
+ "staged",
18839
+ "validating",
18840
+ "applying",
18841
+ "restarting",
18842
+ "applied",
18843
+ "done",
18844
+ "failed",
18845
+ "skipped"
18846
+ ]);
18847
+ var taskTargetSchema = _enum(["framework", "addon"]);
18848
+ var taskLogEntrySchema = object({
18849
+ tsMs: number(),
18850
+ nodeId: string(),
18851
+ packageName: string(),
18852
+ phase: taskPhaseSchema,
18853
+ message: string()
18854
+ });
18855
+ var lifecycleTaskSchema = object({
18856
+ taskId: string(),
18857
+ nodeId: string(),
18858
+ packageName: string(),
18859
+ fromVersion: string().nullable(),
18860
+ toVersion: string(),
18861
+ target: taskTargetSchema,
18862
+ phase: taskPhaseSchema,
18863
+ stagedPath: string().nullable(),
18864
+ attempts: number(),
18865
+ steps: array(taskLogEntrySchema),
18866
+ error: string().nullable(),
18867
+ startedAtMs: number().nullable(),
18868
+ finishedAtMs: number().nullable()
18869
+ });
18870
+ var lifecycleJobStateSchema = _enum([
18871
+ "running",
18872
+ "completed",
18873
+ "failed",
18874
+ "partially-failed",
18875
+ "cancelled"
18876
+ ]);
18877
+ var lifecycleJobScopeSchema = _enum([
18878
+ "single",
18879
+ "bulk",
18880
+ "cluster"
18881
+ ]);
18882
+ var lifecycleJobSchema = object({
18883
+ jobId: string(),
18884
+ kind: jobKindSchema,
18885
+ createdAtMs: number(),
18886
+ createdBy: string(),
18887
+ scope: lifecycleJobScopeSchema,
18888
+ tasks: array(lifecycleTaskSchema),
18889
+ state: lifecycleJobStateSchema,
18890
+ schemaVersion: literal(1)
18891
+ });
18828
18892
  /**
18829
18893
  * addons — system-scoped singleton capability for addon package
18830
18894
  * management (install, update, configure, restart) and per-addon log
@@ -19007,7 +19071,7 @@ var BulkUpdatePhaseSchema = _enum([
19007
19071
  "restarting",
19008
19072
  "finalizing"
19009
19073
  ]);
19010
- var BulkUpdateStateSchema = object({
19074
+ object({
19011
19075
  id: string(),
19012
19076
  nodeId: string(),
19013
19077
  startedAtMs: number(),
@@ -19110,20 +19174,7 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
19110
19174
  }), UpdateFrameworkPackageResultSchema, {
19111
19175
  kind: "mutation",
19112
19176
  auth: "admin"
19113
- }), method(object({
19114
- nodeId: string(),
19115
- items: array(object({
19116
- name: string(),
19117
- version: string(),
19118
- isSystem: boolean()
19119
- })).readonly()
19120
- }), object({ id: string() }), {
19121
- kind: "mutation",
19122
- auth: "admin"
19123
- }), method(object({ id: string() }), BulkUpdateStateSchema.nullable(), { auth: "admin" }), method(object({ id: string() }), object({ cancelled: boolean() }), {
19124
- kind: "mutation",
19125
- auth: "admin"
19126
- }), method(object({ nodeId: string().optional() }), array(BulkUpdateStateSchema).readonly(), { auth: "admin" }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
19177
+ }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
19127
19178
  kind: "mutation",
19128
19179
  auth: "admin"
19129
19180
  }), method(object({ packageName: string() }), object({ success: literal(true) }), {
@@ -19145,6 +19196,24 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
19145
19196
  kind: "mutation",
19146
19197
  auth: "admin"
19147
19198
  }), method(CustomActionInputSchema, unknown(), { kind: "mutation" }), method(object({
19199
+ kind: _enum([
19200
+ "install",
19201
+ "update",
19202
+ "uninstall",
19203
+ "restart"
19204
+ ]),
19205
+ targets: array(object({
19206
+ name: string().min(1),
19207
+ version: string().min(1)
19208
+ })).min(1),
19209
+ nodeIds: array(string()).optional()
19210
+ }), object({ jobId: string() }), {
19211
+ kind: "mutation",
19212
+ auth: "admin"
19213
+ }), method(object({ jobId: string() }), lifecycleJobSchema.nullable(), { auth: "admin" }), method(object({ activeOnly: boolean().optional() }), array(lifecycleJobSchema), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19214
+ kind: "mutation",
19215
+ auth: "admin"
19216
+ }), method(object({
19148
19217
  addonId: string(),
19149
19218
  level: LogLevelSchema$1.optional()
19150
19219
  }), LogStreamEntrySchema, { kind: "subscription" });
@@ -19185,7 +19254,7 @@ Object.freeze({
19185
19254
  addonId: null,
19186
19255
  access: "create"
19187
19256
  },
19188
- "addons.cancelBulkUpdate": {
19257
+ "addons.cancelJob": {
19189
19258
  capName: "addons",
19190
19259
  capScope: "system",
19191
19260
  addonId: null,
@@ -19215,7 +19284,7 @@ Object.freeze({
19215
19284
  addonId: null,
19216
19285
  access: "view"
19217
19286
  },
19218
- "addons.getBulkUpdateState": {
19287
+ "addons.getJob": {
19219
19288
  capName: "addons",
19220
19289
  capScope: "system",
19221
19290
  addonId: null,
@@ -19263,19 +19332,19 @@ Object.freeze({
19263
19332
  addonId: null,
19264
19333
  access: "view"
19265
19334
  },
19266
- "addons.listActiveBulkUpdates": {
19335
+ "addons.listCapabilityProviders": {
19267
19336
  capName: "addons",
19268
19337
  capScope: "system",
19269
19338
  addonId: null,
19270
19339
  access: "view"
19271
19340
  },
19272
- "addons.listCapabilityProviders": {
19341
+ "addons.listFrameworkPackages": {
19273
19342
  capName: "addons",
19274
19343
  capScope: "system",
19275
19344
  addonId: null,
19276
19345
  access: "view"
19277
19346
  },
19278
- "addons.listFrameworkPackages": {
19347
+ "addons.listJobs": {
19279
19348
  capName: "addons",
19280
19349
  capScope: "system",
19281
19350
  addonId: null,
@@ -19359,7 +19428,7 @@ Object.freeze({
19359
19428
  addonId: null,
19360
19429
  access: "create"
19361
19430
  },
19362
- "addons.startBulkUpdate": {
19431
+ "addons.startJob": {
19363
19432
  capName: "addons",
19364
19433
  capScope: "system",
19365
19434
  addonId: null,
@@ -23346,6 +23415,32 @@ Object.freeze({
23346
23415
  "network-access": "ingress",
23347
23416
  "smtp-provider": "email"
23348
23417
  });
23418
+ var frameworkSwapPackageSchema = object({
23419
+ name: string(),
23420
+ stagedPath: string(),
23421
+ backupPath: string(),
23422
+ toVersion: string(),
23423
+ fromVersion: string().nullable()
23424
+ });
23425
+ object({
23426
+ jobId: string(),
23427
+ taskId: string(),
23428
+ packages: array(frameworkSwapPackageSchema),
23429
+ requestedAtMs: number(),
23430
+ schemaVersion: literal(1)
23431
+ });
23432
+ object({
23433
+ jobId: string(),
23434
+ taskId: string(),
23435
+ backups: array(object({
23436
+ name: string(),
23437
+ backupPath: string(),
23438
+ livePath: string()
23439
+ })),
23440
+ appliedAtMs: number(),
23441
+ bootAttempts: number(),
23442
+ schemaVersion: literal(1)
23443
+ });
23349
23444
  /**
23350
23445
  * Pure fuzzy matcher for adoption location import. Normalized
23351
23446
  * case-insensitive Levenshtein similarity, used to reuse an existing
package/dist/addon.mjs CHANGED
@@ -5155,14 +5155,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
5155
5155
  EventCategory["DeviceSleeping"] = "device.sleeping";
5156
5156
  EventCategory["RetentionCleanup"] = "retention.cleanup";
5157
5157
  /**
5158
- * Progress snapshot emitted by `BulkUpdateCoordinator` on every state
5159
- * transition (item status change, phase change, completion, cancel).
5160
- * Payload is `BulkUpdateState`. Admin UI subscribes via `useLiveEvent`
5161
- * to drive the sticky `BulkUpdateBanner` and per-row `AddonRowBadge`.
5162
- *
5163
- * Spec: docs/superpowers/specs/2026-05-21-addons-bulk-update-progress-design.md
5158
+ * Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
5159
+ * emitted F3 removed the coordinator that produced it; "Update all" now runs
5160
+ * as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
5161
+ * (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
5162
+ * in F4 once live bulk progress is re-implemented over the engine events.
5164
5163
  */
5165
5164
  EventCategory["AddonsBulkUpdateProgress"] = "addons.bulk-update-progress";
5165
+ EventCategory["AddonsJobProgress"] = "addons.job-progress";
5166
+ EventCategory["AddonsJobLog"] = "addons.job-log";
5166
5167
  /**
5167
5168
  * A container's child visibility toggled (hidden/shown). Emitted by the
5168
5169
  * `accessories` cap when a child device is hidden or revealed.
@@ -18826,6 +18827,69 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
18826
18827
  kind: "mutation",
18827
18828
  auth: "admin"
18828
18829
  });
18830
+ var jobKindSchema = _enum([
18831
+ "install",
18832
+ "update",
18833
+ "uninstall",
18834
+ "restart"
18835
+ ]);
18836
+ var taskPhaseSchema = _enum([
18837
+ "queued",
18838
+ "fetching",
18839
+ "staged",
18840
+ "validating",
18841
+ "applying",
18842
+ "restarting",
18843
+ "applied",
18844
+ "done",
18845
+ "failed",
18846
+ "skipped"
18847
+ ]);
18848
+ var taskTargetSchema = _enum(["framework", "addon"]);
18849
+ var taskLogEntrySchema = object({
18850
+ tsMs: number(),
18851
+ nodeId: string(),
18852
+ packageName: string(),
18853
+ phase: taskPhaseSchema,
18854
+ message: string()
18855
+ });
18856
+ var lifecycleTaskSchema = object({
18857
+ taskId: string(),
18858
+ nodeId: string(),
18859
+ packageName: string(),
18860
+ fromVersion: string().nullable(),
18861
+ toVersion: string(),
18862
+ target: taskTargetSchema,
18863
+ phase: taskPhaseSchema,
18864
+ stagedPath: string().nullable(),
18865
+ attempts: number(),
18866
+ steps: array(taskLogEntrySchema),
18867
+ error: string().nullable(),
18868
+ startedAtMs: number().nullable(),
18869
+ finishedAtMs: number().nullable()
18870
+ });
18871
+ var lifecycleJobStateSchema = _enum([
18872
+ "running",
18873
+ "completed",
18874
+ "failed",
18875
+ "partially-failed",
18876
+ "cancelled"
18877
+ ]);
18878
+ var lifecycleJobScopeSchema = _enum([
18879
+ "single",
18880
+ "bulk",
18881
+ "cluster"
18882
+ ]);
18883
+ var lifecycleJobSchema = object({
18884
+ jobId: string(),
18885
+ kind: jobKindSchema,
18886
+ createdAtMs: number(),
18887
+ createdBy: string(),
18888
+ scope: lifecycleJobScopeSchema,
18889
+ tasks: array(lifecycleTaskSchema),
18890
+ state: lifecycleJobStateSchema,
18891
+ schemaVersion: literal(1)
18892
+ });
18829
18893
  /**
18830
18894
  * addons — system-scoped singleton capability for addon package
18831
18895
  * management (install, update, configure, restart) and per-addon log
@@ -19008,7 +19072,7 @@ var BulkUpdatePhaseSchema = _enum([
19008
19072
  "restarting",
19009
19073
  "finalizing"
19010
19074
  ]);
19011
- var BulkUpdateStateSchema = object({
19075
+ object({
19012
19076
  id: string(),
19013
19077
  nodeId: string(),
19014
19078
  startedAtMs: number(),
@@ -19111,20 +19175,7 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
19111
19175
  }), UpdateFrameworkPackageResultSchema, {
19112
19176
  kind: "mutation",
19113
19177
  auth: "admin"
19114
- }), method(object({
19115
- nodeId: string(),
19116
- items: array(object({
19117
- name: string(),
19118
- version: string(),
19119
- isSystem: boolean()
19120
- })).readonly()
19121
- }), object({ id: string() }), {
19122
- kind: "mutation",
19123
- auth: "admin"
19124
- }), method(object({ id: string() }), BulkUpdateStateSchema.nullable(), { auth: "admin" }), method(object({ id: string() }), object({ cancelled: boolean() }), {
19125
- kind: "mutation",
19126
- auth: "admin"
19127
- }), method(object({ nodeId: string().optional() }), array(BulkUpdateStateSchema).readonly(), { auth: "admin" }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
19178
+ }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
19128
19179
  kind: "mutation",
19129
19180
  auth: "admin"
19130
19181
  }), method(object({ packageName: string() }), object({ success: literal(true) }), {
@@ -19146,6 +19197,24 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
19146
19197
  kind: "mutation",
19147
19198
  auth: "admin"
19148
19199
  }), method(CustomActionInputSchema, unknown(), { kind: "mutation" }), method(object({
19200
+ kind: _enum([
19201
+ "install",
19202
+ "update",
19203
+ "uninstall",
19204
+ "restart"
19205
+ ]),
19206
+ targets: array(object({
19207
+ name: string().min(1),
19208
+ version: string().min(1)
19209
+ })).min(1),
19210
+ nodeIds: array(string()).optional()
19211
+ }), object({ jobId: string() }), {
19212
+ kind: "mutation",
19213
+ auth: "admin"
19214
+ }), method(object({ jobId: string() }), lifecycleJobSchema.nullable(), { auth: "admin" }), method(object({ activeOnly: boolean().optional() }), array(lifecycleJobSchema), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19215
+ kind: "mutation",
19216
+ auth: "admin"
19217
+ }), method(object({
19149
19218
  addonId: string(),
19150
19219
  level: LogLevelSchema$1.optional()
19151
19220
  }), LogStreamEntrySchema, { kind: "subscription" });
@@ -19186,7 +19255,7 @@ Object.freeze({
19186
19255
  addonId: null,
19187
19256
  access: "create"
19188
19257
  },
19189
- "addons.cancelBulkUpdate": {
19258
+ "addons.cancelJob": {
19190
19259
  capName: "addons",
19191
19260
  capScope: "system",
19192
19261
  addonId: null,
@@ -19216,7 +19285,7 @@ Object.freeze({
19216
19285
  addonId: null,
19217
19286
  access: "view"
19218
19287
  },
19219
- "addons.getBulkUpdateState": {
19288
+ "addons.getJob": {
19220
19289
  capName: "addons",
19221
19290
  capScope: "system",
19222
19291
  addonId: null,
@@ -19264,19 +19333,19 @@ Object.freeze({
19264
19333
  addonId: null,
19265
19334
  access: "view"
19266
19335
  },
19267
- "addons.listActiveBulkUpdates": {
19336
+ "addons.listCapabilityProviders": {
19268
19337
  capName: "addons",
19269
19338
  capScope: "system",
19270
19339
  addonId: null,
19271
19340
  access: "view"
19272
19341
  },
19273
- "addons.listCapabilityProviders": {
19342
+ "addons.listFrameworkPackages": {
19274
19343
  capName: "addons",
19275
19344
  capScope: "system",
19276
19345
  addonId: null,
19277
19346
  access: "view"
19278
19347
  },
19279
- "addons.listFrameworkPackages": {
19348
+ "addons.listJobs": {
19280
19349
  capName: "addons",
19281
19350
  capScope: "system",
19282
19351
  addonId: null,
@@ -19360,7 +19429,7 @@ Object.freeze({
19360
19429
  addonId: null,
19361
19430
  access: "create"
19362
19431
  },
19363
- "addons.startBulkUpdate": {
19432
+ "addons.startJob": {
19364
19433
  capName: "addons",
19365
19434
  capScope: "system",
19366
19435
  addonId: null,
@@ -23347,6 +23416,32 @@ Object.freeze({
23347
23416
  "network-access": "ingress",
23348
23417
  "smtp-provider": "email"
23349
23418
  });
23419
+ var frameworkSwapPackageSchema = object({
23420
+ name: string(),
23421
+ stagedPath: string(),
23422
+ backupPath: string(),
23423
+ toVersion: string(),
23424
+ fromVersion: string().nullable()
23425
+ });
23426
+ object({
23427
+ jobId: string(),
23428
+ taskId: string(),
23429
+ packages: array(frameworkSwapPackageSchema),
23430
+ requestedAtMs: number(),
23431
+ schemaVersion: literal(1)
23432
+ });
23433
+ object({
23434
+ jobId: string(),
23435
+ taskId: string(),
23436
+ backups: array(object({
23437
+ name: string(),
23438
+ backupPath: string(),
23439
+ livePath: string()
23440
+ })),
23441
+ appliedAtMs: number(),
23442
+ bootAttempts: number(),
23443
+ schemaVersion: literal(1)
23444
+ });
23350
23445
  /**
23351
23446
  * Pure fuzzy matcher for adoption location import. Normalized
23352
23447
  * case-insensitive Levenshtein similarity, used to reuse an existing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homematic",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Homematic / HomematicIP (CCU3 / RaspberryMatic) device-provider addon for CamStack — wraps the nodehomematic library",
5
5
  "keywords": [
6
6
  "camstack",