@runeya/runeya 2.0.31 → 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.
Files changed (200) hide show
  1. package/agent-manager-FDIRJCET.js +7 -0
  2. package/{chunk-PZHVJHTC.js → chunk-2D3B3MC7.js} +11 -3
  3. package/{chunk-PZHVJHTC.js.map → chunk-2D3B3MC7.js.map} +1 -1
  4. package/index.js +1 -1
  5. package/package.json +1 -1
  6. package/{src-I5LYBYA2.js → src-U3ECNNB6.js} +159 -21
  7. package/src-U3ECNNB6.js.map +1 -0
  8. package/web/assets/{AgentScalarChatInterface.vue-BgOWd9Dz.js → AgentScalarChatInterface.vue-_d0FQndF.js} +1 -1
  9. package/web/assets/{AgentTerminalPage-CrZyv0Pr.js → AgentTerminalPage-MAnraxPv.js} +1 -1
  10. package/web/assets/AiChatPage-CbS7x-0V.js +1 -0
  11. package/web/assets/{AppLayout-CGySXh9R.js → AppLayout-D2IqSY3k.js} +1 -1
  12. package/web/assets/{AuditPage-wemCN8aw.js → AuditPage-Aku7hNuy.js} +1 -1
  13. package/web/assets/CloudAccountPage-B0DOhFL9.js +1 -0
  14. package/web/assets/CloudAccountPage-CRN-tnI1.css +1 -0
  15. package/web/assets/CloudAccountPage-Dtv7HTxi.js +1 -0
  16. package/web/assets/CloudMessagingPage-DQ_OQj8y.js +2 -0
  17. package/web/assets/CloudMessagingPage-L-bG3z5q.css +1 -0
  18. package/web/assets/{DashboardPage-CwQjYeAl.js → DashboardPage-BmJuLhrC.js} +1 -1
  19. package/web/assets/{EditorIcon-MkuxOiPI.js → EditorIcon-Dd8hBZ2W.js} +1 -1
  20. package/web/assets/{EnvironmentForm-jFiMyYtU.js → EnvironmentForm-Dtc15T5b.js} +1 -1
  21. package/web/assets/{EnvironmentFormPage-Bk6TnUiq.js → EnvironmentFormPage-Ct_IB45z.js} +1 -1
  22. package/web/assets/{EnvironmentListPage-arNn4Jju.js → EnvironmentListPage-Cmvz279m.js} +1 -1
  23. package/web/assets/{EnvironmentSelector-P4KzBSWz.js → EnvironmentSelector-xSJqTA8B.js} +1 -1
  24. package/web/assets/{KanbanBoardPage-DT5e6cnL.js → KanbanBoardPage-BPENx0dI.js} +3 -3
  25. package/web/assets/{KanbanListPage-DWHKlyoo.js → KanbanListPage-wRWXmT8y.js} +1 -1
  26. package/web/assets/{LaunchProjectPage-D_H-E5bk.js → LaunchProjectPage-Byw_D9zD.js} +1 -1
  27. package/web/assets/{LaunchServicesPage-HDnKRjRX.js → LaunchServicesPage-BUHzR08U.js} +1 -1
  28. package/web/assets/{LogViewer-BfU_QWYJ.js → LogViewer-BUqjt3du.js} +1 -1
  29. package/web/assets/{ProcessControls-9Zkp_dJp.js → ProcessControls-CBN93qC2.js} +1 -1
  30. package/web/assets/{ProcessDetailPage-DOHXl85O.js → ProcessDetailPage-DzKon1sD.js} +1 -1
  31. package/web/assets/{ProcessMetrics-D_TONOeJ.js → ProcessMetrics-CnybcxCt.js} +1 -1
  32. package/web/assets/{ProjectDetailPage-B4HoWgAS.js → ProjectDetailPage-DyrSoCXZ.js} +1 -1
  33. package/web/assets/{ProjectListPage-CobjamXS.js → ProjectListPage-BmGTvtQY.js} +1 -1
  34. package/web/assets/{RandomJobTestPage-JQewXMbE.js → RandomJobTestPage-Cw76neG0.js} +1 -1
  35. package/web/assets/{ScenarioEditorPage-DxUxY8WO.js → ScenarioEditorPage-BKXLRaVb.js} +1 -1
  36. package/web/assets/{SendToChatDialog-D5sFHq4Y.js → SendToChatDialog-DS6ygiLN.js} +1 -1
  37. package/web/assets/{ServiceControlsBar-3r_6f0oq.js → ServiceControlsBar-CVy99xTo.js} +1 -1
  38. package/web/assets/{ServiceDetailPage-BrWeHwKi.js → ServiceDetailPage-DZ9_Me8A.js} +1 -1
  39. package/web/assets/{ServiceFormPage-BM5t0xn7.js → ServiceFormPage-OLPKsqQS.js} +1 -1
  40. package/web/assets/{SettingsPage-CCgRmqMf.js → SettingsPage-CdTx7AnK.js} +4 -4
  41. package/web/assets/{SetupPage-BjnUBrAp.js → SetupPage-BPvhbfLe.js} +1 -1
  42. package/web/assets/{UnlockPage-BOl5kGsl.js → UnlockPage-DBM00rzm.js} +1 -1
  43. package/web/assets/{VariablesTable-BNdkuRjU.js → VariablesTable-CPGvcqUc.js} +1 -1
  44. package/web/assets/{VersionBadge-B6DUKoTa.js → VersionBadge-exF5SS92.js} +1 -1
  45. package/web/assets/WikiPage-DI-gEFLI.js +1 -0
  46. package/web/assets/{WikiView-3CVNHY0G.js → WikiView-CHYiB0KB.js} +1 -1
  47. package/web/assets/{add-scalar-classes-BE6k9QmJ.js → add-scalar-classes-_urkKKAx.js} +3 -3
  48. package/web/assets/auth-errors-DuCcISQ3.js +1 -0
  49. package/web/assets/{autocomplete-DwZLvawH.js → autocomplete-DOJyM3O4.js} +1 -1
  50. package/web/assets/{basic-shape-diamond.svg-DDLxB2o1.js → basic-shape-diamond.svg-CpUSmNFl.js} +1 -1
  51. package/web/assets/{basic-shape-hexagon.svg-Dg-tpVX6.js → basic-shape-hexagon.svg-CQYpGSV7.js} +1 -1
  52. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-2baIETte.js → basic-shape-primary-circle-ellipse-round.svg-DzIL8_ij.js} +1 -1
  53. package/web/assets/{basic-shape-primary-square-rectangle.svg-BgbWRm9F.js → basic-shape-primary-square-rectangle.svg-DQk0s7-B.js} +1 -1
  54. package/web/assets/{basic-shape-shield.svg-DaSvphIy.js → basic-shape-shield.svg-Dvwzvo1f.js} +1 -1
  55. package/web/assets/{browser-DAsjXZP1.js → browser-Di-oVkMY.js} +1 -1
  56. package/web/assets/{browser-B5itU97y.js → browser-Wi5J-ETz.js} +1 -1
  57. package/web/assets/{card-CkqT9qpZ.js → card-D4D75E3s.js} +1 -1
  58. package/web/assets/{checkbox-D7i6Ei-y.js → checkbox-DLT8zwu6.js} +1 -1
  59. package/web/assets/{chip-BGa_1_3K.js → chip-DLu-SF6Z.js} +1 -1
  60. package/web/assets/{client-C1q1gncK.js → client-BhMOCob9.js} +1 -1
  61. package/web/assets/{cloud-chat.store-Dvj8Xc01.js → cloud-chat.store-DyxcLYye.js} +1 -1
  62. package/web/assets/{cloud-client-4s1-iFqU.js → cloud-client-DL07DCp9.js} +1 -1
  63. package/web/assets/{column-C8lQHkr_.js → column-B0TVmSXF.js} +1 -1
  64. package/web/assets/{computer-device-desktop-monitor.svg-CWi-bjwn.js → computer-device-desktop-monitor.svg-C6JA2GEU.js} +1 -1
  65. package/web/assets/{computer-device-desktop.svg-b08c1hOG.js → computer-device-desktop.svg-B-jASu9C.js} +1 -1
  66. package/web/assets/{computer-device-laptop.svg-DwgpFJFq.js → computer-device-laptop.svg-DQpSeGYJ.js} +1 -1
  67. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CLVl7GWQ.js → computer-device-mobile-phone-android-samsung-back.svg-CjgWas4b.js} +1 -1
  68. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CiCp93YS.js → computer-device-mobile-phone-android-samsung.svg-BN8bvWae.js} +1 -1
  69. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-BJrwLEJX.js → computer-device-mobile-phone-iphone-x-back.svg-CUa1bMPB.js} +1 -1
  70. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BqWahM6S.js → computer-device-mobile-phone-iphone-x.svg-n1XuTfhv.js} +1 -1
  71. package/web/assets/{computer-device-mobile-tablet-touch.svg-CoKmLmRi.js → computer-device-mobile-tablet-touch.svg-B9G4dZyk.js} +1 -1
  72. package/web/assets/{computer-device-mobile-tablet.svg-CBHVcYAz.js → computer-device-mobile-tablet.svg-D8NkeKHw.js} +1 -1
  73. package/web/assets/{computer-device-network-ethernet-cat6.svg-BDB8pwmR.js → computer-device-network-ethernet-cat6.svg-TmhSHD-e.js} +1 -1
  74. package/web/assets/{computer-device-network-lan-www.svg-Ck6IL9ve.js → computer-device-network-lan-www.svg-2f28OX0p.js} +1 -1
  75. package/web/assets/{computer-device-network-wifi-connection.svg-CphNPxC3.js → computer-device-network-wifi-connection.svg-Kpr5zyss.js} +1 -1
  76. package/web/assets/{computer-device-network-wifi-router.svg-DV5WB562.js → computer-device-network-wifi-router.svg-JMyR11LD.js} +1 -1
  77. package/web/assets/{cssMode-CAeg-vFl.js → cssMode-UgKjANAC.js} +1 -1
  78. package/web/assets/{divider-ov_F8YDR.js → divider-BIR7PvSC.js} +1 -1
  79. package/web/assets/{ecology-science-erlenmeyer-flask.svg-Mf7ejPBw.js → ecology-science-erlenmeyer-flask.svg-Coxai5AB.js} +1 -1
  80. package/web/assets/{fieldset-C30-k9Hk.js → fieldset-Cz4oioUO.js} +1 -1
  81. package/web/assets/{freemarker2-DqDyD2Yg.js → freemarker2-C68PJ7mj.js} +1 -1
  82. package/web/assets/{handlebars-D8wvWeL8.js → handlebars-k7r7xQOh.js} +1 -1
  83. package/web/assets/{html-Drv0UFF5.js → html-B2edirGb.js} +1 -1
  84. package/web/assets/{htmlMode-DHHALRMq.js → htmlMode-DaD50SVj.js} +1 -1
  85. package/web/assets/{image-flash-lightning.svg-DyesLNE_.js → image-flash-lightning.svg-Cs1cAEW3.js} +1 -1
  86. package/web/assets/{image-picture-flower.svg-ChnE04Bm.js → image-picture-flower.svg-CG00uPk5.js} +1 -1
  87. package/web/assets/{index-BM_DvIeJ.js → index-CeEn33Iz.js} +4 -4
  88. package/web/assets/{interface-alert-exclamation-diamond.svg-VnoLfisD.js → interface-alert-exclamation-diamond.svg-DJE8F8B0.js} +1 -1
  89. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BFXqgqWM.js → interface-alert-exclamation-triangle-warning.svg-DUFU4aQj.js} +1 -1
  90. package/web/assets/{interface-alert-information-circle.svg-B2cFeVpP.js → interface-alert-information-circle.svg-MJjBaMOz.js} +1 -1
  91. package/web/assets/{interface-award-crown.svg-CgVL6SMQ.js → interface-award-crown.svg-BX8_EIlg.js} +1 -1
  92. package/web/assets/{interface-bookmark.svg-Djskm9So.js → interface-bookmark-tag.svg-CzAApyLr.js} +1 -1
  93. package/web/assets/{interface-bookmark-tag.svg-BqetMK2B.js → interface-bookmark.svg-DhZFLUeP.js} +1 -1
  94. package/web/assets/{interface-calendar-date-one.svg-CuGQxIbW.js → interface-calendar-date-one.svg-CPKAPZTz.js} +1 -1
  95. package/web/assets/{interface-content-book-open-pages.svg-CoaYPYBX.js → interface-content-book-open-pages.svg-DCTgF-_q.js} +1 -1
  96. package/web/assets/{interface-content-book-page.svg-D9RjJ-Tt.js → interface-content-book-page.svg-CZHPjlIs.js} +1 -1
  97. package/web/assets/{interface-content-file.svg-BvW7iOQq.js → interface-content-file.svg-DzE1senh.js} +1 -1
  98. package/web/assets/{interface-content-folder.svg-3lDCdrfN.js → interface-content-folder.svg-CBb6q5ZU.js} +1 -1
  99. package/web/assets/interface-content-folder.svg-sFZbfeKy.js +1 -0
  100. package/web/assets/{interface-copy-clipboard.svg-Cru6vbV7.js → interface-copy-clipboard.svg-CR0xwfSu.js} +1 -1
  101. package/web/assets/{interface-edit-attachment.svg-9QOp0EHv.js → interface-edit-attachment.svg-h526wvAD.js} +1 -1
  102. package/web/assets/{interface-edit-binocular.svg-BN5BwlNK.js → interface-edit-binocular.svg-DXnC0PwZ.js} +1 -1
  103. package/web/assets/{interface-edit-magic-wand.svg-ZrSk3B7_.js → interface-edit-magic-wand.svg-qg3wQp8H.js} +1 -1
  104. package/web/assets/{interface-edit-tool-paint-roller.svg-CbU2EKfx.js → interface-edit-tool-paint-roller.svg-BicViH5D.js} +1 -1
  105. package/web/assets/{interface-edit-tool-pencil.svg-k5b7ee-3.js → interface-edit-tool-pencil.svg-D393JYYp.js} +1 -1
  106. package/web/assets/{interface-favorite-award.svg-jYCncpKK.js → interface-favorite-award.svg-DP1qTBdu.js} +1 -1
  107. package/web/assets/{interface-favorite-flag.svg-rsmscUUR.js → interface-favorite-flag.svg-B4kKh0FW.js} +1 -1
  108. package/web/assets/{interface-favorite-heart.svg-CIYUeR6R.js → interface-favorite-heart.svg-C2pVz9qh.js} +1 -1
  109. package/web/assets/{interface-favorite-star.svg-CgA6sev6.js → interface-favorite-star.svg-Dp3715Dj.js} +1 -1
  110. package/web/assets/{interface-favorite-stars-sparkles.svg-DeEAoS1p.js → interface-favorite-stars-sparkles.svg-CkFPuwEi.js} +1 -1
  111. package/web/assets/{interface-hierarchy-flowchart.svg-D03K0k8o.js → interface-hierarchy-flowchart.svg-CQgibrlv.js} +1 -1
  112. package/web/assets/{interface-home-house.svg-CPdv9Mu_.js → interface-home-house.svg-D1y5VSRr.js} +1 -1
  113. package/web/assets/{interface-hyperlink.svg-BEdVwqkd.js → interface-hyperlink.svg-DvQCXyBn.js} +1 -1
  114. package/web/assets/{interface-lighting-brightness.svg-C-op9azl.js → interface-lighting-brightness.svg-pSfxpTGz.js} +1 -1
  115. package/web/assets/{interface-lock-closed.svg-B01c7Ens.js → interface-lock-closed.svg-BxrQzlZS.js} +1 -1
  116. package/web/assets/{interface-lock-open-unlock.svg-Bu0DPtLE.js → interface-lock-open-unlock.svg-CjMizhoH.js} +1 -1
  117. package/web/assets/{interface-login-key.svg-DxBNIWym.js → interface-login-key.svg-DGqQFG_l.js} +1 -1
  118. package/web/assets/{interface-search.svg-ChJa0Zxy.js → interface-search.svg-fjABlYPF.js} +1 -1
  119. package/web/assets/{interface-setting-cog.svg-B1VRK1pG.js → interface-setting-cog.svg-CfNtVNCD.js} +1 -1
  120. package/web/assets/{interface-share-megaphone-bullhorn.svg-DITfcqEG.js → interface-share-megaphone-bullhorn.svg-BOVpWoDt.js} +1 -1
  121. package/web/assets/{interface-share-rocket.svg-BR3rbwES.js → interface-share-rocket.svg-BtlJnDNN.js} +1 -1
  122. package/web/assets/{interface-share-satellite.svg-DxODd9ev.js → interface-share-satellite.svg-BKAAvk16.js} +1 -1
  123. package/web/assets/{interface-share-space-ship.svg-BHhLQX6U.js → interface-share-space-ship.svg-DpDuvWjx.js} +1 -1
  124. package/web/assets/{interface-share.svg-yu0Vec1L.js → interface-share.svg-CmvO0ksM.js} +1 -1
  125. package/web/assets/{interface-signal-square.svg-BT19mvLU.js → interface-signal-square.svg-B-sMU22V.js} +1 -1
  126. package/web/assets/{interface-time-clock-circle.svg-BZ3ZkQCo.js → interface-time-clock-circle.svg-e0dWkqL8.js} +1 -1
  127. package/web/assets/{interface-time-hour-glass.svg-AT9zGmRg.js → interface-time-hour-glass.svg-406FnDKz.js} +1 -1
  128. package/web/assets/{interface-users-multiple.svg-DSMQav3N.js → interface-users-multiple.svg-DoYJsz0L.js} +1 -1
  129. package/web/assets/{interface-weather-moon.svg-DEMnxt9b.js → interface-weather-moon.svg-D5H9VVjm.js} +1 -1
  130. package/web/assets/{javascript-CPD0FEKw.js → javascript-COGcfnZA.js} +1 -1
  131. package/web/assets/{jsonMode-Wko85YcP.js → jsonMode-BPZdJlGH.js} +1 -1
  132. package/web/assets/{liquid-D7j9pKnr.js → liquid-tYb2UdC4.js} +1 -1
  133. package/web/assets/{lspLanguageFeatures-CfRla1-8.js → lspLanguageFeatures-DCNjW9fm.js} +1 -1
  134. package/web/assets/{mail-chat-bubble-square.svg-DvHQC4xf.js → mail-chat-bubble-square.svg-DYU_WNiL.js} +1 -1
  135. package/web/assets/{mail-send-email-paper-airplane.svg-DpykUXLZ.js → mail-send-email-paper-airplane.svg-hl4aPsZw.js} +1 -1
  136. package/web/assets/{mail-send-envelope.svg-CXCJUXmf.js → mail-send-envelope.svg-ZPGp6HAb.js} +1 -1
  137. package/web/assets/{mdx-BktOYKUs.js → mdx-CJnmZc8m.js} +1 -1
  138. package/web/assets/{message-Dx3bqZhh.js → message-DeJ8q52V.js} +1 -1
  139. package/web/assets/{minus-Bf1ODLs4.js → minus-Ct22lCsG.js} +1 -1
  140. package/web/assets/modal-BeU7h53N.js +1 -0
  141. package/web/assets/{modal-CIqWCBYs.js → modal-Ca5pG17r.js} +1 -1
  142. package/web/assets/{money-cashier-receipt.svg-DkSQt4Kp.js → money-cashier-receipt.svg-B15T0bRW.js} +1 -1
  143. package/web/assets/{money-currency-dollar-pay.svg-B40YykZK.js → money-currency-dollar-pay.svg-Db3CbyU3.js} +1 -1
  144. package/web/assets/{money-graph-arrow-increase.svg-BbDtfGcD.js → money-graph-arrow-increase.svg-JdOnTEv7.js} +1 -1
  145. package/web/assets/{money-graph-bar-chart-increase.svg-Bl9gruJt.js → money-graph-bar-chart-increase.svg-cvaw-RPe.js} +1 -1
  146. package/web/assets/{multiselect-BUEnFAaO.js → multiselect-D0Lgi2Uy.js} +1 -1
  147. package/web/assets/{nature-ecology-leaf.svg-BrNJa_6p.js → nature-ecology-leaf.svg-DxyoZnDd.js} +1 -1
  148. package/web/assets/{password-miE8400T.js → password-DLXcx5o_.js} +1 -1
  149. package/web/assets/{phone-telephone.svg-Ck1caUgX.js → phone-telephone.svg-C5yrJz5W.js} +1 -1
  150. package/web/assets/{plus-B2oM4Kbe.js → plus-DI-6uwaW.js} +1 -1
  151. package/web/assets/process.store-C1Q9TMNI.js +1 -0
  152. package/web/assets/{programming-bug.svg-Be1N6DWA.js → programming-bug.svg-BkvasR8P.js} +1 -1
  153. package/web/assets/{programming-cloud.svg-C_tNlsNS.js → programming-cloud.svg-DGuHQy93.js} +1 -1
  154. package/web/assets/{programming-computer-database-server.svg-CaLId3EN.js → programming-computer-database-server.svg-C-7iu2k8.js} +1 -1
  155. package/web/assets/{programming-computer-database.svg-B0g8mMEB.js → programming-computer-database.svg-Cg6GBo38.js} +1 -1
  156. package/web/assets/{programming-module-four-layout.svg-D3lo48Ct.js → programming-module-four-layout.svg-BkAfagG7.js} +1 -1
  157. package/web/assets/{programming-module-three.svg-BCEC_jV2.js → programming-module-three.svg-CgmLbQN4.js} +1 -1
  158. package/web/assets/{programming-module.svg-BjX7OQih.js → programming-module.svg-DS5JBupb.js} +1 -1
  159. package/web/assets/{programming-script-code.svg-BHGQMcGB.js → programming-script-code.svg-BOWNLIhv.js} +1 -1
  160. package/web/assets/{python-Dy1ouxIJ.js → python-CsMn87DS.js} +1 -1
  161. package/web/assets/{radiobutton-B-wtVA5M.js → radiobutton-BJKr-Zln.js} +1 -1
  162. package/web/assets/{razor-Ci2FTbb3.js → razor-EnLIDHC4.js} +1 -1
  163. package/web/assets/router-ybTpgNnu.js +1 -0
  164. package/web/assets/{settings.store-DGeQqU47.js → settings.store-TI1eYCDC.js} +1 -1
  165. package/web/assets/{shopping-cart.svg-CXXXaMLz.js → shopping-cart.svg-DeJ77fFK.js} +1 -1
  166. package/web/assets/{shopping-gift-present.svg-YcM_-bok.js → shopping-gift-present.svg-Cu0c90VW.js} +1 -1
  167. package/web/assets/{shopping-shipping-box-parcel-package.svg-C9uLlLTm.js → shopping-shipping-box-parcel-package.svg-zSSTbzFb.js} +1 -1
  168. package/web/assets/src-BLIn_DmT.css +1 -0
  169. package/web/assets/src-C_bReqLS.js +1 -0
  170. package/web/assets/{src-_sZfvoIH.js → src-hQVvqFSY.js} +1 -1
  171. package/web/assets/{tabpanel-D7aHaTgY.js → tabpanel-BhNJlFvC.js} +1 -1
  172. package/web/assets/{tag-new-circle.svg-bp2cmK4K.js → tag-new-circle.svg-CLGhbWEI.js} +1 -1
  173. package/web/assets/{travel-map-earth-globe.svg-sJQIToLR.js → travel-map-earth-globe.svg-D_v7Zrk4.js} +1 -1
  174. package/web/assets/trpc-CViRJLaE.js +1 -0
  175. package/web/assets/{tsMode-DkLB60ub.js → tsMode-DRe3YaFl.js} +1 -1
  176. package/web/assets/{typescript-Crt7iVga.js → typescript-ljL89ake.js} +1 -1
  177. package/web/assets/useAiChatDrawer-DwwI2o88.js +1 -0
  178. package/web/assets/{useCloudOrg-CyQGeKWO.js → useCloudOrg-B5MVr7b2.js} +1 -1
  179. package/web/assets/{xml-T4pdlSpO.js → xml-Dir7i0rc.js} +1 -1
  180. package/web/assets/{yaml-NPyqNIGO.js → yaml-BNH-UA_U.js} +1 -1
  181. package/web/index.html +1 -1
  182. package/agent-manager-KGITN4AE.js +0 -7
  183. package/src-I5LYBYA2.js.map +0 -1
  184. package/web/assets/AiChatPage-CSbpGsTd.js +0 -1
  185. package/web/assets/CloudAccountPage-B9xwzE44.js +0 -1
  186. package/web/assets/CloudAccountPage-DCIMW1HJ.css +0 -1
  187. package/web/assets/CloudAccountPage-mqLjh_Na.js +0 -1
  188. package/web/assets/CloudMessagingPage-BUnfNsBz.css +0 -1
  189. package/web/assets/CloudMessagingPage-Bxcx2rox.js +0 -2
  190. package/web/assets/WikiPage-zU6F-v2H.js +0 -1
  191. package/web/assets/auth-errors-A7G-LRy2.js +0 -1
  192. package/web/assets/interface-content-folder.svg-0I16aCuL.js +0 -1
  193. package/web/assets/modal-CQKtX_qC.js +0 -1
  194. package/web/assets/process.store-UagFgrdF.js +0 -1
  195. package/web/assets/router-1YCC7rLb.js +0 -1
  196. package/web/assets/src-CmzYYWZd.css +0 -1
  197. package/web/assets/src-DI2ohkF7.js +0 -1
  198. package/web/assets/trpc-C9EMyib7.js +0 -1
  199. package/web/assets/useAiChatDrawer-Cd0EBriK.js +0 -1
  200. /package/{agent-manager-KGITN4AE.js.map → agent-manager-FDIRJCET.js.map} +0 -0
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-I5LYBYA2.js");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runeya/runeya",
3
- "version": "2.0.31",
3
+ "version": "2.0.33",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "runeya": "./index.js"
@@ -58,7 +58,7 @@ import {
58
58
  stableEncryptValue,
59
59
  traefikManager,
60
60
  writeEntity
61
- } from "./chunk-PZHVJHTC.js";
61
+ } from "./chunk-2D3B3MC7.js";
62
62
 
63
63
  // ../server/src/create-server.ts
64
64
  import express from "express";
@@ -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);
@@ -5453,6 +5458,8 @@ import { randomUUID as randomUUID5 } from "crypto";
5453
5458
 
5454
5459
  // ../server/src/trpc/routers/cloud-auth.ts
5455
5460
  import { z as z14 } from "zod";
5461
+ import { hostname } from "os";
5462
+ import { basename } from "path";
5456
5463
  import { TRPCError as TRPCError10 } from "@trpc/server";
5457
5464
 
5458
5465
  // ../server/src/services/cloud-session-store.ts
@@ -5561,10 +5568,17 @@ function getCloudApiUrl() {
5561
5568
  function getCloudAppUrl() {
5562
5569
  return (env.CLOUD_APP_URL ?? DEFAULT_CLOUD_APP_URL).replace(/\/+$/, "");
5563
5570
  }
5571
+ function getDeviceName() {
5572
+ if (env.DEVICE_NAME) return env.DEVICE_NAME.slice(0, 64);
5573
+ const host = hostname() || "runeya";
5574
+ const dir = basename(env.DATA_DIR);
5575
+ const suffix = dir && dir !== ".runeya" ? ` \xB7 ${dir}` : "";
5576
+ return `${host}${suffix}`.slice(0, 64);
5577
+ }
5564
5578
  function isLocalOrigin(url) {
5565
5579
  try {
5566
- const { protocol, hostname } = new URL(url);
5567
- return (protocol === "http:" || protocol === "https:") && (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]");
5580
+ const { protocol, hostname: hostname2 } = new URL(url);
5581
+ return (protocol === "http:" || protocol === "https:") && (hostname2 === "localhost" || hostname2 === "127.0.0.1" || hostname2 === "[::1]");
5568
5582
  } catch {
5569
5583
  return false;
5570
5584
  }
@@ -5578,6 +5592,8 @@ async function cloudFetch(path, init = {}) {
5578
5592
  method: init.method ?? "GET",
5579
5593
  headers: {
5580
5594
  Authorization: `Bearer ${token}`,
5595
+ // Le cloud refuse (426) les apps trop anciennes pour son schéma courant.
5596
+ [APP_VERSION_HEADER]: appVersion,
5581
5597
  ...init.body !== void 0 ? { "Content-Type": "application/json" } : {}
5582
5598
  },
5583
5599
  ...init.body !== void 0 ? { body: JSON.stringify(init.body) } : {},
@@ -5610,9 +5626,43 @@ var cloudAuthRouter = router({
5610
5626
  session: protectedProcedure.query(async () => {
5611
5627
  if (!await cloudSessionStore.isLinked()) return null;
5612
5628
  const res = await cloudFetch("/api/auth/get-session");
5613
- if (!res.ok) return null;
5629
+ if (!res.ok) {
5630
+ if (res.status === 401) await cloudSessionStore.clear();
5631
+ return null;
5632
+ }
5614
5633
  return await res.json();
5615
5634
  }),
5635
+ /**
5636
+ * Every session of the cloud account: the machines linked to it and the
5637
+ * browsers signed into it. No token material — the cloud only ever returns
5638
+ * ids and labels here.
5639
+ */
5640
+ devices: protectedProcedure.query(async () => {
5641
+ if (!await cloudSessionStore.isLinked()) return { devices: [] };
5642
+ const res = await cloudFetch("/api/auth/device/list");
5643
+ if (!res.ok) {
5644
+ if (res.status === 401) await cloudSessionStore.clear();
5645
+ return { devices: [] };
5646
+ }
5647
+ return await res.json();
5648
+ }),
5649
+ /**
5650
+ * Revoke one session of the cloud account.
5651
+ *
5652
+ * Revoking THIS machine is allowed and is the honest way to unlink: the cloud
5653
+ * drops the session, and the local token is dropped here too, so nothing is
5654
+ * left holding a dead credential.
5655
+ */
5656
+ revokeDevice: protectedProcedure.input(z14.object({ id: z14.string().min(1).max(128) })).mutation(async ({ input }) => {
5657
+ const res = await cloudFetch("/api/auth/device/revoke", { method: "POST", body: { id: input.id } });
5658
+ if (!res.ok) {
5659
+ if (res.status === 401) await cloudSessionStore.clear();
5660
+ throw new TRPCError10({ code: "BAD_REQUEST", message: "Could not revoke this session." });
5661
+ }
5662
+ const { self } = await res.json();
5663
+ if (self) await cloudSessionStore.clear();
5664
+ return { success: true, self: self === true };
5665
+ }),
5616
5666
  /**
5617
5667
  * Forward a cloud API call, authenticated with this machine's token.
5618
5668
  *
@@ -5645,7 +5695,13 @@ var cloudAuthRouter = router({
5645
5695
  if (!res.ok) return { data: null, error: { status: res.status, ...data } };
5646
5696
  return { data, error: null };
5647
5697
  }),
5648
- /** Drop the cloud session, both here and on the cloud. */
5698
+ /**
5699
+ * Unlink this machine: drop the session here and on the cloud.
5700
+ *
5701
+ * Since the machine holds a session of its own, this no longer touches the
5702
+ * browser's session — signing out here leaves the web app signed in, and vice
5703
+ * versa.
5704
+ */
5649
5705
  signOut: protectedProcedure.mutation(async () => {
5650
5706
  if (await cloudSessionStore.isLinked()) {
5651
5707
  try {
@@ -5825,6 +5881,10 @@ function addCardToColumn(board, columnTitle, cardTitle, cardContent) {
5825
5881
  title: cardTitle,
5826
5882
  markdown: cardContent ?? "",
5827
5883
  images: [],
5884
+ // `.default([])` on the schema makes these optional on the wire but required
5885
+ // on the inferred type — a card built by hand has to supply them.
5886
+ attachments: [],
5887
+ assignees: [],
5828
5888
  order: col.cards.length,
5829
5889
  history: [{ type: "created", timestamp: now, detail: `AI \u2014 In column "${col.title}"` }],
5830
5890
  createdAt: now,
@@ -6131,7 +6191,7 @@ function tailTranscript(opts) {
6131
6191
 
6132
6192
  // ../server/src/services/ai-runners/claude-pty-runner.ts
6133
6193
  async function getAgentManager() {
6134
- const { agentManager: agentManager2 } = await import("./agent-manager-KGITN4AE.js");
6194
+ const { agentManager: agentManager2 } = await import("./agent-manager-FDIRJCET.js");
6135
6195
  return agentManager2;
6136
6196
  }
6137
6197
  function buildPtyArgs(params, sessionId, opts) {
@@ -6784,7 +6844,7 @@ async function shutdownCodexAppServer() {
6784
6844
  }
6785
6845
  }
6786
6846
  async function getAgentManager2() {
6787
- const { agentManager: agentManager2 } = await import("./agent-manager-KGITN4AE.js");
6847
+ const { agentManager: agentManager2 } = await import("./agent-manager-FDIRJCET.js");
6788
6848
  return agentManager2;
6789
6849
  }
6790
6850
  function parseRuneyaCurlCommand(command) {
@@ -11543,12 +11603,23 @@ var LOCAL_ORIGIN = "local-bridge";
11543
11603
  var REMOTE_ORIGIN = "remote";
11544
11604
  var RECONNECT_DELAY_MS = 3e3;
11545
11605
  var UNAUTHENTICATED_RETRY_MS = 5 * 6e4;
11606
+ var OUTDATED_RETRY_MS = 30 * 6e4;
11546
11607
  var COLLECTIONS = ["projects", "services", "environments"];
11547
11608
  var SyncAuthError = class extends Error {
11548
11609
  constructor(status) {
11549
11610
  super(`cloud rejected the session (HTTP ${status})`);
11550
11611
  }
11551
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
+ };
11552
11623
  var OrgSyncConnection = class {
11553
11624
  doc = new Y.Doc();
11554
11625
  projects = getCollection(this.doc, "projects");
@@ -11560,6 +11631,8 @@ var OrgSyncConnection = class {
11560
11631
  initializing = true;
11561
11632
  abort = null;
11562
11633
  state = "connecting";
11634
+ /** Last version the cloud refuses, as it told us when rejecting this app. */
11635
+ lastIncompatibleVersion = null;
11563
11636
  /** Local state still owed to the cloud (initial sync, or a rejected episode). */
11564
11637
  needsPush = false;
11565
11638
  unsubscribes = [];
@@ -11573,6 +11646,10 @@ var OrgSyncConnection = class {
11573
11646
  getState() {
11574
11647
  return this.state;
11575
11648
  }
11649
+ /** The cloud's version floor, known only once it has rejected us for it. */
11650
+ getLastIncompatibleVersion() {
11651
+ return this.lastIncompatibleVersion;
11652
+ }
11576
11653
  getLink() {
11577
11654
  return this.link;
11578
11655
  }
@@ -11615,7 +11692,35 @@ var OrgSyncConnection = class {
11615
11692
  return `Bearer ${token}`;
11616
11693
  }
11617
11694
  async headers() {
11618
- return { Authorization: await this.authHeader(), "Content-Type": "application/json" };
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.`);
11619
11724
  }
11620
11725
  /**
11621
11726
  * Mark this org as needing a fresh sign-in. Logged once per episode, not on
@@ -11646,6 +11751,7 @@ var OrgSyncConnection = class {
11646
11751
  headers: await this.headers(),
11647
11752
  signal: AbortSignal.timeout(15e3)
11648
11753
  });
11754
+ if (svRes.status === 426) throw await this.outdatedError(svRes);
11649
11755
  if (svRes.status === 401 || svRes.status === 403) throw new SyncAuthError(svRes.status);
11650
11756
  if (!svRes.ok) return;
11651
11757
  const { sv } = await svRes.json();
@@ -11653,7 +11759,7 @@ var OrgSyncConnection = class {
11653
11759
  const diff = Y.encodeStateAsUpdate(this.doc, cloudSv);
11654
11760
  await this.pushUpdate(diff);
11655
11761
  } catch (err) {
11656
- if (err instanceof SyncAuthError) throw err;
11762
+ if (err instanceof SyncAuthError || err instanceof SyncOutdatedError) throw err;
11657
11763
  console.error("[cloud-sync] initial push failed for org %s:", this.link.orgId, err.message);
11658
11764
  }
11659
11765
  }
@@ -11665,8 +11771,14 @@ var OrgSyncConnection = class {
11665
11771
  body: JSON.stringify({ update: Buffer.from(update).toString("base64"), conn: this.conn }),
11666
11772
  signal: AbortSignal.timeout(15e3)
11667
11773
  });
11774
+ if (res.status === 426) throw await this.outdatedError(res);
11668
11775
  if (res.status === 401 || res.status === 403) throw new SyncAuthError(res.status);
11669
11776
  } catch (err) {
11777
+ if (err instanceof SyncOutdatedError) {
11778
+ this.markOutdated(err);
11779
+ this.abort?.abort();
11780
+ return;
11781
+ }
11670
11782
  if (err instanceof SyncAuthError) {
11671
11783
  this.markUnauthenticated(err);
11672
11784
  this.abort?.abort();
@@ -11689,6 +11801,11 @@ var OrgSyncConnection = class {
11689
11801
  this.state = "connecting";
11690
11802
  await this.streamOnce();
11691
11803
  } catch (err) {
11804
+ if (err instanceof SyncOutdatedError) {
11805
+ this.markOutdated(err);
11806
+ await this.delay(OUTDATED_RETRY_MS);
11807
+ continue;
11808
+ }
11692
11809
  if (err instanceof SyncAuthError) {
11693
11810
  this.markUnauthenticated(err);
11694
11811
  await this.delay(UNAUTHENTICATED_RETRY_MS);
@@ -11703,9 +11820,10 @@ var OrgSyncConnection = class {
11703
11820
  this.abort = new AbortController();
11704
11821
  const since = Buffer.from(Y.encodeStateVector(this.doc)).toString("base64");
11705
11822
  const res = await fetch(this.url(`/stream?conn=${this.conn}&since=${encodeURIComponent(since)}`), {
11706
- headers: { Authorization: await this.authHeader() },
11823
+ headers: { Authorization: await this.authHeader(), [APP_VERSION_HEADER]: appVersion },
11707
11824
  signal: this.abort.signal
11708
11825
  });
11826
+ if (res.status === 426) throw await this.outdatedError(res);
11709
11827
  if (res.status === 401 || res.status === 403) throw new SyncAuthError(res.status);
11710
11828
  if (!res.ok || !res.body) throw new Error(`stream HTTP ${res.status}`);
11711
11829
  this.state = "live";
@@ -11877,7 +11995,11 @@ var CloudSyncBridge = class {
11877
11995
  }
11878
11996
  /** Per-org sync state, for the UI. */
11879
11997
  states() {
11880
- return Array.from(this.connections.entries()).map(([orgId, conn]) => ({ orgId, state: conn.getState() }));
11998
+ return Array.from(this.connections.entries()).map(([orgId, conn]) => ({
11999
+ orgId,
12000
+ state: conn.getState(),
12001
+ lastIncompatibleVersion: conn.getLastIncompatibleVersion()
12002
+ }));
11881
12003
  }
11882
12004
  /** Begin (or restart) syncing a single organization. */
11883
12005
  async connect(link) {
@@ -12128,11 +12250,15 @@ var cloudSyncRouter = router({
12128
12250
  */
12129
12251
  list: protectedProcedure.query(async () => {
12130
12252
  const links = await cloudSyncStore.list();
12131
- const states = new Map(cloudSyncBridge.states().map((s) => [s.orgId, s.state]));
12253
+ const states = new Map(cloudSyncBridge.states().map((s) => [s.orgId, s]));
12132
12254
  return links.map((l) => ({
12133
12255
  orgId: l.orgId,
12134
12256
  cloudUrl: l.cloudUrl,
12135
- 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
12136
12262
  }));
12137
12263
  })
12138
12264
  });
@@ -13572,10 +13698,10 @@ async function createLocalServer() {
13572
13698
  return;
13573
13699
  }
13574
13700
  try {
13575
- const verifyRes = await fetch(`${getCloudApiUrl()}/api/auth/one-time-token/verify`, {
13701
+ const verifyRes = await fetch(`${getCloudApiUrl()}/api/auth/device/link`, {
13576
13702
  method: "POST",
13577
- headers: { "Content-Type": "application/json" },
13578
- body: JSON.stringify({ token }),
13703
+ headers: { "Content-Type": "application/json", [APP_VERSION_HEADER]: appVersion },
13704
+ body: JSON.stringify({ token, name: getDeviceName() }),
13579
13705
  signal: AbortSignal.timeout(15e3)
13580
13706
  });
13581
13707
  if (!verifyRes.ok) {
@@ -13619,7 +13745,11 @@ async function createLocalServer() {
13619
13745
  const upstream = await fetch(
13620
13746
  `${getCloudApiUrl()}${upstreamPath}?organizationId=${encodeURIComponent(organizationId)}`,
13621
13747
  {
13622
- headers: { Authorization: `Bearer ${token}`, Accept: "text/event-stream" },
13748
+ headers: {
13749
+ Authorization: `Bearer ${token}`,
13750
+ [APP_VERSION_HEADER]: appVersion,
13751
+ Accept: "text/event-stream"
13752
+ },
13623
13753
  signal: upstreamAbort.signal
13624
13754
  }
13625
13755
  );
@@ -13676,6 +13806,7 @@ async function createLocalServer() {
13676
13806
  method: "POST",
13677
13807
  headers: {
13678
13808
  Authorization: `Bearer ${token}`,
13809
+ [APP_VERSION_HEADER]: appVersion,
13679
13810
  "Content-Type": String(req.headers["content-type"] ?? "application/octet-stream")
13680
13811
  },
13681
13812
  body: req.body,
@@ -13705,7 +13836,11 @@ async function createLocalServer() {
13705
13836
  try {
13706
13837
  const upstream = await fetch(
13707
13838
  `${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
13708
- { method: "DELETE", headers: { Authorization: `Bearer ${token}` }, signal: AbortSignal.timeout(15e3) }
13839
+ {
13840
+ method: "DELETE",
13841
+ headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
13842
+ signal: AbortSignal.timeout(15e3)
13843
+ }
13709
13844
  );
13710
13845
  res.status(upstream.status).end();
13711
13846
  } catch {
@@ -13728,7 +13863,10 @@ async function createLocalServer() {
13728
13863
  try {
13729
13864
  const upstream = await fetch(
13730
13865
  `${getCloudApiUrl()}/api/kanban/file/${encodeURIComponent(req.params.id)}`,
13731
- { headers: { Authorization: `Bearer ${token}` }, signal: AbortSignal.timeout(3e5) }
13866
+ {
13867
+ headers: { Authorization: `Bearer ${token}`, [APP_VERSION_HEADER]: appVersion },
13868
+ signal: AbortSignal.timeout(3e5)
13869
+ }
13732
13870
  );
13733
13871
  if (!upstream.ok) {
13734
13872
  res.status(upstream.status).end();
@@ -14236,4 +14374,4 @@ export {
14236
14374
  createLocalServer,
14237
14375
  pullEnv
14238
14376
  };
14239
- //# sourceMappingURL=src-I5LYBYA2.js.map
14377
+ //# sourceMappingURL=src-U3ECNNB6.js.map