@runeya/runeya 2.0.14 → 2.0.18

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 (237) hide show
  1. package/agent/index.js +259 -20
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-7IDZTNVZ-HVRWIXYW.js +8 -0
  4. package/{chunk-AJW7LDO5.js → chunk-AHOJAT74.js} +9 -3
  5. package/chunk-AHOJAT74.js.map +1 -0
  6. package/{dist-TI3HFRUW.js → dist-CJTJWMCR.js} +321 -92
  7. package/dist-CJTJWMCR.js.map +1 -0
  8. package/index.js +1 -1
  9. package/package.json +1 -1
  10. package/web/assets/{AddressBar.vue-B6BOLYmO.js → AddressBar.vue-BZnGu8vW.js} +1 -1
  11. package/web/assets/{AgentScalarChatInterface.vue-DKSmjtvV.js → AgentScalarChatInterface.vue-QkKS0oIt.js} +1 -1
  12. package/web/assets/{AgentTerminalPage-BZ6jaRAs.js → AgentTerminalPage-CfI3DoEO.js} +1 -1
  13. package/web/assets/AiChatPage-C_j-aspS.js +1 -0
  14. package/web/assets/{AppLayout-B7-y0tBI.css → AppLayout-Cf8sRK63.css} +1 -1
  15. package/web/assets/{AppLayout-DnMCPCO8.js → AppLayout-CgU4s6lb.js} +1 -1
  16. package/web/assets/{AuditPage-CTdEvLE-.js → AuditPage-C42BeKr5.js} +1 -1
  17. package/web/assets/{CodeInput.vue-Sp2dM8hl.js → CodeInput.vue-BGBOdacc.js} +1 -1
  18. package/web/assets/{Collection.vue-CdPjaC9d.js → Collection.vue-Vub9L9if.js} +1 -1
  19. package/web/assets/{CollectionAuthentication.vue-DMPykUah.js → CollectionAuthentication.vue-DMa9nYTH.js} +1 -1
  20. package/web/assets/CollectionCookies.vue-Dr_bErXS.js +1 -0
  21. package/web/assets/{CollectionEnvironment.vue-DKab6xJJ.js → CollectionEnvironment.vue-CcS_RH1F.js} +1 -1
  22. package/web/assets/{CollectionOverview.vue-DlODh8Vk.js → CollectionOverview.vue-Cm3m-3IA.js} +1 -1
  23. package/web/assets/CollectionScripts.vue-DwfCDW_N.js +1 -0
  24. package/web/assets/{CollectionServers.vue-Br-QackN.js → CollectionServers.vue-CDU7RCJI.js} +1 -1
  25. package/web/assets/{CollectionSettings.vue-Cm6NQbDm.js → CollectionSettings.vue-QApKyKpx.js} +1 -1
  26. package/web/assets/CollectionSync.vue-2mc6W9Vb.js +1 -0
  27. package/web/assets/{CommandActionInput.vue-CZ3-rqSL.js → CommandActionInput.vue-CSydiKjM.js} +1 -1
  28. package/web/assets/{Cookies.vue-Duz-a-ga.js → Cookies.vue-2UMujX_l.js} +1 -1
  29. package/web/assets/DashboardPage-CSkUCQHY.css +1 -0
  30. package/web/assets/DashboardPage-Dt5zSm2a.js +1 -0
  31. package/web/assets/{DataTable.vue-Dorr-r7J.js → DataTable.vue-BKb6QQRz.js} +1 -1
  32. package/web/assets/{DataTableCheckbox.vue-CATn-YYp.js → DataTableCheckbox.vue-DC2n-xeZ.js} +1 -1
  33. package/web/assets/{DataTableHeader.vue-C3SUSaR8.js → DataTableHeader.vue-Cbolg5AE.js} +1 -1
  34. package/web/assets/{DataTableInput.vue-_06pwPUA.js → DataTableInput.vue-DoVPLXed.js} +1 -1
  35. package/web/assets/{DeleteSidebarListElement.vue-DoqRnMXx.js → DeleteSidebarListElement.vue-Br-Lvh7k.js} +1 -1
  36. package/web/assets/{EditSidebarListElement.vue-BqTw6Tho.js → EditSidebarListElement.vue-BVJ4wsTf.js} +1 -1
  37. package/web/assets/{EditorIcon-CbpIT0A1.js → EditorIcon-D3F3QHD_.js} +1 -1
  38. package/web/assets/{EmptyState.vue-Bur5L0a4.js → EmptyState.vue-DMCTVrXN.js} +1 -1
  39. package/web/assets/{Environment.vue-C50lH9cP.js → Environment.vue-CEBYjegx.js} +1 -1
  40. package/web/assets/{EnvironmentForm-BDfzXuHx.js → EnvironmentForm-D9pUNi_S.js} +1 -1
  41. package/web/assets/{EnvironmentFormPage-CLylRN6B.js → EnvironmentFormPage-BQwHvpiH.js} +1 -1
  42. package/web/assets/{EnvironmentListPage-DlUT6LnX.js → EnvironmentListPage-BEX6YTjm.js} +1 -1
  43. package/web/assets/{EnvironmentModal.vue-Dz5CArRX.js → EnvironmentModal.vue-Bipjnu_F.js} +1 -1
  44. package/web/assets/{EnvironmentSelector-DHoYUCTH.js → EnvironmentSelector-BsLO-o9W.js} +1 -1
  45. package/web/assets/{Form.vue-BzZCMgN1.js → Form.vue-CwujTuIH.js} +1 -1
  46. package/web/assets/{IconSelector.vue-BCmeqlrs.js → IconSelector.vue-xGa1snoB.js} +1 -1
  47. package/web/assets/KanbanBoardPage-CS0DFaYQ.js +2 -0
  48. package/web/assets/KanbanBoardPage-GHv836NO.css +1 -0
  49. package/web/assets/{KanbanListPage-BLdNz80q.js → KanbanListPage-BlycDa8i.js} +1 -1
  50. package/web/assets/{LaunchProjectPage-DjRA2D3h.js → LaunchProjectPage-CQPXVRR8.js} +1 -1
  51. package/web/assets/{LaunchServicesPage-CKaGcu3z.js → LaunchServicesPage-DIc47d5w.js} +1 -1
  52. package/web/assets/{LogViewer-CtX_6uFM.js → LogViewer-D-j9SP-8.js} +1 -1
  53. package/web/assets/{ProcessControls-BY-_9zo7.js → ProcessControls-D3MHr6vJ.js} +1 -1
  54. package/web/assets/{ProcessDetailPage-Bqis1qMA.js → ProcessDetailPage-DArVdn5O.js} +1 -1
  55. package/web/assets/{ProcessMetrics-DQybvwcA.js → ProcessMetrics-tRbudcTQ.js} +1 -1
  56. package/web/assets/{ProjectDetailPage-FBPonwd5.js → ProjectDetailPage-DQWbqmra.js} +1 -1
  57. package/web/assets/{ProjectListPage-xwlVXN8A.js → ProjectListPage-BArhG94f.js} +1 -1
  58. package/web/assets/{RandomJobTestPage-0pqne-FD.js → RandomJobTestPage-cx0kQXnf.js} +1 -1
  59. package/web/assets/{Request.vue-Db4XEPKt.js → Request.vue-B9DoYtI8.js} +1 -1
  60. package/web/assets/{RequestAuth.vue-CK1A6ySt.js → RequestAuth.vue-CqHxzl6g.js} +1 -1
  61. package/web/assets/{RequestRoot.vue-BLF0GGT5.js → RequestRoot.vue-C28ISMld.js} +1 -1
  62. package/web/assets/{ScalarAsciiArt.vue-BPdUsXWj.js → ScalarAsciiArt.vue-BYd0f-av.js} +1 -1
  63. package/web/assets/{ScalarIconEyeSlash.vue-BBDBShRO.js → ScalarIconEyeSlash.vue-Ct2ktTXq.js} +1 -1
  64. package/web/assets/{ScalarIconTrash.vue-Tpr15aNY.js → ScalarIconTrash.vue-DQO_gQ8s.js} +1 -1
  65. package/web/assets/{ScenarioEditorPage-DNuo-2Gi.js → ScenarioEditorPage-DP06DP64.js} +1 -1
  66. package/web/assets/{ServerVariablesForm.vue-XLQ145gw.js → ServerVariablesForm.vue-D11m7aiX.js} +1 -1
  67. package/web/assets/{ServiceControlsBar-CCTGcA1t.js → ServiceControlsBar-DMq83CtH.js} +1 -1
  68. package/web/assets/{ServiceDetailPage-BELECRic.css → ServiceDetailPage-BngfQIAo.css} +1 -1
  69. package/web/assets/ServiceDetailPage-Cn1MTG_u.js +2 -0
  70. package/web/assets/{ServiceFormPage-F3boRKs-.js → ServiceFormPage-CyIValC5.js} +1 -1
  71. package/web/assets/{Settings.vue-D_1yQu6i.js → Settings.vue-CCeUjK5z.js} +1 -1
  72. package/web/assets/{SettingsPage-CgJN_IL7.css → SettingsPage-BhGoaUHP.css} +1 -1
  73. package/web/assets/SettingsPage-LVnvVA93.js +225 -0
  74. package/web/assets/{SetupKeyPage-BcaSoLjU.js → SetupKeyPage-DOxR0hTs.js} +1 -1
  75. package/web/assets/{SetupPage-mCVAKLtm.js → SetupPage-DTQqk8IW.js} +1 -1
  76. package/web/assets/{Sidebar.vue-De4YlW0c.js → Sidebar.vue-BLpHEfAt.js} +1 -1
  77. package/web/assets/{SidebarButton.vue-CctYiTRp.js → SidebarButton.vue-CNMSjNtm.js} +1 -1
  78. package/web/assets/{SidebarListElement.vue-Cv7jUZIM.js → SidebarListElement.vue-DSsy6NQT.js} +1 -1
  79. package/web/assets/TiptapEditor-DzMKh7Iq.css +1 -0
  80. package/web/assets/TiptapEditor-TuQki585.js +181 -0
  81. package/web/assets/{UnlockPage-BSpzyZnd.js → UnlockPage-D4x8qq_i.js} +1 -1
  82. package/web/assets/{VariablesTable-Dn3IvplD.js → VariablesTable-BP8KuwPI.js} +1 -1
  83. package/web/assets/{ViewLayout.vue-fiagi8zc.js → ViewLayout.vue-Dui_p5J4.js} +1 -1
  84. package/web/assets/{ViewLayoutContent.vue-BehGrsED.js → ViewLayoutContent.vue-CZRQTJFb.js} +1 -1
  85. package/web/assets/{ViewLayoutSection.vue-D4icCgQI.js → ViewLayoutSection.vue-C87DZ2QU.js} +1 -1
  86. package/web/assets/WikiPage-BrgnqOvx.js +1 -0
  87. package/web/assets/WikiView-CMF4PzXp.css +1 -0
  88. package/web/assets/WikiView-Decl55xY.js +1 -0
  89. package/web/assets/{active-entities-CkBGjwu9.js → active-entities-DEkfqGrE.js} +1 -1
  90. package/web/assets/{api-reference-D1EfYtPj.js → api-reference-DP5iGzGP.js} +1 -1
  91. package/web/assets/{autocomplete-CjBHTJWh.js → autocomplete-DcAAfn0y.js} +1 -1
  92. package/web/assets/{card-CsmU2iiY.js → card-DyK4dvjg.js} +1 -1
  93. package/web/assets/{checkbox-B5XZqi1U.js → checkbox-Csn61_gJ.js} +1 -1
  94. package/web/assets/{chip-C4pSomPm.js → chip-DkjFl7f-.js} +1 -1
  95. package/web/assets/{column-CR3Hix4J.js → column-DyznW54C.js} +1 -1
  96. package/web/assets/{core-CtGUajLi.js → core-BXP8Yp-2.js} +1 -1
  97. package/web/assets/{cssMode-nuznbveH.js → cssMode-C9nCeku9.js} +1 -1
  98. package/web/assets/{dist--ZlcDulO.js → dist-DKLcX5kd.js} +1 -1
  99. package/web/assets/{dist-DH_zJr7W.js → dist-DM4_kDGf.js} +1 -1
  100. package/web/assets/{dist-WjGUyWSO.js → dist-DOfPSpzL.js} +1 -1
  101. package/web/assets/{dist-CXkMrHNP.js → dist-zqENM1-W.js} +1 -1
  102. package/web/assets/{divider-CnJlD7qO.js → divider-BJQexqne.js} +1 -1
  103. package/web/assets/{fieldset-D9zY6R6s.js → fieldset-BPm9DkKy.js} +1 -1
  104. package/web/assets/{freemarker2-Bw43sOne.js → freemarker2-BaJGEPal.js} +1 -1
  105. package/web/assets/{handlebars-C8qgW7u6.js → handlebars-BQFn9RdQ.js} +1 -1
  106. package/web/assets/{html-Dy9PKnkr.js → html-Cr5a-EYz.js} +1 -1
  107. package/web/assets/{htmlMode-o8EU0tqo.js → htmlMode-CC9GYLNa.js} +1 -1
  108. package/web/assets/{index-CIcE6DNv.js → index-CV_lCcKm.js} +5 -5
  109. package/web/assets/{javascript-CuRngcUR.js → javascript-mDqsZBlu.js} +1 -1
  110. package/web/assets/{jsonMode-CsUIxwQq.js → jsonMode-B54JAo3i.js} +1 -1
  111. package/web/assets/{keyboard-DhkINir5.js → keyboard-BALpgxzI.js} +1 -1
  112. package/web/assets/{lib-E9M4L9vE.js → lib-CbGVmNqI.js} +1 -1
  113. package/web/assets/{library-BXoSag-V.js → library-DL2YIihE.js} +1 -1
  114. package/web/assets/{liquid-CraMnqaK.js → liquid-DiGHjG_L.js} +1 -1
  115. package/web/assets/{mdx-DPSW5q1A.js → mdx-D6dV5_Hg.js} +1 -1
  116. package/web/assets/{mediaTypes-DDACekzr.js → mediaTypes-97PR9Ryv.js} +1 -1
  117. package/web/assets/{message-DKOCajc6.js → message-CkvY1zpy.js} +1 -1
  118. package/web/assets/{minus-CtlH9Syh.js → minus-Cz1A1nRX.js} +1 -1
  119. package/web/assets/{multiselect-sshNnjnF.js → multiselect-Cg_IvTVL.js} +1 -1
  120. package/web/assets/{password-Dv9g39jb.js → password-DnBPksM5.js} +1 -1
  121. package/web/assets/{plus-CG5Ui-l-.js → plus-DLza1kmt.js} +1 -1
  122. package/web/assets/{pretty-ms-D2BVTeMx.js → pretty-ms-CFs2lDEt.js} +1 -1
  123. package/web/assets/process.store-DOZqELYx.js +1 -0
  124. package/web/assets/{project.store-CVbXSH5d.js → project.store-1ZxiIOdG.js} +1 -1
  125. package/web/assets/{python-BLq8fVkV.js → python-CBOkbLwS.js} +1 -1
  126. package/web/assets/{radiobutton-Bz_ltBfM.js → radiobutton-Bzj_cgKU.js} +1 -1
  127. package/web/assets/{razor-CVrBU-Fk.js → razor-DbhB_XzZ.js} +1 -1
  128. package/web/assets/router-BXlVOZht.js +1 -0
  129. package/web/assets/{settings.store-vM-8jbAF.js → settings.store-Qq6Gc2CT.js} +1 -1
  130. package/web/assets/{store-CTKZgNiD.js → store-Cuguy-ft.js} +1 -1
  131. package/web/assets/{tabpanel-DaZzgdrv.js → tabpanel-BkIDALQ8.js} +1 -1
  132. package/web/assets/trpc-BFwMZelk.js +1 -0
  133. package/web/assets/{tsMode-DO5zEzzD.js → tsMode-B48YcNcc.js} +1 -1
  134. package/web/assets/{typescript-Do-K_3Jj.js → typescript-DNe7mq9Z.js} +1 -1
  135. package/web/assets/{urls-BlVUwVFM.js → urls-Bhy-NKbg.js} +1 -1
  136. package/web/assets/{use-tree-walker-xoEX554A.js → use-tree-walker-DGf54lqT.js} +1 -1
  137. package/web/assets/useAiChatDrawer-C-QgDgQO.js +1 -0
  138. package/web/assets/{useClipboard-B3J6cGK-.js → useClipboard-Ba0ZMSjV.js} +1 -1
  139. package/web/assets/{useLayout-DHrumlpr.js → useLayout-CmsWxVhO.js} +1 -1
  140. package/web/assets/{usePluginManager-BEbBxZnF.js → usePluginManager-DBLyufEz.js} +1 -1
  141. package/web/assets/{useSidebar-BCBwVF2x.js → useSidebar-BWKBo0y4.js} +1 -1
  142. package/web/assets/{vue-router-CuFIegGa.js → vue-router-By6H_4a-.js} +1 -1
  143. package/web/assets/{xml-BolCsFLY.js → xml-zVv61nBe.js} +1 -1
  144. package/web/assets/{yaml-5iZTkCV3.js → yaml-DJ0ncxUH.js} +1 -1
  145. package/web/index.html +1 -1
  146. package/agent-manager-3DHUF2DC-KN6O7WSA.js +0 -8
  147. package/chunk-AJW7LDO5.js.map +0 -1
  148. package/dist-TI3HFRUW.js.map +0 -1
  149. package/web/assets/AiChatPage-C1r42kX7.js +0 -1
  150. package/web/assets/CollectionCookies.vue-DqNgVtd-.js +0 -1
  151. package/web/assets/CollectionScripts.vue-B2gkfo4d.js +0 -1
  152. package/web/assets/CollectionSync.vue-bB7sdahP.js +0 -1
  153. package/web/assets/DashboardPage-gZJ4_s8T.css +0 -1
  154. package/web/assets/DashboardPage-hIc9wP_Q.js +0 -1
  155. package/web/assets/KanbanBoardPage-DoXgFMvo.js +0 -141
  156. package/web/assets/KanbanBoardPage-hqNojI5j.css +0 -1
  157. package/web/assets/ServiceDetailPage-UVg73scN.js +0 -2
  158. package/web/assets/SettingsPage-Cg78lQZF.js +0 -225
  159. package/web/assets/process.store-CutdTiYB.js +0 -1
  160. package/web/assets/router-CuxdGfLF.js +0 -1
  161. package/web/assets/trpc-BIjF6nTt.js +0 -1
  162. package/web/assets/useAiChatDrawer-BJugMTj0.js +0 -1
  163. /package/{agent-manager-3DHUF2DC-KN6O7WSA.js.map → agent-manager-7IDZTNVZ-HVRWIXYW.js.map} +0 -0
  164. /package/web/assets/{_plugin-vue_export-helper-C08BWUE4.js → _plugin-vue_export-helper-BVSTY9ge.js} +0 -0
  165. /package/web/assets/{abap-BMPR0rjj.js → abap-DktqfXDx.js} +0 -0
  166. /package/web/assets/{apex-DYC4uYYf.js → apex-C84w8VGC.js} +0 -0
  167. /package/web/assets/{azcli-GZlxEjpa.js → azcli-Cs5iRzPw.js} +0 -0
  168. /package/web/assets/{base64-VLYHbiMn.js → base64-CG47Jc3Y.js} +0 -0
  169. /package/web/assets/{bat-Cv8OxItG.js → bat-Bxztgnvx.js} +0 -0
  170. /package/web/assets/{bicep-CuCbE6Ue.js → bicep-EmTmx6Fy.js} +0 -0
  171. /package/web/assets/{cameligo-BEPX3585.js → cameligo-DZYk6cOD.js} +0 -0
  172. /package/web/assets/{clojure--6rbXIPY.js → clojure-QYeZgX63.js} +0 -0
  173. /package/web/assets/{coffee-ByvVcDGX.js → coffee-DP64XG_I.js} +0 -0
  174. /package/web/assets/{cpp-CECtPnZp.js → cpp-Dz6-l8vs.js} +0 -0
  175. /package/web/assets/{csharp-DyYyZ8UX.js → csharp-CcVGRY-t.js} +0 -0
  176. /package/web/assets/{csp-B9apvcI9.js → csp-Cqpt0M-R.js} +0 -0
  177. /package/web/assets/{css-CfdBNbB0.js → css-BEjT2o3U.js} +0 -0
  178. /package/web/assets/{cypher-BPqQq4XX.js → cypher-CFsKHT39.js} +0 -0
  179. /package/web/assets/{dart-BLToxiYU.js → dart-Dd8xW03D.js} +0 -0
  180. /package/web/assets/{dist-COg0nRYK.js → dist-BPIMeATj.js} +0 -0
  181. /package/web/assets/{dockerfile-CKo5jN7V.js → dockerfile-MHoTmcM0.js} +0 -0
  182. /package/web/assets/{ecl-qo8pi1Ty.js → ecl-DDOk3_u-.js} +0 -0
  183. /package/web/assets/{elixir-Dv1YAMPJ.js → elixir-BrvvYQkl.js} +0 -0
  184. /package/web/assets/{flow9-BKTKs1nN.js → flow9-Desf9xEz.js} +0 -0
  185. /package/web/assets/{fsharp-BPoxgmtD.js → fsharp-B8Icgpa6.js} +0 -0
  186. /package/web/assets/{go-DgJ-2ryf.js → go-Do5MIzaM.js} +0 -0
  187. /package/web/assets/{graphql-YTK8zpFe.js → graphql-CiG6oX7b.js} +0 -0
  188. /package/web/assets/{hcl-tYOvwaJ3.js → hcl-C-xKM4WW.js} +0 -0
  189. /package/web/assets/{ini-BTZ3lNbM.js → ini-DXIR0OjP.js} +0 -0
  190. /package/web/assets/{java-boRe0CIQ.js → java-Dy8EfEt9.js} +0 -0
  191. /package/web/assets/{julia-K6BtoWYX.js → julia-DkrFX1s_.js} +0 -0
  192. /package/web/assets/{kotlin-CglG00z4.js → kotlin-Dar7GDKm.js} +0 -0
  193. /package/web/assets/{less-DlnIYk4g.js → less-DzP6DgzU.js} +0 -0
  194. /package/web/assets/{lexon-D4aKXJ0J.js → lexon-DptP6qTd.js} +0 -0
  195. /package/web/assets/{lua-DeQCQ0IN.js → lua-CCVwtOWf.js} +0 -0
  196. /package/web/assets/{m3-yCjRJP_i.js → m3-DrEvvio5.js} +0 -0
  197. /package/web/assets/{markdown-C2IT79AR.js → markdown-ruxuCKkk.js} +0 -0
  198. /package/web/assets/{mips-BAnhwv_D.js → mips-BQqMOsEB.js} +0 -0
  199. /package/web/assets/{msdax-D1jHDTih.js → msdax-phO8WA3n.js} +0 -0
  200. /package/web/assets/{mysql-CTJU-jL7.js → mysql-CTdeo58Q.js} +0 -0
  201. /package/web/assets/{objective-c-CwxzUA28.js → objective-c-jhQ0iM6X.js} +0 -0
  202. /package/web/assets/{pascal-DpSQp86i.js → pascal-C8SkzMHp.js} +0 -0
  203. /package/web/assets/{pascaligo-C4F0Gc12.js → pascaligo-ArPaQLGJ.js} +0 -0
  204. /package/web/assets/{perl-87HvGh3u.js → perl-DdJtSHIR.js} +0 -0
  205. /package/web/assets/{pgsql-DUB3YVHd.js → pgsql-DzJ8nWb2.js} +0 -0
  206. /package/web/assets/{php-gpgbnwXh.js → php-CCjtAB9z.js} +0 -0
  207. /package/web/assets/{pla-9VH1h0qA.js → pla-BcEbmw3g.js} +0 -0
  208. /package/web/assets/{postiats-DYNil0RB.js → postiats-Fpcus-uJ.js} +0 -0
  209. /package/web/assets/{powerquery-Cyj_QMWN.js → powerquery-Cu-9g7NG.js} +0 -0
  210. /package/web/assets/{powershell-BxsWzjwy.js → powershell-DO2fUGfn.js} +0 -0
  211. /package/web/assets/{protobuf-CpB35fc2.js → protobuf-DQup7qRj.js} +0 -0
  212. /package/web/assets/{pug-CQ3BHXrf.js → pug-Duim2NdD.js} +0 -0
  213. /package/web/assets/{qsharp-hvdiA16n.js → qsharp-CytI7IVT.js} +0 -0
  214. /package/web/assets/{r-BcpSD-1e.js → r-DZINbLk_.js} +0 -0
  215. /package/web/assets/{redis-B2JGUU7L.js → redis-Bf0SVuM0.js} +0 -0
  216. /package/web/assets/{redshift-DtV7K8A1.js → redshift-oHIhn4rc.js} +0 -0
  217. /package/web/assets/{restructuredtext-avYcqBCA.js → restructuredtext-B3n-oeH1.js} +0 -0
  218. /package/web/assets/{ruby-B75_Tp8C.js → ruby-DXTCv0Dq.js} +0 -0
  219. /package/web/assets/{rust-CHon-ZXH.js → rust-BM9bjpGj.js} +0 -0
  220. /package/web/assets/{sb-iehvyQKY.js → sb-BU8bPS70.js} +0 -0
  221. /package/web/assets/{scala-LBw1ennX.js → scala-BP9uGS4X.js} +0 -0
  222. /package/web/assets/{scheme-BRK_sKgt.js → scheme-rmkEHrlu.js} +0 -0
  223. /package/web/assets/{scss-CzbUsG5V.js → scss-BtCDKYlG.js} +0 -0
  224. /package/web/assets/{shell-DdtWj1FH.js → shell-CG1BTV1P.js} +0 -0
  225. /package/web/assets/{solidity-CBYPsj6K.js → solidity-DAYsr878.js} +0 -0
  226. /package/web/assets/{sophia-BAmZLhFu.js → sophia-DLSOk_-J.js} +0 -0
  227. /package/web/assets/{sparql-DzxQz_25.js → sparql-C_sea8Qf.js} +0 -0
  228. /package/web/assets/{sql-CtZa8xg5.js → sql-zI2PRpPJ.js} +0 -0
  229. /package/web/assets/{st-3yAXYt2f.js → st-VM0k3m2K.js} +0 -0
  230. /package/web/assets/{swift-nwo4k0Qx.js → swift-DAxKPUqq.js} +0 -0
  231. /package/web/assets/{systemverilog-38mUSYaO.js → systemverilog-D3gk_LvQ.js} +0 -0
  232. /package/web/assets/{tcl-DfkL3MZ2.js → tcl-YQSEIPQI.js} +0 -0
  233. /package/web/assets/{twig-C2_DTvv-.js → twig-Bt5uw3P4.js} +0 -0
  234. /package/web/assets/{typespec-Dn7A_7aO.js → typespec-CF_qDuWb.js} +0 -0
  235. /package/web/assets/{vb-ByZEqbuQ.js → vb-DERgblZJ.js} +0 -0
  236. /package/web/assets/{w3c-keyname-CXRaQfIQ.js → w3c-keyname-B0Po4pAC.js} +0 -0
  237. /package/web/assets/{wgsl-BqCLRRs9.js → wgsl-BrfJ-tM_.js} +0 -0
@@ -34,7 +34,7 @@ import {
34
34
  nativeParsers,
35
35
  serviceStore,
36
36
  traefikManager
37
- } from "./chunk-AJW7LDO5.js";
37
+ } from "./chunk-AHOJAT74.js";
38
38
  import {
39
39
  generateKanbanPopulatePrompt,
40
40
  generateKanbanSystemPrompt,
@@ -177,34 +177,38 @@ import { EventEmitter as EventEmitter3 } from "events";
177
177
  import { z as z20 } from "zod";
178
178
  import { TRPCError as TRPCError17 } from "@trpc/server";
179
179
  import { z as z21 } from "zod";
180
- import { chmod as chmod8, stat as stat3 } from "fs/promises";
181
- import { join as join14 } from "path";
182
- import { writeFile as writeFile10 } from "fs/promises";
180
+ import { z as z22 } from "zod";
181
+ import { TRPCError as TRPCError18 } from "@trpc/server";
182
+ import { readFile as readFile12, readdir as readdir4, stat as stat3, realpath, writeFile as writeFile10, mkdir as mkdir13, rename as rename9, rm as rm2 } from "fs/promises";
183
+ import { resolve as resolvePath, join as join14, relative, sep as sep3, dirname as dirname3 } from "path";
184
+ import { chmod as chmod8, stat as stat4 } from "fs/promises";
183
185
  import { join as join15 } from "path";
186
+ import { writeFile as writeFile11 } from "fs/promises";
187
+ import { join as join16 } from "path";
184
188
  import { createRequire } from "module";
185
189
  import { randomBytes as randomBytes3, createCipheriv, createDecipheriv } from "crypto";
186
190
  import { randomUUID as randomUUID10 } from "crypto";
187
191
  import {
188
- readFile as readFile12,
189
- writeFile as writeFile11,
190
- rename as rename9,
191
- mkdir as mkdir13,
192
+ readFile as readFile13,
193
+ writeFile as writeFile12,
194
+ rename as rename10,
195
+ mkdir as mkdir14,
192
196
  access as access2,
193
- readdir as readdir4
197
+ readdir as readdir5
194
198
  } from "fs/promises";
195
- import { join as join16 } from "path";
196
- import { randomBytes as randomBytes4, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
197
- import { readFile as readFile13, writeFile as writeFile12, chmod as chmod9, stat as stat4, rename as rename10 } from "fs/promises";
198
199
  import { join as join17 } from "path";
200
+ import { randomBytes as randomBytes4, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
201
+ import { readFile as readFile14, writeFile as writeFile13, chmod as chmod9, stat as stat5, rename as rename11 } from "fs/promises";
202
+ import { join as join18 } from "path";
199
203
  import { Entry } from "@napi-rs/keyring";
200
204
  import { hashRaw as argon2HashRaw } from "@node-rs/argon2";
201
- import { join as join18 } from "path";
202
- import { stat as stat5 } from "fs/promises";
205
+ import { join as join19 } from "path";
206
+ import { stat as stat6 } from "fs/promises";
203
207
  import rateLimit from "express-rate-limit";
204
208
  import { existsSync as existsSync2, createReadStream } from "fs";
205
- import { mkdir as mkdir14 } from "fs/promises";
209
+ import { mkdir as mkdir15 } from "fs/promises";
206
210
  import multer from "multer";
207
- import { resolve as resolvePath } from "path";
211
+ import { resolve as resolvePath2 } from "path";
208
212
  import dotenv from "dotenv";
209
213
  var jwtSecret = null;
210
214
  var jwtSecretGeneratedAt = 0;
@@ -408,7 +412,7 @@ function requireEnvAction(ctx, environmentId, action, serviceId) {
408
412
  });
409
413
  }
410
414
  var startedAt = Date.now();
411
- var appVersion = process.env["RUNEYA_VERSION"] ?? (true ? "2.0.14" : "dev");
415
+ var appVersion = process.env["RUNEYA_VERSION"] ?? (true ? "2.0.16" : "dev");
412
416
  var healthRouter = router({
413
417
  check: publicProcedure.meta({ openapi: { method: "GET", path: "/health", tags: ["health"], summary: "Health check" } }).output(z.object({ status: z.literal("ok"), uptime: z.number(), version: z.string() })).query(() => {
414
418
  return {
@@ -1332,6 +1336,7 @@ var serviceRouter = router({
1332
1336
  ports: z3.array(z3.number().int().min(1).max(65535)).max(20).optional(),
1333
1337
  groups: z3.array(z3.string().max(200)).max(20).optional(),
1334
1338
  description: z3.string().max(2e3).optional(),
1339
+ docsPath: z3.string().max(4096).optional(),
1335
1340
  url: z3.string().max(2048).optional(),
1336
1341
  localUrls: z3.array(z3.object({
1337
1342
  url: z3.string().max(253),
@@ -1382,6 +1387,7 @@ var serviceRouter = router({
1382
1387
  ports: z3.array(z3.number().int().min(1).max(65535)).max(20).optional(),
1383
1388
  groups: z3.array(z3.string().max(200)).max(20).optional(),
1384
1389
  description: z3.string().max(2e3).optional(),
1390
+ docsPath: z3.string().max(4096).optional(),
1385
1391
  url: z3.string().max(2048).optional(),
1386
1392
  localUrls: z3.array(z3.object({
1387
1393
  url: z3.string().max(253),
@@ -2230,7 +2236,7 @@ var settingsRouter = router({
2230
2236
  /**
2231
2237
  * Update settings (mode, cloudUrl)
2232
2238
  */
2233
- update: protectedProcedure.input(SettingsSchema.pick({ mode: true, cloudUrl: true }).partial()).mutation(async ({ input }) => {
2239
+ update: protectedProcedure.input(SettingsSchema.pick({ mode: true, cloudUrl: true, globalDocsPath: true }).partial()).mutation(async ({ input }) => {
2234
2240
  const current = await settingsManager.getSettings();
2235
2241
  const updated = {
2236
2242
  ...current,
@@ -5070,7 +5076,7 @@ function tailTranscript(opts) {
5070
5076
  };
5071
5077
  }
5072
5078
  async function getAgentManager() {
5073
- const { agentManager: agentManager2 } = await import("./agent-manager-3DHUF2DC-KN6O7WSA.js");
5079
+ const { agentManager: agentManager2 } = await import("./agent-manager-7IDZTNVZ-HVRWIXYW.js");
5074
5080
  return agentManager2;
5075
5081
  }
5076
5082
  function buildPtyArgs(params, sessionId, opts) {
@@ -5243,7 +5249,7 @@ async function runClaudeViaPty(params) {
5243
5249
  });
5244
5250
  }
5245
5251
  async function getAgentManager2() {
5246
- const { agentManager: agentManager2 } = await import("./agent-manager-3DHUF2DC-KN6O7WSA.js");
5252
+ const { agentManager: agentManager2 } = await import("./agent-manager-7IDZTNVZ-HVRWIXYW.js");
5247
5253
  return agentManager2;
5248
5254
  }
5249
5255
  function createClaudeStreamState() {
@@ -5816,7 +5822,7 @@ async function shutdownCodexAppServer() {
5816
5822
  }
5817
5823
  }
5818
5824
  async function getAgentManager3() {
5819
- const { agentManager: agentManager2 } = await import("./agent-manager-3DHUF2DC-KN6O7WSA.js");
5825
+ const { agentManager: agentManager2 } = await import("./agent-manager-7IDZTNVZ-HVRWIXYW.js");
5820
5826
  return agentManager2;
5821
5827
  }
5822
5828
  function parseRuneyaCurlCommand(command) {
@@ -10020,6 +10026,228 @@ var utilityRouter = router({
10020
10026
  return { waited: input.ms };
10021
10027
  })
10022
10028
  });
10029
+ var SCOPE_SCHEMA = z22.union([
10030
+ z22.literal("global"),
10031
+ z22.string().regex(/^service:[A-Za-z0-9_-]{1,128}$/, "Invalid service scope")
10032
+ ]);
10033
+ var REL_PATH_SCHEMA = z22.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
10034
+ message: "Path must be a relative path without traversal"
10035
+ });
10036
+ var MAX_FILES = 500;
10037
+ var MAX_DEPTH = 8;
10038
+ var MAX_FILE_BYTES = 2e6;
10039
+ var IGNORED_DIRS = /* @__PURE__ */ new Set([
10040
+ "node_modules",
10041
+ ".git",
10042
+ "dist",
10043
+ "build",
10044
+ ".next",
10045
+ ".turbo",
10046
+ ".cache",
10047
+ "coverage",
10048
+ ".yarn",
10049
+ ".pnpm-store",
10050
+ "target",
10051
+ "out"
10052
+ ]);
10053
+ var DocsEntrySchema = z22.lazy(() => z22.union([
10054
+ z22.object({ type: z22.literal("file"), name: z22.string(), path: z22.string() }),
10055
+ z22.object({ type: z22.literal("dir"), name: z22.string(), path: z22.string(), children: z22.array(DocsEntrySchema) })
10056
+ ]));
10057
+ async function resolveScope(scope) {
10058
+ if (scope === "global") {
10059
+ const settings = await settingsManager.getSettings();
10060
+ const sub = (settings.globalDocsPath?.trim() || "wiki").replace(/^[\\/]+|[\\/]+$/g, "");
10061
+ if (sub.includes("..") || sub.includes("\0")) {
10062
+ throw new TRPCError18({ code: "BAD_REQUEST", message: "Sous-chemin invalide" });
10063
+ }
10064
+ const dataDirAbs = resolvePath(env.DATA_DIR);
10065
+ await mkdir13(dataDirAbs, { recursive: true });
10066
+ const base = dirname3(await realpath(dataDirAbs));
10067
+ const target = resolvePath(base, sub);
10068
+ if (target !== base && !(target + sep3).startsWith(base + sep3)) {
10069
+ throw new TRPCError18({ code: "FORBIDDEN", message: "Hors du dossier de donn\xE9es du serveur" });
10070
+ }
10071
+ await mkdir13(target, { recursive: true });
10072
+ const root = await realpath(target);
10073
+ if (root !== base && !(root + sep3).startsWith(base + sep3)) {
10074
+ throw new TRPCError18({ code: "FORBIDDEN", message: "Le dossier wiki r\xE9sout hors du dossier de donn\xE9es" });
10075
+ }
10076
+ return { mode: "local", root };
10077
+ }
10078
+ const serviceId = scope.slice("service:".length);
10079
+ const service = await serviceStore.get(serviceId);
10080
+ if (!service) throw new TRPCError18({ code: "NOT_FOUND", message: "Service introuvable" });
10081
+ const agentId = await resolveEffectiveAgentId(service);
10082
+ if (!agentId) throw new TRPCError18({ code: "BAD_REQUEST", message: "Aucun agent configur\xE9 pour ce service" });
10083
+ const cwd = (service.docsPath?.trim() || service.cwd || ".").toString();
10084
+ return { mode: "agent", agentId, cwd };
10085
+ }
10086
+ async function walkLocal(root, dir, depth, counter) {
10087
+ if (depth > MAX_DEPTH || counter.n >= MAX_FILES) return [];
10088
+ let entries;
10089
+ try {
10090
+ entries = await readdir4(dir, { withFileTypes: true });
10091
+ } catch {
10092
+ return [];
10093
+ }
10094
+ const out = [];
10095
+ for (const e of entries) {
10096
+ if (counter.n >= MAX_FILES) break;
10097
+ if (e.name.startsWith(".") && e.name !== ".") continue;
10098
+ const abs = join14(dir, e.name);
10099
+ const rel = relative(root, abs).split(sep3).join("/");
10100
+ if (e.isDirectory()) {
10101
+ if (IGNORED_DIRS.has(e.name)) continue;
10102
+ const children = await walkLocal(root, abs, depth + 1, counter);
10103
+ out.push({ type: "dir", name: e.name, path: rel, children });
10104
+ } else if (e.isFile() && /\.(md|markdown)$/i.test(e.name)) {
10105
+ counter.n += 1;
10106
+ out.push({ type: "file", name: e.name, path: rel });
10107
+ }
10108
+ }
10109
+ out.sort((a, b) => {
10110
+ if (a.type !== b.type) return a.type === "dir" ? -1 : 1;
10111
+ return a.name.localeCompare(b.name);
10112
+ });
10113
+ return out;
10114
+ }
10115
+ async function resolveSafeLocal(root, relPath, requireExist) {
10116
+ if (relPath.includes("..") || relPath.startsWith("/")) {
10117
+ throw new TRPCError18({ code: "BAD_REQUEST", message: "Chemin invalide" });
10118
+ }
10119
+ const target = resolvePath(root, relPath);
10120
+ if (requireExist) {
10121
+ let real;
10122
+ try {
10123
+ real = await realpath(target);
10124
+ } catch {
10125
+ throw new TRPCError18({ code: "NOT_FOUND", message: "Chemin introuvable" });
10126
+ }
10127
+ if (real !== root && !(real + sep3).startsWith(root + sep3)) {
10128
+ throw new TRPCError18({ code: "FORBIDDEN", message: "Hors du dossier autoris\xE9" });
10129
+ }
10130
+ return real;
10131
+ }
10132
+ const parent = dirname3(target);
10133
+ let realParent;
10134
+ try {
10135
+ realParent = await realpath(parent);
10136
+ } catch {
10137
+ realParent = parent;
10138
+ }
10139
+ if (realParent !== root && !(realParent + sep3).startsWith(root + sep3)) {
10140
+ throw new TRPCError18({ code: "FORBIDDEN", message: "Hors du dossier autoris\xE9" });
10141
+ }
10142
+ return resolvePath(realParent, target.slice(parent.length).replace(/^[\\/]+/, ""));
10143
+ }
10144
+ var wikiRouter = router({
10145
+ list: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA })).output(z22.object({ root: z22.string(), entries: z22.array(DocsEntrySchema), truncated: z22.boolean() })).query(async ({ input }) => {
10146
+ const target = await resolveScope(input.scope);
10147
+ if (target.mode === "agent") {
10148
+ return agentManager.agentQuery(target.agentId, "wiki.listRepoMarkdown", { cwd: target.cwd });
10149
+ }
10150
+ const counter = { n: 0 };
10151
+ const entries = await walkLocal(target.root, target.root, 0, counter);
10152
+ return { root: target.root, entries, truncated: counter.n >= MAX_FILES };
10153
+ }),
10154
+ read: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, path: REL_PATH_SCHEMA })).output(z22.object({ path: z22.string(), content: z22.string() })).query(async ({ input }) => {
10155
+ if (!/\.(md|markdown)$/i.test(input.path)) {
10156
+ throw new TRPCError18({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
10157
+ }
10158
+ const target = await resolveScope(input.scope);
10159
+ if (target.mode === "agent") {
10160
+ return agentManager.agentQuery(target.agentId, "wiki.readRepoMarkdown", { cwd: target.cwd, path: input.path });
10161
+ }
10162
+ const file = await resolveSafeLocal(target.root, input.path, true);
10163
+ const s = await stat3(file);
10164
+ if (!s.isFile()) throw new TRPCError18({ code: "BAD_REQUEST", message: "Pas un fichier" });
10165
+ if (s.size > MAX_FILE_BYTES) throw new TRPCError18({ code: "PAYLOAD_TOO_LARGE", message: "Fichier trop volumineux" });
10166
+ const content = await readFile12(file, "utf-8");
10167
+ return { path: input.path, content };
10168
+ }),
10169
+ write: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, path: REL_PATH_SCHEMA, content: z22.string().max(5e6) })).mutation(async ({ input }) => {
10170
+ if (!/\.(md|markdown)$/i.test(input.path)) {
10171
+ throw new TRPCError18({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
10172
+ }
10173
+ const target = await resolveScope(input.scope);
10174
+ if (target.mode === "agent") {
10175
+ return agentManager.agentMutation(target.agentId, "wiki.writeMarkdown", { cwd: target.cwd, path: input.path, content: input.content });
10176
+ }
10177
+ const file = await resolveSafeLocal(target.root, input.path, false);
10178
+ await mkdir13(dirname3(file), { recursive: true });
10179
+ await writeFile10(file, input.content, "utf-8");
10180
+ return { path: input.path, ok: true };
10181
+ }),
10182
+ createFile: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
10183
+ if (!/\.(md|markdown)$/i.test(input.path)) {
10184
+ throw new TRPCError18({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
10185
+ }
10186
+ const target = await resolveScope(input.scope);
10187
+ if (target.mode === "agent") {
10188
+ return agentManager.agentMutation(target.agentId, "wiki.createFile", { cwd: target.cwd, path: input.path });
10189
+ }
10190
+ const file = await resolveSafeLocal(target.root, input.path, false);
10191
+ try {
10192
+ await stat3(file);
10193
+ throw new TRPCError18({ code: "CONFLICT", message: "Fichier d\xE9j\xE0 existant" });
10194
+ } catch (err) {
10195
+ if (err instanceof TRPCError18) throw err;
10196
+ }
10197
+ await mkdir13(dirname3(file), { recursive: true });
10198
+ await writeFile10(file, "", "utf-8");
10199
+ return { path: input.path, ok: true };
10200
+ }),
10201
+ createDir: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
10202
+ const target = await resolveScope(input.scope);
10203
+ if (target.mode === "agent") {
10204
+ return agentManager.agentMutation(target.agentId, "wiki.createDir", { cwd: target.cwd, path: input.path });
10205
+ }
10206
+ const dir = await resolveSafeLocal(target.root, input.path, false);
10207
+ await mkdir13(dir, { recursive: true });
10208
+ return { path: input.path, ok: true };
10209
+ }),
10210
+ rename: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, fromPath: REL_PATH_SCHEMA, toPath: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
10211
+ const target = await resolveScope(input.scope);
10212
+ if (target.mode === "agent") {
10213
+ return agentManager.agentMutation(target.agentId, "wiki.renamePath", { cwd: target.cwd, fromPath: input.fromPath, toPath: input.toPath });
10214
+ }
10215
+ const from = await resolveSafeLocal(target.root, input.fromPath, true);
10216
+ const to = await resolveSafeLocal(target.root, input.toPath, false);
10217
+ try {
10218
+ await stat3(to);
10219
+ throw new TRPCError18({ code: "CONFLICT", message: "La cible existe d\xE9j\xE0" });
10220
+ } catch (err) {
10221
+ if (err instanceof TRPCError18) throw err;
10222
+ }
10223
+ await mkdir13(dirname3(to), { recursive: true });
10224
+ await rename9(from, to);
10225
+ return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
10226
+ }),
10227
+ ensureRoot: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA })).mutation(async ({ input }) => {
10228
+ if (input.scope === "global") {
10229
+ await resolveScope("global");
10230
+ return { ok: true };
10231
+ }
10232
+ const serviceId = input.scope.slice("service:".length);
10233
+ const service = await serviceStore.get(serviceId);
10234
+ if (!service) throw new TRPCError18({ code: "NOT_FOUND", message: "Service introuvable" });
10235
+ const agentId = await resolveEffectiveAgentId(service);
10236
+ if (!agentId) throw new TRPCError18({ code: "BAD_REQUEST", message: "Aucun agent configur\xE9" });
10237
+ const cwd = (service.docsPath?.trim() || service.cwd || ".").toString();
10238
+ return agentManager.agentMutation(agentId, "wiki.ensureRoot", { cwd });
10239
+ }),
10240
+ delete: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
10241
+ const target = await resolveScope(input.scope);
10242
+ if (target.mode === "agent") {
10243
+ return agentManager.agentMutation(target.agentId, "wiki.deletePath", { cwd: target.cwd, path: input.path });
10244
+ }
10245
+ const fp = await resolveSafeLocal(target.root, input.path, true);
10246
+ if (fp === target.root) throw new TRPCError18({ code: "FORBIDDEN", message: "Impossible de supprimer la racine" });
10247
+ await rm2(fp, { recursive: true, force: true });
10248
+ return { path: input.path, ok: true };
10249
+ })
10250
+ });
10023
10251
  var appRouter = router({
10024
10252
  health: healthRouter,
10025
10253
  project: projectRouter,
@@ -10039,7 +10267,8 @@ var appRouter = router({
10039
10267
  kanban: kanbanRouter,
10040
10268
  kanbanQueue: kanbanQueueRouter,
10041
10269
  terminal: terminalRouter,
10042
- utility: utilityRouter
10270
+ utility: utilityRouter,
10271
+ wiki: wikiRouter
10043
10272
  });
10044
10273
  function errorHandler(err, _req, res, _next) {
10045
10274
  console.error("[server] Unhandled error:", err);
@@ -10079,9 +10308,9 @@ var SENSITIVE_FILES = [
10079
10308
  var SECURE_MODE = 384;
10080
10309
  async function ensureFilePermissions() {
10081
10310
  for (const filename of SENSITIVE_FILES) {
10082
- const filepath = join14(env.DATA_DIR, filename);
10311
+ const filepath = join15(env.DATA_DIR, filename);
10083
10312
  try {
10084
- const stats = await stat3(filepath);
10313
+ const stats = await stat4(filepath);
10085
10314
  const mode = stats.mode & 511;
10086
10315
  if (mode !== SECURE_MODE) {
10087
10316
  console.warn("[security] File", filename, "has mode", mode.toString(8) + ", fixing to 600");
@@ -10127,8 +10356,8 @@ conversations.private.json
10127
10356
  *.log.*
10128
10357
  `;
10129
10358
  async function ensureDataGitignore(dataDir) {
10130
- const gitignorePath = join15(dataDir, ".gitignore");
10131
- await writeFile10(gitignorePath, GITIGNORE_CONTENT, "utf-8");
10359
+ const gitignorePath = join16(dataDir, ".gitignore");
10360
+ await writeFile11(gitignorePath, GITIGNORE_CONTENT, "utf-8");
10132
10361
  }
10133
10362
  var _require = createRequire(import.meta.url);
10134
10363
  var PARSER_ID_MAP = {
@@ -10236,7 +10465,7 @@ async function getSodium() {
10236
10465
  return _sodium;
10237
10466
  }
10238
10467
  async function decryptLegacyFile(filePath, key, sodium) {
10239
- const raw = (await readFile12(filePath, "utf-8")).trim();
10468
+ const raw = (await readFile13(filePath, "utf-8")).trim();
10240
10469
  if (!raw || raw === "[]" || raw === "{}") {
10241
10470
  try {
10242
10471
  return JSON.parse(raw);
@@ -10256,14 +10485,14 @@ async function decryptLegacyFile(filePath, key, sodium) {
10256
10485
  }
10257
10486
  async function atomicWrite(path, data) {
10258
10487
  const tmp = path + ".tmp";
10259
- await writeFile11(tmp, JSON.stringify(data, null, 2), "utf-8");
10260
- await rename9(tmp, path);
10488
+ await writeFile12(tmp, JSON.stringify(data, null, 2), "utf-8");
10489
+ await rename10(tmp, path);
10261
10490
  }
10262
10491
  async function runLegacyMigration(dataDir) {
10263
10492
  const { resolve: resolve5 } = await import("path");
10264
10493
  const abCwd = resolve5(process.cwd());
10265
- const legacyRoot = join16(abCwd, env.DATA_DIR);
10266
- const legacyKeyPath = join16(legacyRoot, "dbs", "encryption-key.json");
10494
+ const legacyRoot = join17(abCwd, env.DATA_DIR);
10495
+ const legacyKeyPath = join17(legacyRoot, "dbs", "encryption-key.json");
10267
10496
  try {
10268
10497
  await access2(legacyKeyPath);
10269
10498
  } catch {
@@ -10271,20 +10500,20 @@ async function runLegacyMigration(dataDir) {
10271
10500
  }
10272
10501
  console.log("[legacy-migration] Legacy Runeya data detected, starting migration\u2026");
10273
10502
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").substring(0, 19);
10274
- const legacyTmp = join16(abCwd, ".runeya-tmp");
10275
- await rename9(legacyRoot, legacyTmp);
10276
- await mkdir13(dataDir, { recursive: true });
10277
- const legacyOld = join16(dataDir, `backup-${timestamp}`);
10278
- await rename9(legacyTmp, legacyOld);
10503
+ const legacyTmp = join17(abCwd, ".runeya-tmp");
10504
+ await rename10(legacyRoot, legacyTmp);
10505
+ await mkdir14(dataDir, { recursive: true });
10506
+ const legacyOld = join17(dataDir, `backup-${timestamp}`);
10507
+ await rename10(legacyTmp, legacyOld);
10279
10508
  console.log(`[legacy-migration] Legacy data backed up to ${legacyOld}`);
10280
- const keyJson = JSON.parse(await readFile12(join16(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
10509
+ const keyJson = JSON.parse(await readFile13(join17(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
10281
10510
  const sodium = await getSodium();
10282
10511
  const sodiumKey = sodium.from_base64(keyJson.encryptionKey);
10283
10512
  const keyBuffer = Buffer.from(sodiumKey);
10284
10513
  const runyeaKeyHex = keyBuffer.toString("hex");
10285
10514
  await setEncryptionKey(runyeaKeyHex);
10286
10515
  console.log("[legacy-migration] Encryption key loaded in memory (temporary)");
10287
- const dbsDir = join16(legacyOld, "dbs");
10516
+ const dbsDir = join17(legacyOld, "dbs");
10288
10517
  async function readEncrypted(filePath) {
10289
10518
  try {
10290
10519
  return await decryptLegacyFile(filePath, sodiumKey, sodium);
@@ -10293,29 +10522,29 @@ async function runLegacyMigration(dataDir) {
10293
10522
  return null;
10294
10523
  }
10295
10524
  }
10296
- const envsDir = join16(dbsDir, "envs");
10297
- const envFiles = (await readdir4(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10525
+ const envsDir = join17(dbsDir, "envs");
10526
+ const envFiles = (await readdir5(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10298
10527
  const legacyEnvs = {};
10299
10528
  for (const file of envFiles) {
10300
10529
  const name = file.replace(".encrypted.json", "");
10301
- legacyEnvs[name] = await readEncrypted(join16(envsDir, file));
10530
+ legacyEnvs[name] = await readEncrypted(join17(envsDir, file));
10302
10531
  }
10303
- const servicesDir = join16(dbsDir, "services");
10304
- const serviceFiles = (await readdir4(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10532
+ const servicesDir = join17(dbsDir, "services");
10533
+ const serviceFiles = (await readdir5(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10305
10534
  const legacyServices = {};
10306
10535
  for (const file of serviceFiles) {
10307
10536
  const name = file.replace(".encrypted.json", "");
10308
10537
  if (!name) continue;
10309
- const data = await readEncrypted(join16(servicesDir, file));
10538
+ const data = await readEncrypted(join17(servicesDir, file));
10310
10539
  if (data?.label) legacyServices[name] = data;
10311
10540
  }
10312
- const overridesDir = join16(dbsDir, "overrides");
10313
- const overrideFiles = (await readdir4(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10541
+ const overridesDir = join17(dbsDir, "overrides");
10542
+ const overrideFiles = (await readdir5(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10314
10543
  const legacyServiceOverrides = {};
10315
10544
  const legacyEnvOverrides = {};
10316
10545
  for (const file of overrideFiles) {
10317
10546
  const baseName = file.replace(".encrypted.json", "");
10318
- const data = await readEncrypted(join16(overridesDir, file));
10547
+ const data = await readEncrypted(join17(overridesDir, file));
10319
10548
  if (!data) continue;
10320
10549
  if (baseName.endsWith("-envs")) {
10321
10550
  legacyServiceOverrides[baseName.slice(0, -5)] = data;
@@ -10323,11 +10552,11 @@ async function runLegacyMigration(dataDir) {
10323
10552
  legacyEnvOverrides[baseName.slice(0, -12)] = data;
10324
10553
  }
10325
10554
  }
10326
- const parsersDir = join16(dbsDir, "parsers");
10327
- const parserFiles = (await readdir4(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10555
+ const parsersDir = join17(dbsDir, "parsers");
10556
+ const parserFiles = (await readdir5(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
10328
10557
  const legacyParsers = [];
10329
10558
  for (const file of parserFiles) {
10330
- const data = await readEncrypted(join16(parsersDir, file));
10559
+ const data = await readEncrypted(join17(parsersDir, file));
10331
10560
  if (data?.id) legacyParsers.push(data);
10332
10561
  }
10333
10562
  const projectMonoId = randomUUID10();
@@ -10668,7 +10897,7 @@ async function runLegacyMigration(dataDir) {
10668
10897
  }
10669
10898
  let existingSettings = {};
10670
10899
  try {
10671
- existingSettings = JSON.parse(await readFile12(join16(dataDir, "settings.json"), "utf-8"));
10900
+ existingSettings = JSON.parse(await readFile13(join17(dataDir, "settings.json"), "utf-8"));
10672
10901
  } catch {
10673
10902
  }
10674
10903
  const migratedParsers = legacyParsers.map((p) => ({
@@ -10689,11 +10918,11 @@ ${p.transform ?? ""}`,
10689
10918
  ...migratedParsers
10690
10919
  ]
10691
10920
  };
10692
- await atomicWrite(join16(dataDir, "projects.json"), runeProjects);
10693
- await atomicWrite(join16(dataDir, "services.json"), runeServices);
10694
- await atomicWrite(join16(dataDir, "environments.json"), runeEnvs);
10695
- await atomicWrite(join16(dataDir, "environment-overrides.json"), flatOverrides);
10696
- await atomicWrite(join16(dataDir, "settings.json"), newSettings);
10921
+ await atomicWrite(join17(dataDir, "projects.json"), runeProjects);
10922
+ await atomicWrite(join17(dataDir, "services.json"), runeServices);
10923
+ await atomicWrite(join17(dataDir, "environments.json"), runeEnvs);
10924
+ await atomicWrite(join17(dataDir, "environment-overrides.json"), flatOverrides);
10925
+ await atomicWrite(join17(dataDir, "settings.json"), newSettings);
10697
10926
  const svcEnvCount = runeEnvs.filter((e) => e.scope === "service").length;
10698
10927
  console.log(`[legacy-migration] Written: ${runeProjects.length} projects, ${runeServices.length} services, ${runeEnvs.length} environments (${svcEnvCount} service-scoped)`);
10699
10928
  console.log(`[legacy-migration] Overrides: ${Object.keys(flatOverrides).length}, custom parsers: ${migratedParsers.length} (all disabled \u2014 rewrite required)`);
@@ -10704,12 +10933,12 @@ ${p.transform ?? ""}`,
10704
10933
  }
10705
10934
  async function findLegacyKeyInBackup(dataDir) {
10706
10935
  try {
10707
- const entries = await readdir4(dataDir);
10936
+ const entries = await readdir5(dataDir);
10708
10937
  const backupDirs = entries.filter((e) => e.startsWith("backup-")).sort().reverse();
10709
10938
  for (const dir of backupDirs) {
10710
- const keyJsonPath = join16(dataDir, dir, "dbs", "encryption-key.json");
10939
+ const keyJsonPath = join17(dataDir, dir, "dbs", "encryption-key.json");
10711
10940
  try {
10712
- const raw = await readFile12(keyJsonPath, "utf-8");
10941
+ const raw = await readFile13(keyJsonPath, "utf-8");
10713
10942
  const parsed = JSON.parse(raw);
10714
10943
  if (!parsed.encryptionKey) continue;
10715
10944
  const sodium = await getSodium();
@@ -10731,14 +10960,14 @@ async function runOverrideOnlyMigration(dataDir) {
10731
10960
  const abDataDir = resolve5(dataDir);
10732
10961
  const abCwd = resolve5(process.cwd());
10733
10962
  const candidateDirs = [
10734
- join16(abCwd, ".runeya", "dbs", "overrides"),
10735
- join16(abDataDir, "dbs", "overrides")
10963
+ join17(abCwd, ".runeya", "dbs", "overrides"),
10964
+ join17(abDataDir, "dbs", "overrides")
10736
10965
  ];
10737
10966
  let overridesDir = null;
10738
10967
  let overrideFiles = [];
10739
10968
  for (const dir of candidateDirs) {
10740
10969
  try {
10741
- const files = (await readdir4(dir)).filter((f) => f.endsWith(".encrypted.json"));
10970
+ const files = (await readdir5(dir)).filter((f) => f.endsWith(".encrypted.json"));
10742
10971
  if (files.length > 0) {
10743
10972
  overridesDir = dir;
10744
10973
  overrideFiles = files;
@@ -10748,7 +10977,7 @@ async function runOverrideOnlyMigration(dataDir) {
10748
10977
  }
10749
10978
  }
10750
10979
  if (!overridesDir || overrideFiles.length === 0) return false;
10751
- const legacyKeyPath = join16(overridesDir, "..", "encryption-key.json");
10980
+ const legacyKeyPath = join17(overridesDir, "..", "encryption-key.json");
10752
10981
  try {
10753
10982
  await access2(legacyKeyPath);
10754
10983
  return false;
@@ -10766,7 +10995,7 @@ async function runOverrideOnlyMigration(dataDir) {
10766
10995
  const envNameToId = {};
10767
10996
  let envsRaw;
10768
10997
  try {
10769
- envsRaw = JSON.parse(await readFile12(join16(abDataDir, "environments.json"), "utf-8"));
10998
+ envsRaw = JSON.parse(await readFile13(join17(abDataDir, "environments.json"), "utf-8"));
10770
10999
  for (const _env of envsRaw) {
10771
11000
  const env2 = _env;
10772
11001
  if (env2["name"] && env2["id"]) {
@@ -10785,7 +11014,7 @@ async function runOverrideOnlyMigration(dataDir) {
10785
11014
  let servicesRaw = [];
10786
11015
  const serviceNameToId = {};
10787
11016
  try {
10788
- servicesRaw = JSON.parse(await readFile12(join16(abDataDir, "services.json"), "utf-8"));
11017
+ servicesRaw = JSON.parse(await readFile13(join17(abDataDir, "services.json"), "utf-8"));
10789
11018
  for (const _svc of servicesRaw) {
10790
11019
  const svc = _svc;
10791
11020
  if (svc["name"] && svc["id"]) serviceNameToId[svc["name"]] = svc["id"];
@@ -10802,7 +11031,7 @@ async function runOverrideOnlyMigration(dataDir) {
10802
11031
  const envName = baseName.slice(0, -"-environment".length);
10803
11032
  let data;
10804
11033
  try {
10805
- data = await decryptLegacyFile(join16(overridesDir, file), sodiumKey, sodium);
11034
+ data = await decryptLegacyFile(join17(overridesDir, file), sodiumKey, sodium);
10806
11035
  } catch (err) {
10807
11036
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
10808
11037
  continue;
@@ -10829,7 +11058,7 @@ async function runOverrideOnlyMigration(dataDir) {
10829
11058
  }
10830
11059
  }
10831
11060
  if (Object.keys(flatOverrides).length > 0) {
10832
- await atomicWrite(join16(abDataDir, "environment-overrides.json"), flatOverrides);
11061
+ await atomicWrite(join17(abDataDir, "environment-overrides.json"), flatOverrides);
10833
11062
  console.log(`[override-migration] Written ${Object.keys(flatOverrides).length} override(s) to environment-overrides.json`);
10834
11063
  }
10835
11064
  let envsModified = false;
@@ -10839,7 +11068,7 @@ async function runOverrideOnlyMigration(dataDir) {
10839
11068
  const serviceName = baseName.slice(0, -"-envs".length);
10840
11069
  let data;
10841
11070
  try {
10842
- data = await decryptLegacyFile(join16(overridesDir, file), sodiumKey, sodium);
11071
+ data = await decryptLegacyFile(join17(overridesDir, file), sodiumKey, sodium);
10843
11072
  } catch (err) {
10844
11073
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
10845
11074
  continue;
@@ -10898,12 +11127,12 @@ async function runOverrideOnlyMigration(dataDir) {
10898
11127
  }
10899
11128
  }
10900
11129
  if (envsModified) {
10901
- await atomicWrite(join16(abDataDir, "environments.json"), envsRaw);
11130
+ await atomicWrite(join17(abDataDir, "environments.json"), envsRaw);
10902
11131
  console.log("[override-migration] Merged service overrides into environments.json");
10903
11132
  }
10904
11133
  const migratedDir = overridesDir.replace(/overrides$/, "overrides-migrated");
10905
11134
  try {
10906
- await rename9(overridesDir, migratedDir);
11135
+ await rename10(overridesDir, migratedDir);
10907
11136
  console.log(`[override-migration] Moved overrides/ \u2192 overrides-migrated/`);
10908
11137
  } catch (err) {
10909
11138
  console.warn(`[override-migration] Could not rename overrides dir: ${err.message}`);
@@ -10920,9 +11149,9 @@ var CANARY_PLAINTEXT = "runeya:v1:key-verification";
10920
11149
  var MAX_KEY_FILE_SIZE = 1024;
10921
11150
  var ARGON2_OPTIONS = { memoryCost: 65536, timeCost: 3, parallelism: 4, outputLen: 32 };
10922
11151
  async function readKeyFile(filePath) {
10923
- const s = await stat4(filePath);
11152
+ const s = await stat5(filePath);
10924
11153
  if (s.size > MAX_KEY_FILE_SIZE) throw new Error(`Fichier suspect : ${filePath} (${s.size} octets)`);
10925
- return readFile13(filePath);
11154
+ return readFile14(filePath);
10926
11155
  }
10927
11156
  function aesEncrypt(key, plaintext) {
10928
11157
  const iv = randomBytes4(12);
@@ -10941,7 +11170,7 @@ function aesDecrypt(key, data) {
10941
11170
  }
10942
11171
  async function getPepperFromFile(dataDir) {
10943
11172
  try {
10944
- const raw = await readKeyFile(join17(dataDir, PEPPER_FILENAME));
11173
+ const raw = await readKeyFile(join18(dataDir, PEPPER_FILENAME));
10945
11174
  const hex = raw.toString("utf-8").trim();
10946
11175
  if (/^[0-9a-f]{64}$/i.test(hex)) return Buffer.from(hex, "hex");
10947
11176
  } catch {
@@ -10949,11 +11178,11 @@ async function getPepperFromFile(dataDir) {
10949
11178
  return null;
10950
11179
  }
10951
11180
  async function writePepperToFile(dataDir, pepper) {
10952
- const filePath = join17(dataDir, PEPPER_FILENAME);
11181
+ const filePath = join18(dataDir, PEPPER_FILENAME);
10953
11182
  const tmpPath = filePath + ".tmp";
10954
- await writeFile12(tmpPath, pepper.toString("hex"), "utf-8");
11183
+ await writeFile13(tmpPath, pepper.toString("hex"), "utf-8");
10955
11184
  await chmod9(tmpPath, 384);
10956
- await rename10(tmpPath, filePath);
11185
+ await rename11(tmpPath, filePath);
10957
11186
  }
10958
11187
  function tryKeyringGet() {
10959
11188
  try {
@@ -11000,14 +11229,14 @@ async function writeEncryptedKey(dataDir, masterPassword, encryptionKey) {
11000
11229
  const payload = aesEncrypt(derivedKey, encryptionKey);
11001
11230
  const fileContent = Buffer.concat([salt, payload]);
11002
11231
  const encoded = fileContent.toString("base64");
11003
- const filePath = join17(dataDir, ENCRYPTED_KEY_FILENAME);
11232
+ const filePath = join18(dataDir, ENCRYPTED_KEY_FILENAME);
11004
11233
  const tmpPath = filePath + ".tmp";
11005
- await writeFile12(tmpPath, encoded, "utf-8");
11234
+ await writeFile13(tmpPath, encoded, "utf-8");
11006
11235
  await chmod9(tmpPath, 384);
11007
- await rename10(tmpPath, filePath);
11236
+ await rename11(tmpPath, filePath);
11008
11237
  }
11009
11238
  async function readEncryptedKey(dataDir, masterPassword) {
11010
- const filePath = join17(dataDir, ENCRYPTED_KEY_FILENAME);
11239
+ const filePath = join18(dataDir, ENCRYPTED_KEY_FILENAME);
11011
11240
  const raw = await readKeyFile(filePath);
11012
11241
  const fileContent = Buffer.from(raw.toString("utf-8").trim(), "base64");
11013
11242
  const salt = fileContent.subarray(0, 16);
@@ -11027,13 +11256,13 @@ async function getPepperFromKeychain(dataDir) {
11027
11256
  }
11028
11257
  async function writeVerifyFile(dataDir, encryptionKey) {
11029
11258
  const payload = aesEncrypt(encryptionKey, Buffer.from(CANARY_PLAINTEXT, "utf-8"));
11030
- const filePath = join17(dataDir, VERIFY_FILENAME);
11259
+ const filePath = join18(dataDir, VERIFY_FILENAME);
11031
11260
  const tmpPath = filePath + ".tmp";
11032
- await writeFile12(tmpPath, payload.toString("base64"), "utf-8");
11033
- await rename10(tmpPath, filePath);
11261
+ await writeFile13(tmpPath, payload.toString("base64"), "utf-8");
11262
+ await rename11(tmpPath, filePath);
11034
11263
  }
11035
11264
  async function verifyEncryptionKey(dataDir, encryptionKey) {
11036
- const filePath = join17(dataDir, VERIFY_FILENAME);
11265
+ const filePath = join18(dataDir, VERIFY_FILENAME);
11037
11266
  const raw = await readKeyFile(filePath);
11038
11267
  const payload = Buffer.from(raw.toString("utf-8").trim(), "base64");
11039
11268
  const plaintext = aesDecrypt(encryptionKey, payload);
@@ -11043,7 +11272,7 @@ async function verifyEncryptionKey(dataDir, encryptionKey) {
11043
11272
  }
11044
11273
  async function hasVerifyFile(dataDir) {
11045
11274
  try {
11046
- await stat4(join17(dataDir, VERIFY_FILENAME));
11275
+ await stat5(join18(dataDir, VERIFY_FILENAME));
11047
11276
  return true;
11048
11277
  } catch {
11049
11278
  return false;
@@ -11051,7 +11280,7 @@ async function hasVerifyFile(dataDir) {
11051
11280
  }
11052
11281
  async function hasEncryptedKeyFile(dataDir) {
11053
11282
  try {
11054
- await stat4(join17(dataDir, ENCRYPTED_KEY_FILENAME));
11283
+ await stat5(join18(dataDir, ENCRYPTED_KEY_FILENAME));
11055
11284
  return true;
11056
11285
  } catch {
11057
11286
  return false;
@@ -11065,17 +11294,17 @@ async function getServerState() {
11065
11294
  let hasVerify = false;
11066
11295
  let hasData = false;
11067
11296
  try {
11068
- await stat5(join18(dataDir, ENCRYPTED_KEY_FILENAME2));
11297
+ await stat6(join19(dataDir, ENCRYPTED_KEY_FILENAME2));
11069
11298
  hasEncFile = true;
11070
11299
  } catch {
11071
11300
  }
11072
11301
  try {
11073
- await stat5(join18(dataDir, VERIFY_FILENAME2));
11302
+ await stat6(join19(dataDir, VERIFY_FILENAME2));
11074
11303
  hasVerify = true;
11075
11304
  } catch {
11076
11305
  }
11077
11306
  try {
11078
- await stat5(join18(dataDir, "projects.json"));
11307
+ await stat6(join19(dataDir, "projects.json"));
11079
11308
  hasData = true;
11080
11309
  } catch {
11081
11310
  }
@@ -11461,7 +11690,7 @@ async function createLocalServer() {
11461
11690
  console.log("[server] Premier lancement \u2014 setup requis");
11462
11691
  }
11463
11692
  }
11464
- if (!existsSync2(env.DATA_DIR)) await mkdir14(env.DATA_DIR);
11693
+ if (!existsSync2(env.DATA_DIR)) await mkdir15(env.DATA_DIR);
11465
11694
  const absoluteDataDir = resolve4(env.DATA_DIR);
11466
11695
  console.log(`[server] Data directory: ${absoluteDataDir}`);
11467
11696
  await ensureDataGitignore(env.DATA_DIR);
@@ -11929,7 +12158,7 @@ async function pullEnv(opts) {
11929
12158
  }
11930
12159
  dotenv.config({ quiet: true });
11931
12160
  if (process.env["DATA_DIR"]) {
11932
- const resolved = resolvePath(process.env["DATA_DIR"], "..");
12161
+ const resolved = resolvePath2(process.env["DATA_DIR"], "..");
11933
12162
  process.chdir(resolved);
11934
12163
  console.log(`[server] Working directory: ${resolved} (from DATA_DIR)`);
11935
12164
  }
@@ -12002,4 +12231,4 @@ export {
12002
12231
  createLocalServer,
12003
12232
  pullEnv
12004
12233
  };
12005
- //# sourceMappingURL=dist-TI3HFRUW.js.map
12234
+ //# sourceMappingURL=dist-CJTJWMCR.js.map