@runeya/runeya 2.0.134 → 2.0.136

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 (355) hide show
  1. package/{chat-IQBWQCTK.js → chat-UBUGGGBZ.js} +3 -3
  2. package/{chunk-GISLEYNE.js → chunk-5JUONZ3G.js} +3 -3
  3. package/{chunk-M3UUGW5Z.js → chunk-G4CR7O3L.js} +66 -395
  4. package/chunk-G4CR7O3L.js.map +1 -0
  5. package/{companion-YQ7CGW7W.js → companion-U3FKH7SQ.js} +2 -2
  6. package/index.js +3 -3
  7. package/package.json +1 -1
  8. package/{src-NMMPS4ZF.js → src-XAKZS5VF.js} +4 -4
  9. package/{src-NMMPS4ZF.js.map → src-XAKZS5VF.js.map} +1 -1
  10. package/web/assets/{AgentScalarChatInterface.vue-BMJAUTbn.js → AgentScalarChatInterface.vue-BGGkpyp3.js} +3 -3
  11. package/web/assets/AgentTerminalPage-B8gLray2.js +1 -0
  12. package/web/assets/AiChatPage-BKITsyMx.js +1 -0
  13. package/web/assets/AppLayout-B72S4nTi.css +1 -0
  14. package/web/assets/AppLayout-BYw7v2sp.js +1 -0
  15. package/web/assets/AuditPage-nHTwzyia.js +1 -0
  16. package/web/assets/CloudAccountPage-DuaZz2j4.js +1 -0
  17. package/web/assets/CloudAccountPage-XHxI-ixD.js +1 -0
  18. package/web/assets/CloudMessagingPage-B2N5K-Xs.js +2 -0
  19. package/web/assets/DashboardPage-Bd1Y_T3b.css +1 -0
  20. package/web/assets/DashboardPage-VoWJeWh_.js +1 -0
  21. package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +1 -0
  22. package/web/assets/{EditorIcon-V_Fqyf2s.js → EditorIcon-DXYoMZnL.js} +2 -2
  23. package/web/assets/{EnvironmentForm-qlF1EeZ2.js → EnvironmentForm-D3pZuxVn.js} +2 -2
  24. package/web/assets/EnvironmentFormPage-BIXbPTN5.js +1 -0
  25. package/web/assets/EnvironmentListPage-CHa-Ni3w.js +1 -0
  26. package/web/assets/KanbanBoardPage-B46zbE2H.css +1 -0
  27. package/web/assets/KanbanBoardPage-BFTNpm8P.js +4 -0
  28. package/web/assets/KanbanListPage-CYuIrKXH.js +1 -0
  29. package/web/assets/KanbanListPage-DxJFx6A6.css +1 -0
  30. package/web/assets/LaunchProjectPage-9hhGBdOh.css +1 -0
  31. package/web/assets/LaunchProjectPage-jy-R3Fiw.js +1 -0
  32. package/web/assets/LaunchServicesPage-BMtm_8yP.css +1 -0
  33. package/web/assets/LaunchServicesPage-DX7nyo36.js +1 -0
  34. package/web/assets/LaunchShell-BHfseuPM.js +1 -0
  35. package/web/assets/LaunchShell-HenrOlHV.css +1 -0
  36. package/web/assets/LogViewer-C-pHXudR.js +3 -0
  37. package/web/assets/OrgKeyPrompt-OPnK5oPm.js +1 -0
  38. package/web/assets/OrgLogo-Cxa49Tl3.js +1 -0
  39. package/web/assets/ProcessControls-DXDyR6XX.js +1 -0
  40. package/web/assets/ProcessDetailPage-DNKTwgPW.js +1 -0
  41. package/web/assets/ProcessMetrics-CdQc_8Z0.js +168 -0
  42. package/web/assets/RandomJobTestPage-BE8HkgSb.js +2 -0
  43. package/web/assets/ScenarioEditorPage-COC03w7b.css +1 -0
  44. package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +14 -0
  45. package/web/assets/SendToChatDialog-ClXerpCU.js +1 -0
  46. package/web/assets/ServiceControlsBar-C7HrPjQI.js +1 -0
  47. package/web/assets/{ServiceDetailPage-cQNK1uWq.css → ServiceDetailPage-BhFOqSte.css} +1 -1
  48. package/web/assets/ServiceDetailPage-Cxuy0Yix.js +2 -0
  49. package/web/assets/ServiceFormPage-CCOu1h8v.js +1 -0
  50. package/web/assets/{SettingsPage-B7yKfXK2.css → SettingsPage-DA7lVKfg.css} +1 -1
  51. package/web/assets/SettingsPage-Dt1ViDQe.js +2063 -0
  52. package/web/assets/UnlockPage-C5iEOAKH.js +1 -0
  53. package/web/assets/UnlockPage-DR-Vy9-Y.css +1 -0
  54. package/web/assets/VaultMigrationPage-CwRWvFY7.js +1 -0
  55. package/web/assets/VersionBadge-Bqb72GXf.js +1 -0
  56. package/web/assets/VersionBadge-DUFbwfrl.css +1 -0
  57. package/web/assets/WikiPage-Bl1jDKKp.js +1 -0
  58. package/web/assets/WikiView-58u6vU3q.js +1 -0
  59. package/web/assets/WikiView-BqO5AEaY.css +1 -0
  60. package/web/assets/add-scalar-classes-CT5KQbzH.js +387 -0
  61. package/web/assets/{autocomplete-DKHFlhhO.js → autocomplete-DobAPPYJ.js} +3 -3
  62. package/web/assets/{basic-shape-diamond.svg-DCxdtThm.js → basic-shape-diamond.svg-FbeAPLc-.js} +1 -1
  63. package/web/assets/{basic-shape-hexagon.svg-BllqL52E.js → basic-shape-hexagon.svg-CtwcdpTe.js} +1 -1
  64. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-qsZEp39q.js → basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js} +1 -1
  65. package/web/assets/{basic-shape-primary-square-rectangle.svg-DrsT6mAT.js → basic-shape-primary-square-rectangle.svg-CNe1RNx8.js} +1 -1
  66. package/web/assets/{basic-shape-shield.svg-Cbxs8_Nf.js → basic-shape-shield.svg-DwZMLfah.js} +1 -1
  67. package/web/assets/{browser-pqiHj2Ya.js → browser-DsZ9HxVm.js} +1 -1
  68. package/web/assets/{browser-3Xde4kSz.js → browser-Dz1gvldT.js} +1 -1
  69. package/web/assets/card-46tM5yU0.js +32 -0
  70. package/web/assets/{checkbox-BcVCOcOx.js → checkbox-DPknldTJ.js} +3 -3
  71. package/web/assets/chevronup-D2Lr2GiV.js +151 -0
  72. package/web/assets/{chip-DCUZHTdu.js → chip-Caiakd-N.js} +2 -2
  73. package/web/assets/client-KL5c1Dog.js +24 -0
  74. package/web/assets/cloud-chat.store-Belo5SKd.js +1 -0
  75. package/web/assets/cloud-client-Cqa2Udt8.js +1 -0
  76. package/web/assets/cloud-session-56bUtkSL.js +2 -0
  77. package/web/assets/cloud-session-Dqm0C6H5.js +1 -0
  78. package/web/assets/column-DQ53_qc6.js +763 -0
  79. package/web/assets/composables-CHyZa9ag.js +1 -0
  80. package/web/assets/{computer-device-desktop-monitor.svg-2AkCd4Vg.js → computer-device-desktop-monitor.svg-CwiGN14T.js} +1 -1
  81. package/web/assets/{computer-device-desktop.svg-BX6dDfTh.js → computer-device-desktop.svg-BC2VdXDZ.js} +1 -1
  82. package/web/assets/{computer-device-laptop.svg-DQot5tMG.js → computer-device-laptop.svg-BOp8AKN6.js} +1 -1
  83. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BqQpExMo.js → computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js} +1 -1
  84. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-uWqzS9ou.js → computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-lGlmpWrH.js → computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BZkIeiFY.js → computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js} +1 -1
  87. package/web/assets/{computer-device-mobile-tablet-touch.svg-BIY2ojxF.js → computer-device-mobile-tablet-touch.svg-DiUaSnhU.js} +1 -1
  88. package/web/assets/{computer-device-mobile-tablet.svg-EsUtZRCO.js → computer-device-mobile-tablet.svg-B6nfbYm_.js} +1 -1
  89. package/web/assets/{computer-device-network-ethernet-cat6.svg-CFYKvBLS.js → computer-device-network-ethernet-cat6.svg-DwtVKy79.js} +1 -1
  90. package/web/assets/{computer-device-network-lan-www.svg-DD140-i0.js → computer-device-network-lan-www.svg-vQKfG3Xz.js} +1 -1
  91. package/web/assets/{computer-device-network-wifi-connection.svg-B6xlwqRF.js → computer-device-network-wifi-connection.svg-DhHaOUge.js} +1 -1
  92. package/web/assets/{computer-device-network-wifi-router.svg-D2oEGuXL.js → computer-device-network-wifi-router.svg-1dQS4k4J.js} +1 -1
  93. package/web/assets/{cssMode-CyhbxQFj.js → cssMode-CdQL22W5.js} +1 -1
  94. package/web/assets/{divider-bEPGnPmT.js → divider-DhYR4BAO.js} +2 -2
  95. package/web/assets/{docx-preview-CPCu7gIi.js → docx-preview-D-jP_CCs.js} +1 -1
  96. package/web/assets/{ecology-science-erlenmeyer-flask.svg-C3Zo72lq.js → ecology-science-erlenmeyer-flask.svg-D76wQVA2.js} +1 -1
  97. package/web/assets/{fieldset-BSON_QE9.js → fieldset-BtOjs_Hh.js} +2 -2
  98. package/web/assets/{freemarker2-764Mz1z9.js → freemarker2-BADW9vhy.js} +1 -1
  99. package/web/assets/{handlebars-BcplsCVf.js → handlebars-CwWQD_C8.js} +1 -1
  100. package/web/assets/{html-Ab2Gwigb.js → html-y87CEbe3.js} +1 -1
  101. package/web/assets/{htmlMode-D8yRZKkz.js → htmlMode-CVagtvVh.js} +1 -1
  102. package/web/assets/{image-flash-lightning.svg-D-jM06gw.js → image-flash-lightning.svg-OvpKi3a3.js} +1 -1
  103. package/web/assets/{image-picture-flower.svg-X2opjZMU.js → image-picture-flower.svg-DLOePozT.js} +1 -1
  104. package/web/assets/index-CKOtBNaZ.css +1 -0
  105. package/web/assets/{index-CI76mltd.js → index-CcIrffU_.js} +363 -583
  106. package/web/assets/{interface-alert-exclamation-diamond.svg-B3xHmrw0.js → interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js} +1 -1
  107. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BYsDqmTI.js → interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js} +1 -1
  108. package/web/assets/{interface-alert-information-circle.svg-CC4CgbBo.js → interface-alert-information-circle.svg-CaAXpDAI.js} +1 -1
  109. package/web/assets/{interface-award-crown.svg-B08Pbh8m.js → interface-award-crown.svg-CW7XG0wx.js} +1 -1
  110. package/web/assets/{interface-bookmark.svg-CS29ZpkA.js → interface-bookmark-tag.svg-DPWVVeZU.js} +1 -1
  111. package/web/assets/{interface-bookmark-tag.svg-BcxMXdHY.js → interface-bookmark.svg-BpLEuOv2.js} +1 -1
  112. package/web/assets/{interface-calendar-date-one.svg-QnK7dekM.js → interface-calendar-date-one.svg-DbBgvI4W.js} +1 -1
  113. package/web/assets/{interface-content-book-open-pages.svg-C4tNKeZR.js → interface-content-book-open-pages.svg-BbsuvPZM.js} +1 -1
  114. package/web/assets/{interface-content-book-page.svg-6Rp1a1dk.js → interface-content-book-page.svg-DbRPz1j8.js} +1 -1
  115. package/web/assets/{interface-content-file.svg-llFUOjLX.js → interface-content-file.svg-OJPKABxS.js} +1 -1
  116. package/web/assets/{interface-content-folder.svg-OI_omwbE.js → interface-content-folder.svg-3D_5OE_-.js} +1 -1
  117. package/web/assets/interface-content-folder.svg-8mYqkDao.js +1 -0
  118. package/web/assets/{interface-copy-clipboard.svg-Cz3_mRtM.js → interface-copy-clipboard.svg-DqthVh9J.js} +1 -1
  119. package/web/assets/{interface-edit-attachment.svg-DXOfVMyI.js → interface-edit-attachment.svg-BAPCnZ0B.js} +1 -1
  120. package/web/assets/{interface-edit-binocular.svg-Bx3DHzuZ.js → interface-edit-binocular.svg-BoV39ouF.js} +1 -1
  121. package/web/assets/{interface-edit-magic-wand.svg-CAfIYJHR.js → interface-edit-magic-wand.svg-Cz36nKVn.js} +1 -1
  122. package/web/assets/{interface-edit-tool-paint-roller.svg-FMiiT6dK.js → interface-edit-tool-paint-roller.svg-DZUQotD5.js} +1 -1
  123. package/web/assets/{interface-edit-tool-pencil.svg-DbkLSbF0.js → interface-edit-tool-pencil.svg-DBf1Y9Tj.js} +1 -1
  124. package/web/assets/{interface-favorite-award.svg-hIvxW1cg.js → interface-favorite-award.svg-B93sRjxf.js} +1 -1
  125. package/web/assets/{interface-favorite-flag.svg-CXlWtfuy.js → interface-favorite-flag.svg-DKHuT11J.js} +1 -1
  126. package/web/assets/{interface-favorite-heart.svg-BzYW_bf1.js → interface-favorite-heart.svg-Bw5FZQ7d.js} +1 -1
  127. package/web/assets/{interface-favorite-star.svg-C-Um6PkR.js → interface-favorite-star.svg-CgLbct_b.js} +1 -1
  128. package/web/assets/{interface-favorite-stars-sparkles.svg-DO6EAdIZ.js → interface-favorite-stars-sparkles.svg-B7cYS4ef.js} +1 -1
  129. package/web/assets/{interface-hierarchy-flowchart.svg-CT5ujWQr.js → interface-hierarchy-flowchart.svg-zwuaRdWq.js} +1 -1
  130. package/web/assets/{interface-home-house.svg-Inv2Er4f.js → interface-home-house.svg-B85yMFCe.js} +1 -1
  131. package/web/assets/{interface-hyperlink.svg-6GygCg4m.js → interface-hyperlink.svg-US6b-Svn.js} +1 -1
  132. package/web/assets/{interface-lighting-brightness.svg-DWnle7Gq.js → interface-lighting-brightness.svg-mZWkhb7f.js} +1 -1
  133. package/web/assets/{interface-lock-closed.svg-D-wTtQo2.js → interface-lock-closed.svg-9oHuNwuY.js} +1 -1
  134. package/web/assets/{interface-lock-open-unlock.svg-B_c9nJ0x.js → interface-lock-open-unlock.svg-DBetdJny.js} +1 -1
  135. package/web/assets/{interface-login-key.svg-UCNam9v0.js → interface-login-key.svg-BZnZTYd1.js} +1 -1
  136. package/web/assets/{interface-search.svg-BCkx6NFS.js → interface-search.svg-CMXAOoam.js} +1 -1
  137. package/web/assets/{interface-setting-cog.svg-B72XaLKk.js → interface-setting-cog.svg-CKckatt7.js} +1 -1
  138. package/web/assets/{interface-share-megaphone-bullhorn.svg-M_vr4ET6.js → interface-share-megaphone-bullhorn.svg-DH7kVqN-.js} +1 -1
  139. package/web/assets/{interface-share-rocket.svg-c3ZAv4Fq.js → interface-share-rocket.svg-BNXcMugi.js} +1 -1
  140. package/web/assets/{interface-share-satellite.svg-C-cwO4ZJ.js → interface-share-satellite.svg-Bb8t607w.js} +1 -1
  141. package/web/assets/{interface-share-space-ship.svg-7YTjWYKO.js → interface-share-space-ship.svg-Dk4rbLtF.js} +1 -1
  142. package/web/assets/{interface-share.svg-DJwukuDM.js → interface-share.svg-CtX8dq5i.js} +1 -1
  143. package/web/assets/{interface-signal-square.svg-BpoFub4k.js → interface-signal-square.svg-DmUIlYTd.js} +1 -1
  144. package/web/assets/{interface-time-clock-circle.svg-xsV2D_qB.js → interface-time-clock-circle.svg-D2ZNaXT3.js} +1 -1
  145. package/web/assets/{interface-time-hour-glass.svg-4ENYolRr.js → interface-time-hour-glass.svg-Ddo-8hHe.js} +1 -1
  146. package/web/assets/{interface-users-multiple.svg-eev_D0ig.js → interface-users-multiple.svg-Jh7S0sT4.js} +1 -1
  147. package/web/assets/{interface-weather-moon.svg-CrLYHTyu.js → interface-weather-moon.svg-DbdQFgL2.js} +1 -1
  148. package/web/assets/{javascript-DU1DQexv.js → javascript-BVGFyXBk.js} +1 -1
  149. package/web/assets/{jsonMode-CB8B-oHc.js → jsonMode-vnFlxYl9.js} +2 -2
  150. package/web/assets/{liquid-Dumxg7oa.js → liquid-DieKMEvN.js} +1 -1
  151. package/web/assets/{lspLanguageFeatures-DQTWe8ey.js → lspLanguageFeatures-DoeI-8Y7.js} +3 -3
  152. package/web/assets/{mail-chat-bubble-square.svg-DMcOjB2m.js → mail-chat-bubble-square.svg-CApdU2ea.js} +1 -1
  153. package/web/assets/{mail-send-email-paper-airplane.svg-CKpmx979.js → mail-send-email-paper-airplane.svg-jjZ0KB32.js} +1 -1
  154. package/web/assets/{mail-send-envelope.svg-C-WAmEPg.js → mail-send-envelope.svg-B6Tsoh-8.js} +1 -1
  155. package/web/assets/{mdx-DNzXmMw3.js → mdx-BCkszXid.js} +1 -1
  156. package/web/assets/{minus-CmvRtEQe.js → minus-DfLQX3s2.js} +2 -2
  157. package/web/assets/modal-CCco27Sn.js +5 -0
  158. package/web/assets/modal-D4J85_wC.js +1 -0
  159. package/web/assets/{money-cashier-receipt.svg-DeL4SF6F.js → money-cashier-receipt.svg-DM-I8Snr.js} +1 -1
  160. package/web/assets/{money-currency-dollar-pay.svg-DCIbDsIr.js → money-currency-dollar-pay.svg-CkDRewrV.js} +1 -1
  161. package/web/assets/{money-graph-arrow-increase.svg-NDD5MY4C.js → money-graph-arrow-increase.svg-BT4KLHWz.js} +1 -1
  162. package/web/assets/{money-graph-bar-chart-increase.svg-CqFZrAkq.js → money-graph-bar-chart-increase.svg-EvyIJ3Uu.js} +1 -1
  163. package/web/assets/multiselect-BmjidXlj.js +251 -0
  164. package/web/assets/{nature-ecology-leaf.svg-C74TcBty.js → nature-ecology-leaf.svg-uZBwXdg9.js} +1 -1
  165. package/web/assets/page-actions-DofPMoFe.js +1 -0
  166. package/web/assets/{password-Cf8j-GkJ.js → password-D1R5w1qL.js} +4 -4
  167. package/web/assets/{phone-telephone.svg-BeNULj1e.js → phone-telephone.svg-BSvOskIB.js} +1 -1
  168. package/web/assets/{plus-hUxz8lH_.js → plus-CNGSRnxy.js} +6 -6
  169. package/web/assets/process.store-p1LqnpY2.js +1 -0
  170. package/web/assets/{programming-bug.svg-DSydJcD0.js → programming-bug.svg-CLnGs4K-.js} +1 -1
  171. package/web/assets/{programming-cloud.svg-2xUngU0S.js → programming-cloud.svg-CxBovXBR.js} +1 -1
  172. package/web/assets/{programming-computer-database-server.svg-TAX5z1tR.js → programming-computer-database-server.svg-C1JmOyio.js} +1 -1
  173. package/web/assets/{programming-computer-database.svg-mO5bElVh.js → programming-computer-database.svg-BRjyOzP4.js} +1 -1
  174. package/web/assets/{programming-module-four-layout.svg-Dr767G1Z.js → programming-module-four-layout.svg-Blwzw6Qz.js} +1 -1
  175. package/web/assets/{programming-module-three.svg-D4oVsZl_.js → programming-module-three.svg-6bkrmWsU.js} +1 -1
  176. package/web/assets/{programming-module.svg-wdwopIvm.js → programming-module.svg-CBS9xKxX.js} +1 -1
  177. package/web/assets/{programming-script-code.svg-DBPWoki2.js → programming-script-code.svg-BVhyoAD3.js} +1 -1
  178. package/web/assets/project-launch.store-BBYtCcv8.js +1 -0
  179. package/web/assets/project.store-D_2v7amt.js +1 -0
  180. package/web/assets/{python-BE5DaTS2.js → python-CiPYtj_d.js} +1 -1
  181. package/web/assets/{radiobutton-CImlBTBP.js → radiobutton--KWBHcDP.js} +3 -2
  182. package/web/assets/{razor-Cmx-7XPV.js → razor-CSoWGP30.js} +1 -1
  183. package/web/assets/router-CRKT3825.js +1 -0
  184. package/web/assets/{selectbutton-BhpYZyFl.js → selectbutton-C0NL5n4w.js} +4 -4
  185. package/web/assets/settings-scope-DblmUa3N.js +1 -0
  186. package/web/assets/{settings.store-DridR-ck.js → settings.store-DKTQyerJ.js} +1 -1
  187. package/web/assets/{shopping-cart.svg-C3En9-vl.js → shopping-cart.svg-C-8NG_Po.js} +1 -1
  188. package/web/assets/{shopping-gift-present.svg-7p-hRdPX.js → shopping-gift-present.svg-Bp6q5VzJ.js} +1 -1
  189. package/web/assets/{shopping-shipping-box-parcel-package.svg-BWbZhI8w.js → shopping-shipping-box-parcel-package.svg-DeWaEIwm.js} +1 -1
  190. package/web/assets/{src-DTiDFW3B.js → src-BHR3l7pa.js} +35 -35
  191. package/web/assets/{src-BM_sDDlr.css → src-BN5gTC76.css} +1 -1
  192. package/web/assets/src-BRLkogf3.js +1 -0
  193. package/web/assets/{tag-new-circle.svg-Spe566L2.js → tag-new-circle.svg-CTljXsqE.js} +1 -1
  194. package/web/assets/theme-BZzt_Sgl.js +1 -0
  195. package/web/assets/{toggleswitch-CZCAv-jp.js → toggleswitch-d41l5g27.js} +2 -2
  196. package/web/assets/{travel-map-earth-globe.svg-DKz5j-UT.js → travel-map-earth-globe.svg-BUkcntCp.js} +1 -1
  197. package/web/assets/trpc-Db0Atu8A.js +1 -0
  198. package/web/assets/{tsMode-AQ4klRHU.js → tsMode-B2c-rCAa.js} +4 -4
  199. package/web/assets/{typescript-yluvE--_.js → typescript-CmW4u_GQ.js} +1 -1
  200. package/web/assets/useAiChatDrawer-0QJJVXul.js +1 -0
  201. package/web/assets/useCloudOrg-E4l-99WA.js +1 -0
  202. package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +102 -0
  203. package/web/assets/{useProjectCatalog-BGdTjXzH.js → useProjectCatalog-Cxt-hL1H.js} +1 -1
  204. package/web/assets/useProjectCloudOrg-CwLTQLIO.js +1 -0
  205. package/web/assets/useServiceUrlHost-VIA3uP5-.js +1 -0
  206. package/web/assets/{xml-BEYNsHpr.js → xml-BxMqu3hT.js} +1 -1
  207. package/web/assets/{yaml-CdJTW_Jy.js → yaml-Djx7E3R1.js} +1 -1
  208. package/web/index.html +2 -2
  209. package/chunk-M3UUGW5Z.js.map +0 -1
  210. package/web/assets/AgentTerminalPage-DJny5leF.js +0 -1
  211. package/web/assets/AiChatPage-Co5YwUra.js +0 -1
  212. package/web/assets/AppLayout-DhRnQ7sB.js +0 -1
  213. package/web/assets/AppLayout-lOwRflWA.css +0 -1
  214. package/web/assets/AuditPage-B87IuU2E.js +0 -1
  215. package/web/assets/CloudAccountPage-B9zHVg91.js +0 -1
  216. package/web/assets/CloudAccountPage-ClRW-luH.js +0 -1
  217. package/web/assets/CloudMessagingPage-Cil491lq.js +0 -2
  218. package/web/assets/DashboardPage-DRZGWuU1.css +0 -1
  219. package/web/assets/DashboardPage-vQ69rIA_.js +0 -1
  220. package/web/assets/DirectoryPickerDialog-BZG4wryg.js +0 -1
  221. package/web/assets/EnvironmentFormPage-BrW-34oI.js +0 -1
  222. package/web/assets/EnvironmentListPage-BdEPphrn.js +0 -1
  223. package/web/assets/KanbanBoardPage-DQKqtxxI.js +0 -4
  224. package/web/assets/KanbanBoardPage-cXyI-2uZ.css +0 -1
  225. package/web/assets/KanbanListPage-5-yh2hO3.js +0 -1
  226. package/web/assets/KanbanListPage-pCWYPwBv.css +0 -1
  227. package/web/assets/LaunchProjectPage-CHeYx5v0.css +0 -1
  228. package/web/assets/LaunchProjectPage-g_5Wme1T.js +0 -1
  229. package/web/assets/LaunchServicesPage-BxUrOZ44.js +0 -1
  230. package/web/assets/LaunchServicesPage-CPN3Z3m5.css +0 -1
  231. package/web/assets/LogViewer-DhTTUJLn.js +0 -3
  232. package/web/assets/OrgKeyPrompt-Bs08QGKq.js +0 -1
  233. package/web/assets/OrgLogo-CWXqzPiS.js +0 -1
  234. package/web/assets/ProcessControls-DIN7XQOl.js +0 -1
  235. package/web/assets/ProcessDetailPage-DMFYdJO6.js +0 -1
  236. package/web/assets/ProcessMetrics-DED63acT.js +0 -51
  237. package/web/assets/RandomJobTestPage-CqOMbdjK.js +0 -2
  238. package/web/assets/ScenarioEditorPage-DPuYttHT.js +0 -14
  239. package/web/assets/ScenarioEditorPage-GmFIXPDj.css +0 -1
  240. package/web/assets/SendToChatDialog-qbllbAWj.js +0 -1
  241. package/web/assets/ServiceControlsBar-DxPLkFTF.js +0 -1
  242. package/web/assets/ServiceDetailPage-Cp0zW4vF.js +0 -2
  243. package/web/assets/ServiceFormPage-COy2T7gp.js +0 -1
  244. package/web/assets/SettingsPage-DsLaZJWX.js +0 -2063
  245. package/web/assets/UnlockPage-DU3hoV78.css +0 -1
  246. package/web/assets/UnlockPage-shod0TOQ.js +0 -1
  247. package/web/assets/VaultMigrationPage-BDJIDUa6.js +0 -1
  248. package/web/assets/VersionBadge-CgHek52W.css +0 -1
  249. package/web/assets/VersionBadge-V6I68xY-.js +0 -1
  250. package/web/assets/WikiPage-CRPtaZ4n.js +0 -1
  251. package/web/assets/WikiView-CaUVD3f1.css +0 -1
  252. package/web/assets/WikiView-trPq-25v.js +0 -1
  253. package/web/assets/add-scalar-classes-CSUXL3L0.js +0 -387
  254. package/web/assets/card-wrii-nrq.js +0 -32
  255. package/web/assets/client-B9hsmT1s.js +0 -24
  256. package/web/assets/cloud-chat.store-o00oRsgO.js +0 -1
  257. package/web/assets/cloud-client-TKLL1zwR.js +0 -1
  258. package/web/assets/cloud-session-B9wU6_5G.js +0 -2
  259. package/web/assets/cloud-session-DloNvu91.js +0 -1
  260. package/web/assets/column-DA7ijaud.js +0 -763
  261. package/web/assets/composables-DgWeyWnW.js +0 -1
  262. package/web/assets/index-rUoTy8xc.css +0 -1
  263. package/web/assets/interface-content-folder.svg-D9afgGr0.js +0 -1
  264. package/web/assets/modal-C0O2XBPJ.js +0 -5
  265. package/web/assets/modal-DRUfpIPe.js +0 -1
  266. package/web/assets/multiselect-C3dGhKnP.js +0 -251
  267. package/web/assets/process.store-TQsoI7AA.js +0 -1
  268. package/web/assets/project-launch.store-CZsTY83m.js +0 -1
  269. package/web/assets/project.store-eIP8RM3Q.js +0 -1
  270. package/web/assets/router-CVSY8aIb.js +0 -1
  271. package/web/assets/settings-scope-CxYQcvAR.js +0 -1
  272. package/web/assets/src-isLSni-N.js +0 -1
  273. package/web/assets/tabpanel-Bfol4XTd.js +0 -150
  274. package/web/assets/theme-4th617B_.js +0 -1
  275. package/web/assets/trpc-CBXwYAMy.js +0 -1
  276. package/web/assets/useAiChatDrawer-D_AzdjrA.js +0 -1
  277. package/web/assets/useCloudOrg-b-QnhnSc.js +0 -1
  278. package/web/assets/useEnvVarAutocomplete-Bj9GeijO.js +0 -1
  279. package/web/assets/useProjectCloudOrg-DQJMaDXR.js +0 -1
  280. package/web/assets/useServiceUrlHost-BezQuX2r.js +0 -1
  281. /package/{chat-IQBWQCTK.js.map → chat-UBUGGGBZ.js.map} +0 -0
  282. /package/{chunk-GISLEYNE.js.map → chunk-5JUONZ3G.js.map} +0 -0
  283. /package/{companion-YQ7CGW7W.js.map → companion-U3FKH7SQ.js.map} +0 -0
  284. /package/web/assets/{abap-BMzrySmF.js → abap-BwLGULgU.js} +0 -0
  285. /package/web/assets/{apex-B-FTsm78.js → apex-BmwhxS2n.js} +0 -0
  286. /package/web/assets/{azcli--oTP982j.js → azcli-7RvE_Zal.js} +0 -0
  287. /package/web/assets/{bat-BoGrdVjd.js → bat-DRPmS6Na.js} +0 -0
  288. /package/web/assets/{bicep-CzjrcFxJ.js → bicep-BwfkS7ZV.js} +0 -0
  289. /package/web/assets/{browser-TSICzjSV.js → browser-D3d3061H.js} +0 -0
  290. /package/web/assets/{cameligo-C5PP9BK8.js → cameligo-BJ_mdC8E.js} +0 -0
  291. /package/web/assets/{clojure-CQZ7UtVM.js → clojure-CQKq7DWt.js} +0 -0
  292. /package/web/assets/{coffee-D04oxsa9.js → coffee-DJRj2iwd.js} +0 -0
  293. /package/web/assets/{cpp-CrdHZict.js → cpp-BC1yJTUW.js} +0 -0
  294. /package/web/assets/{csharp-DEojCdJ9.js → csharp-D6U2fAAT.js} +0 -0
  295. /package/web/assets/{csp-B_k4_rnT.js → csp-B2Ue_UmV.js} +0 -0
  296. /package/web/assets/{css-pkVaNQ-t.js → css-CEzlcbMY.js} +0 -0
  297. /package/web/assets/{cypher-InDI0ycO.js → cypher-D5Sg38Yj.js} +0 -0
  298. /package/web/assets/{dart-CMBDu6Jq.js → dart-BhjKRv6v.js} +0 -0
  299. /package/web/assets/{dockerfile-Dus6X0qp.js → dockerfile-BnivEbtE.js} +0 -0
  300. /package/web/assets/{ecl-DcGwRpWZ.js → ecl-TS1StLK1.js} +0 -0
  301. /package/web/assets/{elixir-BNgAfgpS.js → elixir-BX9ta6DO.js} +0 -0
  302. /package/web/assets/{flow9-b9BSTtId.js → flow9-CoOB42ee.js} +0 -0
  303. /package/web/assets/{fsharp-DsEl3ylC.js → fsharp-DmQslDFn.js} +0 -0
  304. /package/web/assets/{go-BVk-2zoJ.js → go-BbEGGooY.js} +0 -0
  305. /package/web/assets/{graphql-CCOPKJOV.js → graphql-E24y5sn9.js} +0 -0
  306. /package/web/assets/{hcl-Bk9fje7b.js → hcl-pBZphP8G.js} +0 -0
  307. /package/web/assets/{ini-Bfgwaf--.js → ini-BSbRgr25.js} +0 -0
  308. /package/web/assets/{java-X9tlBUoe.js → java-D8KvzsMp.js} +0 -0
  309. /package/web/assets/{julia-CSpUiZse.js → julia-BDRytf15.js} +0 -0
  310. /package/web/assets/{kotlin-D9ZC3fV-.js → kotlin-CNcQo-uP.js} +0 -0
  311. /package/web/assets/{less-D_gN2wJJ.js → less-0HRV-2Rz.js} +0 -0
  312. /package/web/assets/{lexon-DQORBJ3L.js → lexon-DdJG3_pW.js} +0 -0
  313. /package/web/assets/{lua-cfsK9g-g.js → lua-Blq8Mukj.js} +0 -0
  314. /package/web/assets/{m3-CqoRZqX5.js → m3-CXbmzr9W.js} +0 -0
  315. /package/web/assets/{markdown-7m0w-Hon.js → markdown-DFIISzT8.js} +0 -0
  316. /package/web/assets/{mips-Jgck3TtW.js → mips-C2XSYglv.js} +0 -0
  317. /package/web/assets/{msdax-DZzPcvtl.js → msdax-D3Jl6oAY.js} +0 -0
  318. /package/web/assets/{mysql-BDgvhBkY.js → mysql-mCqxt_Co.js} +0 -0
  319. /package/web/assets/{objective-c-s7vO3TPA.js → objective-c-CUKLr4E9.js} +0 -0
  320. /package/web/assets/{pascal-WgQqmw9E.js → pascal-BpqDI6Ur.js} +0 -0
  321. /package/web/assets/{pascaligo-DdIoMHxz.js → pascaligo-BVchPyL4.js} +0 -0
  322. /package/web/assets/{perl-DscrjHeC.js → perl-Dgc9v23P.js} +0 -0
  323. /package/web/assets/{pgsql-BoaUrFoQ.js → pgsql-Dk9IX1G_.js} +0 -0
  324. /package/web/assets/{php-CozsHsln.js → php-XeFLn3yL.js} +0 -0
  325. /package/web/assets/{pla-BmgIF2rB.js → pla-DQMfrdXZ.js} +0 -0
  326. /package/web/assets/{postiats-kTIQO6-c.js → postiats-DiKrdL3K.js} +0 -0
  327. /package/web/assets/{powerquery-Bge8QN2f.js → powerquery-Cj9Q91Zv.js} +0 -0
  328. /package/web/assets/{powershell-C_EAICI2.js → powershell-DxLElnzU.js} +0 -0
  329. /package/web/assets/{protobuf-CeVRf2v4.js → protobuf-7vT2HdZD.js} +0 -0
  330. /package/web/assets/{pug-v3OQoW7_.js → pug-oi96TUbQ.js} +0 -0
  331. /package/web/assets/{qsharp-B8FD4CzE.js → qsharp-DNr9IwS2.js} +0 -0
  332. /package/web/assets/{r-DoTn9Ot2.js → r-C-REi_Zk.js} +0 -0
  333. /package/web/assets/{redis-B9eZmNDt.js → redis-BvOCrLoN.js} +0 -0
  334. /package/web/assets/{redshift-hkVOq3Na.js → redshift-jNEw-REz.js} +0 -0
  335. /package/web/assets/{restructuredtext-go0p3fHP.js → restructuredtext-B9ET-x7N.js} +0 -0
  336. /package/web/assets/{ruby-DlJSZQx7.js → ruby-BIEBiJDZ.js} +0 -0
  337. /package/web/assets/{rust-CS0ULEAB.js → rust-BnoIVewm.js} +0 -0
  338. /package/web/assets/{sb-BWXLY6C5.js → sb-Bwvy9clh.js} +0 -0
  339. /package/web/assets/{scala-BnuniK5f.js → scala-DPv5zS47.js} +0 -0
  340. /package/web/assets/{scheme-rpzgzOI1.js → scheme-BQqNVxf_.js} +0 -0
  341. /package/web/assets/{scss-CDZa-oHG.js → scss-Ck1AFDEz.js} +0 -0
  342. /package/web/assets/{shell-Ddbp1LTu.js → shell-C4IYs9Z7.js} +0 -0
  343. /package/web/assets/{solidity-XL5oY4Gs.js → solidity-D3bS77xq.js} +0 -0
  344. /package/web/assets/{sophia-C_FAm0DW.js → sophia-BSTVfueD.js} +0 -0
  345. /package/web/assets/{sparql-Bkcu5lIB.js → sparql-BGcXD7s2.js} +0 -0
  346. /package/web/assets/{sql-hd2WP_Pl.js → sql-CIsSgyam.js} +0 -0
  347. /package/web/assets/{st-DX23wqhB.js → st-dV1d_AXx.js} +0 -0
  348. /package/web/assets/{swift-Uc9uURgY.js → swift-CK8gXWQn.js} +0 -0
  349. /package/web/assets/{systemverilog-uwEj3oP7.js → systemverilog-B9tHBIJU.js} +0 -0
  350. /package/web/assets/{tcl-CW0gNQFo.js → tcl-BgRT60RV.js} +0 -0
  351. /package/web/assets/{twig-C-fOaHGU.js → twig-CGkLO4Nl.js} +0 -0
  352. /package/web/assets/{typespec-Cs66OMeg.js → typespec-DMP9WuzC.js} +0 -0
  353. /package/web/assets/{uuid-hYISTbX6.js → uuid-H0yY5A03.js} +0 -0
  354. /package/web/assets/{vb-f4DjbovN.js → vb-DfSbhl3d.js} +0 -0
  355. /package/web/assets/{wgsl-D8hs7PJh.js → wgsl-CaJmoLY5.js} +0 -0
@@ -3,9 +3,9 @@ import {
3
3
  startClaudeCodeSession,
4
4
  startCliSession,
5
5
  startCodexSession
6
- } from "./chunk-M3UUGW5Z.js";
6
+ } from "./chunk-G4CR7O3L.js";
7
7
  import "./chunk-I7JHF5FE.js";
8
- import "./chunk-GISLEYNE.js";
8
+ import "./chunk-5JUONZ3G.js";
9
9
  import "./chunk-MD3VW4HQ.js";
10
10
  import "./chunk-7JAJSV4L.js";
11
11
  import "./chunk-BDQOBEZ3.js";
@@ -18,4 +18,4 @@ export {
18
18
  startCliSession,
19
19
  startCodexSession
20
20
  };
21
- //# sourceMappingURL=chat-IQBWQCTK.js.map
21
+ //# sourceMappingURL=chat-UBUGGGBZ.js.map
@@ -2037,7 +2037,7 @@ async function runCompanionForTurn(conversationId) {
2037
2037
  if (!hasNew) {
2038
2038
  return skip(conversationId, "nothingNew", `rien de neuf \xE0 relire (${messageCount} messages)`);
2039
2039
  }
2040
- const { startCliSession } = await import("./chat-IQBWQCTK.js");
2040
+ const { startCliSession } = await import("./chat-UBUGGGBZ.js");
2041
2041
  const companionConv = await ensureCompanionConversation(conv);
2042
2042
  const isFirstTurn = (companionConv.messages?.length ?? 0) === 0;
2043
2043
  const exchange = formatExchange(conv.messages, from);
@@ -2152,7 +2152,7 @@ async function deliverToMainConversation(conv, message) {
2152
2152
  async function attemptDelivery(conv, message) {
2153
2153
  if (await writeToLivePty(conv.id, message)) return "pty";
2154
2154
  try {
2155
- const { startCliSession } = await import("./chat-IQBWQCTK.js");
2155
+ const { startCliSession } = await import("./chat-UBUGGGBZ.js");
2156
2156
  await startCliSession(conv.runner, conv.id, message, { jwt: await signJwt() });
2157
2157
  return "headless";
2158
2158
  } catch (err) {
@@ -2317,4 +2317,4 @@ export {
2317
2317
  runCompanionNow,
2318
2318
  initCompanion
2319
2319
  };
2320
- //# sourceMappingURL=chunk-GISLEYNE.js.map
2320
+ //# sourceMappingURL=chunk-5JUONZ3G.js.map
@@ -30,7 +30,7 @@ import {
30
30
  runCompanionNow,
31
31
  syncConversationFromClaudeTranscript,
32
32
  verifyJwt
33
- } from "./chunk-GISLEYNE.js";
33
+ } from "./chunk-5JUONZ3G.js";
34
34
  import {
35
35
  StoreDiskCoordinator,
36
36
  agentManager,
@@ -649,6 +649,18 @@ var FILENAME = "environment-overrides.json";
649
649
  var EnvironmentOverridesStore = class {
650
650
  data = {};
651
651
  loaded = false;
652
+ /**
653
+ * Le coordinateur partagé par les stores : un seul rechargement à la fois,
654
+ * jamais pendant une écriture, et une substitution atomique à la fin.
655
+ *
656
+ * Ce store faisait sa propre cuisine et se marquait « chargé » avant ses
657
+ * `await` : toute lecture concurrente repartait avec une table vide — une
658
+ * surcharge déjà écrite paraissait absente, et l'assistant réclamait au
659
+ * déverrouillage des variables que ce poste avait déjà renseignées.
660
+ */
661
+ disk = new StoreDiskCoordinator();
662
+ /** Ce que le disque portait au dernier chargement (cf. `load`). */
663
+ fingerprint = "";
652
664
  diskEncryptedSlots = {};
653
665
  /**
654
666
  * Les surcharges dont le secret ne s'est pas ouvert.
@@ -658,7 +670,6 @@ var EnvironmentOverridesStore = class {
658
670
  * manquait que la clé.
659
671
  */
660
672
  unreadableSecrets = /* @__PURE__ */ new Set();
661
- saveQueue = Promise.resolve();
662
673
  /** Which vault each override was read from, until its project is known. */
663
674
  roots = /* @__PURE__ */ new Map();
664
675
  /**
@@ -683,24 +694,52 @@ var EnvironmentOverridesStore = class {
683
694
  getLegacyFilePath() {
684
695
  return legacyMachineFilePath(FILENAME);
685
696
  }
686
- /**
687
- * Read every vault, then the places older versions used.
688
- *
689
- * Variable ids are unique, so merging the files cannot collide; a vault read
690
- * later simply wins over a legacy copy of the same override.
691
- */
692
- async load() {
693
- if (this.loaded) return;
694
- if (!getEncryptionKey()) return;
695
- this.loaded = true;
696
- await ensureProjectsLoaded();
697
+ /** Les fichiers qui portent des surcharges : les coffres, et l'emplacement d'avant. */
698
+ async sourcePaths() {
697
699
  const roots = await allVaultRoots();
698
- const sources = [
700
+ return [
699
701
  this.getLegacyFilePath(),
700
702
  await keyedFilePath(FILENAME),
701
703
  ...roots.map((root) => join4(root, FILENAME))
702
704
  ];
703
- for (const path of sources) {
705
+ }
706
+ /**
707
+ * Charger, et recharger quand les fichiers ont bougé sous nos pieds.
708
+ *
709
+ * L'empreinte se prend **après** `ensureProjectsLoaded` : la liste des coffres
710
+ * en dépend, et une empreinte prise sur une liste incomplète ne ressemblerait
711
+ * à aucune des suivantes — le store se rechargerait à chaque lecture.
712
+ */
713
+ async load() {
714
+ await this.disk.load(async () => {
715
+ if (!getEncryptionKey()) return null;
716
+ await ensureProjectsLoaded();
717
+ const fingerprint = await fingerprintFiles(await this.sourcePaths());
718
+ if (this.loaded && fingerprint === this.fingerprint) return null;
719
+ const next = await this.readVaults();
720
+ return () => {
721
+ this.data = next.data;
722
+ this.diskEncryptedSlots = next.diskEncryptedSlots;
723
+ this.roots = next.roots;
724
+ this.unreadableSecrets = next.unreadableSecrets;
725
+ this.fingerprint = fingerprint;
726
+ this.loaded = true;
727
+ };
728
+ });
729
+ }
730
+ /**
731
+ * Read every vault, then the places older versions used, into fresh tables
732
+ * that `load` swaps in at once.
733
+ *
734
+ * Variable ids are unique, so merging the files cannot collide; a vault read
735
+ * later simply wins over a legacy copy of the same override.
736
+ */
737
+ async readVaults() {
738
+ const data = {};
739
+ const diskEncryptedSlots = {};
740
+ const roots = /* @__PURE__ */ new Map();
741
+ const unreadableSecrets = /* @__PURE__ */ new Set();
742
+ for (const path of await this.sourcePaths()) {
704
743
  let parsed;
705
744
  try {
706
745
  parsed = JSON.parse(await readFile2(path, "utf-8"));
@@ -708,24 +747,24 @@ var EnvironmentOverridesStore = class {
708
747
  continue;
709
748
  }
710
749
  Object.assign(
711
- this.diskEncryptedSlots,
750
+ diskEncryptedSlots,
712
751
  extractEncryptedVariableSlots(parsed)
713
752
  );
714
753
  const decrypted = decryptVariableSlots(
715
754
  parsed,
716
755
  "environment-overrides",
717
- (variableId) => this.unreadableSecrets.add(variableId),
756
+ (variableId) => unreadableSecrets.add(variableId),
718
757
  vaultIdOfRoot(dirname2(path))
719
758
  );
720
759
  for (const [id, override] of Object.entries(decrypted)) {
721
- this.data[id] = { value: override.value };
722
- this.roots.set(id, dirname2(path));
760
+ data[id] = { value: override.value };
761
+ roots.set(id, dirname2(path));
723
762
  }
724
763
  }
764
+ return { data, diskEncryptedSlots, roots, unreadableSecrets };
725
765
  }
726
766
  save() {
727
- this.saveQueue = this.saveQueue.then(() => this.doSave()).catch(() => this.doSave());
728
- return this.saveQueue;
767
+ return this.disk.save(() => this.doSave());
729
768
  }
730
769
  /**
731
770
  * Write each vault that holds — or held — an override.
@@ -1394,11 +1433,11 @@ function toList(raw) {
1394
1433
  }
1395
1434
  return text.split(",").map((v) => v.trim().replace(/^["'[]+|["'\]]+$/g, "")).filter(Boolean);
1396
1435
  }
1397
- function clearable(raw, parse2, key) {
1436
+ function clearable(raw, parse, key) {
1398
1437
  if (raw === void 0) return {};
1399
1438
  const text = String(raw).trim();
1400
1439
  if (!text || text === "null") return { [key]: null };
1401
- return { [key]: parse2(text) };
1440
+ return { [key]: parse(text) };
1402
1441
  }
1403
1442
  function gitTarget(p) {
1404
1443
  return {
@@ -3274,360 +3313,6 @@ var serviceRouter = router({
3274
3313
  })
3275
3314
  });
3276
3315
 
3277
- // ../server/src/services/claude-usage.ts
3278
- import pty from "@lydell/node-pty";
3279
- import { execSync } from "child_process";
3280
- var MONTHS = {
3281
- jan: 0,
3282
- feb: 1,
3283
- mar: 2,
3284
- apr: 3,
3285
- may: 4,
3286
- jun: 5,
3287
- jul: 6,
3288
- aug: 7,
3289
- sep: 8,
3290
- oct: 9,
3291
- nov: 10,
3292
- dec: 11
3293
- };
3294
- function parseResetsAt(str) {
3295
- const tzMatch = str.match(/\(([^)]+)\)/);
3296
- const tz = tzMatch?.[1] ?? "UTC";
3297
- const dateStr = str.replace(/\([^)]+\)/, "").replaceAll("\xB7", "").trim();
3298
- const withTime = dateStr.match(/^([A-Za-z]{3})(\d+),(\d+)(am|pm)$/i);
3299
- const withoutTime = dateStr.match(/^([A-Za-z]{3})(\d+)$/i);
3300
- const timeOnly = dateStr.match(/^(\d+)(?::(\d+))?(am|pm)$/i);
3301
- let month, day, hour = 0, minute = 0;
3302
- const year = (/* @__PURE__ */ new Date()).getFullYear();
3303
- if (withTime) {
3304
- month = MONTHS[withTime[1].toLowerCase()] ?? 0;
3305
- day = Number.parseInt(withTime[2]);
3306
- hour = Number.parseInt(withTime[3]);
3307
- if (withTime[4].toLowerCase() === "pm" && hour !== 12) hour += 12;
3308
- if (withTime[4].toLowerCase() === "am" && hour === 12) hour = 0;
3309
- } else if (withoutTime) {
3310
- month = MONTHS[withoutTime[1].toLowerCase()] ?? 0;
3311
- day = Number.parseInt(withoutTime[2]);
3312
- } else if (timeOnly) {
3313
- hour = Number.parseInt(timeOnly[1]);
3314
- minute = timeOnly[2] ? Number.parseInt(timeOnly[2]) : 0;
3315
- if (timeOnly[3].toLowerCase() === "pm" && hour !== 12) hour += 12;
3316
- if (timeOnly[3].toLowerCase() === "am" && hour === 12) hour = 0;
3317
- const now = /* @__PURE__ */ new Date();
3318
- const parts = new Intl.DateTimeFormat("en", { timeZone: tz, year: "numeric", month: "2-digit", day: "2-digit" }).formatToParts(now);
3319
- month = Number.parseInt(parts.find((p) => p.type === "month").value) - 1;
3320
- day = Number.parseInt(parts.find((p) => p.type === "day").value);
3321
- } else {
3322
- return str;
3323
- }
3324
- const approxUtc = new Date(Date.UTC(year, month, day, hour, 0));
3325
- const offsetStr = new Intl.DateTimeFormat("en", {
3326
- timeZone: tz,
3327
- timeZoneName: "shortOffset"
3328
- }).formatToParts(approxUtc).find((p) => p.type === "timeZoneName")?.value ?? "GMT+0";
3329
- const offsetMatch = offsetStr.match(/GMT([+-])(\d+)(?::(\d+))?/);
3330
- const sign = offsetMatch?.[1] === "-" ? -1 : 1;
3331
- const offsetMinutes = sign * (Number.parseInt(offsetMatch?.[2] ?? "0") * 60 + Number.parseInt(offsetMatch?.[3] ?? "0"));
3332
- const utc = new Date(Date.UTC(year, month, day, hour, minute) - offsetMinutes * 6e4);
3333
- return utc.toISOString();
3334
- }
3335
- function extractSection(text, startPattern, endPattern) {
3336
- const start = text.search(startPattern);
3337
- if (start === -1) return null;
3338
- const after = text.slice(start);
3339
- const end = endPattern ? after.search(endPattern) : after.length;
3340
- return end === -1 ? after : after.slice(0, end);
3341
- }
3342
- function extractPercent(section) {
3343
- const m = section?.match(/(\d+)%\s*used/i);
3344
- return m ? Number.parseInt(m[1]) : null;
3345
- }
3346
- function extractResets(section) {
3347
- const m = section?.match(/Rese[ts]+\s*(.+?)(?=Current|Extra|$)/is);
3348
- return m ? m[1].replaceAll(/\s+/g, " ").trim() : null;
3349
- }
3350
- function parse(text) {
3351
- const flat = text.replaceAll("\n", " ").replaceAll(/\s+/g, " ");
3352
- const result = {};
3353
- const sessionSec = extractSection(flat, /Current\s*session/i, /Current\s*week|Extra\s*usage/i);
3354
- if (sessionSec) {
3355
- const resets = extractResets(sessionSec);
3356
- result.current_session = {
3357
- percent: extractPercent(sessionSec),
3358
- resetsAt: resets ? parseResetsAt(resets) : null
3359
- };
3360
- }
3361
- const weekAllSec = extractSection(flat, /Current\s*week\s*\(all\s*models?\)/i, /Current\s*week\s*\(Sonnet/i);
3362
- if (weekAllSec) {
3363
- const resets = extractResets(weekAllSec);
3364
- result.current_week_all = {
3365
- percent: extractPercent(weekAllSec),
3366
- resetsAt: resets ? parseResetsAt(resets) : null
3367
- };
3368
- }
3369
- const weekSonnetSec = extractSection(flat, /Current\s*week\s*\(Sonnet\s*only\)/i, /Extra\s*usage/i);
3370
- if (weekSonnetSec) {
3371
- const resets = extractResets(weekSonnetSec);
3372
- result.current_week_sonnet = {
3373
- percent: extractPercent(weekSonnetSec),
3374
- resetsAt: resets ? parseResetsAt(resets) : null
3375
- };
3376
- }
3377
- const extraSec = extractSection(flat, /Extra\s*usage(?!\s*not)/i, null);
3378
- if (extraSec && !/not\s*enabled/i.test(extraSec.slice(0, 40))) {
3379
- const spent = extraSec.match(/\$([\d.]+)\s*\/\s*\$([\d.]+)\s*spent/i);
3380
- const resets = extractResets(extraSec);
3381
- result.extra_usage = {
3382
- percent: extractPercent(extraSec),
3383
- spent: spent ? Number.parseFloat(spent[1]) : null,
3384
- limit: spent ? Number.parseFloat(spent[2]) : null,
3385
- resetsAt: resets ? parseResetsAt(resets) : null
3386
- };
3387
- }
3388
- return result;
3389
- }
3390
- function getClaudeUsage() {
3391
- return new Promise((resolve2, reject) => {
3392
- const env2 = { ...process.env };
3393
- delete env2["CLAUDECODE"];
3394
- let claudeBin = "claude";
3395
- if (process.platform !== "win32") {
3396
- try {
3397
- claudeBin = execSync("which claude", { encoding: "utf8" }).trim().split("\n")[0].trim() || "claude";
3398
- } catch {
3399
- }
3400
- }
3401
- const invocation = resolveCliInvocation(claudeBin, ["/usage"]);
3402
- let term = null;
3403
- try {
3404
- term = pty.spawn(invocation.command, invocation.args, {
3405
- name: "xterm-256color",
3406
- cols: 200,
3407
- rows: 40,
3408
- env: env2
3409
- });
3410
- } catch (err) {
3411
- reject(err);
3412
- return;
3413
- }
3414
- let buffer = "";
3415
- let done = false;
3416
- let debounce = null;
3417
- function finish() {
3418
- if (done) return;
3419
- done = true;
3420
- if (debounce) clearTimeout(debounce);
3421
- clearTimeout(hardTimeout);
3422
- term?.kill();
3423
- const clean = buffer.replaceAll(/\x1b\[[0-9;]*X/g, "\n").replaceAll(/\x1b\[[0-9;]*[mGKHFABCDJsu]/g, "").replaceAll(/\x1b[^a-zA-Z]*[a-zA-Z]/g, "").replaceAll("\r", "");
3424
- resolve2(parse(clean));
3425
- }
3426
- const hardTimeout = setTimeout(() => {
3427
- if (!done) finish();
3428
- }, 15e3);
3429
- term.onData((data) => {
3430
- buffer += data;
3431
- if (buffer.includes("%")) {
3432
- if (debounce) clearTimeout(debounce);
3433
- debounce = setTimeout(finish, 800);
3434
- }
3435
- });
3436
- term.onExit(() => {
3437
- finish();
3438
- });
3439
- });
3440
- }
3441
- async function getClaudeUsageEntries() {
3442
- const usage = await getClaudeUsage();
3443
- const entries = [];
3444
- if (usage.current_session) {
3445
- entries.push({
3446
- label: "Session",
3447
- percentage: usage.current_session.percent,
3448
- next_reset: usage.current_session.resetsAt
3449
- });
3450
- }
3451
- if (usage.current_week_all) {
3452
- entries.push({
3453
- label: "Week",
3454
- percentage: usage.current_week_all.percent,
3455
- next_reset: usage.current_week_all.resetsAt
3456
- });
3457
- }
3458
- if (usage.current_week_sonnet) {
3459
- entries.push({
3460
- label: "Sonnet",
3461
- percentage: usage.current_week_sonnet.percent,
3462
- next_reset: usage.current_week_sonnet.resetsAt
3463
- });
3464
- }
3465
- if (usage.extra_usage) {
3466
- entries.push({
3467
- label: "Extra",
3468
- percentage: usage.extra_usage.percent,
3469
- next_reset: usage.extra_usage.resetsAt
3470
- });
3471
- }
3472
- return entries;
3473
- }
3474
-
3475
- // ../server/src/services/codex-usage.ts
3476
- import pty2 from "@lydell/node-pty";
3477
- var MONTHS2 = {
3478
- jan: 0,
3479
- feb: 1,
3480
- mar: 2,
3481
- apr: 3,
3482
- may: 4,
3483
- jun: 5,
3484
- jul: 6,
3485
- aug: 7,
3486
- sep: 8,
3487
- oct: 9,
3488
- nov: 10,
3489
- dec: 11
3490
- };
3491
- function parseResetToIso(raw) {
3492
- const value = raw.replace(/^\(*/, "").replace(/\)*$/, "").replace(/^resets?\s*/i, "").trim();
3493
- const now = /* @__PURE__ */ new Date();
3494
- const timeOnly = value.match(/^(\d{1,2}):(\d{2})$/);
3495
- if (timeOnly) {
3496
- const hour = Number.parseInt(timeOnly[1], 10);
3497
- const minute = Number.parseInt(timeOnly[2], 10);
3498
- const date = new Date(now);
3499
- date.setHours(hour, minute, 0, 0);
3500
- if (date.getTime() <= now.getTime()) {
3501
- date.setDate(date.getDate() + 1);
3502
- }
3503
- return date.toISOString();
3504
- }
3505
- const withDate = value.match(/^(\d{1,2}):(\d{2})\s+on\s+(\d{1,2})\s+([A-Za-z]{3})$/i);
3506
- if (withDate) {
3507
- const hour = Number.parseInt(withDate[1], 10);
3508
- const minute = Number.parseInt(withDate[2], 10);
3509
- const day = Number.parseInt(withDate[3], 10);
3510
- const month = MONTHS2[withDate[4].toLowerCase()];
3511
- if (month === void 0) return null;
3512
- let year = now.getFullYear();
3513
- let date = new Date(year, month, day, hour, minute, 0, 0);
3514
- if (date.getTime() <= now.getTime()) {
3515
- year += 1;
3516
- date = new Date(year, month, day, hour, minute, 0, 0);
3517
- }
3518
- return date.toISOString();
3519
- }
3520
- return null;
3521
- }
3522
- function stripAnsi(text) {
3523
- return text.replace(/[\u001b\u009b][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "").replaceAll("\r", "");
3524
- }
3525
- function parseCodexStatusText(text) {
3526
- const clean = stripAnsi(text);
3527
- const normalizedLines = clean.replace(/[│╭╰╮╯─]/g, " ").split("\n").map((line) => line.replace(/\s+/g, " ").trim()).filter(Boolean);
3528
- const entries = [];
3529
- let pendingIndex = null;
3530
- for (const line of normalizedLines) {
3531
- const sameLine = line.match(/^(.+?limit)\s*:\s*(?:\[[^\]]*\]\s*)?(\d+)%\s*left(?:\s*\((?:resets?\s+)?([^)]+)\))?$/i);
3532
- if (sameLine) {
3533
- const label = sameLine[1].trim();
3534
- const left = Number.parseInt(sameLine[2], 10);
3535
- const used = Number.isNaN(left) ? null : Math.max(0, Math.min(100, 100 - left));
3536
- const nextReset = sameLine[3] ? parseResetToIso(sameLine[3]) ?? null : null;
3537
- entries.push({ label, percentage: used, next_reset: nextReset });
3538
- pendingIndex = nextReset ? null : entries.length - 1;
3539
- continue;
3540
- }
3541
- const splitReset = line.match(/^\(?\s*resets?\s+([^)]+)\)?$/i);
3542
- if (splitReset && pendingIndex !== null) {
3543
- entries[pendingIndex].next_reset = parseResetToIso(splitReset[1]) ?? null;
3544
- pendingIndex = null;
3545
- }
3546
- }
3547
- if (entries.length === 0) {
3548
- const statuslineMatch = clean.match(/·\s*(\d+)%\s*left/i);
3549
- if (statuslineMatch) {
3550
- const left = Number.parseInt(statuslineMatch[1], 10);
3551
- const used = Number.isNaN(left) ? null : Math.max(0, Math.min(100, 100 - left));
3552
- entries.push({ label: "Usage", percentage: used, next_reset: null });
3553
- }
3554
- }
3555
- return entries;
3556
- }
3557
- function getCodexUsageEntries() {
3558
- return new Promise((resolve2, reject) => {
3559
- let term = null;
3560
- try {
3561
- const invocation = resolveCliInvocation("codex", []);
3562
- term = pty2.spawn(invocation.command, invocation.args, {
3563
- name: "xterm-256color",
3564
- cols: 220,
3565
- rows: 40,
3566
- env: process.env
3567
- });
3568
- } catch (err) {
3569
- reject(err);
3570
- return;
3571
- }
3572
- let buffer = "";
3573
- let done = false;
3574
- const queuedInputs = ["/status", "/status", "/status", "/exit"];
3575
- let queuedIndex = 0;
3576
- let inputDrainDebounce = null;
3577
- let promptSeen = false;
3578
- const finish = () => {
3579
- if (done) return;
3580
- done = true;
3581
- if (inputDrainDebounce) clearTimeout(inputDrainDebounce);
3582
- clearTimeout(initialTrigger);
3583
- clearTimeout(hardTimeout);
3584
- term?.kill();
3585
- if (process.env["CODEX_USAGE_DEBUG"] === "1") {
3586
- const debugClean = stripAnsi(buffer).slice(-6e3);
3587
- process.stdout.write("[codex-usage] raw tail:\n" + debugClean + "\n");
3588
- }
3589
- resolve2(parseCodexStatusText(buffer));
3590
- };
3591
- const hardTimeout = setTimeout(() => {
3592
- finish();
3593
- }, 25e3);
3594
- const sendNextInputIfReady = () => {
3595
- if (done) return;
3596
- if (!promptSeen) return;
3597
- if (queuedIndex >= queuedInputs.length) return;
3598
- const value = queuedInputs[queuedIndex];
3599
- queuedIndex += 1;
3600
- promptSeen = false;
3601
- term?.write(`${value}\r`);
3602
- };
3603
- const initialTrigger = setTimeout(() => {
3604
- promptSeen = true;
3605
- sendNextInputIfReady();
3606
- }, 6e3);
3607
- term.onData((data) => {
3608
- buffer += data;
3609
- if (data.includes("\x1B[6n")) {
3610
- term?.write("\x1B[25;1R");
3611
- }
3612
- if (data.includes("\u203A")) {
3613
- promptSeen = true;
3614
- }
3615
- if (inputDrainDebounce) clearTimeout(inputDrainDebounce);
3616
- inputDrainDebounce = setTimeout(sendNextInputIfReady, 120);
3617
- if (/(\d+)\s*h\s+limit\s*:/i.test(buffer) && /weekly\s+limit\s*:/i.test(buffer)) {
3618
- setTimeout(finish, 800);
3619
- }
3620
- if (/data not available yet/i.test(buffer) && queuedIndex >= queuedInputs.length - 1) {
3621
- setTimeout(finish, 400);
3622
- }
3623
- });
3624
- term.onExit(() => {
3625
- clearTimeout(initialTrigger);
3626
- finish();
3627
- });
3628
- });
3629
- }
3630
-
3631
3316
  // ../server/src/services/scenario-store.ts
3632
3317
  function normalizeNode(raw) {
3633
3318
  const aiCli = raw.aiCli ?? "claude-code";
@@ -7512,9 +7197,9 @@ var chatRouter = router({
7512
7197
  agentId,
7513
7198
  "ai.findPtyBySession",
7514
7199
  { sessionId: input.id }
7515
- ).then((pty3) => {
7516
- if (pty3?.status === "running") {
7517
- return agentManager.agentMutation(agentId, "ai.kill", { spawnId: pty3.spawnId });
7200
+ ).then((pty) => {
7201
+ if (pty?.status === "running") {
7202
+ return agentManager.agentMutation(agentId, "ai.kill", { spawnId: pty.spawnId });
7518
7203
  }
7519
7204
  }).catch(() => {
7520
7205
  });
@@ -7625,20 +7310,6 @@ Return ONLY the improved text, no explanation, no preamble.`;
7625
7310
  return { enhanced: input.text };
7626
7311
  }),
7627
7312
  listClaudeCodeModels: protectedProcedure.query(() => ["opus", "sonnet", "haiku"]),
7628
- getClaudeUsage: protectedProcedure.query(async () => {
7629
- try {
7630
- return await getClaudeUsageEntries();
7631
- } catch {
7632
- return null;
7633
- }
7634
- }),
7635
- getCodexUsage: protectedProcedure.query(async () => {
7636
- try {
7637
- return await getCodexUsageEntries();
7638
- } catch {
7639
- return null;
7640
- }
7641
- }),
7642
7313
  getStreamingStatus: protectedProcedure.query(() => activeSessionRegistry.listActive()),
7643
7314
  stopSession: protectedProcedure.input(z9.object({ conversationId: ConversationIdSchema })).mutation(({ input }) => {
7644
7315
  if (process.env.RUNEYA_DEBUG) console.log("[chat]: stopSession");
@@ -8431,4 +8102,4 @@ export {
8431
8102
  startCliSession,
8432
8103
  chatRouter
8433
8104
  };
8434
- //# sourceMappingURL=chunk-M3UUGW5Z.js.map
8105
+ //# sourceMappingURL=chunk-G4CR7O3L.js.map