@camstack/addon-export-google 0.1.22 → 0.1.23
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/export-google.addon.js +118 -1
- package/dist/export-google.addon.mjs +118 -1
- package/package.json +1 -1
|
@@ -10746,6 +10746,89 @@ var LocationStatSchema = object({
|
|
|
10746
10746
|
fileCount: number(),
|
|
10747
10747
|
present: boolean()
|
|
10748
10748
|
});
|
|
10749
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
10750
|
+
var BackupRunStateSchema = _enum([
|
|
10751
|
+
"queued",
|
|
10752
|
+
"running",
|
|
10753
|
+
"succeeded",
|
|
10754
|
+
"failed",
|
|
10755
|
+
"cancelled"
|
|
10756
|
+
]);
|
|
10757
|
+
/**
|
|
10758
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
10759
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
10760
|
+
* per-destination fan-out, `done` once terminal.
|
|
10761
|
+
*/
|
|
10762
|
+
var BackupRunPhaseSchema = _enum([
|
|
10763
|
+
"queued",
|
|
10764
|
+
"building",
|
|
10765
|
+
"uploading",
|
|
10766
|
+
"done"
|
|
10767
|
+
]);
|
|
10768
|
+
/**
|
|
10769
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
10770
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
10771
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
10772
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
10773
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
10774
|
+
* how large the staged archive had grown.
|
|
10775
|
+
*/
|
|
10776
|
+
var BackupRunSchema = object({
|
|
10777
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
10778
|
+
id: string(),
|
|
10779
|
+
state: BackupRunStateSchema,
|
|
10780
|
+
phase: BackupRunPhaseSchema,
|
|
10781
|
+
/**
|
|
10782
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
10783
|
+
* resolved when the run starts, against the then-current policies).
|
|
10784
|
+
*/
|
|
10785
|
+
destinationIds: array(string()).readonly(),
|
|
10786
|
+
label: string().optional(),
|
|
10787
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
10788
|
+
requestedAt: number(),
|
|
10789
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
10790
|
+
startedAt: number().optional(),
|
|
10791
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
10792
|
+
finishedAt: number().optional(),
|
|
10793
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
10794
|
+
stagedBytes: number(),
|
|
10795
|
+
/** Final staged archive size, once the build phase completes. */
|
|
10796
|
+
archiveSizeBytes: number().optional(),
|
|
10797
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
10798
|
+
uploadedBytes: number(),
|
|
10799
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
10800
|
+
completedDestinationIds: array(string()).readonly(),
|
|
10801
|
+
/** Destinations that failed during the fan-out. */
|
|
10802
|
+
failedDestinationIds: array(string()).readonly(),
|
|
10803
|
+
/** Failure message when `state === 'failed'`. */
|
|
10804
|
+
error: string().optional(),
|
|
10805
|
+
/**
|
|
10806
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
10807
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
10808
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
10809
|
+
* UI cannot show an order the executor will not honour.
|
|
10810
|
+
*/
|
|
10811
|
+
queuePosition: number().int().min(1).optional()
|
|
10812
|
+
});
|
|
10813
|
+
/**
|
|
10814
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
10815
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
10816
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
10817
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
10818
|
+
* an identical already-queued run), never started concurrently.
|
|
10819
|
+
*/
|
|
10820
|
+
var BackupTriggerResultSchema = object({
|
|
10821
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
10822
|
+
runId: string(),
|
|
10823
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
10824
|
+
queued: boolean(),
|
|
10825
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
10826
|
+
joined: boolean(),
|
|
10827
|
+
/** True when the run was cancelled before completing every destination. */
|
|
10828
|
+
cancelled: boolean(),
|
|
10829
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
10830
|
+
entries: array(BackupEntrySchema).readonly()
|
|
10831
|
+
});
|
|
10749
10832
|
/**
|
|
10750
10833
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
10751
10834
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -10793,7 +10876,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10793
10876
|
* retention (manual runs).
|
|
10794
10877
|
*/
|
|
10795
10878
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
10796
|
-
}).optional(),
|
|
10879
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
10880
|
+
kind: "mutation",
|
|
10881
|
+
auth: "admin"
|
|
10882
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
10797
10883
|
kind: "mutation",
|
|
10798
10884
|
auth: "admin"
|
|
10799
10885
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -11510,6 +11596,14 @@ method(object({
|
|
|
11510
11596
|
}), object({ success: literal(true) }), {
|
|
11511
11597
|
kind: "mutation",
|
|
11512
11598
|
auth: "admin"
|
|
11599
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
11600
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
11601
|
+
assignmentsPurged: boolean(),
|
|
11602
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
11603
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
11604
|
+
}), {
|
|
11605
|
+
kind: "mutation",
|
|
11606
|
+
auth: "admin"
|
|
11513
11607
|
}), method(object({
|
|
11514
11608
|
deviceId: number(),
|
|
11515
11609
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -29687,6 +29781,12 @@ Object.freeze({
|
|
|
29687
29781
|
addonId: null,
|
|
29688
29782
|
access: "create"
|
|
29689
29783
|
},
|
|
29784
|
+
"backup.cancel": {
|
|
29785
|
+
capName: "backup",
|
|
29786
|
+
capScope: "system",
|
|
29787
|
+
addonId: null,
|
|
29788
|
+
access: "create"
|
|
29789
|
+
},
|
|
29690
29790
|
"backup.delete": {
|
|
29691
29791
|
capName: "backup",
|
|
29692
29792
|
capScope: "system",
|
|
@@ -29729,6 +29829,12 @@ Object.freeze({
|
|
|
29729
29829
|
addonId: null,
|
|
29730
29830
|
access: "view"
|
|
29731
29831
|
},
|
|
29832
|
+
"backup.listRuns": {
|
|
29833
|
+
capName: "backup",
|
|
29834
|
+
capScope: "system",
|
|
29835
|
+
addonId: null,
|
|
29836
|
+
access: "view"
|
|
29837
|
+
},
|
|
29732
29838
|
"backup.listSchedules": {
|
|
29733
29839
|
capName: "backup",
|
|
29734
29840
|
capScope: "system",
|
|
@@ -34295,6 +34401,12 @@ Object.freeze({
|
|
|
34295
34401
|
addonId: null,
|
|
34296
34402
|
access: "create"
|
|
34297
34403
|
},
|
|
34404
|
+
"streamBroker.forgetDeviceHardware": {
|
|
34405
|
+
capName: "stream-broker",
|
|
34406
|
+
capScope: "system",
|
|
34407
|
+
addonId: null,
|
|
34408
|
+
access: "delete"
|
|
34409
|
+
},
|
|
34298
34410
|
"streamBroker.getAllRtspEntries": {
|
|
34299
34411
|
capName: "stream-broker",
|
|
34300
34412
|
capScope: "system",
|
|
@@ -36753,6 +36865,11 @@ Object.freeze({
|
|
|
36753
36865
|
form: "single",
|
|
36754
36866
|
optional: false
|
|
36755
36867
|
}],
|
|
36868
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
36869
|
+
name: "deviceId",
|
|
36870
|
+
form: "single",
|
|
36871
|
+
optional: false
|
|
36872
|
+
}],
|
|
36756
36873
|
"streamBroker.getDeviceAudioMute": [{
|
|
36757
36874
|
name: "deviceId",
|
|
36758
36875
|
form: "single",
|
|
@@ -10742,6 +10742,89 @@ var LocationStatSchema = object({
|
|
|
10742
10742
|
fileCount: number(),
|
|
10743
10743
|
present: boolean()
|
|
10744
10744
|
});
|
|
10745
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
10746
|
+
var BackupRunStateSchema = _enum([
|
|
10747
|
+
"queued",
|
|
10748
|
+
"running",
|
|
10749
|
+
"succeeded",
|
|
10750
|
+
"failed",
|
|
10751
|
+
"cancelled"
|
|
10752
|
+
]);
|
|
10753
|
+
/**
|
|
10754
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
10755
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
10756
|
+
* per-destination fan-out, `done` once terminal.
|
|
10757
|
+
*/
|
|
10758
|
+
var BackupRunPhaseSchema = _enum([
|
|
10759
|
+
"queued",
|
|
10760
|
+
"building",
|
|
10761
|
+
"uploading",
|
|
10762
|
+
"done"
|
|
10763
|
+
]);
|
|
10764
|
+
/**
|
|
10765
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
10766
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
10767
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
10768
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
10769
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
10770
|
+
* how large the staged archive had grown.
|
|
10771
|
+
*/
|
|
10772
|
+
var BackupRunSchema = object({
|
|
10773
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
10774
|
+
id: string(),
|
|
10775
|
+
state: BackupRunStateSchema,
|
|
10776
|
+
phase: BackupRunPhaseSchema,
|
|
10777
|
+
/**
|
|
10778
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
10779
|
+
* resolved when the run starts, against the then-current policies).
|
|
10780
|
+
*/
|
|
10781
|
+
destinationIds: array(string()).readonly(),
|
|
10782
|
+
label: string().optional(),
|
|
10783
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
10784
|
+
requestedAt: number(),
|
|
10785
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
10786
|
+
startedAt: number().optional(),
|
|
10787
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
10788
|
+
finishedAt: number().optional(),
|
|
10789
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
10790
|
+
stagedBytes: number(),
|
|
10791
|
+
/** Final staged archive size, once the build phase completes. */
|
|
10792
|
+
archiveSizeBytes: number().optional(),
|
|
10793
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
10794
|
+
uploadedBytes: number(),
|
|
10795
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
10796
|
+
completedDestinationIds: array(string()).readonly(),
|
|
10797
|
+
/** Destinations that failed during the fan-out. */
|
|
10798
|
+
failedDestinationIds: array(string()).readonly(),
|
|
10799
|
+
/** Failure message when `state === 'failed'`. */
|
|
10800
|
+
error: string().optional(),
|
|
10801
|
+
/**
|
|
10802
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
10803
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
10804
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
10805
|
+
* UI cannot show an order the executor will not honour.
|
|
10806
|
+
*/
|
|
10807
|
+
queuePosition: number().int().min(1).optional()
|
|
10808
|
+
});
|
|
10809
|
+
/**
|
|
10810
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
10811
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
10812
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
10813
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
10814
|
+
* an identical already-queued run), never started concurrently.
|
|
10815
|
+
*/
|
|
10816
|
+
var BackupTriggerResultSchema = object({
|
|
10817
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
10818
|
+
runId: string(),
|
|
10819
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
10820
|
+
queued: boolean(),
|
|
10821
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
10822
|
+
joined: boolean(),
|
|
10823
|
+
/** True when the run was cancelled before completing every destination. */
|
|
10824
|
+
cancelled: boolean(),
|
|
10825
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
10826
|
+
entries: array(BackupEntrySchema).readonly()
|
|
10827
|
+
});
|
|
10745
10828
|
/**
|
|
10746
10829
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
10747
10830
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -10789,7 +10872,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10789
10872
|
* retention (manual runs).
|
|
10790
10873
|
*/
|
|
10791
10874
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
10792
|
-
}).optional(),
|
|
10875
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
10876
|
+
kind: "mutation",
|
|
10877
|
+
auth: "admin"
|
|
10878
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
10793
10879
|
kind: "mutation",
|
|
10794
10880
|
auth: "admin"
|
|
10795
10881
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -11506,6 +11592,14 @@ method(object({
|
|
|
11506
11592
|
}), object({ success: literal(true) }), {
|
|
11507
11593
|
kind: "mutation",
|
|
11508
11594
|
auth: "admin"
|
|
11595
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
11596
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
11597
|
+
assignmentsPurged: boolean(),
|
|
11598
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
11599
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
11600
|
+
}), {
|
|
11601
|
+
kind: "mutation",
|
|
11602
|
+
auth: "admin"
|
|
11509
11603
|
}), method(object({
|
|
11510
11604
|
deviceId: number(),
|
|
11511
11605
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -29683,6 +29777,12 @@ Object.freeze({
|
|
|
29683
29777
|
addonId: null,
|
|
29684
29778
|
access: "create"
|
|
29685
29779
|
},
|
|
29780
|
+
"backup.cancel": {
|
|
29781
|
+
capName: "backup",
|
|
29782
|
+
capScope: "system",
|
|
29783
|
+
addonId: null,
|
|
29784
|
+
access: "create"
|
|
29785
|
+
},
|
|
29686
29786
|
"backup.delete": {
|
|
29687
29787
|
capName: "backup",
|
|
29688
29788
|
capScope: "system",
|
|
@@ -29725,6 +29825,12 @@ Object.freeze({
|
|
|
29725
29825
|
addonId: null,
|
|
29726
29826
|
access: "view"
|
|
29727
29827
|
},
|
|
29828
|
+
"backup.listRuns": {
|
|
29829
|
+
capName: "backup",
|
|
29830
|
+
capScope: "system",
|
|
29831
|
+
addonId: null,
|
|
29832
|
+
access: "view"
|
|
29833
|
+
},
|
|
29728
29834
|
"backup.listSchedules": {
|
|
29729
29835
|
capName: "backup",
|
|
29730
29836
|
capScope: "system",
|
|
@@ -34291,6 +34397,12 @@ Object.freeze({
|
|
|
34291
34397
|
addonId: null,
|
|
34292
34398
|
access: "create"
|
|
34293
34399
|
},
|
|
34400
|
+
"streamBroker.forgetDeviceHardware": {
|
|
34401
|
+
capName: "stream-broker",
|
|
34402
|
+
capScope: "system",
|
|
34403
|
+
addonId: null,
|
|
34404
|
+
access: "delete"
|
|
34405
|
+
},
|
|
34294
34406
|
"streamBroker.getAllRtspEntries": {
|
|
34295
34407
|
capName: "stream-broker",
|
|
34296
34408
|
capScope: "system",
|
|
@@ -36749,6 +36861,11 @@ Object.freeze({
|
|
|
36749
36861
|
form: "single",
|
|
36750
36862
|
optional: false
|
|
36751
36863
|
}],
|
|
36864
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
36865
|
+
name: "deviceId",
|
|
36866
|
+
form: "single",
|
|
36867
|
+
optional: false
|
|
36868
|
+
}],
|
|
36752
36869
|
"streamBroker.getDeviceAudioMute": [{
|
|
36753
36870
|
name: "deviceId",
|
|
36754
36871
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-google",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Google Home export — hub-side smart-home fulfillment (SYNC / QUERY / EXECUTE / DISCONNECT) for the non-camera fleet, served over the hub's own OAuth account link. No Google credential is stored, sent or required.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|