@runeya/runeya 2.0.32 → 2.0.33
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/index.js +1 -1
- package/package.json +1 -1
- package/{src-KERYXMIR.js → src-U3ECNNB6.js} +97 -12
- package/src-U3ECNNB6.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-_8ZxeM0a.js → AgentScalarChatInterface.vue-_d0FQndF.js} +1 -1
- package/web/assets/{AgentTerminalPage-DXRPHQVX.js → AgentTerminalPage-MAnraxPv.js} +1 -1
- package/web/assets/AiChatPage-CbS7x-0V.js +1 -0
- package/web/assets/{AppLayout-DUn0cZS7.js → AppLayout-D2IqSY3k.js} +1 -1
- package/web/assets/{AuditPage-EvOL18nm.js → AuditPage-Aku7hNuy.js} +1 -1
- package/web/assets/CloudAccountPage-B0DOhFL9.js +1 -0
- package/web/assets/CloudAccountPage-CRN-tnI1.css +1 -0
- package/web/assets/CloudAccountPage-Dtv7HTxi.js +1 -0
- package/web/assets/CloudMessagingPage-DQ_OQj8y.js +2 -0
- package/web/assets/CloudMessagingPage-L-bG3z5q.css +1 -0
- package/web/assets/{DashboardPage-CK4g4Tme.js → DashboardPage-BmJuLhrC.js} +1 -1
- package/web/assets/{EditorIcon-BIgiRqya.js → EditorIcon-Dd8hBZ2W.js} +1 -1
- package/web/assets/{EnvironmentForm-BXOR1otz.js → EnvironmentForm-Dtc15T5b.js} +1 -1
- package/web/assets/{EnvironmentFormPage-Be0qAprW.js → EnvironmentFormPage-Ct_IB45z.js} +1 -1
- package/web/assets/{EnvironmentListPage-D19RJC0u.js → EnvironmentListPage-Cmvz279m.js} +1 -1
- package/web/assets/{EnvironmentSelector-CvuzSsxR.js → EnvironmentSelector-xSJqTA8B.js} +1 -1
- package/web/assets/{KanbanBoardPage-Ywmdoxo2.js → KanbanBoardPage-BPENx0dI.js} +3 -3
- package/web/assets/{KanbanListPage-BbtUSmYp.js → KanbanListPage-wRWXmT8y.js} +1 -1
- package/web/assets/{LaunchProjectPage-Dn_9DQ1Q.js → LaunchProjectPage-Byw_D9zD.js} +1 -1
- package/web/assets/{LaunchServicesPage-CRdrBEoh.js → LaunchServicesPage-BUHzR08U.js} +1 -1
- package/web/assets/{LogViewer-BSOZfxmC.js → LogViewer-BUqjt3du.js} +1 -1
- package/web/assets/{ProcessControls-0SnCcKsw.js → ProcessControls-CBN93qC2.js} +1 -1
- package/web/assets/{ProcessDetailPage-BrZnwsXr.js → ProcessDetailPage-DzKon1sD.js} +1 -1
- package/web/assets/{ProcessMetrics-a83nFX2p.js → ProcessMetrics-CnybcxCt.js} +1 -1
- package/web/assets/{ProjectDetailPage-CkSErVw4.js → ProjectDetailPage-DyrSoCXZ.js} +1 -1
- package/web/assets/{ProjectListPage-g6Xnou9R.js → ProjectListPage-BmGTvtQY.js} +1 -1
- package/web/assets/{RandomJobTestPage-BsBDflAF.js → RandomJobTestPage-Cw76neG0.js} +1 -1
- package/web/assets/{ScenarioEditorPage-yKFpZUiR.js → ScenarioEditorPage-BKXLRaVb.js} +1 -1
- package/web/assets/{SendToChatDialog-D8ydDtdJ.js → SendToChatDialog-DS6ygiLN.js} +1 -1
- package/web/assets/{ServiceControlsBar-CWx-zchM.js → ServiceControlsBar-CVy99xTo.js} +1 -1
- package/web/assets/{ServiceDetailPage-DG40IMvy.js → ServiceDetailPage-DZ9_Me8A.js} +1 -1
- package/web/assets/{ServiceFormPage-CZNwSWP3.js → ServiceFormPage-OLPKsqQS.js} +1 -1
- package/web/assets/{SettingsPage-GLYf_4R0.js → SettingsPage-CdTx7AnK.js} +4 -4
- package/web/assets/{SetupPage-obpqW5Mi.js → SetupPage-BPvhbfLe.js} +1 -1
- package/web/assets/{UnlockPage-CWwwpn3_.js → UnlockPage-DBM00rzm.js} +1 -1
- package/web/assets/{VariablesTable-zi3h9dWC.js → VariablesTable-CPGvcqUc.js} +1 -1
- package/web/assets/{VersionBadge-6mKcCE2O.js → VersionBadge-exF5SS92.js} +1 -1
- package/web/assets/WikiPage-DI-gEFLI.js +1 -0
- package/web/assets/{WikiView-CPWPuheg.js → WikiView-CHYiB0KB.js} +1 -1
- package/web/assets/{add-scalar-classes-BCfvGPPW.js → add-scalar-classes-_urkKKAx.js} +3 -3
- package/web/assets/auth-errors-DuCcISQ3.js +1 -0
- package/web/assets/{autocomplete-BnB1wTK7.js → autocomplete-DOJyM3O4.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-Dju7HYUn.js → basic-shape-diamond.svg-CpUSmNFl.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-CUl5r_6H.js → basic-shape-hexagon.svg-CQYpGSV7.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DT7a4zpg.js → basic-shape-primary-circle-ellipse-round.svg-DzIL8_ij.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-CUCQNRyb.js → basic-shape-primary-square-rectangle.svg-DQk0s7-B.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-C1iuG3rm.js → basic-shape-shield.svg-Dvwzvo1f.js} +1 -1
- package/web/assets/{browser-uzCQNPCh.js → browser-Di-oVkMY.js} +1 -1
- package/web/assets/{browser-D9I_5GDd.js → browser-Wi5J-ETz.js} +1 -1
- package/web/assets/{card-Q-zM-syI.js → card-D4D75E3s.js} +1 -1
- package/web/assets/{checkbox-FEUuFC_Y.js → checkbox-DLT8zwu6.js} +1 -1
- package/web/assets/{chip-CvXMho_w.js → chip-DLu-SF6Z.js} +1 -1
- package/web/assets/{client-AiAB6bc-.js → client-BhMOCob9.js} +1 -1
- package/web/assets/{cloud-chat.store-C1C_xXln.js → cloud-chat.store-DyxcLYye.js} +1 -1
- package/web/assets/{cloud-client-RA4AN5Qm.js → cloud-client-DL07DCp9.js} +1 -1
- package/web/assets/{column-CK_-tsqy.js → column-B0TVmSXF.js} +1 -1
- package/web/assets/{computer-device-desktop-monitor.svg-ji7PpcDV.js → computer-device-desktop-monitor.svg-C6JA2GEU.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-DCn-YofE.js → computer-device-desktop.svg-B-jASu9C.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-BKp5RGqQ.js → computer-device-laptop.svg-DQpSeGYJ.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-B_azyGXz.js → computer-device-mobile-phone-android-samsung-back.svg-CjgWas4b.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-Cbp3jEIV.js → computer-device-mobile-phone-android-samsung.svg-BN8bvWae.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DrUVY9Y6.js → computer-device-mobile-phone-iphone-x-back.svg-CUa1bMPB.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CozOtyBz.js → computer-device-mobile-phone-iphone-x.svg-n1XuTfhv.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-Bb8PcTWq.js → computer-device-mobile-tablet-touch.svg-B9G4dZyk.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-EAoOTwhr.js → computer-device-mobile-tablet.svg-D8NkeKHw.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-CMoixkFr.js → computer-device-network-ethernet-cat6.svg-TmhSHD-e.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-DEaWMaGx.js → computer-device-network-lan-www.svg-2f28OX0p.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-DTJluQnx.js → computer-device-network-wifi-connection.svg-Kpr5zyss.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-n7yb_VcU.js → computer-device-network-wifi-router.svg-JMyR11LD.js} +1 -1
- package/web/assets/{cssMode-DDNae5Uh.js → cssMode-UgKjANAC.js} +1 -1
- package/web/assets/{divider-C9a8oncb.js → divider-BIR7PvSC.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-D1wdrkY-.js → ecology-science-erlenmeyer-flask.svg-Coxai5AB.js} +1 -1
- package/web/assets/{fieldset-UBXA0ap4.js → fieldset-Cz4oioUO.js} +1 -1
- package/web/assets/{freemarker2-BP2Vo-wb.js → freemarker2-C68PJ7mj.js} +1 -1
- package/web/assets/{handlebars-WGkalb7c.js → handlebars-k7r7xQOh.js} +1 -1
- package/web/assets/{html-4t0vE2cm.js → html-B2edirGb.js} +1 -1
- package/web/assets/{htmlMode-DtCen0tt.js → htmlMode-DaD50SVj.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-bTSl31AM.js → image-flash-lightning.svg-Cs1cAEW3.js} +1 -1
- package/web/assets/{image-picture-flower.svg-DWCGkvxQ.js → image-picture-flower.svg-CG00uPk5.js} +1 -1
- package/web/assets/{index-DNteKGBo.js → index-CeEn33Iz.js} +4 -4
- package/web/assets/{interface-alert-exclamation-diamond.svg-Ccq-3v2w.js → interface-alert-exclamation-diamond.svg-DJE8F8B0.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CMtkkHY4.js → interface-alert-exclamation-triangle-warning.svg-DUFU4aQj.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-7REF2XAO.js → interface-alert-information-circle.svg-MJjBaMOz.js} +1 -1
- package/web/assets/{interface-award-crown.svg-Bqs2FD9W.js → interface-award-crown.svg-BX8_EIlg.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CNQ3aOhm.js → interface-bookmark-tag.svg-CzAApyLr.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-DV3t86U4.js → interface-bookmark.svg-DhZFLUeP.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-C5pz1Cpo.js → interface-calendar-date-one.svg-CPKAPZTz.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-DBerFfrq.js → interface-content-book-open-pages.svg-DCTgF-_q.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-BPcYBSJt.js → interface-content-book-page.svg-CZHPjlIs.js} +1 -1
- package/web/assets/{interface-content-file.svg-B75j-2KK.js → interface-content-file.svg-DzE1senh.js} +1 -1
- package/web/assets/{interface-content-folder.svg-BffZJWcG.js → interface-content-folder.svg-CBb6q5ZU.js} +1 -1
- package/web/assets/interface-content-folder.svg-sFZbfeKy.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-V85mcFW9.js → interface-copy-clipboard.svg-CR0xwfSu.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-_qbUi74N.js → interface-edit-attachment.svg-h526wvAD.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-Dh6R7jjV.js → interface-edit-binocular.svg-DXnC0PwZ.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-27k10wEA.js → interface-edit-magic-wand.svg-qg3wQp8H.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DjenxKUQ.js → interface-edit-tool-paint-roller.svg-BicViH5D.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-CJdHhMGV.js → interface-edit-tool-pencil.svg-D393JYYp.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-DTgYGssM.js → interface-favorite-award.svg-DP1qTBdu.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-DiM3iNKR.js → interface-favorite-flag.svg-B4kKh0FW.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-B3i7-Ltr.js → interface-favorite-heart.svg-C2pVz9qh.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-DY8g8RzQ.js → interface-favorite-star.svg-Dp3715Dj.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-CbSj7MTe.js → interface-favorite-stars-sparkles.svg-CkFPuwEi.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-DNMYUQZR.js → interface-hierarchy-flowchart.svg-CQgibrlv.js} +1 -1
- package/web/assets/{interface-home-house.svg-CSjpwAhk.js → interface-home-house.svg-D1y5VSRr.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-tBBull94.js → interface-hyperlink.svg-DvQCXyBn.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-CzZv3mSH.js → interface-lighting-brightness.svg-pSfxpTGz.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-d1YuB-JP.js → interface-lock-closed.svg-BxrQzlZS.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-C823-w_k.js → interface-lock-open-unlock.svg-CjMizhoH.js} +1 -1
- package/web/assets/{interface-login-key.svg-Zgr3JVdK.js → interface-login-key.svg-DGqQFG_l.js} +1 -1
- package/web/assets/{interface-search.svg-DSz3cpEX.js → interface-search.svg-fjABlYPF.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-DJC2Yi7k.js → interface-setting-cog.svg-CfNtVNCD.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-DArgZFlM.js → interface-share-megaphone-bullhorn.svg-BOVpWoDt.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-BQqNQPuk.js → interface-share-rocket.svg-BtlJnDNN.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-BaI-4gYm.js → interface-share-satellite.svg-BKAAvk16.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-BtJixJte.js → interface-share-space-ship.svg-DpDuvWjx.js} +1 -1
- package/web/assets/{interface-share.svg-BuiUg2rj.js → interface-share.svg-CmvO0ksM.js} +1 -1
- package/web/assets/{interface-signal-square.svg-BJysvTvC.js → interface-signal-square.svg-B-sMU22V.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-CSsCSYI8.js → interface-time-clock-circle.svg-e0dWkqL8.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-CRpDSBdA.js → interface-time-hour-glass.svg-406FnDKz.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-CccqUlCN.js → interface-users-multiple.svg-DoYJsz0L.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-YzMEbEWI.js → interface-weather-moon.svg-D5H9VVjm.js} +1 -1
- package/web/assets/{javascript-m5F7K8WX.js → javascript-COGcfnZA.js} +1 -1
- package/web/assets/{jsonMode-iF83wtZ5.js → jsonMode-BPZdJlGH.js} +1 -1
- package/web/assets/{liquid-DczPoOXg.js → liquid-tYb2UdC4.js} +1 -1
- package/web/assets/{lspLanguageFeatures-C6czeCrg.js → lspLanguageFeatures-DCNjW9fm.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-CK2zqaie.js → mail-chat-bubble-square.svg-DYU_WNiL.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-BpRIPhGO.js → mail-send-email-paper-airplane.svg-hl4aPsZw.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-DEWP9xPR.js → mail-send-envelope.svg-ZPGp6HAb.js} +1 -1
- package/web/assets/{mdx-DZDVEfh6.js → mdx-CJnmZc8m.js} +1 -1
- package/web/assets/{message-DcYhBnTI.js → message-DeJ8q52V.js} +1 -1
- package/web/assets/{minus-BHnB3T4Z.js → minus-Ct22lCsG.js} +1 -1
- package/web/assets/modal-BeU7h53N.js +1 -0
- package/web/assets/{modal-Mb_6FbLs.js → modal-Ca5pG17r.js} +1 -1
- package/web/assets/{money-cashier-receipt.svg-BxKMc5rA.js → money-cashier-receipt.svg-B15T0bRW.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-PaTd0Mi4.js → money-currency-dollar-pay.svg-Db3CbyU3.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-Cd-CeUfH.js → money-graph-arrow-increase.svg-JdOnTEv7.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-Dhmah7vi.js → money-graph-bar-chart-increase.svg-cvaw-RPe.js} +1 -1
- package/web/assets/{multiselect-l2hfIIot.js → multiselect-D0Lgi2Uy.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg--74rDOli.js → nature-ecology-leaf.svg-DxyoZnDd.js} +1 -1
- package/web/assets/{password-CAG35ljX.js → password-DLXcx5o_.js} +1 -1
- package/web/assets/{phone-telephone.svg-bdsWNaxh.js → phone-telephone.svg-C5yrJz5W.js} +1 -1
- package/web/assets/{plus-DBnmCnow.js → plus-DI-6uwaW.js} +1 -1
- package/web/assets/process.store-C1Q9TMNI.js +1 -0
- package/web/assets/{programming-bug.svg-BxlJduD5.js → programming-bug.svg-BkvasR8P.js} +1 -1
- package/web/assets/{programming-cloud.svg-CaA7FgsS.js → programming-cloud.svg-DGuHQy93.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DQgHbqIx.js → programming-computer-database-server.svg-C-7iu2k8.js} +1 -1
- package/web/assets/{programming-computer-database.svg-CpI38nQ8.js → programming-computer-database.svg-Cg6GBo38.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-Bx9qcDrs.js → programming-module-four-layout.svg-BkAfagG7.js} +1 -1
- package/web/assets/{programming-module-three.svg-BTWPyE1v.js → programming-module-three.svg-CgmLbQN4.js} +1 -1
- package/web/assets/{programming-module.svg-n2wRxTKM.js → programming-module.svg-DS5JBupb.js} +1 -1
- package/web/assets/{programming-script-code.svg-DbLLXZj1.js → programming-script-code.svg-BOWNLIhv.js} +1 -1
- package/web/assets/{python-B9gWNovr.js → python-CsMn87DS.js} +1 -1
- package/web/assets/{radiobutton-M3j6I--4.js → radiobutton-BJKr-Zln.js} +1 -1
- package/web/assets/{razor-Bvq2SjEZ.js → razor-EnLIDHC4.js} +1 -1
- package/web/assets/router-ybTpgNnu.js +1 -0
- package/web/assets/{settings.store-Cngi9oZL.js → settings.store-TI1eYCDC.js} +1 -1
- package/web/assets/{shopping-cart.svg-DYQXmdXb.js → shopping-cart.svg-DeJ77fFK.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-Cblba7lG.js → shopping-gift-present.svg-Cu0c90VW.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-Cwh0eNAV.js → shopping-shipping-box-parcel-package.svg-zSSTbzFb.js} +1 -1
- package/web/assets/src-BLIn_DmT.css +1 -0
- package/web/assets/src-C_bReqLS.js +1 -0
- package/web/assets/{src-EyYAyD2U.js → src-hQVvqFSY.js} +1 -1
- package/web/assets/{tabpanel-BeD39w5U.js → tabpanel-BhNJlFvC.js} +1 -1
- package/web/assets/{tag-new-circle.svg-DqIdKC_I.js → tag-new-circle.svg-CLGhbWEI.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-CbMyR6Dm.js → travel-map-earth-globe.svg-D_v7Zrk4.js} +1 -1
- package/web/assets/trpc-CViRJLaE.js +1 -0
- package/web/assets/{tsMode-Cs1IbsMs.js → tsMode-DRe3YaFl.js} +1 -1
- package/web/assets/{typescript-fe7zfUkE.js → typescript-ljL89ake.js} +1 -1
- package/web/assets/useAiChatDrawer-DwwI2o88.js +1 -0
- package/web/assets/{useCloudOrg-CUc-wdjK.js → useCloudOrg-B5MVr7b2.js} +1 -1
- package/web/assets/{xml-BaqscnBl.js → xml-Dir7i0rc.js} +1 -1
- package/web/assets/{yaml-C3AcPPZf.js → yaml-BNH-UA_U.js} +1 -1
- package/web/index.html +1 -1
- package/src-KERYXMIR.js.map +0 -1
- package/web/assets/AiChatPage-Do8ShO3_.js +0 -1
- package/web/assets/CloudAccountPage-CByDu0iY.css +0 -1
- package/web/assets/CloudAccountPage-COgCPE-f.js +0 -1
- package/web/assets/CloudAccountPage-CkZJBZXd.js +0 -1
- package/web/assets/CloudMessagingPage-BUnfNsBz.css +0 -1
- package/web/assets/CloudMessagingPage-D4-LD_x1.js +0 -2
- package/web/assets/WikiPage-CNa-I2c4.js +0 -1
- package/web/assets/auth-errors-D72vLL0y.js +0 -1
- package/web/assets/interface-content-folder.svg-MThUDPgI.js +0 -1
- package/web/assets/modal-DRkDMDBu.js +0 -1
- package/web/assets/process.store-DCnCcvIM.js +0 -1
- package/web/assets/router-DtEcirzs.js +0 -1
- package/web/assets/src-B1Ieb7H1.js +0 -1
- package/web/assets/src-CmzYYWZd.css +0 -1
- package/web/assets/trpc-CVTuBj8-.js +0 -1
- package/web/assets/useAiChatDrawer-B6iJc2zZ.js +0 -1
package/index.js
CHANGED
|
@@ -201,7 +201,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
|
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
203
|
async function main() {
|
|
204
|
-
const { createLocalServer, pullEnv, PullEnvError } = await import("./src-
|
|
204
|
+
const { createLocalServer, pullEnv, PullEnvError } = await import("./src-U3ECNNB6.js");
|
|
205
205
|
if (isPullEnv) {
|
|
206
206
|
if (!serviceArg) {
|
|
207
207
|
console.error("Error: --service (-s) is required with --pull-env");
|
package/package.json
CHANGED
|
@@ -303,6 +303,12 @@ import os from "os";
|
|
|
303
303
|
import { execFile } from "child_process";
|
|
304
304
|
import { promisify } from "util";
|
|
305
305
|
import { z } from "zod";
|
|
306
|
+
|
|
307
|
+
// ../server/src/config/app-version.ts
|
|
308
|
+
var appVersion = process.env["RUNEYA_VERSION"] ?? (typeof __RUNEYA_VERSION__ !== "undefined" ? __RUNEYA_VERSION__ : "dev");
|
|
309
|
+
var APP_VERSION_HEADER = "X-Runeya-Version";
|
|
310
|
+
|
|
311
|
+
// ../server/src/trpc/routers/health.ts
|
|
306
312
|
var execFileAsync = promisify(execFile);
|
|
307
313
|
async function getDockerVersion() {
|
|
308
314
|
try {
|
|
@@ -317,7 +323,6 @@ async function getDockerVersion() {
|
|
|
317
323
|
}
|
|
318
324
|
}
|
|
319
325
|
var startedAt = Date.now();
|
|
320
|
-
var appVersion = process.env["RUNEYA_VERSION"] ?? (typeof __RUNEYA_VERSION__ !== "undefined" ? __RUNEYA_VERSION__ : "dev");
|
|
321
326
|
var NPM_LATEST_URL = "https://registry.npmjs.org/@runeya%2Fruneya/latest";
|
|
322
327
|
function compareSemver(a, b) {
|
|
323
328
|
const pa = a.split(".").map((n) => Number.parseInt(n, 10) || 0);
|
|
@@ -5587,6 +5592,8 @@ async function cloudFetch(path, init = {}) {
|
|
|
5587
5592
|
method: init.method ?? "GET",
|
|
5588
5593
|
headers: {
|
|
5589
5594
|
Authorization: `Bearer ${token}`,
|
|
5595
|
+
// Le cloud refuse (426) les apps trop anciennes pour son schéma courant.
|
|
5596
|
+
[APP_VERSION_HEADER]: appVersion,
|
|
5590
5597
|
...init.body !== void 0 ? { "Content-Type": "application/json" } : {}
|
|
5591
5598
|
},
|
|
5592
5599
|
...init.body !== void 0 ? { body: JSON.stringify(init.body) } : {},
|
|
@@ -11596,12 +11603,23 @@ var LOCAL_ORIGIN = "local-bridge";
|
|
|
11596
11603
|
var REMOTE_ORIGIN = "remote";
|
|
11597
11604
|
var RECONNECT_DELAY_MS = 3e3;
|
|
11598
11605
|
var UNAUTHENTICATED_RETRY_MS = 5 * 6e4;
|
|
11606
|
+
var OUTDATED_RETRY_MS = 30 * 6e4;
|
|
11599
11607
|
var COLLECTIONS = ["projects", "services", "environments"];
|
|
11600
11608
|
var SyncAuthError = class extends Error {
|
|
11601
11609
|
constructor(status) {
|
|
11602
11610
|
super(`cloud rejected the session (HTTP ${status})`);
|
|
11603
11611
|
}
|
|
11604
11612
|
};
|
|
11613
|
+
var SyncOutdatedError = class extends Error {
|
|
11614
|
+
/** Dernière version que le cloud refuse — la borne est exclusive. */
|
|
11615
|
+
lastIncompatibleVersion;
|
|
11616
|
+
constructor(lastIncompatibleVersion) {
|
|
11617
|
+
super(
|
|
11618
|
+
`this app (${appVersion}) is too old for this cloud${lastIncompatibleVersion ? ` (needs newer than ${lastIncompatibleVersion})` : ""}`
|
|
11619
|
+
);
|
|
11620
|
+
this.lastIncompatibleVersion = lastIncompatibleVersion;
|
|
11621
|
+
}
|
|
11622
|
+
};
|
|
11605
11623
|
var OrgSyncConnection = class {
|
|
11606
11624
|
doc = new Y.Doc();
|
|
11607
11625
|
projects = getCollection(this.doc, "projects");
|
|
@@ -11613,6 +11631,8 @@ var OrgSyncConnection = class {
|
|
|
11613
11631
|
initializing = true;
|
|
11614
11632
|
abort = null;
|
|
11615
11633
|
state = "connecting";
|
|
11634
|
+
/** Last version the cloud refuses, as it told us when rejecting this app. */
|
|
11635
|
+
lastIncompatibleVersion = null;
|
|
11616
11636
|
/** Local state still owed to the cloud (initial sync, or a rejected episode). */
|
|
11617
11637
|
needsPush = false;
|
|
11618
11638
|
unsubscribes = [];
|
|
@@ -11626,6 +11646,10 @@ var OrgSyncConnection = class {
|
|
|
11626
11646
|
getState() {
|
|
11627
11647
|
return this.state;
|
|
11628
11648
|
}
|
|
11649
|
+
/** The cloud's version floor, known only once it has rejected us for it. */
|
|
11650
|
+
getLastIncompatibleVersion() {
|
|
11651
|
+
return this.lastIncompatibleVersion;
|
|
11652
|
+
}
|
|
11629
11653
|
getLink() {
|
|
11630
11654
|
return this.link;
|
|
11631
11655
|
}
|
|
@@ -11668,7 +11692,35 @@ var OrgSyncConnection = class {
|
|
|
11668
11692
|
return `Bearer ${token}`;
|
|
11669
11693
|
}
|
|
11670
11694
|
async headers() {
|
|
11671
|
-
return {
|
|
11695
|
+
return {
|
|
11696
|
+
Authorization: await this.authHeader(),
|
|
11697
|
+
[APP_VERSION_HEADER]: appVersion,
|
|
11698
|
+
"Content-Type": "application/json"
|
|
11699
|
+
};
|
|
11700
|
+
}
|
|
11701
|
+
/**
|
|
11702
|
+
* Turn a 426 into a typed error, reading the floor the cloud published in the
|
|
11703
|
+
* body. The body is advisory: a missing or malformed one still blocks, it just
|
|
11704
|
+
* makes for a vaguer message.
|
|
11705
|
+
*/
|
|
11706
|
+
async outdatedError(res) {
|
|
11707
|
+
try {
|
|
11708
|
+
const body = await res.json();
|
|
11709
|
+
return new SyncOutdatedError(
|
|
11710
|
+
typeof body.lastIncompatibleVersion === "string" ? body.lastIncompatibleVersion : null
|
|
11711
|
+
);
|
|
11712
|
+
} catch {
|
|
11713
|
+
return new SyncOutdatedError(null);
|
|
11714
|
+
}
|
|
11715
|
+
}
|
|
11716
|
+
/** Remember the floor and stop pretending sync will resume on its own. */
|
|
11717
|
+
markOutdated(err) {
|
|
11718
|
+
const alreadyReported = this.state === "outdated";
|
|
11719
|
+
this.state = "outdated";
|
|
11720
|
+
this.lastIncompatibleVersion = err.lastIncompatibleVersion;
|
|
11721
|
+
this.needsPush = true;
|
|
11722
|
+
if (alreadyReported) return;
|
|
11723
|
+
console.error(`[cloud-sync] org ${this.link.orgId}: ${err.message} \u2014 sync paused until the app is updated.`);
|
|
11672
11724
|
}
|
|
11673
11725
|
/**
|
|
11674
11726
|
* Mark this org as needing a fresh sign-in. Logged once per episode, not on
|
|
@@ -11699,6 +11751,7 @@ var OrgSyncConnection = class {
|
|
|
11699
11751
|
headers: await this.headers(),
|
|
11700
11752
|
signal: AbortSignal.timeout(15e3)
|
|
11701
11753
|
});
|
|
11754
|
+
if (svRes.status === 426) throw await this.outdatedError(svRes);
|
|
11702
11755
|
if (svRes.status === 401 || svRes.status === 403) throw new SyncAuthError(svRes.status);
|
|
11703
11756
|
if (!svRes.ok) return;
|
|
11704
11757
|
const { sv } = await svRes.json();
|
|
@@ -11706,7 +11759,7 @@ var OrgSyncConnection = class {
|
|
|
11706
11759
|
const diff = Y.encodeStateAsUpdate(this.doc, cloudSv);
|
|
11707
11760
|
await this.pushUpdate(diff);
|
|
11708
11761
|
} catch (err) {
|
|
11709
|
-
if (err instanceof SyncAuthError) throw err;
|
|
11762
|
+
if (err instanceof SyncAuthError || err instanceof SyncOutdatedError) throw err;
|
|
11710
11763
|
console.error("[cloud-sync] initial push failed for org %s:", this.link.orgId, err.message);
|
|
11711
11764
|
}
|
|
11712
11765
|
}
|
|
@@ -11718,8 +11771,14 @@ var OrgSyncConnection = class {
|
|
|
11718
11771
|
body: JSON.stringify({ update: Buffer.from(update).toString("base64"), conn: this.conn }),
|
|
11719
11772
|
signal: AbortSignal.timeout(15e3)
|
|
11720
11773
|
});
|
|
11774
|
+
if (res.status === 426) throw await this.outdatedError(res);
|
|
11721
11775
|
if (res.status === 401 || res.status === 403) throw new SyncAuthError(res.status);
|
|
11722
11776
|
} catch (err) {
|
|
11777
|
+
if (err instanceof SyncOutdatedError) {
|
|
11778
|
+
this.markOutdated(err);
|
|
11779
|
+
this.abort?.abort();
|
|
11780
|
+
return;
|
|
11781
|
+
}
|
|
11723
11782
|
if (err instanceof SyncAuthError) {
|
|
11724
11783
|
this.markUnauthenticated(err);
|
|
11725
11784
|
this.abort?.abort();
|
|
@@ -11742,6 +11801,11 @@ var OrgSyncConnection = class {
|
|
|
11742
11801
|
this.state = "connecting";
|
|
11743
11802
|
await this.streamOnce();
|
|
11744
11803
|
} catch (err) {
|
|
11804
|
+
if (err instanceof SyncOutdatedError) {
|
|
11805
|
+
this.markOutdated(err);
|
|
11806
|
+
await this.delay(OUTDATED_RETRY_MS);
|
|
11807
|
+
continue;
|
|
11808
|
+
}
|
|
11745
11809
|
if (err instanceof SyncAuthError) {
|
|
11746
11810
|
this.markUnauthenticated(err);
|
|
11747
11811
|
await this.delay(UNAUTHENTICATED_RETRY_MS);
|
|
@@ -11756,9 +11820,10 @@ var OrgSyncConnection = class {
|
|
|
11756
11820
|
this.abort = new AbortController();
|
|
11757
11821
|
const since = Buffer.from(Y.encodeStateVector(this.doc)).toString("base64");
|
|
11758
11822
|
const res = await fetch(this.url(`/stream?conn=${this.conn}&since=${encodeURIComponent(since)}`), {
|
|
11759
|
-
headers: { Authorization: await this.authHeader() },
|
|
11823
|
+
headers: { Authorization: await this.authHeader(), [APP_VERSION_HEADER]: appVersion },
|
|
11760
11824
|
signal: this.abort.signal
|
|
11761
11825
|
});
|
|
11826
|
+
if (res.status === 426) throw await this.outdatedError(res);
|
|
11762
11827
|
if (res.status === 401 || res.status === 403) throw new SyncAuthError(res.status);
|
|
11763
11828
|
if (!res.ok || !res.body) throw new Error(`stream HTTP ${res.status}`);
|
|
11764
11829
|
this.state = "live";
|
|
@@ -11930,7 +11995,11 @@ var CloudSyncBridge = class {
|
|
|
11930
11995
|
}
|
|
11931
11996
|
/** Per-org sync state, for the UI. */
|
|
11932
11997
|
states() {
|
|
11933
|
-
return Array.from(this.connections.entries()).map(([orgId, conn]) => ({
|
|
11998
|
+
return Array.from(this.connections.entries()).map(([orgId, conn]) => ({
|
|
11999
|
+
orgId,
|
|
12000
|
+
state: conn.getState(),
|
|
12001
|
+
lastIncompatibleVersion: conn.getLastIncompatibleVersion()
|
|
12002
|
+
}));
|
|
11934
12003
|
}
|
|
11935
12004
|
/** Begin (or restart) syncing a single organization. */
|
|
11936
12005
|
async connect(link) {
|
|
@@ -12181,11 +12250,15 @@ var cloudSyncRouter = router({
|
|
|
12181
12250
|
*/
|
|
12182
12251
|
list: protectedProcedure.query(async () => {
|
|
12183
12252
|
const links = await cloudSyncStore.list();
|
|
12184
|
-
const states = new Map(cloudSyncBridge.states().map((s) => [s.orgId, s
|
|
12253
|
+
const states = new Map(cloudSyncBridge.states().map((s) => [s.orgId, s]));
|
|
12185
12254
|
return links.map((l) => ({
|
|
12186
12255
|
orgId: l.orgId,
|
|
12187
12256
|
cloudUrl: l.cloudUrl,
|
|
12188
|
-
state: states.get(l.orgId) ?? "stopped"
|
|
12257
|
+
state: states.get(l.orgId)?.state ?? "stopped",
|
|
12258
|
+
// Renseigné seulement quand le cloud a refusé cette app comme trop
|
|
12259
|
+
// ancienne : c'est lui qui publie le plancher, on ne le devine pas. La
|
|
12260
|
+
// borne est exclusive — il faut strictement plus récent que ce numéro.
|
|
12261
|
+
lastIncompatibleVersion: states.get(l.orgId)?.lastIncompatibleVersion ?? null
|
|
12189
12262
|
}));
|
|
12190
12263
|
})
|
|
12191
12264
|
});
|
|
@@ -13627,7 +13700,7 @@ async function createLocalServer() {
|
|
|
13627
13700
|
try {
|
|
13628
13701
|
const verifyRes = await fetch(`${getCloudApiUrl()}/api/auth/device/link`, {
|
|
13629
13702
|
method: "POST",
|
|
13630
|
-
headers: { "Content-Type": "application/json" },
|
|
13703
|
+
headers: { "Content-Type": "application/json", [APP_VERSION_HEADER]: appVersion },
|
|
13631
13704
|
body: JSON.stringify({ token, name: getDeviceName() }),
|
|
13632
13705
|
signal: AbortSignal.timeout(15e3)
|
|
13633
13706
|
});
|
|
@@ -13672,7 +13745,11 @@ async function createLocalServer() {
|
|
|
13672
13745
|
const upstream = await fetch(
|
|
13673
13746
|
`${getCloudApiUrl()}${upstreamPath}?organizationId=${encodeURIComponent(organizationId)}`,
|
|
13674
13747
|
{
|
|
13675
|
-
headers: {
|
|
13748
|
+
headers: {
|
|
13749
|
+
Authorization: `Bearer ${token}`,
|
|
13750
|
+
[APP_VERSION_HEADER]: appVersion,
|
|
13751
|
+
Accept: "text/event-stream"
|
|
13752
|
+
},
|
|
13676
13753
|
signal: upstreamAbort.signal
|
|
13677
13754
|
}
|
|
13678
13755
|
);
|
|
@@ -13729,6 +13806,7 @@ async function createLocalServer() {
|
|
|
13729
13806
|
method: "POST",
|
|
13730
13807
|
headers: {
|
|
13731
13808
|
Authorization: `Bearer ${token}`,
|
|
13809
|
+
[APP_VERSION_HEADER]: appVersion,
|
|
13732
13810
|
"Content-Type": String(req.headers["content-type"] ?? "application/octet-stream")
|
|
13733
13811
|
},
|
|
13734
13812
|
body: req.body,
|
|
@@ -13758,7 +13836,11 @@ async function createLocalServer() {
|
|
|
13758
13836
|
try {
|
|
13759
13837
|
const upstream = await fetch(
|
|
13760
13838
|
`${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
|
|
13761
|
-
{
|
|
13839
|
+
{
|
|
13840
|
+
method: "DELETE",
|
|
13841
|
+
headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
|
|
13842
|
+
signal: AbortSignal.timeout(15e3)
|
|
13843
|
+
}
|
|
13762
13844
|
);
|
|
13763
13845
|
res.status(upstream.status).end();
|
|
13764
13846
|
} catch {
|
|
@@ -13781,7 +13863,10 @@ async function createLocalServer() {
|
|
|
13781
13863
|
try {
|
|
13782
13864
|
const upstream = await fetch(
|
|
13783
13865
|
`${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
|
|
13784
|
-
{
|
|
13866
|
+
{
|
|
13867
|
+
headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
|
|
13868
|
+
signal: AbortSignal.timeout(3e5)
|
|
13869
|
+
}
|
|
13785
13870
|
);
|
|
13786
13871
|
if (!upstream.ok) {
|
|
13787
13872
|
res.status(upstream.status).end();
|
|
@@ -14289,4 +14374,4 @@ export {
|
|
|
14289
14374
|
createLocalServer,
|
|
14290
14375
|
pullEnv
|
|
14291
14376
|
};
|
|
14292
|
-
//# sourceMappingURL=src-
|
|
14377
|
+
//# sourceMappingURL=src-U3ECNNB6.js.map
|