@camstack/types 1.2.160 → 1.2.161

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.
@@ -54,7 +54,8 @@ declare const BackupDestinationInfoSchema: z.ZodObject<{
54
54
  lastSuccessSizeBytes: z.ZodOptional<z.ZodNumber>;
55
55
  cron: z.ZodOptional<z.ZodString>;
56
56
  nextRunAt: z.ZodOptional<z.ZodNumber>;
57
- lastRunAt: z.ZodOptional<z.ZodNumber>;
57
+ lastAttemptAt: z.ZodOptional<z.ZodNumber>;
58
+ lastError: z.ZodOptional<z.ZodString>;
58
59
  }, z.core.$strip>;
59
60
  /**
60
61
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -210,7 +211,9 @@ declare const BackupScheduleSchema: z.ZodObject<{
210
211
  locationIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
211
212
  retentionCount: z.ZodNumber;
212
213
  dataSources: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
213
- lastRunAt: z.ZodOptional<z.ZodNumber>;
214
+ lastAttemptAt: z.ZodOptional<z.ZodNumber>;
215
+ lastSuccessAt: z.ZodOptional<z.ZodNumber>;
216
+ lastError: z.ZodOptional<z.ZodString>;
214
217
  nextRunAt: z.ZodOptional<z.ZodNumber>;
215
218
  }, z.core.$strip>;
216
219
  /**
@@ -246,7 +249,8 @@ export declare const backupCapability: {
246
249
  lastSuccessSizeBytes: z.ZodOptional<z.ZodNumber>;
247
250
  cron: z.ZodOptional<z.ZodString>;
248
251
  nextRunAt: z.ZodOptional<z.ZodNumber>;
249
- lastRunAt: z.ZodOptional<z.ZodNumber>;
252
+ lastAttemptAt: z.ZodOptional<z.ZodNumber>;
253
+ lastError: z.ZodOptional<z.ZodString>;
250
254
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
251
255
  /**
252
256
  * Trigger a backup. Without `destinations` the orchestrator fans
@@ -412,7 +416,6 @@ export declare const backupCapability: {
412
416
  enabled: z.ZodBoolean;
413
417
  retentionCount: z.ZodNumber;
414
418
  label: z.ZodOptional<z.ZodString>;
415
- cron: z.ZodOptional<z.ZodString>;
416
419
  }, z.core.$strip>, z.ZodVoid, "mutation">;
417
420
  /**
418
421
  * Validate a cron expression and peek the next N firing times.
@@ -440,7 +443,9 @@ export declare const backupCapability: {
440
443
  locationIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
441
444
  retentionCount: z.ZodNumber;
442
445
  dataSources: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
443
- lastRunAt: z.ZodOptional<z.ZodNumber>;
446
+ lastAttemptAt: z.ZodOptional<z.ZodNumber>;
447
+ lastSuccessAt: z.ZodOptional<z.ZodNumber>;
448
+ lastError: z.ZodOptional<z.ZodString>;
444
449
  nextRunAt: z.ZodOptional<z.ZodNumber>;
445
450
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
446
451
  /**
@@ -465,7 +470,9 @@ export declare const backupCapability: {
465
470
  locationIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
466
471
  retentionCount: z.ZodNumber;
467
472
  dataSources: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
468
- lastRunAt: z.ZodOptional<z.ZodNumber>;
473
+ lastAttemptAt: z.ZodOptional<z.ZodNumber>;
474
+ lastSuccessAt: z.ZodOptional<z.ZodNumber>;
475
+ lastError: z.ZodOptional<z.ZodString>;
469
476
  nextRunAt: z.ZodOptional<z.ZodNumber>;
470
477
  }, z.core.$strip>, "mutation">;
471
478
  /** Delete a schedule by id. Does not touch the target locations. */
package/dist/index.js CHANGED
@@ -6721,12 +6721,30 @@ var BackupDestinationInfoSchema = zod.z.object({
6721
6721
  lastSuccessAt: zod.z.number().optional(),
6722
6722
  /** Newest-archive size from `manifests.json`, or undefined. */
6723
6723
  lastSuccessSizeBytes: zod.z.number().optional(),
6724
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
6724
+ /**
6725
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
6726
+ * destination, comma-joined. Absent when no enabled schedule targets it
6727
+ * — a destination nothing is scheduled to write to must not advertise a
6728
+ * cadence (D384). This is never the `backup_destination_policies.cron`
6729
+ * column: that per-location cron has scheduled nothing since 2026-07-28
6730
+ * and reading it made a destination with a DISABLED schedule claim a
6731
+ * nightly run.
6732
+ */
6725
6733
  cron: zod.z.string().optional(),
6726
- /** ms-epoch of next computed firing for this destination's cron, if any. */
6734
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
6727
6735
  nextRunAt: zod.z.number().optional(),
6728
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
6729
- lastRunAt: zod.z.number().optional()
6736
+ /**
6737
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
6738
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
6739
+ * newest archive that actually landed) and `lastError`.
6740
+ */
6741
+ lastAttemptAt: zod.z.number().optional(),
6742
+ /**
6743
+ * Why the last attempt failed, verbatim. Absent when the last attempt
6744
+ * landed the archive. A destination that has never been written to has
6745
+ * neither this nor `lastAttemptAt`.
6746
+ */
6747
+ lastError: zod.z.string().optional()
6730
6748
  });
6731
6749
  /**
6732
6750
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -6889,8 +6907,16 @@ var BackupScheduleSchema = zod.z.object({
6889
6907
  retentionCount: zod.z.number().int().min(1).max(1e3),
6890
6908
  /** Optional subset of source locations to include; omitted = all. */
6891
6909
  dataSources: zod.z.array(zod.z.string()).readonly().optional(),
6892
- /** ms-epoch of last successful run. */
6893
- lastRunAt: zod.z.number().optional(),
6910
+ /**
6911
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
6912
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
6913
+ * "succeeded" — a run refused by every destination stamps it too.
6914
+ */
6915
+ lastAttemptAt: zod.z.number().optional(),
6916
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
6917
+ lastSuccessAt: zod.z.number().optional(),
6918
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
6919
+ lastError: zod.z.string().optional(),
6894
6920
  /** ms-epoch of next computed firing (read-only, filled on list). */
6895
6921
  nextRunAt: zod.z.number().optional()
6896
6922
  });
@@ -7019,14 +7045,7 @@ var backupCapability = {
7019
7045
  locationId: zod.z.string(),
7020
7046
  enabled: zod.z.boolean(),
7021
7047
  retentionCount: zod.z.number().int().min(1).max(1e3),
7022
- label: zod.z.string().optional(),
7023
- /**
7024
- * Per-destination cron expression. Empty string clears the
7025
- * schedule (manual-only). Validated server-side via croner;
7026
- * malformed expressions reject the upsert with an actionable
7027
- * message.
7028
- */
7029
- cron: zod.z.string().optional()
7048
+ label: zod.z.string().optional()
7030
7049
  }), zod.z.void(), {
7031
7050
  kind: "mutation",
7032
7051
  auth: "admin"
package/dist/index.mjs CHANGED
@@ -6720,12 +6720,30 @@ var BackupDestinationInfoSchema = z.object({
6720
6720
  lastSuccessAt: z.number().optional(),
6721
6721
  /** Newest-archive size from `manifests.json`, or undefined. */
6722
6722
  lastSuccessSizeBytes: z.number().optional(),
6723
- /** Per-destination cron expression. Empty = manual-only (no schedule). */
6723
+ /**
6724
+ * Cron cadence(s) of the ENABLED schedules that fan out to this
6725
+ * destination, comma-joined. Absent when no enabled schedule targets it
6726
+ * — a destination nothing is scheduled to write to must not advertise a
6727
+ * cadence (D384). This is never the `backup_destination_policies.cron`
6728
+ * column: that per-location cron has scheduled nothing since 2026-07-28
6729
+ * and reading it made a destination with a DISABLED schedule claim a
6730
+ * nightly run.
6731
+ */
6724
6732
  cron: z.string().optional(),
6725
- /** ms-epoch of next computed firing for this destination's cron, if any. */
6733
+ /** ms-epoch of the next firing across those schedules (earliest), if any. */
6726
6734
  nextRunAt: z.number().optional(),
6727
- /** ms-epoch of last successful scheduled run (mirrors policy.lastRunAt). */
6728
- lastRunAt: z.number().optional()
6735
+ /**
6736
+ * ms-epoch of the last time a run ATTEMPTED to write here — success or
6737
+ * failure. Never a success stamp: pair it with `lastSuccessAt` (the
6738
+ * newest archive that actually landed) and `lastError`.
6739
+ */
6740
+ lastAttemptAt: z.number().optional(),
6741
+ /**
6742
+ * Why the last attempt failed, verbatim. Absent when the last attempt
6743
+ * landed the archive. A destination that has never been written to has
6744
+ * neither this nor `lastAttemptAt`.
6745
+ */
6746
+ lastError: z.string().optional()
6729
6747
  });
6730
6748
  /**
6731
6749
  * Per-archive entry returned by `backup.listArchives({ destinationId })`.
@@ -6888,8 +6906,16 @@ var BackupScheduleSchema = z.object({
6888
6906
  retentionCount: z.number().int().min(1).max(1e3),
6889
6907
  /** Optional subset of source locations to include; omitted = all. */
6890
6908
  dataSources: z.array(z.string()).readonly().optional(),
6891
- /** ms-epoch of last successful run. */
6892
- lastRunAt: z.number().optional(),
6909
+ /**
6910
+ * ms-epoch of the last tick that FIRED this schedule. Stamped before the
6911
+ * archive runs (it is the dedupe anchor), so it says "attempted", never
6912
+ * "succeeded" — a run refused by every destination stamps it too.
6913
+ */
6914
+ lastAttemptAt: z.number().optional(),
6915
+ /** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
6916
+ lastSuccessAt: z.number().optional(),
6917
+ /** Why the last fired run failed, verbatim. Absent when it succeeded. */
6918
+ lastError: z.string().optional(),
6893
6919
  /** ms-epoch of next computed firing (read-only, filled on list). */
6894
6920
  nextRunAt: z.number().optional()
6895
6921
  });
@@ -7018,14 +7044,7 @@ var backupCapability = {
7018
7044
  locationId: z.string(),
7019
7045
  enabled: z.boolean(),
7020
7046
  retentionCount: z.number().int().min(1).max(1e3),
7021
- label: z.string().optional(),
7022
- /**
7023
- * Per-destination cron expression. Empty string clears the
7024
- * schedule (manual-only). Validated server-side via croner;
7025
- * malformed expressions reject the upsert with an actionable
7026
- * message.
7027
- */
7028
- cron: z.string().optional()
7047
+ label: z.string().optional()
7029
7048
  }), z.void(), {
7030
7049
  kind: "mutation",
7031
7050
  auth: "admin"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.160",
3
+ "version": "1.2.161",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",