@bivy/bivy 0.21.2-staging.3 → 0.21.2-staging.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/automation-reseal.js +2 -0
- package/dist/server.js +24 -13
- package/package.json +1 -1
- package/web/assets/{AutomationsView-BJlyyzZB.js → AutomationsView-EySs_KEg.js} +2 -2
- package/web/assets/{ChangesCard-DFbnxxCZ.js → ChangesCard-CsPXihNZ.js} +1 -1
- package/web/assets/{LibraryView-D1K5Ve6r.js → LibraryView-DpLVHKzn.js} +1 -1
- package/web/assets/{ProviderConnect-p4QZTuEv.js → ProviderConnect-Bv1Yb2fD.js} +1 -1
- package/web/assets/{SessionList-D9XLxV2U.js → SessionList-J1dcEs1S.js} +1 -1
- package/web/assets/{Settings-B6zqi76M.js → Settings-BDyXgHSa.js} +3 -3
- package/web/assets/{Sheet-BPVeFpV8.js → Sheet-DGLKdzbk.js} +1 -1
- package/web/assets/{Terminal-B3Qb-iB3.js → Terminal-DEyl0Z8y.js} +1 -1
- package/web/assets/{VoiceSettings-CufMc1h5.js → VoiceSettings-BBnFnDrW.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-D8vrVv5p.js → abnfDiagram-VCTEODGH-ZREw2yXf.js} +1 -1
- package/web/assets/architecture-7GRP2DOG-CrMfIkIG.js +1 -0
- package/web/assets/{architectureDiagram-5GKGNRK7-CA18nPWs.js → architectureDiagram-5GKGNRK7-DWaBYH6K.js} +1 -1
- package/web/assets/{blockDiagram-I7D4REHJ-D_8ZYvG5.js → blockDiagram-I7D4REHJ-CCRE9KCU.js} +1 -1
- package/web/assets/{c4Diagram-7LVT6UL2-CjaYAD8H.js → c4Diagram-7LVT6UL2-BKy8bt7m.js} +1 -1
- package/web/assets/channel-Cv-toyUN.js +1 -0
- package/web/assets/{chunk-4HAMMTFA-CYyeNdgB.js → chunk-4HAMMTFA-DnBlklhH.js} +1 -1
- package/web/assets/{chunk-75Z2AOVW-9eSzU1hH.js → chunk-75Z2AOVW-DSMb-Hif.js} +1 -1
- package/web/assets/{chunk-DU6HZSFF-f2mc_gOc.js → chunk-DU6HZSFF-CoxRGRKu.js} +1 -1
- package/web/assets/{chunk-F27PBJKO-GTHjKaWt.js → chunk-F27PBJKO-Cp_uAoM6.js} +1 -1
- package/web/assets/{chunk-GMAD6QVW-B4cWkFg0.js → chunk-GMAD6QVW-CsxrtyvJ.js} +1 -1
- package/web/assets/{chunk-GVQU2GXP-Doh88dY5.js → chunk-GVQU2GXP-CKvbY2RA.js} +1 -1
- package/web/assets/{chunk-IMKFNOWR-evZ-skzX.js → chunk-IMKFNOWR-CxAqJQGl.js} +1 -1
- package/web/assets/{chunk-L3NEJ4N5-dT84YG5m.js → chunk-L3NEJ4N5-Czq7kLwk.js} +1 -1
- package/web/assets/{chunk-OSK3NFVY--wC-pTsP.js → chunk-OSK3NFVY-CgBJJd4R.js} +1 -1
- package/web/assets/{chunk-P2QGCYS3-DoGDSquD.js → chunk-P2QGCYS3-ChYqnMoy.js} +1 -1
- package/web/assets/{chunk-POPQ4Y6H-C9yH5MMt.js → chunk-POPQ4Y6H-DRpcyaZX.js} +1 -1
- package/web/assets/{chunk-PWAF6VOD-xmjxvk12.js → chunk-PWAF6VOD-Dfre0XFn.js} +1 -1
- package/web/assets/{chunk-SHT3W25Y-DpzxUCCq.js → chunk-SHT3W25Y-CF7l32cz.js} +1 -1
- package/web/assets/{chunk-SVP7TREG-CBIQl1au.js → chunk-SVP7TREG-QMHojJFq.js} +1 -1
- package/web/assets/{chunk-TICWLB2K-jXdC4ntQ.js → chunk-TICWLB2K-Bv3bHdKn.js} +1 -1
- package/web/assets/classDiagram-ZZMXUADV-IS0NOwsu.js +1 -0
- package/web/assets/classDiagram-v2-VYDZK3BY-IS0NOwsu.js +1 -0
- package/web/assets/{cynefin-OW5HDTMX-1yYUWfHS.js → cynefin-OW5HDTMX-Dgbc2bMJ.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-D5veF8XC.js → cynefinDiagram-5FMLGOSQ-BKJmfGo9.js} +1 -1
- package/web/assets/{dagre-GXQ25YYZ-LCKXulr3.js → dagre-GXQ25YYZ-D3HHeqmk.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-BPZhUsIe.js → diagram-S7CK7UJ4-BAPPAOyE.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-_I_1mnhT.js → diagram-UQ7AKVKN-tw8OOBAI.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-Bi-jK_Tw.js → diagram-VSXAHHWV-B8DoZdqd.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-SdcuETX7.js → diagram-VX7I27RA-Dd3OFlmw.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-CK_8wm9X.js → diagram-Z3DM3KII-BUsr5_mW.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-BQYIrtCp.js → ebnfDiagram-PWID7BFC-CZqs30ra.js} +1 -1
- package/web/assets/{erDiagram-RLTQ6QDP-DZ4oAu3B.js → erDiagram-RLTQ6QDP-aiUz_ycZ.js} +1 -1
- package/web/assets/eventmodeling-NTZA5JFV-BFgQYEx8.js +1 -0
- package/web/assets/flowDiagram-HODETNUW-k0GV5e7n.js +1 -0
- package/web/assets/{ganttDiagram-EL5Y4UJY-OajJ0HO8.js → ganttDiagram-EL5Y4UJY-DXnSGGhI.js} +1 -1
- package/web/assets/{gitGraph-4MIJSDKK-D7ihHY4y.js → gitGraph-4MIJSDKK-BaRgEY7b.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-tZPS5_ZS.js → gitGraphDiagram-WWUBYQGX-CXRerAkX.js} +1 -1
- package/web/assets/{index-CVAJisfq.js → index-CI4rWZPR.js} +2 -2
- package/web/assets/{info-A6RAGUB7-qgTcQ5q7.js → info-A6RAGUB7-qlxb-wun.js} +1 -1
- package/web/assets/{infoDiagram-27XIBGKW-CUqC2Hn0.js → infoDiagram-27XIBGKW-COKsaOj3.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-3oPUqLcD.js → ishikawaDiagram-5VMMS53U-DzQNeKsk.js} +1 -1
- package/web/assets/{journeyDiagram-3NMN7TZE-BNEGkbMD.js → journeyDiagram-3NMN7TZE-BRBdV2mg.js} +1 -1
- package/web/assets/{kanban-definition-UXKFOSKX-Bp_UeKxn.js → kanban-definition-UXKFOSKX-C6k5bFim.js} +1 -1
- package/web/assets/{mermaid-parser.core-D6tfqL1x.js → mermaid-parser.core-B7QJ8DRE.js} +3 -3
- package/web/assets/{mermaid.core-_9gpP23c.js → mermaid.core-DAQJav1Z.js} +4 -4
- package/web/assets/{mindmap-definition-YA3MSWOX-W3i2E1kK.js → mindmap-definition-YA3MSWOX-D33AtBDb.js} +1 -1
- package/web/assets/{mount-wBvtB0Wr.js → mount-DL6zcz_o.js} +5 -5
- package/web/assets/{packet-AYTQ26CC-CHFLOgM5.js → packet-AYTQ26CC-CFP0jB8s.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-Bk_pKocX.js → pegDiagram-XKGWAZYB-CEVm3RVP.js} +1 -1
- package/web/assets/{pie-WAS4IAKB-CGsCI2xw.js → pie-WAS4IAKB-B0JT5kn-.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-CTXXQyut.js → pieDiagram-E7YTZNPT-DayRvJDe.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-B68enp1E.js → quadrantDiagram-AXDQQJYC-DfSLvrKZ.js} +1 -1
- package/web/assets/{radar-RG4KPBEZ-2L7avVui.js → radar-RG4KPBEZ-D-CVrFmH.js} +1 -1
- package/web/assets/{railroad-74A4TZTK-BbnL91ru.js → railroad-74A4TZTK-D-0J3DVz.js} +1 -1
- package/web/assets/railroad-abnf-HS5TGJTU-BuHGPGq0.js +1 -0
- package/web/assets/railroad-ebnf-LZEXJU2U-CLxQmA-j.js +1 -0
- package/web/assets/railroad-peg-WCYAUIDC-Bs4VCY0f.js +1 -0
- package/web/assets/{railroadDiagram-O6MQD6OU-BFzOlAw5.js → railroadDiagram-O6MQD6OU-CF4Uy5R8.js} +1 -1
- package/web/assets/{requirementDiagram-BXWQKSXE-BYbscRnJ.js → requirementDiagram-BXWQKSXE-DwUIWwss.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-BrqGvX7c.js → sankeyDiagram-P5KCCOFB-DMtBiund.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-D57SwjIA.js → sequenceDiagram-WJ2MYXX4-EkOKOd8f.js} +1 -1
- package/web/assets/{settingsRoute-DR3oWvRe.js → settingsRoute-Bs46RR9A.js} +1 -1
- package/web/assets/{stateDiagram-D77RDMKH-CbWa8uWb.js → stateDiagram-D77RDMKH-CYtf3ftf.js} +1 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-Cmr4yV8e.js +1 -0
- package/web/assets/{swimlanes-42K2YHIH-Db1Z11QB.js → swimlanes-42K2YHIH-C7_ixp95.js} +1 -1
- package/web/assets/swimlanesDiagram-VR7AAH4N-eHenAgA4.js +8 -0
- package/web/assets/{timeline-definition-24CTP7MA-CFvEEzXN.js → timeline-definition-24CTP7MA-TqHv7mSk.js} +1 -1
- package/web/assets/{treeView-Q6P3EWNA-B06daggs.js → treeView-Q6P3EWNA-i2yiuF5d.js} +1 -1
- package/web/assets/{treemap-WGGIJYW6-QlWbZ0PY.js → treemap-WGGIJYW6-BXbEvQ7u.js} +1 -1
- package/web/assets/{useStore-ByZarnni.js → useStore---DpND1E.js} +2 -2
- package/web/assets/{vennDiagram-4TSXK5OY-R_UCGezy.js → vennDiagram-4TSXK5OY-C_Lxp336.js} +1 -1
- package/web/assets/{wardley-WFR3VGLG-D2xzUpJ1.js → wardley-WFR3VGLG-Cdcun1j6.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-B30QUmzL.js → wardleyDiagram-VM6X3IG4-D0aDTDXt.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-BV8t7MaL.js → xychartDiagram-S5SC5T6Z-DGszedlj.js} +1 -1
- package/web/index.html +1 -1
- package/web/sw.js +1 -1
- package/web/assets/architecture-7GRP2DOG-CsAMjbd6.js +0 -1
- package/web/assets/channel-D41IngZD.js +0 -1
- package/web/assets/classDiagram-ZZMXUADV-Co6_Cdek.js +0 -1
- package/web/assets/classDiagram-v2-VYDZK3BY-Co6_Cdek.js +0 -1
- package/web/assets/eventmodeling-NTZA5JFV-lCMmC-9N.js +0 -1
- package/web/assets/flowDiagram-HODETNUW-BgbYUorQ.js +0 -1
- package/web/assets/railroad-abnf-HS5TGJTU-BkQBYxO_.js +0 -1
- package/web/assets/railroad-ebnf-LZEXJU2U-e2fBEWtf.js +0 -1
- package/web/assets/railroad-peg-WCYAUIDC-BxZNtI59.js +0 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-rYTuDWOL.js +0 -1
- package/web/assets/swimlanesDiagram-VR7AAH4N-CaOU_rKU.js +0 -8
|
@@ -13,6 +13,8 @@ export async function resealAutomationTemplates(opts) {
|
|
|
13
13
|
const plaintext = opts.retired.map((key) => tryOpen(key, payload)).find((text) => text !== undefined);
|
|
14
14
|
if (plaintext === undefined) {
|
|
15
15
|
result.unreadable.push(template.id);
|
|
16
|
+
if (!template.instructionsUnreadable)
|
|
17
|
+
await opts.markUnreadable(template.id);
|
|
16
18
|
continue;
|
|
17
19
|
}
|
|
18
20
|
await opts.save(template.id, `${prefix}${seal(opts.current, plaintext)}`);
|
package/dist/server.js
CHANGED
|
@@ -1078,7 +1078,7 @@ const linkedDevices = createLinkedDeviceController({
|
|
|
1078
1078
|
syncPairingMetadata();
|
|
1079
1079
|
relay?.pushRotate(deliveries);
|
|
1080
1080
|
broadcast({ type: "devices.updated", devices });
|
|
1081
|
-
void
|
|
1081
|
+
void checkAutomationTemplates();
|
|
1082
1082
|
},
|
|
1083
1083
|
});
|
|
1084
1084
|
const accessDevices = createAccessDeviceController({
|
|
@@ -3545,7 +3545,7 @@ function startRelayIfConfigured() {
|
|
|
3545
3545
|
if (config.controlPlaneUrl && config.enrollmentToken) {
|
|
3546
3546
|
sessionAdvertiseTarget = { controlPlaneUrl: config.controlPlaneUrl, enrollmentToken: config.enrollmentToken };
|
|
3547
3547
|
void syncModelAuthFromControlPlane();
|
|
3548
|
-
void
|
|
3548
|
+
void checkAutomationTemplates();
|
|
3549
3549
|
if (remoteRuntimeEnabled()) {
|
|
3550
3550
|
// Stage 3: layer a control-plane-backed location registry UNDER the in-memory
|
|
3551
3551
|
// one (so a lookup surviving a restart resolves from durable state), then
|
|
@@ -3675,27 +3675,36 @@ async function modelAuthFetch(pathname, init = {}) {
|
|
|
3675
3675
|
}
|
|
3676
3676
|
// A device revoke rotates the room key. Re-seal this node's stored automation
|
|
3677
3677
|
// instructions under the new key so the node and its devices can still read
|
|
3678
|
-
// them, then drop the retired keys.
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3678
|
+
// them, then drop the retired keys. Instructions no key opens are flagged so the
|
|
3679
|
+
// automation list asks for them again. Runs at every start (retried there until
|
|
3680
|
+
// it completes), after a revoke, and when a run can't open its instructions.
|
|
3681
|
+
let automationTemplateCheck = null;
|
|
3682
|
+
function checkAutomationTemplates() {
|
|
3683
|
+
automationTemplateCheck ??= reconcileAutomationTemplates().finally(() => { automationTemplateCheck = null; });
|
|
3684
|
+
return automationTemplateCheck;
|
|
3685
|
+
}
|
|
3686
|
+
async function reconcileAutomationTemplates() {
|
|
3687
|
+
if (!sessionAdvertiseTarget)
|
|
3682
3688
|
return;
|
|
3689
|
+
const retired = pairingStore.retiredRoomKeys();
|
|
3683
3690
|
const current = pairingStore.roomKey();
|
|
3684
3691
|
try {
|
|
3685
3692
|
const res = await modelAuthFetch("/node/automation-templates");
|
|
3686
3693
|
if (!res?.ok)
|
|
3687
3694
|
throw new Error(`control plane returned ${res?.status}`);
|
|
3688
3695
|
const { templates } = await res.json();
|
|
3696
|
+
const call = async (pathname, init) => {
|
|
3697
|
+
const out = await modelAuthFetch(pathname, init);
|
|
3698
|
+
if (!out?.ok)
|
|
3699
|
+
throw new Error(`control plane returned ${out?.status}`);
|
|
3700
|
+
};
|
|
3689
3701
|
const result = await resealAutomationTemplates({
|
|
3690
3702
|
nodeId: identity.nodeId,
|
|
3691
3703
|
current,
|
|
3692
3704
|
retired,
|
|
3693
3705
|
templates,
|
|
3694
|
-
save:
|
|
3695
|
-
|
|
3696
|
-
if (!saved?.ok)
|
|
3697
|
-
throw new Error(`control plane returned ${saved?.status}`);
|
|
3698
|
-
},
|
|
3706
|
+
save: (id, templateCiphertext) => call(`/node/automation-templates/${encodeURIComponent(id)}`, { method: "PUT", body: JSON.stringify({ templateCiphertext }) }),
|
|
3707
|
+
markUnreadable: (id) => call(`/node/automation-templates/${encodeURIComponent(id)}/unreadable`, { method: "POST" }),
|
|
3699
3708
|
});
|
|
3700
3709
|
if (result.resealed)
|
|
3701
3710
|
console.log(`[automation-reseal] re-sealed ${result.resealed} automation template(s) under the rotated room key`);
|
|
@@ -3703,8 +3712,9 @@ async function resealRetiredAutomationTemplates() {
|
|
|
3703
3712
|
console.warn(`[automation-reseal] ${result.unreadable.length} automation template(s) were sealed under a key this node no longer has: ${result.unreadable.join(", ")}`);
|
|
3704
3713
|
// Another rotation during this pass retired `current`; run again for it.
|
|
3705
3714
|
if (!pairingStore.roomKey().equals(current))
|
|
3706
|
-
return
|
|
3707
|
-
|
|
3715
|
+
return reconcileAutomationTemplates();
|
|
3716
|
+
if (retired.length)
|
|
3717
|
+
pairingStore.forgetRetiredRoomKeys();
|
|
3708
3718
|
}
|
|
3709
3719
|
catch (error) {
|
|
3710
3720
|
console.warn("[automation-reseal] will retry at next start:", error.message);
|
|
@@ -5474,6 +5484,7 @@ async function executeWorkItem(item, report, signal) {
|
|
|
5474
5484
|
item = { ...item, body: template.instructions };
|
|
5475
5485
|
}
|
|
5476
5486
|
catch {
|
|
5487
|
+
void checkAutomationTemplates();
|
|
5477
5488
|
throw new Error("could not decrypt automation instructions on this node");
|
|
5478
5489
|
}
|
|
5479
5490
|
}
|
package/package.json
CHANGED