@runeya/runeya 2.0.28 → 2.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/agent/index.js +23 -1
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-KGITN4AE.js +7 -0
  4. package/{chunk-Y2R42AXQ.js → chunk-PZHVJHTC.js} +24 -2
  5. package/chunk-PZHVJHTC.js.map +1 -0
  6. package/index.js +1 -1
  7. package/package.json +1 -1
  8. package/{src-ZYEDS2TT.js → src-W64XJTN5.js} +162 -114
  9. package/src-W64XJTN5.js.map +1 -0
  10. package/web/assets/{AgentScalarChatInterface.vue-CvVAU4_Z.js → AgentScalarChatInterface.vue-Tid9c7AI.js} +1 -1
  11. package/web/assets/{AgentTerminalPage-DJbjkS_P.js → AgentTerminalPage-Bfmc2lJ5.js} +1 -1
  12. package/web/assets/AiChatPage-LbXbHkW7.js +1 -0
  13. package/web/assets/{AppLayout-CmgZhtWb.js → AppLayout-Cq3bBVsr.js} +1 -1
  14. package/web/assets/{AuditPage-CIQXRIah.js → AuditPage-BTk2MLfW.js} +1 -1
  15. package/web/assets/CloudAccountPage--sgdl0BR.js +1 -0
  16. package/web/assets/{CloudAccountPage-B-ediB1R.js → CloudAccountPage-sObD2Djw.js} +1 -1
  17. package/web/assets/{CloudMessagingPage-DvZuiSk3.js → CloudMessagingPage-DbkITdyZ.js} +1 -1
  18. package/web/assets/{DashboardPage-Dx7xHCCP.js → DashboardPage-CW5p34P0.js} +1 -1
  19. package/web/assets/{EditorIcon-4f28vJdz.js → EditorIcon-D1wp4885.js} +1 -1
  20. package/web/assets/{EnvironmentForm-CR0xHO9G.js → EnvironmentForm-BA-0wfqa.js} +1 -1
  21. package/web/assets/{EnvironmentFormPage-qc4WT8Xk.js → EnvironmentFormPage-ePoUSDaO.js} +1 -1
  22. package/web/assets/{EnvironmentListPage-DIjYKLDE.js → EnvironmentListPage-Cgn6NwWL.js} +1 -1
  23. package/web/assets/{EnvironmentSelector-C3yA1kHZ.js → EnvironmentSelector-C8aULVdj.js} +1 -1
  24. package/web/assets/KanbanBoardPage-0TVI8ncW.js +4 -0
  25. package/web/assets/KanbanBoardPage-kpZiPs_o.css +1 -0
  26. package/web/assets/{KanbanListPage-Drt3lxBT.js → KanbanListPage-B6QRYUG8.js} +1 -1
  27. package/web/assets/{LaunchProjectPage-DQDogPxL.js → LaunchProjectPage-jx4qoZlc.js} +1 -1
  28. package/web/assets/{LaunchServicesPage-Jg18jEbK.js → LaunchServicesPage-C2hQ8iiO.js} +1 -1
  29. package/web/assets/{LogViewer-DF9GVFWC.js → LogViewer-DPQTUsar.js} +1 -1
  30. package/web/assets/{ProcessControls-Umt6f5xy.js → ProcessControls-n_p4xwJz.js} +1 -1
  31. package/web/assets/{ProcessDetailPage-CTljkKd4.js → ProcessDetailPage-Cm2iN-19.js} +1 -1
  32. package/web/assets/{ProcessMetrics-XANBf0Qk.js → ProcessMetrics-DRxTLIIf.js} +1 -1
  33. package/web/assets/{ProjectDetailPage-tYK7WVg5.js → ProjectDetailPage-DO7pKGee.js} +1 -1
  34. package/web/assets/{ProjectListPage-Bl2xRUn8.js → ProjectListPage-CljuUt8K.js} +1 -1
  35. package/web/assets/{RandomJobTestPage-D-1h_Jn0.js → RandomJobTestPage-DqbzEMbv.js} +1 -1
  36. package/web/assets/{ScenarioEditorPage-AYudLHpb.js → ScenarioEditorPage-DRUK4ep3.js} +1 -1
  37. package/web/assets/{SendToChatDialog-Cy3nX2xD.js → SendToChatDialog-C6d_cEQ4.js} +1 -1
  38. package/web/assets/{ServiceControlsBar-CXk2ltIc.js → ServiceControlsBar-BcCBOny2.js} +1 -1
  39. package/web/assets/{ServiceDetailPage-guE9lv3J.js → ServiceDetailPage-B5Z2oyG1.js} +1 -1
  40. package/web/assets/{ServiceFormPage-BfhD3cHh.js → ServiceFormPage-BkRlzAMF.js} +1 -1
  41. package/web/assets/{SettingsPage-B1egv0Qi.js → SettingsPage-CkAaTz8q.js} +4 -4
  42. package/web/assets/{SetupPage-DDqjtbHe.js → SetupPage-DRRqBmwE.js} +1 -1
  43. package/web/assets/{UnlockPage-B9V18Hw8.js → UnlockPage-DFHKtpGb.js} +1 -1
  44. package/web/assets/{VariablesTable-B4z_Cvs6.js → VariablesTable-Csi8gzLH.js} +1 -1
  45. package/web/assets/{VersionBadge-D5Im-g6k.js → VersionBadge-C1-aqmd0.js} +1 -1
  46. package/web/assets/WikiPage-amGnOY35.js +1 -0
  47. package/web/assets/{WikiView-BkAYyIky.js → WikiView-BSFsn874.js} +1 -1
  48. package/web/assets/{add-scalar-classes-wf0v84bl.js → add-scalar-classes-BrZlN4Hz.js} +3 -3
  49. package/web/assets/auth-errors-VpVD7Ji8.js +1 -0
  50. package/web/assets/{autocomplete-Cl85AjsC.js → autocomplete-CqNBR7AV.js} +1 -1
  51. package/web/assets/{basic-shape-diamond.svg-EjFsbEU6.js → basic-shape-diamond.svg-pmR0NFra.js} +1 -1
  52. package/web/assets/{basic-shape-hexagon.svg-BSGF96h_.js → basic-shape-hexagon.svg-DoFRZCyQ.js} +1 -1
  53. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DzhBsSTr.js → basic-shape-primary-circle-ellipse-round.svg-CPjLQmZx.js} +1 -1
  54. package/web/assets/{basic-shape-primary-square-rectangle.svg-D8s7AAg0.js → basic-shape-primary-square-rectangle.svg-DcMAxrju.js} +1 -1
  55. package/web/assets/{basic-shape-shield.svg-CZVfGGSa.js → basic-shape-shield.svg-Dmg9h6Ld.js} +1 -1
  56. package/web/assets/{browser-DeK7cxfP.js → browser-C6RUDE7s.js} +1 -1
  57. package/web/assets/{browser-BJbPa5wA.js → browser-DfiNANMf.js} +1 -1
  58. package/web/assets/{card-C8VZemYn.js → card-BtNd-O08.js} +1 -1
  59. package/web/assets/{checkbox-CHlXPfVG.js → checkbox-CCOdP3PH.js} +1 -1
  60. package/web/assets/{chip-BIf8nQZp.js → chip-CKD4ZA_K.js} +1 -1
  61. package/web/assets/{client-Ck5Tf_q2.js → client-DUaS1tvD.js} +1 -1
  62. package/web/assets/{cloud-chat.store-qtVT5SrP.js → cloud-chat.store-Do2pLXa6.js} +1 -1
  63. package/web/assets/cloud-client-DkNqusEt.js +1 -0
  64. package/web/assets/{column-DzFOwR4r.js → column-EYuEVcRt.js} +1 -1
  65. package/web/assets/{computer-device-desktop-monitor.svg-DZQuEpZF.js → computer-device-desktop-monitor.svg-C8qLTM16.js} +1 -1
  66. package/web/assets/{computer-device-desktop.svg-CEjLM8aJ.js → computer-device-desktop.svg-BwIQxUgG.js} +1 -1
  67. package/web/assets/{computer-device-laptop.svg-DXtolGzW.js → computer-device-laptop.svg-je8g4h4s.js} +1 -1
  68. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BSwre-M8.js → computer-device-mobile-phone-android-samsung-back.svg-DXuOmvmg.js} +1 -1
  69. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BGERJFfo.js → computer-device-mobile-phone-android-samsung.svg-Dvck__2L.js} +1 -1
  70. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-B4hZe_83.js → computer-device-mobile-phone-iphone-x-back.svg-BRzKNDWY.js} +1 -1
  71. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CWALzaq5.js → computer-device-mobile-phone-iphone-x.svg-DwKt9Eia.js} +1 -1
  72. package/web/assets/{computer-device-mobile-tablet-touch.svg-CKFDix2A.js → computer-device-mobile-tablet-touch.svg-B65iLEZR.js} +1 -1
  73. package/web/assets/{computer-device-mobile-tablet.svg-PW6AfYK8.js → computer-device-mobile-tablet.svg-BbUYpqRa.js} +1 -1
  74. package/web/assets/{computer-device-network-ethernet-cat6.svg-Mv5w5TOF.js → computer-device-network-ethernet-cat6.svg-TVQFk_lM.js} +1 -1
  75. package/web/assets/{computer-device-network-lan-www.svg-8StLkiX8.js → computer-device-network-lan-www.svg-D9wNL1d9.js} +1 -1
  76. package/web/assets/{computer-device-network-wifi-connection.svg-BeLrrgP7.js → computer-device-network-wifi-connection.svg-B3l3vDCq.js} +1 -1
  77. package/web/assets/{computer-device-network-wifi-router.svg-CJiZPTY7.js → computer-device-network-wifi-router.svg-CfJjWVyH.js} +1 -1
  78. package/web/assets/{cssMode-BhLSG915.js → cssMode-CT0VgZiM.js} +1 -1
  79. package/web/assets/{divider-Bqt4F4Qp.js → divider-BAtaraJT.js} +1 -1
  80. package/web/assets/{ecology-science-erlenmeyer-flask.svg-BbZXykYT.js → ecology-science-erlenmeyer-flask.svg-DCqj3wuN.js} +1 -1
  81. package/web/assets/{fieldset-Ckk9RxbZ.js → fieldset-Bmfuw85t.js} +1 -1
  82. package/web/assets/{freemarker2-BMY7vTsn.js → freemarker2-DcS0oW9c.js} +1 -1
  83. package/web/assets/{handlebars-dL1R3--H.js → handlebars-EYnEyJJj.js} +1 -1
  84. package/web/assets/{html-344qni_p.js → html-Cy3hBLsT.js} +1 -1
  85. package/web/assets/{htmlMode-DofkmDyO.js → htmlMode-7YMQ7tB-.js} +1 -1
  86. package/web/assets/{image-flash-lightning.svg-CUKVp-AP.js → image-flash-lightning.svg-D6x2pDl8.js} +1 -1
  87. package/web/assets/{image-picture-flower.svg-D8v_AWKn.js → image-picture-flower.svg-qlZATukV.js} +1 -1
  88. package/web/assets/{index-0h6-JSBE.js → index-ZFdBtCGG.js} +5 -5
  89. package/web/assets/{interface-alert-exclamation-diamond.svg-Svf3SQNi.js → interface-alert-exclamation-diamond.svg-Bt2YgBdz.js} +1 -1
  90. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BONYDBCR.js → interface-alert-exclamation-triangle-warning.svg-BL6E9tsG.js} +1 -1
  91. package/web/assets/{interface-alert-information-circle.svg-DjtyOApC.js → interface-alert-information-circle.svg-C2mU-Jrm.js} +1 -1
  92. package/web/assets/{interface-award-crown.svg-CYsHquI5.js → interface-award-crown.svg-C_908siC.js} +1 -1
  93. package/web/assets/{interface-bookmark.svg-Dq6ycrvL.js → interface-bookmark-tag.svg-CdwmwagL.js} +1 -1
  94. package/web/assets/{interface-bookmark-tag.svg-BuQVffZJ.js → interface-bookmark.svg-DiGis0Pq.js} +1 -1
  95. package/web/assets/{interface-calendar-date-one.svg-DByu3wOg.js → interface-calendar-date-one.svg-DZJTVsRH.js} +1 -1
  96. package/web/assets/{interface-content-book-open-pages.svg-B26NylpB.js → interface-content-book-open-pages.svg-BWjmGbGN.js} +1 -1
  97. package/web/assets/{interface-content-book-page.svg-BB2ivXh0.js → interface-content-book-page.svg-HTArRhqF.js} +1 -1
  98. package/web/assets/{interface-content-file.svg-gFnNuymA.js → interface-content-file.svg-CEK-6Dir.js} +1 -1
  99. package/web/assets/{interface-content-folder.svg-DvbImJww.js → interface-content-folder.svg-CvFy9IIg.js} +1 -1
  100. package/web/assets/interface-content-folder.svg-D9a2SnRw.js +1 -0
  101. package/web/assets/{interface-copy-clipboard.svg-Bp4l9Qod.js → interface-copy-clipboard.svg-CA9ObKG2.js} +1 -1
  102. package/web/assets/{interface-edit-attachment.svg-cayiblt2.js → interface-edit-attachment.svg-BuZlaKV6.js} +1 -1
  103. package/web/assets/{interface-edit-binocular.svg-BvIiESbT.js → interface-edit-binocular.svg-Bu-T_qRU.js} +1 -1
  104. package/web/assets/{interface-edit-magic-wand.svg-Bvfkkoft.js → interface-edit-magic-wand.svg-ZyOEyv4O.js} +1 -1
  105. package/web/assets/{interface-edit-tool-paint-roller.svg-Dnoz9W9m.js → interface-edit-tool-paint-roller.svg-DBwhOf_F.js} +1 -1
  106. package/web/assets/{interface-edit-tool-pencil.svg-aKau4_Jj.js → interface-edit-tool-pencil.svg-CMKU5EZ0.js} +1 -1
  107. package/web/assets/{interface-favorite-award.svg-DBvY_ky_.js → interface-favorite-award.svg-Djfprlrh.js} +1 -1
  108. package/web/assets/{interface-favorite-flag.svg-CBdbLlXI.js → interface-favorite-flag.svg-MM0Rm1Rf.js} +1 -1
  109. package/web/assets/{interface-favorite-heart.svg-CB_C7DqH.js → interface-favorite-heart.svg-8eXxbVlD.js} +1 -1
  110. package/web/assets/{interface-favorite-star.svg-CtD9k4PE.js → interface-favorite-star.svg-CYpNa-DM.js} +1 -1
  111. package/web/assets/{interface-favorite-stars-sparkles.svg-tL8H5LKH.js → interface-favorite-stars-sparkles.svg-KYu8S1Mc.js} +1 -1
  112. package/web/assets/{interface-hierarchy-flowchart.svg-DDZfke0l.js → interface-hierarchy-flowchart.svg-fr4rLXph.js} +1 -1
  113. package/web/assets/{interface-home-house.svg-928LKnoh.js → interface-home-house.svg-UfcAwTPa.js} +1 -1
  114. package/web/assets/{interface-hyperlink.svg-BVJBa9KF.js → interface-hyperlink.svg-DLpXwEy6.js} +1 -1
  115. package/web/assets/{interface-lighting-brightness.svg-C6DvgPRs.js → interface-lighting-brightness.svg-aY4osIqa.js} +1 -1
  116. package/web/assets/{interface-lock-closed.svg-NFylzPTC.js → interface-lock-closed.svg-CiMIugbj.js} +1 -1
  117. package/web/assets/{interface-lock-open-unlock.svg-EmxIAQyQ.js → interface-lock-open-unlock.svg-d5UkSt1y.js} +1 -1
  118. package/web/assets/{interface-login-key.svg-C0nFw-iu.js → interface-login-key.svg-C7Ml1iaN.js} +1 -1
  119. package/web/assets/{interface-search.svg-1Gq_uSPL.js → interface-search.svg-D8jY9D2U.js} +1 -1
  120. package/web/assets/{interface-setting-cog.svg-3dq-AXqL.js → interface-setting-cog.svg-3DAxFuOM.js} +1 -1
  121. package/web/assets/{interface-share-megaphone-bullhorn.svg-Bb4qoyBo.js → interface-share-megaphone-bullhorn.svg-BsbqqS8a.js} +1 -1
  122. package/web/assets/{interface-share-rocket.svg-1hUkfTAV.js → interface-share-rocket.svg-C_8HYujm.js} +1 -1
  123. package/web/assets/{interface-share-satellite.svg-C1fkGxMj.js → interface-share-satellite.svg-3O-1mL1W.js} +1 -1
  124. package/web/assets/{interface-share-space-ship.svg-DCtyIZvd.js → interface-share-space-ship.svg-BDge8YMa.js} +1 -1
  125. package/web/assets/{interface-share.svg-D27oW8Dd.js → interface-share.svg-Fehxvv85.js} +1 -1
  126. package/web/assets/{interface-signal-square.svg-DHNLXoLB.js → interface-signal-square.svg-C0c3wlFq.js} +1 -1
  127. package/web/assets/{interface-time-clock-circle.svg-DVFfhzi_.js → interface-time-clock-circle.svg-Bj3gcDKD.js} +1 -1
  128. package/web/assets/{interface-time-hour-glass.svg-J2kAIY5_.js → interface-time-hour-glass.svg-DUim2QDE.js} +1 -1
  129. package/web/assets/{interface-users-multiple.svg-CT_rq2cA.js → interface-users-multiple.svg-vooB7JL-.js} +1 -1
  130. package/web/assets/{interface-weather-moon.svg-DmUulEez.js → interface-weather-moon.svg-BcUz22tg.js} +1 -1
  131. package/web/assets/{javascript-DJEY0PGT.js → javascript-xFG-91vE.js} +1 -1
  132. package/web/assets/{jsonMode-Bf1QPhve.js → jsonMode-CXRfjDm6.js} +1 -1
  133. package/web/assets/{liquid-BvlkiSX0.js → liquid-DFaP2Us7.js} +1 -1
  134. package/web/assets/{lspLanguageFeatures-Blscl7vz.js → lspLanguageFeatures-Cj2beqH7.js} +1 -1
  135. package/web/assets/{mail-chat-bubble-square.svg-oLN5_z0h.js → mail-chat-bubble-square.svg-Q5_Wlk-h.js} +1 -1
  136. package/web/assets/{mail-send-email-paper-airplane.svg-B__7_Vor.js → mail-send-email-paper-airplane.svg-CjqQ7405.js} +1 -1
  137. package/web/assets/{mail-send-envelope.svg-DUobbjXC.js → mail-send-envelope.svg-MH4dR__N.js} +1 -1
  138. package/web/assets/{mdx-fAQ2xk7o.js → mdx-DDj1td2N.js} +1 -1
  139. package/web/assets/{message-V1S0zxyl.js → message-Dgvz1ZaX.js} +1 -1
  140. package/web/assets/{minus-DQocLKZ2.js → minus-Hsxq04kB.js} +1 -1
  141. package/web/assets/modal-BCbrFXdF.js +1 -0
  142. package/web/assets/{modal-Jd8c3A1o.js → modal-pAb11yGJ.js} +1 -1
  143. package/web/assets/{money-cashier-receipt.svg-Cj5pLd3R.js → money-cashier-receipt.svg-W10QYjo6.js} +1 -1
  144. package/web/assets/{money-currency-dollar-pay.svg-D85nPq3p.js → money-currency-dollar-pay.svg-jlzMCQus.js} +1 -1
  145. package/web/assets/{money-graph-arrow-increase.svg-B-jecr0K.js → money-graph-arrow-increase.svg-DjiVgX3u.js} +1 -1
  146. package/web/assets/{money-graph-bar-chart-increase.svg-mL9YQSKx.js → money-graph-bar-chart-increase.svg-BetO29r-.js} +1 -1
  147. package/web/assets/{multiselect-BDZrrJVC.js → multiselect-DAvUHXe1.js} +1 -1
  148. package/web/assets/{nature-ecology-leaf.svg-C5PATFHo.js → nature-ecology-leaf.svg-68pXd-Nz.js} +1 -1
  149. package/web/assets/{password-CBpcX5yn.js → password-fBZDwzDL.js} +1 -1
  150. package/web/assets/{phone-telephone.svg-6VIpvy-y.js → phone-telephone.svg-5-34SVF9.js} +1 -1
  151. package/web/assets/{plus-B2jxpOLU.js → plus-BybvY8Jc.js} +1 -1
  152. package/web/assets/process.store-e8DffExf.js +1 -0
  153. package/web/assets/{programming-bug.svg-BcxVR8s8.js → programming-bug.svg-2bQdYECv.js} +1 -1
  154. package/web/assets/{programming-cloud.svg-k8vesSUP.js → programming-cloud.svg-DZ2V0eJT.js} +1 -1
  155. package/web/assets/{programming-computer-database-server.svg-C3BxhLIn.js → programming-computer-database-server.svg-hDSuUD9Z.js} +1 -1
  156. package/web/assets/{programming-computer-database.svg-D5JgkHxk.js → programming-computer-database.svg-BySVZkMc.js} +1 -1
  157. package/web/assets/{programming-module-four-layout.svg-QPzWv5-h.js → programming-module-four-layout.svg-CKIgCJwc.js} +1 -1
  158. package/web/assets/{programming-module-three.svg-C8sC64dR.js → programming-module-three.svg-DiWesNwV.js} +1 -1
  159. package/web/assets/{programming-module.svg-3IM9Ieau.js → programming-module.svg-DU0zOvVK.js} +1 -1
  160. package/web/assets/{programming-script-code.svg-CcSjILXf.js → programming-script-code.svg-DfSmaPH7.js} +1 -1
  161. package/web/assets/{python-izcQtunc.js → python-C25OjXtn.js} +1 -1
  162. package/web/assets/{radiobutton-DkaY7vPf.js → radiobutton-K1Libu7g.js} +1 -1
  163. package/web/assets/{razor-B8B2Hdv1.js → razor-DrRHsFwp.js} +1 -1
  164. package/web/assets/router-BQjVOlyD.js +1 -0
  165. package/web/assets/{settings.store-BnyuJ8Z0.js → settings.store-BCaFk23O.js} +1 -1
  166. package/web/assets/{shopping-cart.svg-Cd1oC6MU.js → shopping-cart.svg-NMibYZ0k.js} +1 -1
  167. package/web/assets/{shopping-gift-present.svg-DADsc6IL.js → shopping-gift-present.svg-dqvSn838.js} +1 -1
  168. package/web/assets/{shopping-shipping-box-parcel-package.svg-RgU1qCOk.js → shopping-shipping-box-parcel-package.svg-CKYzVuYA.js} +1 -1
  169. package/web/assets/{src-DWLyvNxu.js → src-EWso2a1V.js} +1 -1
  170. package/web/assets/{src-DaE_IxON.js → src-_-zc3-Cp.js} +1 -1
  171. package/web/assets/{tabpanel-ps1UcMpu.js → tabpanel-BWhVX5cc.js} +1 -1
  172. package/web/assets/{tag-new-circle.svg-Ct1vN4KR.js → tag-new-circle.svg-JFLA4g9w.js} +1 -1
  173. package/web/assets/{travel-map-earth-globe.svg-DES-h7fX.js → travel-map-earth-globe.svg-DdQN4a7G.js} +1 -1
  174. package/web/assets/trpc-BZfo9Cw2.js +1 -0
  175. package/web/assets/{tsMode-n-LTfcYC.js → tsMode-Cii9XdsR.js} +1 -1
  176. package/web/assets/{typescript-2xBvBpwO.js → typescript-zoLusRa0.js} +1 -1
  177. package/web/assets/useAiChatDrawer-CHmnbpKl.js +1 -0
  178. package/web/assets/{useCloudOrg-BEGIZ5Sw.css → useCloudOrg-CHCwXrRm.css} +1 -1
  179. package/web/assets/useCloudOrg-JZ6DFHrG.js +1 -0
  180. package/web/assets/{xml-DNDCpyoa.js → xml-BhaXJtQn.js} +1 -1
  181. package/web/assets/{yaml-BWEYJIfa.js → yaml-CDzjwB43.js} +1 -1
  182. package/web/index.html +1 -1
  183. package/agent-manager-2P4THUVA.js +0 -7
  184. package/chunk-Y2R42AXQ.js.map +0 -1
  185. package/src-ZYEDS2TT.js.map +0 -1
  186. package/web/assets/AiChatPage-yheFOLqq.js +0 -1
  187. package/web/assets/CloudAccountPage-CPzIsKlw.js +0 -1
  188. package/web/assets/KanbanBoardPage-BDzDCbzp.css +0 -1
  189. package/web/assets/KanbanBoardPage-DWbeil-K.js +0 -4
  190. package/web/assets/WikiPage-CwULGndV.js +0 -1
  191. package/web/assets/auth-errors-_nnUuMls.js +0 -1
  192. package/web/assets/cloud-client-DZDFCmz5.js +0 -1
  193. package/web/assets/interface-content-folder.svg-oUFH-WWC.js +0 -1
  194. package/web/assets/modal-Cun3B13H.js +0 -1
  195. package/web/assets/process.store-IRJbG3V3.js +0 -1
  196. package/web/assets/router-DVcld2uT.js +0 -1
  197. package/web/assets/trpc-DL-TIO_-.js +0 -1
  198. package/web/assets/useAiChatDrawer-9vufna_G.js +0 -1
  199. package/web/assets/useCloudOrg-9Z9ojaI7.js +0 -1
  200. /package/{agent-manager-2P4THUVA.js.map → agent-manager-KGITN4AE.js.map} +0 -0
package/index.js CHANGED
@@ -201,7 +201,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
201
201
  });
202
202
  }
203
203
  async function main() {
204
- const { createLocalServer, pullEnv, PullEnvError } = await import("./src-ZYEDS2TT.js");
204
+ const { createLocalServer, pullEnv, PullEnvError } = await import("./src-W64XJTN5.js");
205
205
  if (isPullEnv) {
206
206
  if (!serviceArg) {
207
207
  console.error("Error: --service (-s) is required with --pull-env");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runeya/runeya",
3
- "version": "2.0.28",
3
+ "version": "2.0.29",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "runeya": "./index.js"
@@ -58,7 +58,7 @@ import {
58
58
  stableEncryptValue,
59
59
  traefikManager,
60
60
  writeEntity
61
- } from "./chunk-Y2R42AXQ.js";
61
+ } from "./chunk-PZHVJHTC.js";
62
62
 
63
63
  // ../server/src/create-server.ts
64
64
  import express from "express";
@@ -5687,10 +5687,54 @@ var KanbanStore = class {
5687
5687
  const res = await callCloud(`/kanban/board/list${query}`);
5688
5688
  return res.data?.boards ?? [];
5689
5689
  }
5690
- async get(id) {
5691
- const res = await callCloud(`/kanban/board/get?id=${encodeURIComponent(id)}`);
5690
+ /**
5691
+ * Un tableau. Sans les journaux de ses cartes par défaut : c'est la moitié
5692
+ * lourde du document, et presque aucun appelant n'en a besoin — un agent qui
5693
+ * liste des cartes ne lit pas les commentaires. `withHistory` les redemande
5694
+ * pour les rares cas qui les veulent tous d'un coup.
5695
+ */
5696
+ async get(id, opts = {}) {
5697
+ const query = `?id=${encodeURIComponent(id)}${opts.withHistory ? "&withHistory=true" : ""}`;
5698
+ const res = await callCloud(`/kanban/board/get${query}`);
5692
5699
  return res.data?.board ?? null;
5693
5700
  }
5701
+ /** Le journal d'une seule carte — ce que le contexte d'un agent demande. */
5702
+ async cardHistory(boardId, cardId) {
5703
+ const res = await callCloud(
5704
+ `/kanban/card/history?boardId=${encodeURIComponent(boardId)}&cardId=${encodeURIComponent(cardId)}`
5705
+ );
5706
+ return res.data?.history ?? [];
5707
+ }
5708
+ /**
5709
+ * Commenter une carte, sans réécrire le tableau.
5710
+ *
5711
+ * C'est le geste que l'IA répète le plus, et souvent avec de longs textes :
5712
+ * le faire passer par une sauvegarde de tableau faisait transiter tout le
5713
+ * graphe de cartes à chaque phrase.
5714
+ */
5715
+ async addComment(boardId, cardId, detail, conversationId) {
5716
+ const res = await callCloud("/kanban/card/comment/add", {
5717
+ method: "POST",
5718
+ body: { boardId, cardId, detail, author: "ai", ...conversationId ? { conversationId } : {} }
5719
+ });
5720
+ return res.ok;
5721
+ }
5722
+ /** Poser une entrée de journal non-commentaire (une conversation qui s'ouvre). */
5723
+ async addCardEvent(boardId, cardId, type, detail) {
5724
+ const res = await callCloud("/kanban/card/event/add", {
5725
+ method: "POST",
5726
+ body: { boardId, cardId, type, detail }
5727
+ });
5728
+ return res.ok;
5729
+ }
5730
+ /** Déplacer une carte, sans réécrire le tableau. */
5731
+ async moveCard(boardId, cardId, toColumnId) {
5732
+ const res = await callCloud("/kanban/card/move", {
5733
+ method: "POST",
5734
+ body: { boardId, cardId, toColumnId }
5735
+ });
5736
+ return res.ok;
5737
+ }
5694
5738
  async create(input) {
5695
5739
  const organizationId = await resolveOrganizationId();
5696
5740
  if (!organizationId) return null;
@@ -5739,17 +5783,27 @@ async function executeKanbanCommands(boardId, cardId, commands, conversationId)
5739
5783
  return;
5740
5784
  }
5741
5785
  }
5786
+ let pendingBoardWrite = false;
5742
5787
  for (const cmd of commands) {
5743
5788
  if (cmd.type === "move_card" && cmd.columnTitle) {
5744
- const moved = moveCard(board, cardId, cmd.columnTitle);
5745
- if (!moved) console.warn(`[kanban-commands] move_card failed: card=${cardId} target="${cmd.columnTitle}"`);
5789
+ const target = board.columns.find(
5790
+ (c) => c.title.toLowerCase() === cmd.columnTitle.toLowerCase()
5791
+ );
5792
+ if (!target) {
5793
+ console.warn(`[kanban-commands] Target column "${cmd.columnTitle}" not found. Available: ${board.columns.map((c) => c.title).join(", ")}`);
5794
+ continue;
5795
+ }
5796
+ const ok = await kanbanStore.moveCard(board.id, cardId, target.id);
5797
+ if (!ok) console.warn(`[kanban-commands] move_card failed: card=${cardId} target="${cmd.columnTitle}"`);
5746
5798
  } else if (cmd.type === "add_comment" && cmd.comment) {
5747
- addComment(board, cardId, cmd.comment, conversationId);
5799
+ const ok = await kanbanStore.addComment(board.id, cardId, cmd.comment, conversationId);
5800
+ if (!ok) console.warn(`[kanban-commands] add_comment failed: card=${cardId}`);
5748
5801
  } else if (cmd.type === "add_card" && cmd.columnTitle && cmd.cardTitle) {
5749
5802
  addCardToColumn(board, cmd.columnTitle, cmd.cardTitle, cmd.cardContent);
5803
+ pendingBoardWrite = true;
5750
5804
  }
5751
5805
  }
5752
- await kanbanStore.update({ id: board.id, columns: board.columns });
5806
+ if (pendingBoardWrite) await kanbanStore.update({ id: board.id, columns: board.columns });
5753
5807
  }
5754
5808
  async function executeKanbanBoardCommands(boardId, commands) {
5755
5809
  if (commands.length === 0) return;
@@ -5762,43 +5816,6 @@ async function executeKanbanBoardCommands(boardId, commands) {
5762
5816
  }
5763
5817
  await kanbanStore.update({ id: board.id, columns: board.columns });
5764
5818
  }
5765
- function moveCard(board, cardId, targetColTitle) {
5766
- let sourceCol = "";
5767
- let card = null;
5768
- let sourceColIdx = -1;
5769
- let cardIdx = -1;
5770
- for (let ci = 0; ci < board.columns.length; ci++) {
5771
- const col = board.columns[ci];
5772
- const idx = col.cards.findIndex((c) => c.id === cardId);
5773
- if (idx !== -1) {
5774
- sourceCol = col.title;
5775
- card = col.cards[idx];
5776
- sourceColIdx = ci;
5777
- cardIdx = idx;
5778
- break;
5779
- }
5780
- }
5781
- if (!card || sourceColIdx === -1) return false;
5782
- const targetCol = board.columns.find(
5783
- (c) => c.title.toLowerCase() === targetColTitle.toLowerCase()
5784
- );
5785
- if (!targetCol) {
5786
- console.warn(`[kanban-commands] Target column "${targetColTitle}" not found. Available: ${board.columns.map((c) => c.title).join(", ")}`);
5787
- return false;
5788
- }
5789
- if (targetCol.id === board.columns[sourceColIdx].id) return true;
5790
- board.columns[sourceColIdx].cards.splice(cardIdx, 1);
5791
- card.order = targetCol.cards.length;
5792
- card.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
5793
- card.history = [...card.history ?? [], {
5794
- type: "moved",
5795
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
5796
- detail: `"${sourceCol}" \u2192 "${targetCol.title}"`,
5797
- author: "ai"
5798
- }];
5799
- targetCol.cards.push(card);
5800
- return true;
5801
- }
5802
5819
  function addCardToColumn(board, columnTitle, cardTitle, cardContent) {
5803
5820
  const col = board.columns.find((c) => c.title.toLowerCase() === columnTitle.toLowerCase());
5804
5821
  if (!col) return;
@@ -5815,28 +5832,12 @@ function addCardToColumn(board, columnTitle, cardTitle, cardContent) {
5815
5832
  };
5816
5833
  col.cards.push(card);
5817
5834
  }
5818
- function addComment(board, cardId, comment, conversationId) {
5819
- for (const col of board.columns) {
5820
- const card = col.cards.find((c) => c.id === cardId);
5821
- if (card) {
5822
- card.history = [...card.history ?? [], {
5823
- type: "comment",
5824
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
5825
- detail: comment,
5826
- author: "ai",
5827
- ...conversationId ? { conversationId } : {}
5828
- }];
5829
- card.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
5830
- return;
5831
- }
5832
- }
5833
- }
5834
5835
  function formatSize(bytes) {
5835
5836
  if (bytes < 1024) return `${bytes} o`;
5836
5837
  if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} Ko`;
5837
5838
  return `${(bytes / (1024 * 1024)).toFixed(1).replace(".", ",")} Mo`;
5838
5839
  }
5839
- function generateKanbanSystemPrompt(board, cardId) {
5840
+ function generateKanbanSystemPrompt(board, cardId, history) {
5840
5841
  let currentColTitle = "";
5841
5842
  let card = null;
5842
5843
  for (const col of board.columns) {
@@ -5866,7 +5867,8 @@ function generateKanbanSystemPrompt(board, cardId) {
5866
5867
  }
5867
5868
  lines.push("");
5868
5869
  if (card) {
5869
- const comments = (card.history ?? []).filter((e) => e.type === "comment");
5870
+ const events = history ?? card.history ?? [];
5871
+ const comments = events.filter((e) => e.type === "comment");
5870
5872
  if (comments.length > 0) {
5871
5873
  lines.push("### Commentaires existants sur cette carte :");
5872
5874
  lines.push("");
@@ -5881,7 +5883,7 @@ function generateKanbanSystemPrompt(board, cardId) {
5881
5883
  }
5882
5884
  if (card) {
5883
5885
  const files = card.attachments ?? [];
5884
- const commentFiles = (card.history ?? []).flatMap((e) => e.attachments ?? []);
5886
+ const commentFiles = (history ?? card.history ?? []).flatMap((e) => e.attachments ?? []);
5885
5887
  const all = [...files, ...commentFiles];
5886
5888
  if (all.length > 0) {
5887
5889
  lines.push(`### Pi\xE8ces jointes disponibles (${all.length})`);
@@ -6129,7 +6131,7 @@ function tailTranscript(opts) {
6129
6131
 
6130
6132
  // ../server/src/services/ai-runners/claude-pty-runner.ts
6131
6133
  async function getAgentManager() {
6132
- const { agentManager: agentManager2 } = await import("./agent-manager-2P4THUVA.js");
6134
+ const { agentManager: agentManager2 } = await import("./agent-manager-KGITN4AE.js");
6133
6135
  return agentManager2;
6134
6136
  }
6135
6137
  function buildPtyArgs(params, sessionId, opts) {
@@ -6782,7 +6784,7 @@ async function shutdownCodexAppServer() {
6782
6784
  }
6783
6785
  }
6784
6786
  async function getAgentManager2() {
6785
- const { agentManager: agentManager2 } = await import("./agent-manager-2P4THUVA.js");
6787
+ const { agentManager: agentManager2 } = await import("./agent-manager-KGITN4AE.js");
6786
6788
  return agentManager2;
6787
6789
  }
6788
6790
  function parseRuneyaCurlCommand(command) {
@@ -7466,7 +7468,13 @@ async function buildCliSystemContext(conv, jwt) {
7466
7468
  if (conv?.kanbanBoardId) {
7467
7469
  const kanbanBoard = await kanbanStore.get(conv.kanbanBoardId);
7468
7470
  if (kanbanBoard) {
7469
- systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(kanbanBoard, conv.kanbanCardId) : generateKanbanPopulatePrompt(kanbanBoard));
7471
+ systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(
7472
+ kanbanBoard,
7473
+ conv.kanbanCardId,
7474
+ // Le journal ne vient plus avec le tableau : le contexte de l'agent
7475
+ // le demande pour la seule carte qui le concerne.
7476
+ await kanbanStore.cardHistory(kanbanBoard.id, conv.kanbanCardId)
7477
+ ) : generateKanbanPopulatePrompt(kanbanBoard));
7470
7478
  }
7471
7479
  }
7472
7480
  return systemContext;
@@ -7867,7 +7875,13 @@ ${input.prompt}` : input.prompt;
7867
7875
  if (conv.kanbanBoardId) {
7868
7876
  const kanbanBoard = await kanbanStore.get(conv.kanbanBoardId);
7869
7877
  if (kanbanBoard) {
7870
- systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(kanbanBoard, conv.kanbanCardId) : generateKanbanPopulatePrompt(kanbanBoard));
7878
+ systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(
7879
+ kanbanBoard,
7880
+ conv.kanbanCardId,
7881
+ // Le journal ne vient plus avec le tableau : le contexte de l'agent
7882
+ // le demande pour la seule carte qui le concerne.
7883
+ await kanbanStore.cardHistory(kanbanBoard.id, conv.kanbanCardId)
7884
+ ) : generateKanbanPopulatePrompt(kanbanBoard));
7871
7885
  }
7872
7886
  }
7873
7887
  const mcpServerPath = fileURLToPath(new URL("../mcp-server/index.js", import.meta.url));
@@ -7982,7 +7996,13 @@ ${input.prompt}` : input.prompt;
7982
7996
  if (conv.kanbanBoardId) {
7983
7997
  const kanbanBoard = await kanbanStore.get(conv.kanbanBoardId);
7984
7998
  if (kanbanBoard) {
7985
- systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(kanbanBoard, conv.kanbanCardId) : generateKanbanPopulatePrompt(kanbanBoard));
7999
+ systemContext += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(
8000
+ kanbanBoard,
8001
+ conv.kanbanCardId,
8002
+ // Le journal ne vient plus avec le tableau : le contexte de l'agent
8003
+ // le demande pour la seule carte qui le concerne.
8004
+ await kanbanStore.cardHistory(kanbanBoard.id, conv.kanbanCardId)
8005
+ ) : generateKanbanPopulatePrompt(kanbanBoard));
7986
8006
  }
7987
8007
  }
7988
8008
  const resolvedImages = input.imageIds && input.imageIds.length > 0 ? await resolveImagesToBase64(input.imageIds.map((id) => ({ imageId: id, mimeType: "" })), input.conversationId) : [];
@@ -8075,7 +8095,13 @@ ${input.prompt}` : input.prompt;
8075
8095
  if (conv && conv.kanbanBoardId) {
8076
8096
  const kanbanBoard = await kanbanStore.get(conv.kanbanBoardId);
8077
8097
  if (kanbanBoard) {
8078
- system += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(kanbanBoard, conv.kanbanCardId) : generateKanbanPopulatePrompt(kanbanBoard));
8098
+ system += "\n\n" + (conv.kanbanCardId ? generateKanbanSystemPrompt(
8099
+ kanbanBoard,
8100
+ conv.kanbanCardId,
8101
+ // Le journal ne vient plus avec le tableau : le contexte de l'agent
8102
+ // le demande pour la seule carte qui le concerne.
8103
+ await kanbanStore.cardHistory(kanbanBoard.id, conv.kanbanCardId)
8104
+ ) : generateKanbanPopulatePrompt(kanbanBoard));
8079
8105
  }
8080
8106
  }
8081
8107
  const resolvedImages = input.imageIds && input.imageIds.length > 0 ? await resolveImagesToBase64(input.imageIds.map((id) => ({ imageId: id, mimeType: "" })), input.conversationId) : [];
@@ -10769,19 +10795,8 @@ var KanbanQueueService = class extends EventEmitter4 {
10769
10795
  this.running.push(runItem);
10770
10796
  this.emit("changed");
10771
10797
  const eventType = item.scenarioId ? "scenario_started" : "conversation_started";
10772
- for (const col of board.columns) {
10773
- const target = col.cards.find((c) => c.id === item.cardId);
10774
- if (target) {
10775
- target.history = [...target.history ?? [], {
10776
- type: eventType,
10777
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
10778
- detail: conv.id
10779
- }];
10780
- kanbanStore.update({ id: board.id, columns: board.columns }).catch(() => {
10781
- });
10782
- break;
10783
- }
10784
- }
10798
+ kanbanStore.addCardEvent(board.id, item.cardId, eventType, conv.id).catch(() => {
10799
+ });
10785
10800
  if (item.scenarioId) {
10786
10801
  void runScenario(conv.id, item.scenarioId, cardContent, {
10787
10802
  runnerOverride: item.runner,
@@ -10888,7 +10903,9 @@ var kanbanQueueRouter = router({
10888
10903
  });
10889
10904
 
10890
10905
  // ../server/src/trpc/routers/kanban.ts
10891
- import { mkdir as mkdir14, writeFile as writeFile11 } from "fs/promises";
10906
+ import { mkdir as mkdir14, readdir as readdir5, rm as rm2, stat as stat3, writeFile as writeFile11 } from "fs/promises";
10907
+ import { createHash } from "crypto";
10908
+ import { tmpdir } from "os";
10892
10909
  import { join as join16 } from "path";
10893
10910
  import { z as z20 } from "zod";
10894
10911
  import { TRPCError as TRPCError17 } from "@trpc/server";
@@ -10900,7 +10917,7 @@ function summarizeCard(card, boardId, columnTitle) {
10900
10917
  title: card.title,
10901
10918
  markdown: card.markdown ?? "",
10902
10919
  assignees: (card.assignees ?? []).map((a) => a.name),
10903
- commentCount: (card.history ?? []).filter((e) => e.type === "comment").length,
10920
+ commentCount: card.commentCount ?? (card.history ?? []).filter((e) => e.type === "comment").length,
10904
10921
  attachmentCount: (card.attachments ?? []).length,
10905
10922
  // Metadata only — the bytes are fetched on demand by `downloadAttachment`.
10906
10923
  attachments: (card.attachments ?? []).map((f) => ({
@@ -10933,11 +10950,45 @@ function normalize(value) {
10933
10950
  var ATTACHMENT_ID_REGEX = /^[A-Za-z0-9_-]{1,128}$/;
10934
10951
  var MAX_ATTACHMENT_BYTES = 55 * 1024 * 1024;
10935
10952
  function attachmentCacheDir() {
10936
- return join16(env.DATA_DIR, "kanban-attachments");
10953
+ return join16(tmpdir(), "runeya-kanban-attachments");
10954
+ }
10955
+ var ATTACHMENT_CACHE_TTL_MS = 24 * 60 * 60 * 1e3;
10956
+ async function purgeStaleAttachments(dir, ttlMs = ATTACHMENT_CACHE_TTL_MS) {
10957
+ try {
10958
+ const cutoff = Date.now() - ttlMs;
10959
+ for (const name of await readdir5(dir)) {
10960
+ const path = join16(dir, name);
10961
+ const info = await stat3(path).catch(() => null);
10962
+ if (info && info.mtimeMs < cutoff) await rm2(path, { force: true });
10963
+ }
10964
+ } catch {
10965
+ }
10966
+ }
10967
+ function attachmentCacheDirs() {
10968
+ return [attachmentCacheDir(), join16(env.DATA_DIR, "kanban-attachments")];
10969
+ }
10970
+ async function storeAttachment(id, name, body, dirs = attachmentCacheDirs()) {
10971
+ const refusals = [];
10972
+ for (const dir of dirs) {
10973
+ try {
10974
+ await mkdir14(dir, { recursive: true });
10975
+ const path = join16(dir, safeLocalName(id, name));
10976
+ await writeFile11(path, body);
10977
+ void purgeStaleAttachments(dir);
10978
+ return path;
10979
+ } catch (err) {
10980
+ refusals.push(`${dir} (${err instanceof Error ? err.message : String(err)})`);
10981
+ }
10982
+ }
10983
+ throw new TRPCError17({
10984
+ code: "INTERNAL_SERVER_ERROR",
10985
+ message: `Impossible d'\xE9crire la pi\xE8ce jointe sur cette machine. Emplacements essay\xE9s : ${refusals.join(" ; ")}. V\xE9rifiez les droits d'\xE9criture, ou l'espace disque.`
10986
+ });
10937
10987
  }
10938
10988
  function safeLocalName(id, name) {
10989
+ const base = createHash("sha256").update(id).digest("hex").slice(0, 32);
10939
10990
  const ext = /\.([A-Za-z0-9]{1,12})$/.exec(name)?.[1];
10940
- return ext ? `${id}.${ext.toLowerCase()}` : id;
10991
+ return ext ? `${base}.${ext.toLowerCase()}` : base;
10941
10992
  }
10942
10993
  var kanbanRouter = router({
10943
10994
  /**
@@ -11060,10 +11111,7 @@ var kanbanRouter = router({
11060
11111
  const contentType = res.headers.get("content-type") ?? "application/octet-stream";
11061
11112
  const disposition = res.headers.get("content-disposition") ?? "";
11062
11113
  const name = /filename="([^"]*)"/.exec(disposition)?.[1] || id;
11063
- const dir = attachmentCacheDir();
11064
- await mkdir14(dir, { recursive: true });
11065
- const path = join16(dir, safeLocalName(id, name));
11066
- await writeFile11(path, body);
11114
+ const path = await storeAttachment(id, name, body);
11067
11115
  return { path, name, contentType, size: body.length };
11068
11116
  })
11069
11117
  });
@@ -11191,7 +11239,7 @@ var utilityRouter = router({
11191
11239
  // ../server/src/trpc/routers/wiki.ts
11192
11240
  import { z as z23 } from "zod";
11193
11241
  import { TRPCError as TRPCError19 } from "@trpc/server";
11194
- import { readFile as readFile13, readdir as readdir5, stat as stat3, realpath, writeFile as writeFile12, mkdir as mkdir15, rename as rename10, rm as rm2 } from "fs/promises";
11242
+ import { readFile as readFile13, readdir as readdir6, stat as stat4, realpath, writeFile as writeFile12, mkdir as mkdir15, rename as rename10, rm as rm3 } from "fs/promises";
11195
11243
  import { resolve as resolvePath, join as join17, relative, sep as sep3, dirname as dirname3 } from "path";
11196
11244
  var SCOPE_SCHEMA = z23.union([
11197
11245
  z23.literal("global"),
@@ -11254,7 +11302,7 @@ async function walkLocal(root, dir, depth, counter) {
11254
11302
  if (depth > MAX_DEPTH || counter.n >= MAX_FILES) return [];
11255
11303
  let entries;
11256
11304
  try {
11257
- entries = await readdir5(dir, { withFileTypes: true });
11305
+ entries = await readdir6(dir, { withFileTypes: true });
11258
11306
  } catch {
11259
11307
  return [];
11260
11308
  }
@@ -11327,7 +11375,7 @@ var wikiRouter = router({
11327
11375
  return agentManager.agentQuery(target.agentId, "wiki.readRepoMarkdown", { cwd: target.cwd, path: input.path });
11328
11376
  }
11329
11377
  const file = await resolveSafeLocal(target.root, input.path, true);
11330
- const s = await stat3(file);
11378
+ const s = await stat4(file);
11331
11379
  if (!s.isFile()) throw new TRPCError19({ code: "BAD_REQUEST", message: "Pas un fichier" });
11332
11380
  if (s.size > MAX_FILE_BYTES) throw new TRPCError19({ code: "PAYLOAD_TOO_LARGE", message: "Fichier trop volumineux" });
11333
11381
  const content = await readFile13(file, "utf-8");
@@ -11356,7 +11404,7 @@ var wikiRouter = router({
11356
11404
  }
11357
11405
  const file = await resolveSafeLocal(target.root, input.path, false);
11358
11406
  try {
11359
- await stat3(file);
11407
+ await stat4(file);
11360
11408
  throw new TRPCError19({ code: "CONFLICT", message: "Fichier d\xE9j\xE0 existant" });
11361
11409
  } catch (err) {
11362
11410
  if (err instanceof TRPCError19) throw err;
@@ -11382,7 +11430,7 @@ var wikiRouter = router({
11382
11430
  const from = await resolveSafeLocal(target.root, input.fromPath, true);
11383
11431
  const to = await resolveSafeLocal(target.root, input.toPath, false);
11384
11432
  try {
11385
- await stat3(to);
11433
+ await stat4(to);
11386
11434
  throw new TRPCError19({ code: "CONFLICT", message: "La cible existe d\xE9j\xE0" });
11387
11435
  } catch (err) {
11388
11436
  if (err instanceof TRPCError19) throw err;
@@ -11411,7 +11459,7 @@ var wikiRouter = router({
11411
11459
  }
11412
11460
  const fp = await resolveSafeLocal(target.root, input.path, true);
11413
11461
  if (fp === target.root) throw new TRPCError19({ code: "FORBIDDEN", message: "Impossible de supprimer la racine" });
11414
- await rm2(fp, { recursive: true, force: true });
11462
+ await rm3(fp, { recursive: true, force: true });
11415
11463
  return { path: input.path, ok: true };
11416
11464
  })
11417
11465
  });
@@ -11849,7 +11897,7 @@ var cloudSyncBridge = new CloudSyncBridge();
11849
11897
 
11850
11898
  // ../server/src/services/master-password.ts
11851
11899
  import { randomBytes as randomBytes4, createCipheriv, createDecipheriv } from "crypto";
11852
- import { readFile as readFile15, writeFile as writeFile14, chmod as chmod10, stat as stat4, rename as rename12 } from "fs/promises";
11900
+ import { readFile as readFile15, writeFile as writeFile14, chmod as chmod10, stat as stat5, rename as rename12 } from "fs/promises";
11853
11901
  import { join as join19 } from "path";
11854
11902
  import { Entry } from "@napi-rs/keyring";
11855
11903
  import { hashRaw as argon2HashRaw } from "@node-rs/argon2";
@@ -11862,7 +11910,7 @@ var CANARY_PLAINTEXT = "runeya:v1:key-verification";
11862
11910
  var MAX_KEY_FILE_SIZE = 1024;
11863
11911
  var ARGON2_OPTIONS = { memoryCost: 65536, timeCost: 3, parallelism: 4, outputLen: 32 };
11864
11912
  async function readKeyFile(filePath) {
11865
- const s = await stat4(filePath);
11913
+ const s = await stat5(filePath);
11866
11914
  if (s.size > MAX_KEY_FILE_SIZE) throw new Error(`Fichier suspect : ${filePath} (${s.size} octets)`);
11867
11915
  return readFile15(filePath);
11868
11916
  }
@@ -11998,7 +12046,7 @@ async function readVerifyFile(dataDir) {
11998
12046
  }
11999
12047
  async function hasVerifyFile(dataDir) {
12000
12048
  try {
12001
- await stat4(join19(dataDir, VERIFY_FILENAME));
12049
+ await stat5(join19(dataDir, VERIFY_FILENAME));
12002
12050
  return true;
12003
12051
  } catch {
12004
12052
  return false;
@@ -12006,7 +12054,7 @@ async function hasVerifyFile(dataDir) {
12006
12054
  }
12007
12055
  async function hasEncryptedKeyFile(dataDir) {
12008
12056
  try {
12009
- await stat4(join19(dataDir, ENCRYPTED_KEY_FILENAME));
12057
+ await stat5(join19(dataDir, ENCRYPTED_KEY_FILENAME));
12010
12058
  return true;
12011
12059
  } catch {
12012
12060
  return false;
@@ -12139,7 +12187,7 @@ var MigrationEngine = class {
12139
12187
  var migrationEngine = new MigrationEngine();
12140
12188
 
12141
12189
  // ../server/src/services/file-security.ts
12142
- import { chmod as chmod11, stat as stat5 } from "fs/promises";
12190
+ import { chmod as chmod11, stat as stat6 } from "fs/promises";
12143
12191
  import { join as join20 } from "path";
12144
12192
  var SENSITIVE_FILES = [
12145
12193
  "agents.json",
@@ -12154,7 +12202,7 @@ async function ensureFilePermissions() {
12154
12202
  for (const filename of SENSITIVE_FILES) {
12155
12203
  const filepath = join20(env.DATA_DIR, filename);
12156
12204
  try {
12157
- const stats = await stat5(filepath);
12205
+ const stats = await stat6(filepath);
12158
12206
  const mode = stats.mode & 511;
12159
12207
  if (mode !== SECURE_MODE) {
12160
12208
  console.warn("[security] File", filename, "has mode", mode.toString(8) + ", fixing to 600");
@@ -12221,7 +12269,7 @@ import {
12221
12269
  rename as rename13,
12222
12270
  mkdir as mkdir17,
12223
12271
  access as access2,
12224
- readdir as readdir6
12272
+ readdir as readdir7
12225
12273
  } from "fs/promises";
12226
12274
  import { join as join22 } from "path";
12227
12275
  var _require = createRequire(import.meta.url);
@@ -12390,14 +12438,14 @@ async function runLegacyMigration(dataDir) {
12390
12438
  }
12391
12439
  }
12392
12440
  const envsDir = join22(dbsDir, "envs");
12393
- const envFiles = (await readdir6(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12441
+ const envFiles = (await readdir7(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12394
12442
  const legacyEnvs = {};
12395
12443
  for (const file of envFiles) {
12396
12444
  const name = file.replace(".encrypted.json", "");
12397
12445
  legacyEnvs[name] = await readEncrypted(join22(envsDir, file));
12398
12446
  }
12399
12447
  const servicesDir = join22(dbsDir, "services");
12400
- const serviceFiles = (await readdir6(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12448
+ const serviceFiles = (await readdir7(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12401
12449
  const legacyServices = {};
12402
12450
  for (const file of serviceFiles) {
12403
12451
  const name = file.replace(".encrypted.json", "");
@@ -12406,7 +12454,7 @@ async function runLegacyMigration(dataDir) {
12406
12454
  if (data?.label) legacyServices[name] = data;
12407
12455
  }
12408
12456
  const overridesDir = join22(dbsDir, "overrides");
12409
- const overrideFiles = (await readdir6(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12457
+ const overrideFiles = (await readdir7(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12410
12458
  const legacyServiceOverrides = {};
12411
12459
  const legacyEnvOverrides = {};
12412
12460
  for (const file of overrideFiles) {
@@ -12420,7 +12468,7 @@ async function runLegacyMigration(dataDir) {
12420
12468
  }
12421
12469
  }
12422
12470
  const parsersDir = join22(dbsDir, "parsers");
12423
- const parserFiles = (await readdir6(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12471
+ const parserFiles = (await readdir7(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
12424
12472
  const legacyParsers = [];
12425
12473
  for (const file of parserFiles) {
12426
12474
  const data = await readEncrypted(join22(parsersDir, file));
@@ -12800,7 +12848,7 @@ ${p.transform ?? ""}`,
12800
12848
  }
12801
12849
  async function findLegacyKeyInBackup(dataDir) {
12802
12850
  try {
12803
- const entries = await readdir6(dataDir);
12851
+ const entries = await readdir7(dataDir);
12804
12852
  const backupDirs = entries.filter((e) => e.startsWith("backup-")).sort((a, b) => a < b ? -1 : a > b ? 1 : 0).reverse();
12805
12853
  for (const dir of backupDirs) {
12806
12854
  const keyJsonPath = join22(dataDir, dir, "dbs", "encryption-key.json");
@@ -12834,7 +12882,7 @@ async function runOverrideOnlyMigration(dataDir) {
12834
12882
  let overrideFiles = [];
12835
12883
  for (const dir of candidateDirs) {
12836
12884
  try {
12837
- const files = (await readdir6(dir)).filter((f) => f.endsWith(".encrypted.json"));
12885
+ const files = (await readdir7(dir)).filter((f) => f.endsWith(".encrypted.json"));
12838
12886
  if (files.length > 0) {
12839
12887
  overridesDir = dir;
12840
12888
  overrideFiles = files;
@@ -13010,7 +13058,7 @@ async function runOverrideOnlyMigration(dataDir) {
13010
13058
 
13011
13059
  // ../server/src/services/server-state.ts
13012
13060
  import { join as join23 } from "path";
13013
- import { stat as stat6 } from "fs/promises";
13061
+ import { stat as stat7 } from "fs/promises";
13014
13062
  var ENCRYPTED_KEY_FILENAME2 = ".encryption.key.enc";
13015
13063
  var VERIFY_FILENAME2 = ".runeya-verify";
13016
13064
  async function getServerState() {
@@ -13019,17 +13067,17 @@ async function getServerState() {
13019
13067
  let hasVerify = false;
13020
13068
  let hasData = false;
13021
13069
  try {
13022
- await stat6(join23(dataDir, ENCRYPTED_KEY_FILENAME2));
13070
+ await stat7(join23(dataDir, ENCRYPTED_KEY_FILENAME2));
13023
13071
  hasEncFile = true;
13024
13072
  } catch {
13025
13073
  }
13026
13074
  try {
13027
- await stat6(join23(dataDir, VERIFY_FILENAME2));
13075
+ await stat7(join23(dataDir, VERIFY_FILENAME2));
13028
13076
  hasVerify = true;
13029
13077
  } catch {
13030
13078
  }
13031
13079
  try {
13032
- await stat6(join23(dataDir, "projects.json"));
13080
+ await stat7(join23(dataDir, "projects.json"));
13033
13081
  hasData = true;
13034
13082
  } catch {
13035
13083
  }
@@ -14179,4 +14227,4 @@ export {
14179
14227
  createLocalServer,
14180
14228
  pullEnv
14181
14229
  };
14182
- //# sourceMappingURL=src-ZYEDS2TT.js.map
14230
+ //# sourceMappingURL=src-W64XJTN5.js.map