@runeya/runeya 2.0.135 → 2.0.137

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 (278) hide show
  1. package/agent/index.js +11 -3
  2. package/agent/index.js.map +1 -1
  3. package/{agent-manager-TUFAFC6U.js → agent-manager-FUU72VGH.js} +3 -3
  4. package/{chat-IQBWQCTK.js → chat-C26CBAZX.js} +5 -5
  5. package/{chunk-GISLEYNE.js → chunk-FJLMXLMK.js} +4 -4
  6. package/{chunk-7JAJSV4L.js → chunk-J4GLFY7G.js} +2 -2
  7. package/{chunk-4RMM2OUU.js → chunk-NURPXHLB.js} +13 -4
  8. package/chunk-NURPXHLB.js.map +1 -0
  9. package/{chunk-M3UUGW5Z.js → chunk-P65BO7WZ.js} +70 -399
  10. package/chunk-P65BO7WZ.js.map +1 -0
  11. package/{companion-YQ7CGW7W.js → companion-Q67RAO3N.js} +4 -4
  12. package/index.js +4 -4
  13. package/{node-JU7A5NDT.js → node-4UUJN2WG.js} +4 -2
  14. package/package.json +1 -1
  15. package/{src-NMMPS4ZF.js → src-7O3GCEIB.js} +7 -7
  16. package/{src-NMMPS4ZF.js.map → src-7O3GCEIB.js.map} +1 -1
  17. package/web/assets/AgentScalarChatInterface.vue-BGGkpyp3.js +13 -0
  18. package/web/assets/AgentTerminalPage-B8gLray2.js +1 -0
  19. package/web/assets/AiChatPage-BKITsyMx.js +1 -0
  20. package/web/assets/AppLayout-B72S4nTi.css +1 -0
  21. package/web/assets/AppLayout-BYw7v2sp.js +1 -0
  22. package/web/assets/AuditPage-nHTwzyia.js +1 -0
  23. package/web/assets/CloudAccountPage-DuaZz2j4.js +1 -0
  24. package/web/assets/CloudAccountPage-XHxI-ixD.js +1 -0
  25. package/web/assets/CloudMessagingPage-B2N5K-Xs.js +2 -0
  26. package/web/assets/DashboardPage-VoWJeWh_.js +1 -0
  27. package/web/assets/DirectoryPickerDialog-B5SuJOhv.js +1 -0
  28. package/web/assets/{EditorIcon-Bhdvfd12.js → EditorIcon-DXYoMZnL.js} +2 -2
  29. package/web/assets/{EnvironmentForm-qEODCXoN.js → EnvironmentForm-D3pZuxVn.js} +2 -2
  30. package/web/assets/EnvironmentFormPage-BIXbPTN5.js +1 -0
  31. package/web/assets/EnvironmentListPage-CHa-Ni3w.js +1 -0
  32. package/web/assets/KanbanBoardPage-B46zbE2H.css +1 -0
  33. package/web/assets/KanbanBoardPage-BFTNpm8P.js +4 -0
  34. package/web/assets/KanbanListPage-CYuIrKXH.js +1 -0
  35. package/web/assets/LaunchProjectPage-jy-R3Fiw.js +1 -0
  36. package/web/assets/LaunchServicesPage-DX7nyo36.js +1 -0
  37. package/web/assets/LaunchShell-BHfseuPM.js +1 -0
  38. package/web/assets/LogViewer-C-pHXudR.js +3 -0
  39. package/web/assets/OrgKeyPrompt-OPnK5oPm.js +1 -0
  40. package/web/assets/OrgLogo-Cxa49Tl3.js +1 -0
  41. package/web/assets/{ProcessControls-DM8lfeiV.js → ProcessControls-DXDyR6XX.js} +1 -1
  42. package/web/assets/ProcessDetailPage-DNKTwgPW.js +1 -0
  43. package/web/assets/ProcessMetrics-CdQc_8Z0.js +168 -0
  44. package/web/assets/RandomJobTestPage-BE8HkgSb.js +2 -0
  45. package/web/assets/ScenarioEditorPage-COC03w7b.css +1 -0
  46. package/web/assets/ScenarioEditorPage-Coo6ExzZ.js +14 -0
  47. package/web/assets/SendToChatDialog-ClXerpCU.js +1 -0
  48. package/web/assets/ServiceControlsBar-C7HrPjQI.js +1 -0
  49. package/web/assets/{ServiceDetailPage-cQNK1uWq.css → ServiceDetailPage-BhFOqSte.css} +1 -1
  50. package/web/assets/ServiceDetailPage-Cxuy0Yix.js +2 -0
  51. package/web/assets/ServiceFormPage-CCOu1h8v.js +1 -0
  52. package/web/assets/{SettingsPage-CDugr781.css → SettingsPage-DA7lVKfg.css} +1 -1
  53. package/web/assets/SettingsPage-Dt1ViDQe.js +2063 -0
  54. package/web/assets/UnlockPage-C5iEOAKH.js +1 -0
  55. package/web/assets/VaultMigrationPage-CwRWvFY7.js +1 -0
  56. package/web/assets/VersionBadge-Bqb72GXf.js +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-ChFfCprn.js → autocomplete-DobAPPYJ.js} +3 -3
  62. package/web/assets/{basic-shape-diamond.svg-DMXCGOOi.js → basic-shape-diamond.svg-FbeAPLc-.js} +1 -1
  63. package/web/assets/{basic-shape-hexagon.svg-CYIcPMdS.js → basic-shape-hexagon.svg-CtwcdpTe.js} +1 -1
  64. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Cwmrd1Ez.js → basic-shape-primary-circle-ellipse-round.svg-DsSs3S2_.js} +1 -1
  65. package/web/assets/{basic-shape-primary-square-rectangle.svg-C6jxeZnm.js → basic-shape-primary-square-rectangle.svg-CNe1RNx8.js} +1 -1
  66. package/web/assets/{basic-shape-shield.svg-DbCz35E5.js → basic-shape-shield.svg-DwZMLfah.js} +1 -1
  67. package/web/assets/{browser-CIvjpXha.js → browser-DsZ9HxVm.js} +1 -1
  68. package/web/assets/{browser-Dqcl_H7_.js → browser-Dz1gvldT.js} +1 -1
  69. package/web/assets/card-46tM5yU0.js +32 -0
  70. package/web/assets/{checkbox-D2Iuu4UI.js → checkbox-DPknldTJ.js} +3 -3
  71. package/web/assets/chevronup-D2Lr2GiV.js +151 -0
  72. package/web/assets/{chip-C6j_aNV_.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-CSWX_0A0.js → composables-CHyZa9ag.js} +1 -1
  80. package/web/assets/{computer-device-desktop-monitor.svg-B2C-kd0i.js → computer-device-desktop-monitor.svg-CwiGN14T.js} +1 -1
  81. package/web/assets/{computer-device-desktop.svg-3yHh_J9J.js → computer-device-desktop.svg-BC2VdXDZ.js} +1 -1
  82. package/web/assets/{computer-device-laptop.svg-DFT8iA2v.js → computer-device-laptop.svg-BOp8AKN6.js} +1 -1
  83. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CMmFiUFT.js → computer-device-mobile-phone-android-samsung-back.svg-CmbpPX1u.js} +1 -1
  84. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-zfLcL76y.js → computer-device-mobile-phone-android-samsung.svg-_WGKWVtZ.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-avbsjvM5.js → computer-device-mobile-phone-iphone-x-back.svg-DmLh97KG.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-d5iGTMZf.js → computer-device-mobile-phone-iphone-x.svg-C7-5mdyV.js} +1 -1
  87. package/web/assets/{computer-device-mobile-tablet-touch.svg-Bs2yfb4a.js → computer-device-mobile-tablet-touch.svg-DiUaSnhU.js} +1 -1
  88. package/web/assets/{computer-device-mobile-tablet.svg-C4zqv1Np.js → computer-device-mobile-tablet.svg-B6nfbYm_.js} +1 -1
  89. package/web/assets/{computer-device-network-ethernet-cat6.svg-BNu3-DX-.js → computer-device-network-ethernet-cat6.svg-DwtVKy79.js} +1 -1
  90. package/web/assets/{computer-device-network-lan-www.svg-DKWvhIUS.js → computer-device-network-lan-www.svg-vQKfG3Xz.js} +1 -1
  91. package/web/assets/{computer-device-network-wifi-connection.svg-BeVB4uVk.js → computer-device-network-wifi-connection.svg-DhHaOUge.js} +1 -1
  92. package/web/assets/{computer-device-network-wifi-router.svg-ByESRUy1.js → computer-device-network-wifi-router.svg-1dQS4k4J.js} +1 -1
  93. package/web/assets/{cssMode-CYkE5lQ9.js → cssMode-CdQL22W5.js} +1 -1
  94. package/web/assets/{divider-CA3yAI2V.js → divider-DhYR4BAO.js} +2 -2
  95. package/web/assets/{docx-preview-DWhG4PqM.js → docx-preview-D-jP_CCs.js} +1 -1
  96. package/web/assets/{ecology-science-erlenmeyer-flask.svg-D-XnpZzI.js → ecology-science-erlenmeyer-flask.svg-D76wQVA2.js} +1 -1
  97. package/web/assets/{fieldset-B8HuDLeH.js → fieldset-BtOjs_Hh.js} +2 -2
  98. package/web/assets/{freemarker2-D4-v7trZ.js → freemarker2-BADW9vhy.js} +1 -1
  99. package/web/assets/{handlebars-DjpO5k1R.js → handlebars-CwWQD_C8.js} +1 -1
  100. package/web/assets/{html-DFrFD9Vs.js → html-y87CEbe3.js} +1 -1
  101. package/web/assets/{htmlMode-DOefWnsd.js → htmlMode-CVagtvVh.js} +1 -1
  102. package/web/assets/{image-flash-lightning.svg-D3j4zBSy.js → image-flash-lightning.svg-OvpKi3a3.js} +1 -1
  103. package/web/assets/{image-picture-flower.svg-DQwZxx5i.js → image-picture-flower.svg-DLOePozT.js} +1 -1
  104. package/web/assets/index-CKOtBNaZ.css +1 -0
  105. package/web/assets/{index-C0stqCbw.js → index-CcIrffU_.js} +363 -583
  106. package/web/assets/{interface-alert-exclamation-diamond.svg-Wi3odtkW.js → interface-alert-exclamation-diamond.svg-4Vk7SoQ1.js} +1 -1
  107. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CReCCTTv.js → interface-alert-exclamation-triangle-warning.svg-BLAvc4am.js} +1 -1
  108. package/web/assets/{interface-alert-information-circle.svg-CcYDlXW6.js → interface-alert-information-circle.svg-CaAXpDAI.js} +1 -1
  109. package/web/assets/{interface-award-crown.svg-nShV1eoE.js → interface-award-crown.svg-CW7XG0wx.js} +1 -1
  110. package/web/assets/{interface-bookmark.svg-C7rl6oRl.js → interface-bookmark-tag.svg-DPWVVeZU.js} +1 -1
  111. package/web/assets/{interface-bookmark-tag.svg-Bcxcf9m_.js → interface-bookmark.svg-BpLEuOv2.js} +1 -1
  112. package/web/assets/{interface-calendar-date-one.svg-Dr1oFk40.js → interface-calendar-date-one.svg-DbBgvI4W.js} +1 -1
  113. package/web/assets/{interface-content-book-open-pages.svg-5k2_6iyY.js → interface-content-book-open-pages.svg-BbsuvPZM.js} +1 -1
  114. package/web/assets/{interface-content-book-page.svg-CVq67m2W.js → interface-content-book-page.svg-DbRPz1j8.js} +1 -1
  115. package/web/assets/{interface-content-file.svg-BTGOcunz.js → interface-content-file.svg-OJPKABxS.js} +1 -1
  116. package/web/assets/{interface-content-folder.svg-c7jw0JHU.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-CDxFW9t5.js → interface-copy-clipboard.svg-DqthVh9J.js} +1 -1
  119. package/web/assets/{interface-edit-attachment.svg-ALzerCj2.js → interface-edit-attachment.svg-BAPCnZ0B.js} +1 -1
  120. package/web/assets/{interface-edit-binocular.svg-B8ugIA3a.js → interface-edit-binocular.svg-BoV39ouF.js} +1 -1
  121. package/web/assets/{interface-edit-magic-wand.svg-DUS1BcE7.js → interface-edit-magic-wand.svg-Cz36nKVn.js} +1 -1
  122. package/web/assets/{interface-edit-tool-paint-roller.svg-B2yecsyu.js → interface-edit-tool-paint-roller.svg-DZUQotD5.js} +1 -1
  123. package/web/assets/{interface-edit-tool-pencil.svg-CXrPC_TT.js → interface-edit-tool-pencil.svg-DBf1Y9Tj.js} +1 -1
  124. package/web/assets/{interface-favorite-award.svg-Cp_oIcCh.js → interface-favorite-award.svg-B93sRjxf.js} +1 -1
  125. package/web/assets/{interface-favorite-flag.svg-B36MDZwI.js → interface-favorite-flag.svg-DKHuT11J.js} +1 -1
  126. package/web/assets/{interface-favorite-heart.svg-CTV6u1U4.js → interface-favorite-heart.svg-Bw5FZQ7d.js} +1 -1
  127. package/web/assets/{interface-favorite-star.svg-OdL5QrWJ.js → interface-favorite-star.svg-CgLbct_b.js} +1 -1
  128. package/web/assets/{interface-favorite-stars-sparkles.svg-BqWJOXGz.js → interface-favorite-stars-sparkles.svg-B7cYS4ef.js} +1 -1
  129. package/web/assets/{interface-hierarchy-flowchart.svg-CuSQQZNq.js → interface-hierarchy-flowchart.svg-zwuaRdWq.js} +1 -1
  130. package/web/assets/{interface-home-house.svg-C3MlUubV.js → interface-home-house.svg-B85yMFCe.js} +1 -1
  131. package/web/assets/{interface-hyperlink.svg-BYd5gh77.js → interface-hyperlink.svg-US6b-Svn.js} +1 -1
  132. package/web/assets/{interface-lighting-brightness.svg-Dg3GdUm9.js → interface-lighting-brightness.svg-mZWkhb7f.js} +1 -1
  133. package/web/assets/{interface-lock-closed.svg-DwBww-yp.js → interface-lock-closed.svg-9oHuNwuY.js} +1 -1
  134. package/web/assets/{interface-lock-open-unlock.svg-BPSHjpM5.js → interface-lock-open-unlock.svg-DBetdJny.js} +1 -1
  135. package/web/assets/{interface-login-key.svg-CAKOhBJY.js → interface-login-key.svg-BZnZTYd1.js} +1 -1
  136. package/web/assets/{interface-search.svg-C-J35EwT.js → interface-search.svg-CMXAOoam.js} +1 -1
  137. package/web/assets/{interface-setting-cog.svg-CPTM4JUK.js → interface-setting-cog.svg-CKckatt7.js} +1 -1
  138. package/web/assets/{interface-share-megaphone-bullhorn.svg-De8kepxS.js → interface-share-megaphone-bullhorn.svg-DH7kVqN-.js} +1 -1
  139. package/web/assets/{interface-share-rocket.svg-Drx2GamR.js → interface-share-rocket.svg-BNXcMugi.js} +1 -1
  140. package/web/assets/{interface-share-satellite.svg-CpcvwNrN.js → interface-share-satellite.svg-Bb8t607w.js} +1 -1
  141. package/web/assets/{interface-share-space-ship.svg-C1rwdvlT.js → interface-share-space-ship.svg-Dk4rbLtF.js} +1 -1
  142. package/web/assets/{interface-share.svg-CgYmRRi3.js → interface-share.svg-CtX8dq5i.js} +1 -1
  143. package/web/assets/{interface-signal-square.svg-D18HXtaZ.js → interface-signal-square.svg-DmUIlYTd.js} +1 -1
  144. package/web/assets/{interface-time-clock-circle.svg-CnJh3zUx.js → interface-time-clock-circle.svg-D2ZNaXT3.js} +1 -1
  145. package/web/assets/{interface-time-hour-glass.svg-CJ43-28R.js → interface-time-hour-glass.svg-Ddo-8hHe.js} +1 -1
  146. package/web/assets/{interface-users-multiple.svg-DUoZG3ny.js → interface-users-multiple.svg-Jh7S0sT4.js} +1 -1
  147. package/web/assets/{interface-weather-moon.svg-C6iv_sYC.js → interface-weather-moon.svg-DbdQFgL2.js} +1 -1
  148. package/web/assets/{javascript-C9ITR2y1.js → javascript-BVGFyXBk.js} +1 -1
  149. package/web/assets/{jsonMode-CVg8GDEH.js → jsonMode-vnFlxYl9.js} +2 -2
  150. package/web/assets/{liquid-QQuSH6xu.js → liquid-DieKMEvN.js} +1 -1
  151. package/web/assets/{lspLanguageFeatures-Dw4848W6.js → lspLanguageFeatures-DoeI-8Y7.js} +3 -3
  152. package/web/assets/{mail-chat-bubble-square.svg-BazJ_62-.js → mail-chat-bubble-square.svg-CApdU2ea.js} +1 -1
  153. package/web/assets/{mail-send-email-paper-airplane.svg-B-Dxyqfp.js → mail-send-email-paper-airplane.svg-jjZ0KB32.js} +1 -1
  154. package/web/assets/{mail-send-envelope.svg-C8b7sbKN.js → mail-send-envelope.svg-B6Tsoh-8.js} +1 -1
  155. package/web/assets/{mdx-DAF1FZmF.js → mdx-BCkszXid.js} +1 -1
  156. package/web/assets/{minus-CSyILGbg.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--Lc3cf7X.js → money-cashier-receipt.svg-DM-I8Snr.js} +1 -1
  160. package/web/assets/{money-currency-dollar-pay.svg-Dj5mJsZo.js → money-currency-dollar-pay.svg-CkDRewrV.js} +1 -1
  161. package/web/assets/{money-graph-arrow-increase.svg-BxDK2s6g.js → money-graph-arrow-increase.svg-BT4KLHWz.js} +1 -1
  162. package/web/assets/{money-graph-bar-chart-increase.svg-DGZaFMZM.js → money-graph-bar-chart-increase.svg-EvyIJ3Uu.js} +1 -1
  163. package/web/assets/{multiselect-Dn8j6BKj.js → multiselect-BmjidXlj.js} +3 -3
  164. package/web/assets/{nature-ecology-leaf.svg-CWHdLRYI.js → nature-ecology-leaf.svg-uZBwXdg9.js} +1 -1
  165. package/web/assets/{password-BHZmKoIG.js → password-D1R5w1qL.js} +4 -4
  166. package/web/assets/{phone-telephone.svg-DsOG1joc.js → phone-telephone.svg-BSvOskIB.js} +1 -1
  167. package/web/assets/{plus-fHFXXVKA.js → plus-CNGSRnxy.js} +6 -6
  168. package/web/assets/process.store-p1LqnpY2.js +1 -0
  169. package/web/assets/{programming-bug.svg-QYUdmLY5.js → programming-bug.svg-CLnGs4K-.js} +1 -1
  170. package/web/assets/{programming-cloud.svg-C6znZJ-C.js → programming-cloud.svg-CxBovXBR.js} +1 -1
  171. package/web/assets/{programming-computer-database-server.svg-3XQZgkj3.js → programming-computer-database-server.svg-C1JmOyio.js} +1 -1
  172. package/web/assets/{programming-computer-database.svg-6OF1JaA-.js → programming-computer-database.svg-BRjyOzP4.js} +1 -1
  173. package/web/assets/{programming-module-four-layout.svg-DN7C2xQ3.js → programming-module-four-layout.svg-Blwzw6Qz.js} +1 -1
  174. package/web/assets/{programming-module-three.svg-8zjQz2zh.js → programming-module-three.svg-6bkrmWsU.js} +1 -1
  175. package/web/assets/{programming-module.svg-BQpaVQTI.js → programming-module.svg-CBS9xKxX.js} +1 -1
  176. package/web/assets/{programming-script-code.svg-C5U07Bnn.js → programming-script-code.svg-BVhyoAD3.js} +1 -1
  177. package/web/assets/project-launch.store-BBYtCcv8.js +1 -0
  178. package/web/assets/project.store-D_2v7amt.js +1 -0
  179. package/web/assets/{python-CIZTrsB5.js → python-CiPYtj_d.js} +1 -1
  180. package/web/assets/{radiobutton-DiazMmAi.js → radiobutton--KWBHcDP.js} +3 -2
  181. package/web/assets/{razor-BN7EghYh.js → razor-CSoWGP30.js} +1 -1
  182. package/web/assets/router-CRKT3825.js +1 -0
  183. package/web/assets/{selectbutton-BLjfO8t-.js → selectbutton-C0NL5n4w.js} +4 -4
  184. package/web/assets/settings-scope-DblmUa3N.js +1 -0
  185. package/web/assets/{settings.store-BfxfuLM2.js → settings.store-DKTQyerJ.js} +1 -1
  186. package/web/assets/{shopping-cart.svg-qy6s5BGQ.js → shopping-cart.svg-C-8NG_Po.js} +1 -1
  187. package/web/assets/{shopping-gift-present.svg-C9HdpVxJ.js → shopping-gift-present.svg-Bp6q5VzJ.js} +1 -1
  188. package/web/assets/{shopping-shipping-box-parcel-package.svg-CMFuFIDh.js → shopping-shipping-box-parcel-package.svg-DeWaEIwm.js} +1 -1
  189. package/web/assets/{src-DzTHX0Uv.js → src-BHR3l7pa.js} +17 -17
  190. package/web/assets/{src-CkT0Buv_.css → src-BN5gTC76.css} +1 -1
  191. package/web/assets/src-BRLkogf3.js +1 -0
  192. package/web/assets/{tag-new-circle.svg-CfhsqJra.js → tag-new-circle.svg-CTljXsqE.js} +1 -1
  193. package/web/assets/theme-BZzt_Sgl.js +1 -0
  194. package/web/assets/{toggleswitch-CjP0YQIo.js → toggleswitch-d41l5g27.js} +2 -2
  195. package/web/assets/{travel-map-earth-globe.svg-DoZqANqT.js → travel-map-earth-globe.svg-BUkcntCp.js} +1 -1
  196. package/web/assets/trpc-Db0Atu8A.js +1 -0
  197. package/web/assets/{tsMode-tM0mPX0S.js → tsMode-B2c-rCAa.js} +4 -4
  198. package/web/assets/{typescript-BEUIW-V_.js → typescript-CmW4u_GQ.js} +1 -1
  199. package/web/assets/useAiChatDrawer-0QJJVXul.js +1 -0
  200. package/web/assets/useCloudOrg-E4l-99WA.js +1 -0
  201. package/web/assets/useEnvVarAutocomplete-BDqUWoGr.js +102 -0
  202. package/web/assets/{useProjectCatalog-BdouNxux.js → useProjectCatalog-Cxt-hL1H.js} +1 -1
  203. package/web/assets/{useProjectCloudOrg-BHkyD0dP.js → useProjectCloudOrg-CwLTQLIO.js} +1 -1
  204. package/web/assets/useServiceUrlHost-VIA3uP5-.js +1 -0
  205. package/web/assets/{xml-dZzMKM-n.js → xml-BxMqu3hT.js} +1 -1
  206. package/web/assets/{yaml-Bm1gOrCp.js → yaml-Djx7E3R1.js} +1 -1
  207. package/web/index.html +2 -2
  208. package/chunk-4RMM2OUU.js.map +0 -1
  209. package/chunk-M3UUGW5Z.js.map +0 -1
  210. package/web/assets/AgentScalarChatInterface.vue-DMB64kMa.js +0 -13
  211. package/web/assets/AgentTerminalPage-RN_RhpdH.js +0 -1
  212. package/web/assets/AiChatPage-9ko8n9o-.js +0 -1
  213. package/web/assets/AppLayout-C_tqGN1Z.js +0 -1
  214. package/web/assets/AppLayout-Db2KGjwQ.css +0 -1
  215. package/web/assets/AuditPage-CiOsIB_G.js +0 -1
  216. package/web/assets/CloudAccountPage-BPQs7Ukh.js +0 -1
  217. package/web/assets/CloudAccountPage-vlELc9s4.js +0 -1
  218. package/web/assets/CloudMessagingPage-CXVBG7G_.js +0 -2
  219. package/web/assets/DashboardPage-DaN6l4Aq.js +0 -1
  220. package/web/assets/DirectoryPickerDialog-DMAE3RCc.js +0 -1
  221. package/web/assets/EnvironmentFormPage-CsdoKvWm.js +0 -1
  222. package/web/assets/EnvironmentListPage-DNvRlujy.js +0 -1
  223. package/web/assets/KanbanBoardPage-BvJB1vAN.js +0 -4
  224. package/web/assets/KanbanBoardPage-acfjgSse.css +0 -1
  225. package/web/assets/KanbanListPage-BXS70nXB.js +0 -1
  226. package/web/assets/LaunchProjectPage-qh5FY_Hp.js +0 -1
  227. package/web/assets/LaunchServicesPage-cRa4PpoA.js +0 -1
  228. package/web/assets/LaunchShell-Xp_uKnnV.js +0 -1
  229. package/web/assets/LogViewer-DEa33rcG.js +0 -3
  230. package/web/assets/OrgKeyPrompt-DjAzt1_e.js +0 -1
  231. package/web/assets/OrgLogo-B90FSNG_.js +0 -1
  232. package/web/assets/ProcessDetailPage-CWOy22x2.js +0 -1
  233. package/web/assets/ProcessMetrics-C2I4giT-.js +0 -51
  234. package/web/assets/RandomJobTestPage-DwHtCAFt.js +0 -2
  235. package/web/assets/ScenarioEditorPage-CsqHIJjY.js +0 -14
  236. package/web/assets/ScenarioEditorPage-GmFIXPDj.css +0 -1
  237. package/web/assets/SendToChatDialog-CKm3Uyu8.js +0 -1
  238. package/web/assets/ServiceControlsBar-Cqr7rrv_.js +0 -1
  239. package/web/assets/ServiceDetailPage-CcBr0uNs.js +0 -2
  240. package/web/assets/ServiceFormPage-CzSFKd5J.js +0 -1
  241. package/web/assets/SettingsPage-BXY3tCv6.js +0 -2063
  242. package/web/assets/UnlockPage-Dz_ZeUOS.js +0 -1
  243. package/web/assets/VaultMigrationPage-ac8mXUny.js +0 -1
  244. package/web/assets/VersionBadge-DkNYiMGe.js +0 -1
  245. package/web/assets/WikiPage-ZAFnZhOV.js +0 -1
  246. package/web/assets/WikiView-CaUVD3f1.css +0 -1
  247. package/web/assets/WikiView-DEv8qkPA.js +0 -1
  248. package/web/assets/add-scalar-classes-DsQIWkxF.js +0 -387
  249. package/web/assets/card-BFnzVWOY.js +0 -32
  250. package/web/assets/client-DI09uuoY.js +0 -24
  251. package/web/assets/cloud-chat.store-DiiPfn2Z.js +0 -1
  252. package/web/assets/cloud-client-CvBR_p1A.js +0 -1
  253. package/web/assets/cloud-session-B__x9RFv.js +0 -2
  254. package/web/assets/cloud-session-CL_GKNrJ.js +0 -1
  255. package/web/assets/column-CrgQlR1x.js +0 -763
  256. package/web/assets/index-rUoTy8xc.css +0 -1
  257. package/web/assets/interface-content-folder.svg-Vn-2b_F8.js +0 -1
  258. package/web/assets/modal-BmOMX0EL.js +0 -5
  259. package/web/assets/modal-X_BQCOfK.js +0 -1
  260. package/web/assets/process.store-C0m4Wixd.js +0 -1
  261. package/web/assets/project-launch.store-GKs5Jjsm.js +0 -1
  262. package/web/assets/project.store-C_os4Nr_.js +0 -1
  263. package/web/assets/router-29Kkqv0z.js +0 -1
  264. package/web/assets/settings-scope-nt8KoQ24.js +0 -1
  265. package/web/assets/src-BFi137TM.js +0 -1
  266. package/web/assets/tabpanel-D9tIljjF.js +0 -150
  267. package/web/assets/theme-To2Yx9kx.js +0 -1
  268. package/web/assets/trpc-DiE7rC1k.js +0 -1
  269. package/web/assets/useAiChatDrawer-DorHkhHZ.js +0 -1
  270. package/web/assets/useCloudOrg-ieBKFf0P.js +0 -1
  271. package/web/assets/useEnvVarAutocomplete-Dqk4Xmzl.js +0 -1
  272. package/web/assets/useServiceUrlHost-D3DylMsX.js +0 -1
  273. /package/{agent-manager-TUFAFC6U.js.map → agent-manager-FUU72VGH.js.map} +0 -0
  274. /package/{chat-IQBWQCTK.js.map → chat-C26CBAZX.js.map} +0 -0
  275. /package/{chunk-GISLEYNE.js.map → chunk-FJLMXLMK.js.map} +0 -0
  276. /package/{chunk-7JAJSV4L.js.map → chunk-J4GLFY7G.js.map} +0 -0
  277. /package/{companion-YQ7CGW7W.js.map → companion-Q67RAO3N.js.map} +0 -0
  278. /package/{node-JU7A5NDT.js.map → node-4UUJN2WG.js.map} +0 -0
@@ -30,7 +30,7 @@ import {
30
30
  runCompanionNow,
31
31
  syncConversationFromClaudeTranscript,
32
32
  verifyJwt
33
- } from "./chunk-GISLEYNE.js";
33
+ } from "./chunk-FJLMXLMK.js";
34
34
  import {
35
35
  StoreDiskCoordinator,
36
36
  agentManager,
@@ -49,7 +49,7 @@ import {
49
49
  recordLocalRemoval,
50
50
  refsOfProjectId,
51
51
  serviceStore
52
- } from "./chunk-7JAJSV4L.js";
52
+ } from "./chunk-J4GLFY7G.js";
53
53
  import {
54
54
  atomicWriteJsonSecure,
55
55
  atomicWriteSecure,
@@ -106,7 +106,7 @@ import {
106
106
  import {
107
107
  isCliAvailable,
108
108
  resolveCliInvocation
109
- } from "./chunk-4RMM2OUU.js";
109
+ } from "./chunk-NURPXHLB.js";
110
110
 
111
111
  // ../server/src/trpc/routers/chat.ts
112
112
  import { z as z9 } from "zod";
@@ -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";
@@ -5691,7 +5376,7 @@ function tailTranscript(opts) {
5691
5376
 
5692
5377
  // ../server/src/services/ai-runners/claude-pty-runner.ts
5693
5378
  async function getAgentManager() {
5694
- const { agentManager: agentManager2 } = await import("./agent-manager-TUFAFC6U.js");
5379
+ const { agentManager: agentManager2 } = await import("./agent-manager-FUU72VGH.js");
5695
5380
  return agentManager2;
5696
5381
  }
5697
5382
  function buildPtyArgs(params, sessionId, opts) {
@@ -6385,7 +6070,7 @@ async function shutdownCodexAppServer() {
6385
6070
  }
6386
6071
  }
6387
6072
  async function getAgentManager2() {
6388
- const { agentManager: agentManager2 } = await import("./agent-manager-TUFAFC6U.js");
6073
+ const { agentManager: agentManager2 } = await import("./agent-manager-FUU72VGH.js");
6389
6074
  return agentManager2;
6390
6075
  }
6391
6076
  function parseRuneyaCurlCommand(command) {
@@ -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-P65BO7WZ.js.map