@camstack/addon-smtp-nodemailer 1.0.2 → 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.
@@ -5168,14 +5168,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
5168
5168
  EventCategory["DeviceSleeping"] = "device.sleeping";
5169
5169
  EventCategory["RetentionCleanup"] = "retention.cleanup";
5170
5170
  /**
5171
- * Progress snapshot emitted by `BulkUpdateCoordinator` on every state
5172
- * transition (item status change, phase change, completion, cancel).
5173
- * Payload is `BulkUpdateState`. Admin UI subscribes via `useLiveEvent`
5174
- * to drive the sticky `BulkUpdateBanner` and per-row `AddonRowBadge`.
5175
- *
5176
- * Spec: docs/superpowers/specs/2026-05-21-addons-bulk-update-progress-design.md
5171
+ * Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
5172
+ * emitted F3 removed the coordinator that produced it; "Update all" now runs
5173
+ * as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
5174
+ * (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
5175
+ * in F4 once live bulk progress is re-implemented over the engine events.
5177
5176
  */
5178
5177
  EventCategory["AddonsBulkUpdateProgress"] = "addons.bulk-update-progress";
5178
+ EventCategory["AddonsJobProgress"] = "addons.job-progress";
5179
+ EventCategory["AddonsJobLog"] = "addons.job-log";
5179
5180
  /**
5180
5181
  * A container's child visibility toggled (hidden/shown). Emitted by the
5181
5182
  * `accessories` cap when a child device is hidden or revealed.
@@ -16008,6 +16009,69 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
16008
16009
  kind: "mutation",
16009
16010
  auth: "admin"
16010
16011
  });
16012
+ var jobKindSchema = _enum([
16013
+ "install",
16014
+ "update",
16015
+ "uninstall",
16016
+ "restart"
16017
+ ]);
16018
+ var taskPhaseSchema = _enum([
16019
+ "queued",
16020
+ "fetching",
16021
+ "staged",
16022
+ "validating",
16023
+ "applying",
16024
+ "restarting",
16025
+ "applied",
16026
+ "done",
16027
+ "failed",
16028
+ "skipped"
16029
+ ]);
16030
+ var taskTargetSchema = _enum(["framework", "addon"]);
16031
+ var taskLogEntrySchema = object({
16032
+ tsMs: number(),
16033
+ nodeId: string(),
16034
+ packageName: string(),
16035
+ phase: taskPhaseSchema,
16036
+ message: string()
16037
+ });
16038
+ var lifecycleTaskSchema = object({
16039
+ taskId: string(),
16040
+ nodeId: string(),
16041
+ packageName: string(),
16042
+ fromVersion: string().nullable(),
16043
+ toVersion: string(),
16044
+ target: taskTargetSchema,
16045
+ phase: taskPhaseSchema,
16046
+ stagedPath: string().nullable(),
16047
+ attempts: number(),
16048
+ steps: array(taskLogEntrySchema),
16049
+ error: string().nullable(),
16050
+ startedAtMs: number().nullable(),
16051
+ finishedAtMs: number().nullable()
16052
+ });
16053
+ var lifecycleJobStateSchema = _enum([
16054
+ "running",
16055
+ "completed",
16056
+ "failed",
16057
+ "partially-failed",
16058
+ "cancelled"
16059
+ ]);
16060
+ var lifecycleJobScopeSchema = _enum([
16061
+ "single",
16062
+ "bulk",
16063
+ "cluster"
16064
+ ]);
16065
+ var lifecycleJobSchema = object({
16066
+ jobId: string(),
16067
+ kind: jobKindSchema,
16068
+ createdAtMs: number(),
16069
+ createdBy: string(),
16070
+ scope: lifecycleJobScopeSchema,
16071
+ tasks: array(lifecycleTaskSchema),
16072
+ state: lifecycleJobStateSchema,
16073
+ schemaVersion: literal(1)
16074
+ });
16011
16075
  /**
16012
16076
  * addons — system-scoped singleton capability for addon package
16013
16077
  * management (install, update, configure, restart) and per-addon log
@@ -16190,7 +16254,7 @@ var BulkUpdatePhaseSchema = _enum([
16190
16254
  "restarting",
16191
16255
  "finalizing"
16192
16256
  ]);
16193
- var BulkUpdateStateSchema = object({
16257
+ object({
16194
16258
  id: string(),
16195
16259
  nodeId: string(),
16196
16260
  startedAtMs: number(),
@@ -16293,20 +16357,7 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
16293
16357
  }), UpdateFrameworkPackageResultSchema, {
16294
16358
  kind: "mutation",
16295
16359
  auth: "admin"
16296
- }), method(object({
16297
- nodeId: string(),
16298
- items: array(object({
16299
- name: string(),
16300
- version: string(),
16301
- isSystem: boolean()
16302
- })).readonly()
16303
- }), object({ id: string() }), {
16304
- kind: "mutation",
16305
- auth: "admin"
16306
- }), method(object({ id: string() }), BulkUpdateStateSchema.nullable(), { auth: "admin" }), method(object({ id: string() }), object({ cancelled: boolean() }), {
16307
- kind: "mutation",
16308
- auth: "admin"
16309
- }), method(object({ nodeId: string().optional() }), array(BulkUpdateStateSchema).readonly(), { auth: "admin" }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
16360
+ }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
16310
16361
  kind: "mutation",
16311
16362
  auth: "admin"
16312
16363
  }), method(object({ packageName: string() }), object({ success: literal(true) }), {
@@ -16328,6 +16379,24 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
16328
16379
  kind: "mutation",
16329
16380
  auth: "admin"
16330
16381
  }), method(CustomActionInputSchema, unknown(), { kind: "mutation" }), method(object({
16382
+ kind: _enum([
16383
+ "install",
16384
+ "update",
16385
+ "uninstall",
16386
+ "restart"
16387
+ ]),
16388
+ targets: array(object({
16389
+ name: string().min(1),
16390
+ version: string().min(1)
16391
+ })).min(1),
16392
+ nodeIds: array(string()).optional()
16393
+ }), object({ jobId: string() }), {
16394
+ kind: "mutation",
16395
+ auth: "admin"
16396
+ }), method(object({ jobId: string() }), lifecycleJobSchema.nullable(), { auth: "admin" }), method(object({ activeOnly: boolean().optional() }), array(lifecycleJobSchema), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16397
+ kind: "mutation",
16398
+ auth: "admin"
16399
+ }), method(object({
16331
16400
  addonId: string(),
16332
16401
  level: LogLevelSchema$1.optional()
16333
16402
  }), LogStreamEntrySchema, { kind: "subscription" });
@@ -16368,7 +16437,7 @@ Object.freeze({
16368
16437
  addonId: null,
16369
16438
  access: "create"
16370
16439
  },
16371
- "addons.cancelBulkUpdate": {
16440
+ "addons.cancelJob": {
16372
16441
  capName: "addons",
16373
16442
  capScope: "system",
16374
16443
  addonId: null,
@@ -16398,7 +16467,7 @@ Object.freeze({
16398
16467
  addonId: null,
16399
16468
  access: "view"
16400
16469
  },
16401
- "addons.getBulkUpdateState": {
16470
+ "addons.getJob": {
16402
16471
  capName: "addons",
16403
16472
  capScope: "system",
16404
16473
  addonId: null,
@@ -16446,19 +16515,19 @@ Object.freeze({
16446
16515
  addonId: null,
16447
16516
  access: "view"
16448
16517
  },
16449
- "addons.listActiveBulkUpdates": {
16518
+ "addons.listCapabilityProviders": {
16450
16519
  capName: "addons",
16451
16520
  capScope: "system",
16452
16521
  addonId: null,
16453
16522
  access: "view"
16454
16523
  },
16455
- "addons.listCapabilityProviders": {
16524
+ "addons.listFrameworkPackages": {
16456
16525
  capName: "addons",
16457
16526
  capScope: "system",
16458
16527
  addonId: null,
16459
16528
  access: "view"
16460
16529
  },
16461
- "addons.listFrameworkPackages": {
16530
+ "addons.listJobs": {
16462
16531
  capName: "addons",
16463
16532
  capScope: "system",
16464
16533
  addonId: null,
@@ -16542,7 +16611,7 @@ Object.freeze({
16542
16611
  addonId: null,
16543
16612
  access: "create"
16544
16613
  },
16545
- "addons.startBulkUpdate": {
16614
+ "addons.startJob": {
16546
16615
  capName: "addons",
16547
16616
  capScope: "system",
16548
16617
  addonId: null,
@@ -20529,6 +20598,32 @@ Object.freeze({
20529
20598
  "network-access": "ingress",
20530
20599
  "smtp-provider": "email"
20531
20600
  });
20601
+ var frameworkSwapPackageSchema = object({
20602
+ name: string(),
20603
+ stagedPath: string(),
20604
+ backupPath: string(),
20605
+ toVersion: string(),
20606
+ fromVersion: string().nullable()
20607
+ });
20608
+ object({
20609
+ jobId: string(),
20610
+ taskId: string(),
20611
+ packages: array(frameworkSwapPackageSchema),
20612
+ requestedAtMs: number(),
20613
+ schemaVersion: literal(1)
20614
+ });
20615
+ object({
20616
+ jobId: string(),
20617
+ taskId: string(),
20618
+ backups: array(object({
20619
+ name: string(),
20620
+ backupPath: string(),
20621
+ livePath: string()
20622
+ })),
20623
+ appliedAtMs: number(),
20624
+ bootAttempts: number(),
20625
+ schemaVersion: literal(1)
20626
+ });
20532
20627
  //#endregion
20533
20628
  //#region ../../node_modules/nodemailer/lib/punycode/index.js
20534
20629
  var require_punycode = /* @__PURE__ */ __commonJSMin(((exports, module) => {
@@ -5166,14 +5166,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
5166
5166
  EventCategory["DeviceSleeping"] = "device.sleeping";
5167
5167
  EventCategory["RetentionCleanup"] = "retention.cleanup";
5168
5168
  /**
5169
- * Progress snapshot emitted by `BulkUpdateCoordinator` on every state
5170
- * transition (item status change, phase change, completion, cancel).
5171
- * Payload is `BulkUpdateState`. Admin UI subscribes via `useLiveEvent`
5172
- * to drive the sticky `BulkUpdateBanner` and per-row `AddonRowBadge`.
5173
- *
5174
- * Spec: docs/superpowers/specs/2026-05-21-addons-bulk-update-progress-design.md
5169
+ * Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
5170
+ * emitted F3 removed the coordinator that produced it; "Update all" now runs
5171
+ * as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
5172
+ * (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
5173
+ * in F4 once live bulk progress is re-implemented over the engine events.
5175
5174
  */
5176
5175
  EventCategory["AddonsBulkUpdateProgress"] = "addons.bulk-update-progress";
5176
+ EventCategory["AddonsJobProgress"] = "addons.job-progress";
5177
+ EventCategory["AddonsJobLog"] = "addons.job-log";
5177
5178
  /**
5178
5179
  * A container's child visibility toggled (hidden/shown). Emitted by the
5179
5180
  * `accessories` cap when a child device is hidden or revealed.
@@ -16006,6 +16007,69 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
16006
16007
  kind: "mutation",
16007
16008
  auth: "admin"
16008
16009
  });
16010
+ var jobKindSchema = _enum([
16011
+ "install",
16012
+ "update",
16013
+ "uninstall",
16014
+ "restart"
16015
+ ]);
16016
+ var taskPhaseSchema = _enum([
16017
+ "queued",
16018
+ "fetching",
16019
+ "staged",
16020
+ "validating",
16021
+ "applying",
16022
+ "restarting",
16023
+ "applied",
16024
+ "done",
16025
+ "failed",
16026
+ "skipped"
16027
+ ]);
16028
+ var taskTargetSchema = _enum(["framework", "addon"]);
16029
+ var taskLogEntrySchema = object({
16030
+ tsMs: number(),
16031
+ nodeId: string(),
16032
+ packageName: string(),
16033
+ phase: taskPhaseSchema,
16034
+ message: string()
16035
+ });
16036
+ var lifecycleTaskSchema = object({
16037
+ taskId: string(),
16038
+ nodeId: string(),
16039
+ packageName: string(),
16040
+ fromVersion: string().nullable(),
16041
+ toVersion: string(),
16042
+ target: taskTargetSchema,
16043
+ phase: taskPhaseSchema,
16044
+ stagedPath: string().nullable(),
16045
+ attempts: number(),
16046
+ steps: array(taskLogEntrySchema),
16047
+ error: string().nullable(),
16048
+ startedAtMs: number().nullable(),
16049
+ finishedAtMs: number().nullable()
16050
+ });
16051
+ var lifecycleJobStateSchema = _enum([
16052
+ "running",
16053
+ "completed",
16054
+ "failed",
16055
+ "partially-failed",
16056
+ "cancelled"
16057
+ ]);
16058
+ var lifecycleJobScopeSchema = _enum([
16059
+ "single",
16060
+ "bulk",
16061
+ "cluster"
16062
+ ]);
16063
+ var lifecycleJobSchema = object({
16064
+ jobId: string(),
16065
+ kind: jobKindSchema,
16066
+ createdAtMs: number(),
16067
+ createdBy: string(),
16068
+ scope: lifecycleJobScopeSchema,
16069
+ tasks: array(lifecycleTaskSchema),
16070
+ state: lifecycleJobStateSchema,
16071
+ schemaVersion: literal(1)
16072
+ });
16009
16073
  /**
16010
16074
  * addons — system-scoped singleton capability for addon package
16011
16075
  * management (install, update, configure, restart) and per-addon log
@@ -16188,7 +16252,7 @@ var BulkUpdatePhaseSchema = _enum([
16188
16252
  "restarting",
16189
16253
  "finalizing"
16190
16254
  ]);
16191
- var BulkUpdateStateSchema = object({
16255
+ object({
16192
16256
  id: string(),
16193
16257
  nodeId: string(),
16194
16258
  startedAtMs: number(),
@@ -16291,20 +16355,7 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
16291
16355
  }), UpdateFrameworkPackageResultSchema, {
16292
16356
  kind: "mutation",
16293
16357
  auth: "admin"
16294
- }), method(object({
16295
- nodeId: string(),
16296
- items: array(object({
16297
- name: string(),
16298
- version: string(),
16299
- isSystem: boolean()
16300
- })).readonly()
16301
- }), object({ id: string() }), {
16302
- kind: "mutation",
16303
- auth: "admin"
16304
- }), method(object({ id: string() }), BulkUpdateStateSchema.nullable(), { auth: "admin" }), method(object({ id: string() }), object({ cancelled: boolean() }), {
16305
- kind: "mutation",
16306
- auth: "admin"
16307
- }), method(object({ nodeId: string().optional() }), array(BulkUpdateStateSchema).readonly(), { auth: "admin" }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
16358
+ }), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({ addonId: string() }), RestartAddonResultSchema, {
16308
16359
  kind: "mutation",
16309
16360
  auth: "admin"
16310
16361
  }), method(object({ packageName: string() }), object({ success: literal(true) }), {
@@ -16326,6 +16377,24 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
16326
16377
  kind: "mutation",
16327
16378
  auth: "admin"
16328
16379
  }), method(CustomActionInputSchema, unknown(), { kind: "mutation" }), method(object({
16380
+ kind: _enum([
16381
+ "install",
16382
+ "update",
16383
+ "uninstall",
16384
+ "restart"
16385
+ ]),
16386
+ targets: array(object({
16387
+ name: string().min(1),
16388
+ version: string().min(1)
16389
+ })).min(1),
16390
+ nodeIds: array(string()).optional()
16391
+ }), object({ jobId: string() }), {
16392
+ kind: "mutation",
16393
+ auth: "admin"
16394
+ }), method(object({ jobId: string() }), lifecycleJobSchema.nullable(), { auth: "admin" }), method(object({ activeOnly: boolean().optional() }), array(lifecycleJobSchema), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16395
+ kind: "mutation",
16396
+ auth: "admin"
16397
+ }), method(object({
16329
16398
  addonId: string(),
16330
16399
  level: LogLevelSchema$1.optional()
16331
16400
  }), LogStreamEntrySchema, { kind: "subscription" });
@@ -16366,7 +16435,7 @@ Object.freeze({
16366
16435
  addonId: null,
16367
16436
  access: "create"
16368
16437
  },
16369
- "addons.cancelBulkUpdate": {
16438
+ "addons.cancelJob": {
16370
16439
  capName: "addons",
16371
16440
  capScope: "system",
16372
16441
  addonId: null,
@@ -16396,7 +16465,7 @@ Object.freeze({
16396
16465
  addonId: null,
16397
16466
  access: "view"
16398
16467
  },
16399
- "addons.getBulkUpdateState": {
16468
+ "addons.getJob": {
16400
16469
  capName: "addons",
16401
16470
  capScope: "system",
16402
16471
  addonId: null,
@@ -16444,19 +16513,19 @@ Object.freeze({
16444
16513
  addonId: null,
16445
16514
  access: "view"
16446
16515
  },
16447
- "addons.listActiveBulkUpdates": {
16516
+ "addons.listCapabilityProviders": {
16448
16517
  capName: "addons",
16449
16518
  capScope: "system",
16450
16519
  addonId: null,
16451
16520
  access: "view"
16452
16521
  },
16453
- "addons.listCapabilityProviders": {
16522
+ "addons.listFrameworkPackages": {
16454
16523
  capName: "addons",
16455
16524
  capScope: "system",
16456
16525
  addonId: null,
16457
16526
  access: "view"
16458
16527
  },
16459
- "addons.listFrameworkPackages": {
16528
+ "addons.listJobs": {
16460
16529
  capName: "addons",
16461
16530
  capScope: "system",
16462
16531
  addonId: null,
@@ -16540,7 +16609,7 @@ Object.freeze({
16540
16609
  addonId: null,
16541
16610
  access: "create"
16542
16611
  },
16543
- "addons.startBulkUpdate": {
16612
+ "addons.startJob": {
16544
16613
  capName: "addons",
16545
16614
  capScope: "system",
16546
16615
  addonId: null,
@@ -20527,6 +20596,32 @@ Object.freeze({
20527
20596
  "network-access": "ingress",
20528
20597
  "smtp-provider": "email"
20529
20598
  });
20599
+ var frameworkSwapPackageSchema = object({
20600
+ name: string(),
20601
+ stagedPath: string(),
20602
+ backupPath: string(),
20603
+ toVersion: string(),
20604
+ fromVersion: string().nullable()
20605
+ });
20606
+ object({
20607
+ jobId: string(),
20608
+ taskId: string(),
20609
+ packages: array(frameworkSwapPackageSchema),
20610
+ requestedAtMs: number(),
20611
+ schemaVersion: literal(1)
20612
+ });
20613
+ object({
20614
+ jobId: string(),
20615
+ taskId: string(),
20616
+ backups: array(object({
20617
+ name: string(),
20618
+ backupPath: string(),
20619
+ livePath: string()
20620
+ })),
20621
+ appliedAtMs: number(),
20622
+ bootAttempts: number(),
20623
+ schemaVersion: literal(1)
20624
+ });
20530
20625
  //#endregion
20531
20626
  //#region ../../node_modules/nodemailer/lib/punycode/index.js
20532
20627
  var require_punycode = /* @__PURE__ */ __commonJSMin(((exports, module) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",