@myagentroam/server 0.13.4 → 0.13.6

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 (358) hide show
  1. package/dist/quick-start/node-runtime.js +21 -3
  2. package/dist/quick-start/run.js +11 -2
  3. package/node_modules/@myagentroam/protocol/package.json +1 -1
  4. package/node_modules/@myagentroam/server-core/dist/mcp-service.js +5 -3
  5. package/node_modules/@myagentroam/server-core/dist/mysql-node-identity.d.ts +5 -0
  6. package/node_modules/@myagentroam/server-core/dist/mysql-node-identity.js +31 -0
  7. package/node_modules/@myagentroam/server-core/dist/skill-source-service.js +5 -3
  8. package/node_modules/@myagentroam/server-core/package.json +2 -2
  9. package/node_modules/@myagentroam-enterprise/server-implementation/dist/cli-messages.en-US.d.ts +1 -0
  10. package/node_modules/@myagentroam-enterprise/server-implementation/dist/cli-messages.en-US.js +1 -0
  11. package/node_modules/@myagentroam-enterprise/server-implementation/dist/cli-messages.zh-CN.d.ts +1 -0
  12. package/node_modules/@myagentroam-enterprise/server-implementation/dist/cli-messages.zh-CN.js +1 -0
  13. package/node_modules/@myagentroam-enterprise/server-implementation/dist/composition/quick-start-node-bootstrap.d.ts +5 -1
  14. package/node_modules/@myagentroam-enterprise/server-implementation/dist/composition/quick-start-node-bootstrap.js +9 -1
  15. package/node_modules/@myagentroam-enterprise/server-implementation/dist/composition/server-application.js +1 -0
  16. package/node_modules/@myagentroam-enterprise/server-implementation/dist/license/management-gate.js +3 -2
  17. package/node_modules/@myagentroam-enterprise/server-implementation/dist/mysql/server-database.d.ts +4 -0
  18. package/node_modules/@myagentroam-enterprise/server-implementation/dist/mysql/server-database.js +3 -0
  19. package/node_modules/@myagentroam-enterprise/server-implementation/dist/rbac/authorization-service.js +7 -1
  20. package/node_modules/@myagentroam-enterprise/server-implementation/package.json +3 -3
  21. package/package.json +6 -6
  22. package/web/assets/{AuditManagementPage-DnsGADhX.js → AuditManagementPage-DdhzZJJz.js} +1 -1
  23. package/web/assets/{BusyIndicator-DuQN1wm-.js → BusyIndicator-DJEYrwl2.js} +1 -1
  24. package/web/assets/{CodeFileEditor-BIIXeX-W.js → CodeFileEditor-t-S2RxFj.js} +3 -3
  25. package/web/assets/{ConversationTemplateManagementPage-Bo4oyW8_.js → ConversationTemplateManagementPage-8cWdT1rl.js} +1 -1
  26. package/web/assets/{ConversationTemplateManagementPage-Cq610Ift.js → ConversationTemplateManagementPage-DtnCxKPr.js} +1 -1
  27. package/web/assets/{EnterpriseUserManagementPage-CaTrDqbs.js → EnterpriseUserManagementPage-CVpJzsVL.js} +1 -1
  28. package/web/assets/{EnvironmentSecretManager-BsrTY2rn.js → EnvironmentSecretManager-DaMtII6x.js} +1 -1
  29. package/web/assets/{FilePreviewLoading-RwWQoi6Y.js → FilePreviewLoading-CqXCVUDH.js} +1 -1
  30. package/web/assets/{HtmlPreviewFrame-ClcGdqP1.js → HtmlPreviewFrame-xgqXo3bD.js} +4 -4
  31. package/web/assets/{LicenseManagementPage-7_EsyrhF.js → LicenseManagementPage-C-25sen8.js} +1 -1
  32. package/web/assets/{ManagementPagination-2xmt9Zfx.js → ManagementPagination-BwZo73aV.js} +1 -1
  33. package/web/assets/{MarAgentModelManagementPage-CjMpM_RC.js → MarAgentModelManagementPage-B9lHTQtV.js} +1 -1
  34. package/web/assets/{MarAgentModelManagementPage-B5_l5kMw.js → MarAgentModelManagementPage-DkncBptD.js} +1 -1
  35. package/web/assets/{MarIcon-Bey6vvFS.js → MarIcon-0cJTzTai.js} +1 -1
  36. package/web/assets/{MarkdownFilePreview-DroSJppq.js → MarkdownFilePreview-CnWvYfKN.js} +2 -2
  37. package/web/assets/{McpDetailsDialog-BrklXkCL.js → McpDetailsDialog-nt3by9E1.js} +1 -1
  38. package/web/assets/{McpSourceManagementPage-BBw8Fnb7.js → McpSourceManagementPage-BVjVO0Tb.js} +1 -1
  39. package/web/assets/{McpSourceManagementPage-CCugQvg2.js → McpSourceManagementPage-Bg2wxoSB.js} +1 -1
  40. package/web/assets/{NodeDetailsDialogs-U0lssvGT.js → NodeDetailsDialogs-D4wBwUzA.js} +1 -1
  41. package/web/assets/NodeManagementPage-C1Cj7rex.js +1 -0
  42. package/web/assets/NodeManagementPage-DRBCipFy.js +1 -0
  43. package/web/assets/{OAuthManagementPage-BeiBNSsN.js → OAuthManagementPage-D9cBB-vX.js} +1 -1
  44. package/web/assets/{OrganizationManagementPage-CS9sBwhZ.js → OrganizationManagementPage-N8HwbTY5.js} +1 -1
  45. package/web/assets/{ResourceManagementPanel-Ck53eFHZ.js → ResourceManagementPanel-D80V3ZdZ.js} +1 -1
  46. package/web/assets/{ResourceManagementPanel.vue_vue_type_script_setup_true_lang-D1vZJR_l.js → ResourceManagementPanel.vue_vue_type_script_setup_true_lang-DfCWa6fA.js} +1 -1
  47. package/web/assets/SecretManagementPage-BDo50Fo5.js +1 -0
  48. package/web/assets/{SecretManagementPage-CkoIPpRk.js → SecretManagementPage-tsgbjSvn.js} +1 -1
  49. package/web/assets/{SecretManagementPage.vue_vue_type_script_setup_true_lang-Bq3JYt0N.js → SecretManagementPage.vue_vue_type_script_setup_true_lang-CmSoYQ3n.js} +1 -1
  50. package/web/assets/{SessionSharePage-UYao-99J.js → SessionSharePage-whJFT3cw.js} +2 -2
  51. package/web/assets/{SettingsContent-CxwrhDv3.js → SettingsContent-Dsw7sGr4.js} +1 -1
  52. package/web/assets/{SettingsContent-Cdhq2mMs.js → SettingsContent-WLH3DkgW.js} +1 -1
  53. package/web/assets/SkillCenterPage-Dl-aKzxp.js +1 -0
  54. package/web/assets/{SkillCenterPage-7USQN-DP.js → SkillCenterPage-yDU-t2cT.js} +1 -1
  55. package/web/assets/{SkillDetailsDialog-BsiPRfbz.js → SkillDetailsDialog-BUfNxAjf.js} +1 -1
  56. package/web/assets/{SkillSourceManagementPage-DFnaYnRe.js → SkillSourceManagementPage-B7yjgXR8.js} +1 -1
  57. package/web/assets/{SkillSourceManagementPage-BvOdElvU.js → SkillSourceManagementPage-BCHgTDXJ.js} +1 -1
  58. package/web/assets/{StandaloneFilePreviewPage-Cb1MpQfh.js → StandaloneFilePreviewPage-b-piNuN1.js} +1 -1
  59. package/web/assets/{SystemConfigurationPage-DME6cns0.js → SystemConfigurationPage-C2Ecb0Su.js} +1 -1
  60. package/web/assets/SystemConfigurationPage-CUI3Icws.js +1 -0
  61. package/web/assets/{SystemInformationPage-DGZWfrXE.js → SystemInformationPage-CBWjqG43.js} +1 -1
  62. package/web/assets/{TerminalTabView-CuQzSev1.js → TerminalTabView-CeX2SVcm.js} +1 -1
  63. package/web/assets/{WorkbenchPage-B7W9kyOw.js → WorkbenchPage-D4X4qerH.js} +4 -4
  64. package/web/assets/WorkspaceManagementPage-0uM3HF3o.js +1 -0
  65. package/web/assets/WorkspaceManagementPage-DlcAgYsx.js +1 -0
  66. package/web/assets/{_baseIteratee-3ynz4yPF.js → _baseIteratee-CnCgfzqY.js} +1 -1
  67. package/web/assets/{abnfDiagram-VCTEODGH-DupmQ6Er.js → abnfDiagram-VCTEODGH-C8MLlCYr.js} +1 -1
  68. package/web/assets/{advancedFormat-Bqm4Kq1b.js → advancedFormat-tqE8I04X.js} +1 -1
  69. package/web/assets/{arc-Fq0BJf1Q.js → arc-ChGPMlfM.js} +1 -1
  70. package/web/assets/{architectureDiagram-5GKGNRK7-B4EFAJN2.js → architectureDiagram-5GKGNRK7-UNKWS80q.js} +1 -1
  71. package/web/assets/{blockDiagram-OSKFZWR5-B75Yxltl.js → blockDiagram-OSKFZWR5-DaoKTWzi.js} +1 -1
  72. package/web/assets/{c4Diagram-7LVT6UL2-2IJLHGl0.js → c4Diagram-7LVT6UL2-DeJ38tJ4.js} +1 -1
  73. package/web/assets/{catalog-ownership-service-BMQL4KAM.js → catalog-ownership-service-ppl9SdO8.js} +1 -1
  74. package/web/assets/{catalog-page-service-Cnb4fp1m.js → catalog-page-service-CA6TP1Er.js} +1 -1
  75. package/web/assets/channel-D5Au5X55.js +1 -0
  76. package/web/assets/{chunk-2Q5K7J3B-BbIlpi0m.js → chunk-2Q5K7J3B-Cie4-T_4.js} +1 -1
  77. package/web/assets/{chunk-5VM5RSS4-Ds5gdCgX.js → chunk-5VM5RSS4-C02e2HuJ.js} +1 -1
  78. package/web/assets/{chunk-F27PBJKO-DBafPcM9.js → chunk-F27PBJKO-CYE4axjh.js} +1 -1
  79. package/web/assets/{chunk-HLEWEB6X-Ctl85JUs.js → chunk-HLEWEB6X-Qcd3DJvW.js} +1 -1
  80. package/web/assets/{chunk-JWPE2WC7-Df0cT3j7.js → chunk-JWPE2WC7-BIlv53mX.js} +1 -1
  81. package/web/assets/{chunk-POPQ4Y6H-OSXerjxo.js → chunk-POPQ4Y6H-C1FzI22y.js} +1 -1
  82. package/web/assets/{chunk-SVP7TREG-4azsKQ7R.js → chunk-SVP7TREG-B5A4JoXo.js} +1 -1
  83. package/web/assets/{chunk-XXDRQBXY-RCyyudHN.js → chunk-XXDRQBXY-FdosaHEW.js} +1 -1
  84. package/web/assets/{chunk-ZLD2IHE6-CE_CQEwa.js → chunk-ZLD2IHE6-BzhAoouo.js} +1 -1
  85. package/web/assets/classDiagram-CYGNFDIV-CplRLUOK.js +1 -0
  86. package/web/assets/classDiagram-v2-TLXNO2FR-CplRLUOK.js +1 -0
  87. package/web/assets/{conversation-history-CUVjobW9.js → conversation-history-D9993EDO.js} +1 -1
  88. package/web/assets/{cose-bilkent-JH36ORCC-B4UTqEAs.js → cose-bilkent-JH36ORCC-C4ZjK8dC.js} +1 -1
  89. package/web/assets/{cynefin-OW5HDTMX-B9U7i_AE.js → cynefin-OW5HDTMX-D-6QhPjX.js} +1 -1
  90. package/web/assets/{cynefinDiagram-5FMLGOSQ-DjOvM95v.js → cynefinDiagram-5FMLGOSQ-Bwsk5LdU.js} +1 -1
  91. package/web/assets/{dagre-OS7QT2EB-DC57hRv_.js → dagre-OS7QT2EB-DoA_-lbd.js} +1 -1
  92. package/web/assets/{diagram-S7CK7UJ4-D6mHX9Fx.js → diagram-S7CK7UJ4-sgObxZyi.js} +1 -1
  93. package/web/assets/{diagram-UQ7AKVKN-B2kIa0Jp.js → diagram-UQ7AKVKN-BdMjAaVk.js} +1 -1
  94. package/web/assets/{diagram-VSXAHHWV-Bxv36NlF.js → diagram-VSXAHHWV-BCH9zwo1.js} +1 -1
  95. package/web/assets/{diagram-VX7I27RA-xZ_Rnq6j.js → diagram-VX7I27RA-Z6LSJKeQ.js} +1 -1
  96. package/web/assets/{diagram-Z3DM3KII-CdSuHCfk.js → diagram-Z3DM3KII-CcbM5hsL.js} +1 -1
  97. package/web/assets/{ebnfDiagram-PWID7BFC-yx8cKpo-.js → ebnfDiagram-PWID7BFC-CWP32uDq.js} +1 -1
  98. package/web/assets/{el-alert-YwFfkzFY.js → el-alert-8VKFJYUv.js} +1 -1
  99. package/web/assets/{el-cascader-DLHPkFf2.js → el-cascader-CJR-DJLi.js} +1 -1
  100. package/web/assets/{el-checkbox-D7B8QPnv.js → el-checkbox-D7CsqiQq.js} +1 -1
  101. package/web/assets/{el-date-picker-3YbpvR4-.js → el-date-picker-Lb4E2Nje.js} +1 -1
  102. package/web/assets/{el-descriptions-pbjjg_nj.js → el-descriptions-B48GJeGA.js} +1 -1
  103. package/web/assets/{el-form-item-C0hI6zRh.js → el-form-item-Fjp3w344.js} +1 -1
  104. package/web/assets/{el-input-BBSbjFbs.js → el-input-DRF3bOe1.js} +1 -1
  105. package/web/assets/{el-input-number-BD9kOXXp.js → el-input-number-e6T9QIje.js} +1 -1
  106. package/web/assets/{el-radio-ByQM3NKI.js → el-radio-DO8joult.js} +1 -1
  107. package/web/assets/{el-select-BEIvaLbl.js → el-select-BSaB1c5h.js} +1 -1
  108. package/web/assets/{el-switch-DNSjKrx8.js → el-switch-Cpl2xxJc.js} +1 -1
  109. package/web/assets/{el-tab-pane-P1W8N6RB.js → el-tab-pane-CQyfpTgD.js} +1 -1
  110. package/web/assets/{el-table-column-BkxhVRss.js → el-table-column-BRybrdLI.js} +1 -1
  111. package/web/assets/{enterprise-management-service-C_5GRorU.js → enterprise-management-service-Qtmnf50C.js} +1 -1
  112. package/web/assets/{erDiagram-2YWLMYGG-CysMQY_a.js → erDiagram-2YWLMYGG-BOtd6Wuq.js} +1 -1
  113. package/web/assets/{error-presentation-CMcHjWH1.js → error-presentation-CJfLHEK_.js} +1 -1
  114. package/web/assets/{flowDiagram-T62WH6J4-D3EWUl6L.js → flowDiagram-T62WH6J4-DGRqBn-8.js} +1 -1
  115. package/web/assets/{ganttDiagram-EL5Y4UJY-D8p3UoZQ.js → ganttDiagram-EL5Y4UJY-D84r1V0Q.js} +1 -1
  116. package/web/assets/{gitGraphDiagram-WWUBYQGX-DOStzbFz.js → gitGraphDiagram-WWUBYQGX-FANv-qDA.js} +1 -1
  117. package/web/assets/{hosted-conversation-template-client-D4Wn8q89.js → hosted-conversation-template-client-CeOnupVC.js} +1 -1
  118. package/web/assets/{index-BLspLxxD.js → index-9ks2AQTi.js} +1 -1
  119. package/web/assets/{index-bl_S7WPN.js → index-B0P8j1yb.js} +1 -1
  120. package/web/assets/{index-DuKtBO_u.js → index-B7tnVSor.js} +1 -1
  121. package/web/assets/{index-ft9uuHSX.js → index-B8rWDVmR.js} +1 -1
  122. package/web/assets/{index-BwULrRvu.js → index-BOhe9vs1.js} +1 -1
  123. package/web/assets/{index-DLalpHzD.js → index-BYYx_GrI.js} +1 -1
  124. package/web/assets/{index-eJcmffyl.js → index-BeipYJv6.js} +1 -1
  125. package/web/assets/{index-CYeXhiRu.js → index-BkC7CnZA.js} +1 -1
  126. package/web/assets/{index-DW6tcz5Z.js → index-Bokwz5PA.js} +1 -1
  127. package/web/assets/{index-DswoMecP.js → index-BsG4OGs3.js} +1 -1
  128. package/web/assets/{index-0Qtks3Zu.js → index-C8DbmG_l.js} +1 -1
  129. package/web/assets/{index-m9YdF02w.js → index-C90_sIrz.js} +1 -1
  130. package/web/assets/{index-DkfdzgTk.js → index-CBs38naL.js} +1 -1
  131. package/web/assets/{index-DbuM3bO4.js → index-C_EAvnDF.js} +1 -1
  132. package/web/assets/{index-dMLXuty7.js → index-C_F0LgDO.js} +1 -1
  133. package/web/assets/{index-DrVPbxCP.js → index-D6945seh.js} +1 -1
  134. package/web/assets/{index-C4XljgeB.js → index-DGlioDXJ.js} +1 -1
  135. package/web/assets/{index-CGPHfg1G.js → index-DU209g6d.js} +1 -1
  136. package/web/assets/{index-BCZqekVb.js → index-DsgwAvJA.js} +3 -3
  137. package/web/assets/{index-D8dMhcz9.js → index-DwQqO2fH.js} +1 -1
  138. package/web/assets/{index-DTE-qCKl.js → index-NReuiFej.js} +1 -1
  139. package/web/assets/{index-CiC8263F.js → index-Tv4HGgSj.js} +1 -1
  140. package/web/assets/{index-Df8FjIGd.js → index-W6jp3JVA.js} +1 -1
  141. package/web/assets/{index-B35Hh-19.js → index-eU6FSd70.js} +1 -1
  142. package/web/assets/{index-CwiFFfS1.js → index-hP6Cb_NE.js} +1 -1
  143. package/web/assets/{index-CM_0TkoS.js → index-sctirQW0.js} +1 -1
  144. package/web/assets/{index-CvclBhn2.js → index-x2OEXKrc.js} +1 -1
  145. package/web/assets/{index-nTguJepi.js → index-x9JuBH-H.js} +1 -1
  146. package/web/assets/{index-B26xf70t.js → index-zG9SJlS3.js} +1 -1
  147. package/web/assets/infoDiagram-FKFFQAWI-ZeaWiVDx.js +2 -0
  148. package/web/assets/{isArrayLikeObject-DBTZh06Y.js → isArrayLikeObject-Bg1E4S9y.js} +1 -1
  149. package/web/assets/{ishikawaDiagram-5VMMS53U-KdtSHy0d.js → ishikawaDiagram-5VMMS53U-B0FDzCa4.js} +1 -1
  150. package/web/assets/{journeyDiagram-EYS64GPL-BWm62hPR.js → journeyDiagram-EYS64GPL-CIM_LxZU.js} +1 -1
  151. package/web/assets/{kanban-definition-UXKFOSKX-97_o1WCj.js → kanban-definition-UXKFOSKX-DKxBi_r0.js} +1 -1
  152. package/web/assets/{layout-6_PY2p7c.js → layout-DU0JsES_.js} +1 -1
  153. package/web/assets/{linear-BT7Hx9AK.js → linear-C3UCzYem.js} +1 -1
  154. package/web/assets/{management-url-service-B2_kg7lH.js → management-url-service-DsBUOSH4.js} +1 -1
  155. package/web/assets/{mcp-center-service-Cvb3tmP2.js → mcp-center-service-BluNkyx-.js} +1 -1
  156. package/web/assets/{merge-DaI_T8rv.js → merge-B-E3iBqN.js} +1 -1
  157. package/web/assets/{mermaid.core-DL0NmHpa.js → mermaid.core-CMc9IFVw.js} +5 -5
  158. package/web/assets/{message-box-service-Vs92kolE.js → message-box-service-CszgyilP.js} +1 -1
  159. package/web/assets/{mindmap-definition-THT77NOG-CAPKaXNd.js → mindmap-definition-THT77NOG-BJyPV49z.js} +1 -1
  160. package/web/assets/{mobile-dialog-return-service-3QafxIkr.js → mobile-dialog-return-service-Csexw-by.js} +1 -1
  161. package/web/assets/{oauth-callback-BlSeaEf-.js → oauth-callback-3M1eIOPT.js} +1 -1
  162. package/web/assets/{pegDiagram-XKGWAZYB-hJB71Znn.js → pegDiagram-XKGWAZYB-jpfn2XMn.js} +1 -1
  163. package/web/assets/{pieDiagram-E7YTZNPT-COeAYSnz.js → pieDiagram-E7YTZNPT-B2jQ3Egj.js} +1 -1
  164. package/web/assets/{quadrantDiagram-AXDQQJYC-DHTuVvw3.js → quadrantDiagram-AXDQQJYC-BXSOa8Vi.js} +1 -1
  165. package/web/assets/{railroadDiagram-O6MQD6OU-bKHrlAIG.js → railroadDiagram-O6MQD6OU-BTy8Z6ZL.js} +1 -1
  166. package/web/assets/{requirementDiagram-IS5BZ75X--2VkiRxe.js → requirementDiagram-IS5BZ75X-eqVPnJ-z.js} +1 -1
  167. package/web/assets/{runner-presentation-BW-vKSQP.js → runner-presentation-D66Z9p-O.js} +1 -1
  168. package/web/assets/{sankeyDiagram-P5KCCOFB-k5g8_UfF.js → sankeyDiagram-P5KCCOFB-BI5fAwMJ.js} +1 -1
  169. package/web/assets/{sequenceDiagram-WJ2MYXX4-3T1cTiKX.js → sequenceDiagram-WJ2MYXX4-CZ7Un31z.js} +1 -1
  170. package/web/assets/{session-share-client-service-BePcCd8T.js → session-share-client-service-W0XDwceC.js} +1 -1
  171. package/web/assets/{sizeCapture-INFHLROL-CAmN45ar.js → sizeCapture-INFHLROL-7gQRW3HD.js} +1 -1
  172. package/web/assets/{stateDiagram-XQSTLZYL-DyCNMKfm.js → stateDiagram-XQSTLZYL-D23AlrmH.js} +1 -1
  173. package/web/assets/stateDiagram-v2-IH3M54BS-D93lsHZ8.js +1 -0
  174. package/web/assets/{swimlanes-V6O3JKXN-CShGr_U7.js → swimlanes-V6O3JKXN-By9JzeNC.js} +1 -1
  175. package/web/assets/swimlanesDiagram-JKAHXJPX-C3UEWonA.js +8 -0
  176. package/web/assets/{time-presentation-DYGS-swy.js → time-presentation-BRvT6nTd.js} +1 -1
  177. package/web/assets/{timeline-definition-24CTP7MA-CRagiyPI.js → timeline-definition-24CTP7MA-CyydVD-f.js} +1 -1
  178. package/web/assets/{union-SQqiJk16.js → union-BSveQIrm.js} +1 -1
  179. package/web/assets/{use-form-common-props-CiMdMq_M.js → use-form-common-props-BJ2vZd_0.js} +1 -1
  180. package/web/assets/{use-wheel-BGpTGiSt.js → use-wheel-TWRoHAF5.js} +1 -1
  181. package/web/assets/{vennDiagram-4TSXK5OY-_jtB4CJn.js → vennDiagram-4TSXK5OY-3OEbunrh.js} +1 -1
  182. package/web/assets/{wardleyDiagram-VM6X3IG4-Blsdb7g_.js → wardleyDiagram-VM6X3IG4-BuZvJTn0.js} +1 -1
  183. package/web/assets/{workbench-composer-interaction-controller-BvnJG4HW.js → workbench-composer-interaction-controller-BJZsGMk-.js} +1 -1
  184. package/web/assets/{workbench-presentation-b_MlZ-jq.js → workbench-presentation-DblBOxzZ.js} +1 -1
  185. package/web/assets/{xychartDiagram-S5SC5T6Z-BTu61LZj.js → xychartDiagram-S5SC5T6Z-CQzJStra.js} +1 -1
  186. package/web/docs/404.html +2 -2
  187. package/web/docs/administration/account.html +3 -3
  188. package/web/docs/administration/audit.html +3 -3
  189. package/web/docs/administration/conversation-templates.html +3 -3
  190. package/web/docs/administration/email-notifications.html +3 -3
  191. package/web/docs/administration/license.html +5 -5
  192. package/web/docs/administration/nodes-workspaces.html +3 -3
  193. package/web/docs/administration/oauth.html +3 -3
  194. package/web/docs/administration/secrets.html +3 -3
  195. package/web/docs/administration/template-workspace-maintenance.html +3 -3
  196. package/web/docs/administration/users-organizations.html +3 -3
  197. package/web/docs/assets/administration_license.md.Bf1iyuKG.js +1 -0
  198. package/web/docs/assets/{administration_license.md.CdgtKnVd.lean.js → administration_license.md.Bf1iyuKG.lean.js} +1 -1
  199. package/web/docs/assets/{app.DQ73g8Ca.js → app.DFdypnML.js} +1 -1
  200. package/web/docs/assets/chunks/@localSearchIndexen-US.BEf68FQA.js +1 -0
  201. package/web/docs/assets/chunks/@localSearchIndexroot.Dw4g7XXs.js +1 -0
  202. package/web/docs/assets/chunks/{VPLocalSearchBox.vP8fXe46.js → VPLocalSearchBox.P9CapR4-.js} +1 -1
  203. package/web/docs/assets/chunks/{theme.CES2lSYr.js → theme.DLnKtfGY.js} +2 -2
  204. package/web/docs/assets/en-US_administration_license.md.Dmg8rNEl.js +1 -0
  205. package/web/docs/assets/{en-US_administration_license.md.jmAMVJjC.lean.js → en-US_administration_license.md.Dmg8rNEl.lean.js} +1 -1
  206. package/web/docs/assets/{en-US_getting-started_npm-quick-start.md.CLCHq7k_.js → en-US_getting-started_npm-quick-start.md.Dwsi-ffA.js} +2 -2
  207. package/web/docs/assets/{en-US_getting-started_npm-quick-start.md.CLCHq7k_.lean.js → en-US_getting-started_npm-quick-start.md.Dwsi-ffA.lean.js} +1 -1
  208. package/web/docs/assets/en-US_workbench_skills.md.xchi27R9.js +1 -0
  209. package/web/docs/assets/{en-US_workbench_skills.md.C4xlXyjC.lean.js → en-US_workbench_skills.md.xchi27R9.lean.js} +1 -1
  210. package/web/docs/assets/{getting-started_npm-quick-start.md.B9varoSe.js → getting-started_npm-quick-start.md.CcxMwUgz.js} +2 -2
  211. package/web/docs/assets/{getting-started_npm-quick-start.md.B9varoSe.lean.js → getting-started_npm-quick-start.md.CcxMwUgz.lean.js} +1 -1
  212. package/web/docs/assets/workbench_skills.md.BQw1Wuiy.js +1 -0
  213. package/web/docs/assets/{workbench_skills.md.rWZ_VuoB.lean.js → workbench_skills.md.BQw1Wuiy.lean.js} +1 -1
  214. package/web/docs/concepts/architecture.html +3 -3
  215. package/web/docs/concepts/data-and-security.html +3 -3
  216. package/web/docs/concepts/files-git-terminal.html +3 -3
  217. package/web/docs/concepts/node-and-workspace.html +3 -3
  218. package/web/docs/concepts/permissions-and-sharing.html +3 -3
  219. package/web/docs/concepts/runner-control.html +3 -3
  220. package/web/docs/concepts/secrets.html +3 -3
  221. package/web/docs/concepts/session-run-turn.html +3 -3
  222. package/web/docs/deployment/backup-restore.html +3 -3
  223. package/web/docs/deployment/network.html +3 -3
  224. package/web/docs/deployment/node-installation.html +3 -3
  225. package/web/docs/deployment/node-linux.html +3 -3
  226. package/web/docs/deployment/node-macos.html +3 -3
  227. package/web/docs/deployment/node-windows.html +3 -3
  228. package/web/docs/deployment/production.html +3 -3
  229. package/web/docs/deployment/security-checklist.html +3 -3
  230. package/web/docs/deployment/upgrade.html +3 -3
  231. package/web/docs/en-US/administration/account.html +3 -3
  232. package/web/docs/en-US/administration/audit.html +3 -3
  233. package/web/docs/en-US/administration/conversation-templates.html +3 -3
  234. package/web/docs/en-US/administration/email-notifications.html +3 -3
  235. package/web/docs/en-US/administration/license.html +5 -5
  236. package/web/docs/en-US/administration/nodes-workspaces.html +3 -3
  237. package/web/docs/en-US/administration/oauth.html +3 -3
  238. package/web/docs/en-US/administration/secrets.html +3 -3
  239. package/web/docs/en-US/administration/template-workspace-maintenance.html +3 -3
  240. package/web/docs/en-US/administration/users-organizations.html +3 -3
  241. package/web/docs/en-US/concepts/architecture.html +3 -3
  242. package/web/docs/en-US/concepts/data-and-security.html +3 -3
  243. package/web/docs/en-US/concepts/files-git-terminal.html +3 -3
  244. package/web/docs/en-US/concepts/node-and-workspace.html +3 -3
  245. package/web/docs/en-US/concepts/permissions-and-sharing.html +3 -3
  246. package/web/docs/en-US/concepts/runner-control.html +3 -3
  247. package/web/docs/en-US/concepts/secrets.html +3 -3
  248. package/web/docs/en-US/concepts/session-run-turn.html +3 -3
  249. package/web/docs/en-US/deployment/backup-restore.html +3 -3
  250. package/web/docs/en-US/deployment/network.html +3 -3
  251. package/web/docs/en-US/deployment/node-installation.html +3 -3
  252. package/web/docs/en-US/deployment/node-linux.html +3 -3
  253. package/web/docs/en-US/deployment/node-macos.html +3 -3
  254. package/web/docs/en-US/deployment/node-windows.html +3 -3
  255. package/web/docs/en-US/deployment/production.html +3 -3
  256. package/web/docs/en-US/deployment/security-checklist.html +3 -3
  257. package/web/docs/en-US/deployment/upgrade.html +3 -3
  258. package/web/docs/en-US/getting-started/connect-node.html +3 -3
  259. package/web/docs/en-US/getting-started/first-agent-session.html +3 -3
  260. package/web/docs/en-US/getting-started/first-login.html +3 -3
  261. package/web/docs/en-US/getting-started/next-steps.html +3 -3
  262. package/web/docs/en-US/getting-started/npm-quick-start.html +6 -6
  263. package/web/docs/en-US/getting-started/overview.html +3 -3
  264. package/web/docs/en-US/getting-started/prerequisites.html +3 -3
  265. package/web/docs/en-US/getting-started/register-workspace.html +3 -3
  266. package/web/docs/en-US/getting-started/server-installation.html +3 -3
  267. package/web/docs/en-US/operations/marctl.html +3 -3
  268. package/web/docs/en-US/reference/configuration.html +3 -3
  269. package/web/docs/en-US/reference/keyboard-shortcuts.html +3 -3
  270. package/web/docs/en-US/reference/limits.html +3 -3
  271. package/web/docs/en-US/reference/ports-paths-data.html +3 -3
  272. package/web/docs/en-US/reference/status-and-errors.html +3 -3
  273. package/web/docs/en-US/runners/claude-code.html +3 -3
  274. package/web/docs/en-US/runners/codex.html +3 -3
  275. package/web/docs/en-US/runners/mar-agent.html +3 -3
  276. package/web/docs/en-US/runners/opencode.html +3 -3
  277. package/web/docs/en-US/runners/overview.html +3 -3
  278. package/web/docs/en-US/runners/runner-troubleshooting.html +3 -3
  279. package/web/docs/en-US/troubleshooting/node-offline.html +3 -3
  280. package/web/docs/en-US/troubleshooting/quick-diagnosis.html +3 -3
  281. package/web/docs/en-US/troubleshooting/session-run.html +3 -3
  282. package/web/docs/en-US/troubleshooting/terminal.html +3 -3
  283. package/web/docs/en-US/troubleshooting/workspace-files.html +3 -3
  284. package/web/docs/en-US/workbench/composer.html +3 -3
  285. package/web/docs/en-US/workbench/context-and-plan.html +3 -3
  286. package/web/docs/en-US/workbench/conversation.html +3 -3
  287. package/web/docs/en-US/workbench/file-reference-and-attachment.html +3 -3
  288. package/web/docs/en-US/workbench/files.html +3 -3
  289. package/web/docs/en-US/workbench/git-changes.html +3 -3
  290. package/web/docs/en-US/workbench/git-history.html +3 -3
  291. package/web/docs/en-US/workbench/hosted-conversations.html +3 -3
  292. package/web/docs/en-US/workbench/mobile.html +3 -3
  293. package/web/docs/en-US/workbench/navigation.html +3 -3
  294. package/web/docs/en-US/workbench/sessions.html +3 -3
  295. package/web/docs/en-US/workbench/skills.html +5 -5
  296. package/web/docs/en-US/workbench/terminal.html +3 -3
  297. package/web/docs/getting-started/connect-node.html +3 -3
  298. package/web/docs/getting-started/first-agent-session.html +3 -3
  299. package/web/docs/getting-started/first-login.html +3 -3
  300. package/web/docs/getting-started/next-steps.html +3 -3
  301. package/web/docs/getting-started/npm-quick-start.html +6 -6
  302. package/web/docs/getting-started/overview.html +3 -3
  303. package/web/docs/getting-started/prerequisites.html +3 -3
  304. package/web/docs/getting-started/register-workspace.html +3 -3
  305. package/web/docs/getting-started/server-installation.html +3 -3
  306. package/web/docs/hashmap.json +1 -1
  307. package/web/docs/operations/marctl.html +3 -3
  308. package/web/docs/reference/configuration.html +3 -3
  309. package/web/docs/reference/keyboard-shortcuts.html +3 -3
  310. package/web/docs/reference/limits.html +3 -3
  311. package/web/docs/reference/ports-paths-data.html +3 -3
  312. package/web/docs/reference/status-and-errors.html +3 -3
  313. package/web/docs/runners/claude-code.html +3 -3
  314. package/web/docs/runners/codex.html +3 -3
  315. package/web/docs/runners/mar-agent.html +3 -3
  316. package/web/docs/runners/opencode.html +3 -3
  317. package/web/docs/runners/overview.html +3 -3
  318. package/web/docs/runners/runner-troubleshooting.html +3 -3
  319. package/web/docs/troubleshooting/node-offline.html +3 -3
  320. package/web/docs/troubleshooting/quick-diagnosis.html +3 -3
  321. package/web/docs/troubleshooting/session-run.html +3 -3
  322. package/web/docs/troubleshooting/terminal.html +3 -3
  323. package/web/docs/troubleshooting/workspace-files.html +3 -3
  324. package/web/docs/workbench/composer.html +3 -3
  325. package/web/docs/workbench/context-and-plan.html +3 -3
  326. package/web/docs/workbench/conversation.html +3 -3
  327. package/web/docs/workbench/file-reference-and-attachment.html +3 -3
  328. package/web/docs/workbench/files.html +3 -3
  329. package/web/docs/workbench/git-changes.html +3 -3
  330. package/web/docs/workbench/git-history.html +3 -3
  331. package/web/docs/workbench/hosted-conversations.html +3 -3
  332. package/web/docs/workbench/mobile.html +3 -3
  333. package/web/docs/workbench/navigation.html +3 -3
  334. package/web/docs/workbench/sessions.html +3 -3
  335. package/web/docs/workbench/skills.html +5 -5
  336. package/web/docs/workbench/terminal.html +3 -3
  337. package/web/index.html +1 -1
  338. package/web/service-worker.js +1 -1
  339. package/web/web-version.json +1 -1
  340. package/web/assets/NodeManagementPage-8rxZ_6Zt.js +0 -1
  341. package/web/assets/NodeManagementPage-Ccod7oYU.js +0 -1
  342. package/web/assets/SecretManagementPage-CdgTv3Ov.js +0 -1
  343. package/web/assets/SkillCenterPage-93Mc7S1A.js +0 -1
  344. package/web/assets/SystemConfigurationPage-Dg5txhny.js +0 -1
  345. package/web/assets/WorkspaceManagementPage-D_xOZ93I.js +0 -1
  346. package/web/assets/WorkspaceManagementPage-K7-IdW3A.js +0 -1
  347. package/web/assets/channel-Df00MEsi.js +0 -1
  348. package/web/assets/classDiagram-CYGNFDIV-BkPukKVs.js +0 -1
  349. package/web/assets/classDiagram-v2-TLXNO2FR-BkPukKVs.js +0 -1
  350. package/web/assets/infoDiagram-FKFFQAWI-DMowyzbG.js +0 -2
  351. package/web/assets/stateDiagram-v2-IH3M54BS-BEZ0_9G2.js +0 -1
  352. package/web/assets/swimlanesDiagram-JKAHXJPX-2keKlibd.js +0 -8
  353. package/web/docs/assets/administration_license.md.CdgtKnVd.js +0 -1
  354. package/web/docs/assets/chunks/@localSearchIndexen-US.BmMs0yM1.js +0 -1
  355. package/web/docs/assets/chunks/@localSearchIndexroot.BUqMaw8-.js +0 -1
  356. package/web/docs/assets/en-US_administration_license.md.jmAMVJjC.js +0 -1
  357. package/web/docs/assets/en-US_workbench_skills.md.C4xlXyjC.js +0 -1
  358. package/web/docs/assets/workbench_skills.md.rWZ_VuoB.js +0 -1
@@ -12,6 +12,7 @@ export async function startLocalNode(root, config, bootstrap, stopTimeoutMs = 45
12
12
  const path = join(data, 'node.json');
13
13
  await mkdir(data, { recursive: true, mode: 0o700 });
14
14
  await mkdir(workspace, { recursive: true, mode: 0o700 });
15
+ let created = false;
15
16
  try {
16
17
  await readFile(path, 'utf8');
17
18
  }
@@ -29,6 +30,7 @@ export async function startLocalNode(root, config, bootstrap, stopTimeoutMs = 45
29
30
  registrationToken: token
30
31
  }, null, 2) + '\n', { mode: 0o600, flag: 'wx' });
31
32
  await link(temporary, path);
33
+ created = true;
32
34
  }
33
35
  finally {
34
36
  await unlink(temporary).catch(() => { });
@@ -39,13 +41,29 @@ export async function startLocalNode(root, config, bootstrap, stopTimeoutMs = 45
39
41
  nodeConfig === null ||
40
42
  Array.isArray(nodeConfig) ||
41
43
  typeof nodeConfig['serverUrl'] !== 'string')
42
- throw new Error('QUICK_START_NODE_CONFIG_INVALID');
44
+ throw Object.assign(new Error('QUICK_START_NODE_CONFIG_INVALID'), {
45
+ code: 'QUICK_START_NODE_CONFIG_INVALID'
46
+ });
43
47
  const record = nodeConfig;
48
+ const nonempty = (value) => typeof value === 'string' && value.trim().length > 0;
49
+ const hasIdentity = nonempty(record['nodeId']) && nonempty(record['credential']);
50
+ if (!hasIdentity && (record['nodeId'] !== undefined || record['credential'] !== undefined))
51
+ throw Object.assign(new Error('QUICK_START_NODE_CONFIG_INVALID'), {
52
+ code: 'QUICK_START_NODE_CONFIG_INVALID'
53
+ });
54
+ if (!hasIdentity && !nonempty(record['registrationToken']))
55
+ throw Object.assign(new Error('QUICK_START_NODE_CONFIG_INVALID'), {
56
+ code: 'QUICK_START_NODE_CONFIG_INVALID'
57
+ });
58
+ const token = !created && !hasIdentity
59
+ ? (await bootstrap.issue(record['registrationToken'])).token
60
+ : undefined;
44
61
  const serverUrl = `http://127.0.0.1:${config.serverPort}`;
45
- if (record['serverUrl'] !== serverUrl) {
62
+ if (record['serverUrl'] !== serverUrl ||
63
+ (token !== undefined && token !== record['registrationToken'])) {
46
64
  const temporary = `${path}.${randomUUID()}.tmp`;
47
65
  try {
48
- await writeFile(temporary, `${JSON.stringify({ ...record, serverUrl }, null, 2)}\n`, {
66
+ await writeFile(temporary, `${JSON.stringify({ ...record, serverUrl, ...(token === undefined ? {} : { registrationToken: token }) }, null, 2)}\n`, {
49
67
  mode: 0o600,
50
68
  flag: 'wx'
51
69
  });
@@ -128,8 +128,17 @@ export async function runQuickStart(args) {
128
128
  console.error(cliText('quickNodeUnavailable'));
129
129
  }
130
130
  }
131
- catch {
132
- console.error(cliText('quickNodeUnavailable'));
131
+ catch (error) {
132
+ if (error instanceof Error &&
133
+ 'code' in error &&
134
+ error.code === 'QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED')
135
+ console.error(cliText('quickNodeBootstrapRecoveryRequired'));
136
+ else if (error instanceof Error &&
137
+ 'code' in error &&
138
+ error.code === 'QUICK_START_NODE_CONFIG_INVALID')
139
+ console.error(cliText('quickNodeInstallFailed', { code: error.code }));
140
+ else
141
+ console.error(cliText('quickNodeUnavailable'));
133
142
  }
134
143
  if (mysqlExitedDuringNodeStartup)
135
144
  throw new Error('QUICK_START_MYSQL_EXITED');
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myagentroam/protocol",
3
- "version": "0.13.4",
3
+ "version": "0.13.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/myagentroam/mar.git",
@@ -29,7 +29,7 @@ export class McpService {
29
29
  const rows = await this.sourceRows(actorUserId);
30
30
  return Promise.all(rows.map(async (row) => {
31
31
  const source = sourceSummary(row);
32
- const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(source.scope, source.ownerUserId ?? actorUserId, source.organizationId));
32
+ const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(source.scope, source.ownerUserId ?? actorUserId, source.organizationId, source.builtIn));
33
33
  return { ...source, manageable: result.allowed };
34
34
  }));
35
35
  }
@@ -327,7 +327,7 @@ export class McpService {
327
327
  }
328
328
  async assertManageRow(actorUserId, row) {
329
329
  const scope = String(row['scope']);
330
- const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(scope, Number(row['owner_user_id']), Number(row['owner_organization_id'])));
330
+ const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(scope, Number(row['owner_user_id']), Number(row['owner_organization_id']), Boolean(row['built_in'])));
331
331
  if (!result.allowed)
332
332
  throw new Error('MCP_SOURCE_FORBIDDEN');
333
333
  }
@@ -436,7 +436,9 @@ function sourceSummary(row) {
436
436
  manageable: false
437
437
  };
438
438
  }
439
- function scopeContext(scope, userId, organizationId) {
439
+ function scopeContext(scope, userId, organizationId, builtIn = false) {
440
+ if (scope === 'ENTERPRISE' && builtIn)
441
+ return { ownerType: 'SYSTEM' };
440
442
  if (scope === 'PERSONAL')
441
443
  return { ownerType: 'PERSONAL', ownerUserId: userId };
442
444
  if (scope === 'ORGANIZATION')
@@ -24,6 +24,11 @@ export declare class MysqlNodeIdentityStorage {
24
24
  token: string;
25
25
  expiresAt: number;
26
26
  }>;
27
+ /** Recover only an unused personal token; never infer a lost registration result. */
28
+ recoverPersonalNodeRegistrationToken(token: string, userId: number, ttlMs: number): Promise<{
29
+ token: string;
30
+ expiresAt: number;
31
+ } | undefined>;
27
32
  registerNode(token: string, input: {
28
33
  readonly metadata: string;
29
34
  }, registeredAddress?: string): Promise<{
@@ -65,6 +65,37 @@ export class MysqlNodeIdentityStorage {
65
65
  }
66
66
  return { token, expiresAt };
67
67
  }
68
+ /** Recover only an unused personal token; never infer a lost registration result. */
69
+ async recoverPersonalNodeRegistrationToken(token, userId, ttlMs) {
70
+ const connection = await this.raw.getConnection();
71
+ try {
72
+ await connection.beginTransaction();
73
+ const [rows] = await connection.execute(`SELECT expires_at,display_name FROM node_registration_tokens
74
+ WHERE token_hash=? AND used_at IS NULL AND created_by_user_id=?
75
+ AND owner_type='PERSONAL' AND owner_user_id=? AND owner_organization_id IS NULL FOR UPDATE`, [sha256(token), userId, userId]);
76
+ const row = rows[0];
77
+ if (!row) {
78
+ await connection.rollback();
79
+ return undefined;
80
+ }
81
+ const expiresAt = Number(row['expires_at']);
82
+ const result = expiresAt > this.now()
83
+ ? { token, expiresAt }
84
+ : await this.createNodeRegistrationToken(userId, ttlMs, { ownerType: 'PERSONAL', ownerUserId: userId }, row['display_name'] == null ? null : String(row['display_name']), connection);
85
+ // Keep the expired, unusable row so a failed local file write can retry safely.
86
+ await connection.commit();
87
+ commitMysqlAudits(connection);
88
+ return result;
89
+ }
90
+ catch (error) {
91
+ discardMysqlAudits(connection);
92
+ await connection.rollback();
93
+ throw error;
94
+ }
95
+ finally {
96
+ connection.release();
97
+ }
98
+ }
68
99
  async registerNode(token, input, registeredAddress = 'unknown') {
69
100
  const connection = await this.raw.getConnection();
70
101
  try {
@@ -15,7 +15,7 @@ export class SkillSourceService {
15
15
  const rows = await this.sourceRows(actorUserId);
16
16
  return Promise.all(rows.map(async (row) => {
17
17
  const summary = sourceSummary(row);
18
- const authorization = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(summary.scope, summary.ownerUserId ?? actorUserId, summary.organizationId));
18
+ const authorization = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(summary.scope, summary.ownerUserId ?? actorUserId, summary.organizationId, summary.builtIn));
19
19
  return { ...summary, manageable: authorization.allowed };
20
20
  }));
21
21
  }
@@ -166,12 +166,14 @@ export class SkillSourceService {
166
166
  const scope = row['scope'];
167
167
  if (scope !== 'ENTERPRISE' && scope !== 'ORGANIZATION' && scope !== 'PERSONAL')
168
168
  throw new Error('SKILL_SOURCE_INVALID');
169
- const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(scope, Number(row['owner_user_id']), Number(row['owner_organization_id'])));
169
+ const result = await this.authorization.authorize(actorUserId, 'SKILL_SOURCE_MANAGE', scopeContext(scope, Number(row['owner_user_id']), Number(row['owner_organization_id']), Boolean(row['built_in'])));
170
170
  if (!result.allowed)
171
171
  throw new Error('SKILL_SOURCE_FORBIDDEN');
172
172
  }
173
173
  }
174
- function scopeContext(scope, actorUserId, organizationId) {
174
+ function scopeContext(scope, actorUserId, organizationId, builtIn = false) {
175
+ if (scope === 'ENTERPRISE' && builtIn)
176
+ return { ownerType: 'SYSTEM' };
175
177
  if (scope === 'PERSONAL')
176
178
  return { ownerType: 'PERSONAL', ownerUserId: actorUserId };
177
179
  if (scope === 'ORGANIZATION') {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myagentroam/server-core",
3
- "version": "0.13.4",
3
+ "version": "0.13.6",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "files": [
@@ -638,7 +638,7 @@
638
638
  },
639
639
  "dependencies": {
640
640
  "@fastify/websocket": "^11.3.0",
641
- "@myagentroam/protocol": "0.13.4",
641
+ "@myagentroam/protocol": "0.13.6",
642
642
  "fastify": "^5.1.0",
643
643
  "mysql2": "^3.23.4",
644
644
  "nodemailer": "^10.0.11",
@@ -8,6 +8,7 @@ export declare const cliMessagesEnUS: {
8
8
  readonly quickNodeNotPrepared: "The Server Node dependency is unavailable. Check the npm installation or disable the local Node with --no-node.";
9
9
  readonly quickNodeInstallFailed: "The local Node operation failed ({code}). Check the Node logs and configuration.";
10
10
  readonly quickNodeOnline: "Local Node is online.";
11
+ readonly quickNodeBootstrapRecoveryRequired: "Local Node registration cannot be safely recovered (QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED). The token was consumed or its state is unknown. No new Node was registered. Keep node-data/node.json and restore its existing identity from a backup or resolve the previous registration before registering again.";
11
12
  readonly quickNodeUnavailable: "Local Node is not online. Check the Node logs and configuration; registration is not retried automatically.";
12
13
  readonly quickNodeSupervisorExited: "Local Node Supervisor exited unexpectedly. The management page remains available; check the Node logs.";
13
14
  readonly quickSearchDisabled: "Local search is unavailable on this platform and has been disabled; an external search endpoint can be configured later.";
@@ -8,6 +8,7 @@ export const cliMessagesEnUS = {
8
8
  quickNodeNotPrepared: 'The Server Node dependency is unavailable. Check the npm installation or disable the local Node with --no-node.',
9
9
  quickNodeInstallFailed: 'The local Node operation failed ({code}). Check the Node logs and configuration.',
10
10
  quickNodeOnline: 'Local Node is online.',
11
+ quickNodeBootstrapRecoveryRequired: 'Local Node registration cannot be safely recovered (QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED). The token was consumed or its state is unknown. No new Node was registered. Keep node-data/node.json and restore its existing identity from a backup or resolve the previous registration before registering again.',
11
12
  quickNodeUnavailable: 'Local Node is not online. Check the Node logs and configuration; registration is not retried automatically.',
12
13
  quickNodeSupervisorExited: 'Local Node Supervisor exited unexpectedly. The management page remains available; check the Node logs.',
13
14
  quickSearchDisabled: 'Local search is unavailable on this platform and has been disabled; an external search endpoint can be configured later.',
@@ -8,6 +8,7 @@ export declare const cliMessagesZhCN: {
8
8
  readonly quickNodeNotPrepared: "Server 的 Node 依赖不可用,请检查 npm 安装或使用 --no-node 禁用本机 Node。";
9
9
  readonly quickNodeInstallFailed: "本机 Node 操作失败({code})。请检查 Node 日志与配置。";
10
10
  readonly quickNodeOnline: "本机 Node 已上线。";
11
+ readonly quickNodeBootstrapRecoveryRequired: "无法安全恢复本机 Node 注册(QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED):令牌已使用或状态不明,未重复登记。请保留 node-data/node.json,从备份恢复已有身份,或核对并处理上次登记后再注册。";
11
12
  readonly quickNodeUnavailable: "本机 Node 尚未上线。请检查 Node 日志与配置;注册不会自动重试。";
12
13
  readonly quickNodeSupervisorExited: "本机 Node Supervisor 意外退出。管理页面仍可访问,请检查 Node 日志。";
13
14
  readonly quickSearchDisabled: "此平台无法使用本地搜索,已禁用;之后可配置外部搜索地址。";
@@ -8,6 +8,7 @@ export const cliMessagesZhCN = {
8
8
  quickNodeNotPrepared: 'Server 的 Node 依赖不可用,请检查 npm 安装或使用 --no-node 禁用本机 Node。',
9
9
  quickNodeInstallFailed: '本机 Node 操作失败({code})。请检查 Node 日志与配置。',
10
10
  quickNodeOnline: '本机 Node 已上线。',
11
+ quickNodeBootstrapRecoveryRequired: '无法安全恢复本机 Node 注册(QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED):令牌已使用或状态不明,未重复登记。请保留 node-data/node.json,从备份恢复已有身份,或核对并处理上次登记后再注册。',
11
12
  quickNodeUnavailable: '本机 Node 尚未上线。请检查 Node 日志与配置;注册不会自动重试。',
12
13
  quickNodeSupervisorExited: '本机 Node Supervisor 意外退出。管理页面仍可访问,请检查 Node 日志。',
13
14
  quickSearchDisabled: '此平台无法使用本地搜索,已禁用;之后可配置外部搜索地址。',
@@ -7,9 +7,13 @@ export declare function createQuickStartNodeBootstrap(input: {
7
7
  token: string;
8
8
  expiresAt: number;
9
9
  }>;
10
+ readonly recoverPersonalNodeRegistrationToken: (token: string, userId: number, ttlMs: number) => Promise<{
11
+ token: string;
12
+ expiresAt: number;
13
+ } | undefined>;
10
14
  readonly isNodeConnected: (nodeId: string) => boolean;
11
15
  }): {
12
- issue(): Promise<{
16
+ issue(previousToken?: string): Promise<{
13
17
  token: string;
14
18
  expiresAt: number;
15
19
  }>;
@@ -2,7 +2,7 @@
2
2
  export function createQuickStartNodeBootstrap(input) {
3
3
  let attempted = false;
4
4
  return {
5
- async issue() {
5
+ async issue(previousToken) {
6
6
  if (attempted)
7
7
  throw new Error('QUICK_START_NODE_BOOTSTRAP_ALREADY_USED');
8
8
  attempted = true;
@@ -11,6 +11,14 @@ export function createQuickStartNodeBootstrap(input) {
11
11
  throw new Error('QUICK_START_NODE_ADMIN_UNAVAILABLE');
12
12
  const ownership = { ownerType: 'PERSONAL', ownerUserId: userId };
13
13
  await input.assertOwnershipSelection(userId, ownership);
14
+ if (previousToken !== undefined) {
15
+ const recovered = await input.recoverPersonalNodeRegistrationToken(previousToken, userId, 600_000);
16
+ if (!recovered)
17
+ throw Object.assign(new Error('QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED'), {
18
+ code: 'QUICK_START_NODE_BOOTSTRAP_RECOVERY_REQUIRED'
19
+ });
20
+ return recovered;
21
+ }
14
22
  return input.createNodeRegistrationToken(userId, 600_000, ownership, 'Local Node');
15
23
  },
16
24
  online: input.isNodeConnected
@@ -712,6 +712,7 @@ export async function composeServerApplication(options, storage, quickStart = fa
712
712
  isPersonalAdmin: (userId) => authorization.isPersonalAdmin(userId),
713
713
  assertOwnershipSelection: (userId, ownership) => resources.assertOwnershipSelection(userId, ownership),
714
714
  createNodeRegistrationToken: (userId, ttlMs, ownership, name) => database.createNodeRegistrationToken(userId, ttlMs, ownership, name),
715
+ recoverPersonalNodeRegistrationToken: (token, userId, ttlMs) => database.recoverPersonalNodeRegistrationToken(token, userId, ttlMs),
715
716
  isNodeConnected: (nodeId) => nodeControl.isNodeConnected(nodeId) && !nodeControl.isNodeUpgradeOnly(nodeId)
716
717
  })
717
718
  }
@@ -7,8 +7,7 @@ export function managementRequirement(method, route) {
7
7
  route.startsWith('/api/enterprise/users') ||
8
8
  route.startsWith('/api/organizations') ||
9
9
  route.startsWith('/api/resource-grants') ||
10
- route.startsWith('/api/oauth-providers') ||
11
- route.startsWith('/api/system-settings')) {
10
+ route.startsWith('/api/oauth-providers')) {
12
11
  return 'ENTERPRISE_WRITABLE';
13
12
  }
14
13
  if (route === '/api/node-registration-tokens' ||
@@ -19,6 +18,8 @@ export function managementRequirement(method, route) {
19
18
  route.startsWith('/api/workspaces/:workspaceId/mcps') ||
20
19
  route.startsWith('/api/nodes/:nodeId') ||
21
20
  route.startsWith('/api/environment-secrets') ||
21
+ route.startsWith('/api/system-settings') ||
22
+ route.startsWith('/api/skill-sources') ||
22
23
  route.startsWith('/api/mcp-sources') ||
23
24
  route.startsWith('/api/mcp-catalog')) {
24
25
  return 'WRITABLE';
@@ -79,6 +79,10 @@ export declare class MysqlServerDatabase {
79
79
  token: string;
80
80
  expiresAt: number;
81
81
  }>;
82
+ recoverPersonalNodeRegistrationToken(token: string, userId: number, ttlMs: number): Promise<{
83
+ token: string;
84
+ expiresAt: number;
85
+ } | undefined>;
82
86
  registerNode(token: string, input: {
83
87
  readonly metadata: string;
84
88
  }, registeredAddress?: string): Promise<{
@@ -366,6 +366,9 @@ export class MysqlServerDatabase {
366
366
  createNodeRegistrationToken(userId, ttlMs = 10 * 60 * 1000, ownership = { ownerType: 'PERSONAL', ownerUserId: userId }, displayName = null, connection) {
367
367
  return this.nodeIdentities.createNodeRegistrationToken(userId, ttlMs, ownership, displayName, connection);
368
368
  }
369
+ recoverPersonalNodeRegistrationToken(token, userId, ttlMs) {
370
+ return this.nodeIdentities.recoverPersonalNodeRegistrationToken(token, userId, ttlMs);
371
+ }
369
372
  registerNode(token, input, registeredAddress = 'unknown') {
370
373
  return this.nodeIdentities.registerNode(token, input, registeredAddress);
371
374
  }
@@ -19,7 +19,13 @@ export class AuthorizationService {
19
19
  context.ownerUserId === actorUserId &&
20
20
  this.matrix.grants.get('MEMBER')?.get(permissionId)?.has('PERSONAL') === true;
21
21
  const system = context.ownerType === 'SYSTEM' &&
22
- ['NODE_MANAGE', 'SKILL_SOURCE_MANAGE', 'LICENSE_READ', 'LICENSE_IMPORT'].includes(permissionId);
22
+ [
23
+ 'NODE_MANAGE',
24
+ 'SKILL_SOURCE_MANAGE',
25
+ 'SYSTEM_SETTINGS_MANAGE',
26
+ 'LICENSE_READ',
27
+ 'LICENSE_IMPORT'
28
+ ].includes(permissionId);
23
29
  return personal || system
24
30
  ? { allowed: true }
25
31
  : { allowed: false, reason: 'ENTERPRISE_LICENSE_REQUIRED' };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myagentroam-enterprise/server-implementation",
3
- "version": "0.13.4",
3
+ "version": "0.13.6",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "files": [
@@ -15,13 +15,13 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@fastify/websocket": "^11.3.0",
18
- "@myagentroam/protocol": "0.13.4",
18
+ "@myagentroam/protocol": "0.13.6",
19
19
  "fastify": "^5.1.0",
20
20
  "mysql2": "^3.23.4",
21
21
  "undici": "7.29.0",
22
22
  "ws": "^8.21.3",
23
23
  "zod": "^3.24.1",
24
- "@myagentroam/server-core": "0.13.4"
24
+ "@myagentroam/server-core": "0.13.6"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/ws": "^8.18.1"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myagentroam/server",
3
- "version": "0.13.4",
3
+ "version": "0.13.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/myagentroam/mar.git",
@@ -27,7 +27,7 @@
27
27
  "license": "tsx --conditions=development src/license.ts"
28
28
  },
29
29
  "dependencies": {
30
- "@myagentroam/node": "0.13.4",
30
+ "@myagentroam/node": "0.13.6",
31
31
  "@fastify/ajv-compiler": "4.0.6",
32
32
  "@fastify/error": "4.2.0",
33
33
  "@fastify/fast-json-stringify-compiler": "5.1.0",
@@ -35,9 +35,9 @@
35
35
  "@fastify/merge-json-schemas": "0.2.1",
36
36
  "@fastify/proxy-addr": "5.1.0",
37
37
  "@fastify/websocket": "11.3.0",
38
- "@myagentroam/protocol": "0.13.4",
39
- "@myagentroam/server-core": "0.13.4",
40
- "@myagentroam-enterprise/server-implementation": "0.13.4",
38
+ "@myagentroam/protocol": "0.13.6",
39
+ "@myagentroam/server-core": "0.13.6",
40
+ "@myagentroam-enterprise/server-implementation": "0.13.6",
41
41
  "@pinojs/redact": "0.4.0",
42
42
  "@types/node": "24.13.3",
43
43
  "abstract-logging": "2.0.1",
@@ -123,7 +123,7 @@
123
123
  "zod": "3.25.76"
124
124
  },
125
125
  "devDependencies": {
126
- "@myagentroam/web-console": "@myagentroam/web-console@file:///tmp/mar-server-candidate-srJsSU/source/mar-web-console"
126
+ "@myagentroam/web-console": "@myagentroam/web-console@file:///home/ubuntu/develop/my-agent-roam/test/runs/release-20261110-0930/tmp/mar-server-candidate-ERTqj0/source/mar-web-console"
127
127
  },
128
128
  "license": "LicenseRef-MAR-ESAL-1.0",
129
129
  "optionalDependencies": {},
@@ -1 +1 @@
1
- import{a as ve}from"./el-input-BBSbjFbs.js";import{E as Ee}from"./index-DuKtBO_u.js";import{E as Me}from"./el-date-picker-3YbpvR4-.js";import{E as he,a as ke}from"./el-descriptions-pbjjg_nj.js";import{u as we,m as Ie,E as ye}from"./mobile-dialog-return-service-3QafxIkr.js";import{E as Pe,a as _e}from"./el-table-column-BkxhVRss.js";import{d as Se,w as Ne,D as Re,N as Te,Y as Oe,E as F,F as De,u as t,o as v,b as T,G as k,H as l,t as e,g as s,q as r,s as y,I as p,p as w,O as G,v as I,P as Ce,a as O,c as m,K as Ae,_ as Ue}from"./index-BCZqekVb.js";import"./el-checkbox-D7B8QPnv.js";/* empty css */import{c as Le,p as ze,w as qe,a as X,M as xe}from"./ManagementPagination-2xmt9Zfx.js";import{M as D}from"./MarIcon-Bey6vvFS.js";import{m as Ve,r as Fe}from"./management-url-service-B2_kg7lH.js";import{f as ee}from"./time-presentation-DYGS-swy.js";import"./conversation-history-CUVjobW9.js";import{e as Ge}from"./error-presentation-CMcHjWH1.js";import"./use-form-common-props-CiMdMq_M.js";import"./el-select-BEIvaLbl.js";import"./_baseFindIndex-D7XfJLKM.js";import"./_baseIteratee-3ynz4yPF.js";import"./index-m9YdF02w.js";import"./advancedFormat-Bqm4Kq1b.js";import"./merge-DaI_T8rv.js";import"./isArrayLikeObject-DBTZh06Y.js";import"./last-DXTTfs9a.js";import"./BusyIndicator-DuQN1wm-.js";const ae={operation:["other","legacy"],"conversation.input":["session","send"],"admin.initialized":["authentication","initialize"],"login.succeeded":["authentication","signIn"],"login.failed":["authentication","signIn"],"oauth.login.succeeded":["oauth","signIn"],"oauth.login.failed":["oauth","signIn"],"login.rate.limited":["authentication","rateLimit"],"login.session.lru.evicted":["userSession","evict"],logout:["authentication","signOut"],"password.changed":["user","changePassword"],"password.reset":["user","resetPassword"],"password.reset.by.admin":["user","resetPassword"],"user.password.reset":["user","resetPassword"],"user.created.by.admin":["user","create"],"user.deleted.by.admin":["user","delete"],"user.session.revoked":["userSession","revoke"],"node.registration.token.created":["node","registrationToken"],"conversation.hosting.enable":["node","hostingEnable"],"conversation.hosting.disable":["node","hostingDisable"],"conversation.hosting.cleanup.execute":["node","hostingCleanup"],"conversation.hosting.storage.inspected":["node","storageInspect"],"conversation.hosting.cleanup.previewed":["node","cleanupPreview"],"resource.ownership.changed":["grant","ownership"],"workspace.sessions.cleanup":["session","cleanup"],"node.display.name.updated":["node","rename"],"node.display.name.cleared":["node","clearName"],"node.ownership.changed":["node","ownership"],"workspace.ownership.changed":["workspace","ownership"],"workspace.group.updated":["workspace","group"],"resource.grant":["grant","grant"],"resource.grant.created":["grant","grant"],"resource.grant.revoked":["grant","revoke"],"resource.ownership":["grant","ownership"],"conversation.hosting.enabled":["node","hostingEnable"],"conversation.hosting.disabled":["node","hostingDisable"],"conversation.hosting.cleanup.executed":["node","hostingCleanup"],"shared.conversation.input.accepted":["session","send"],"shared.conversation.input.rejected":["session","send"],"shared.conversation.queue.updated":["session","queueEdit"],"shared.conversation.queue.deleted":["session","queueDelete"],"shared.conversation.queue.reordered":["session","queueReorder"],"shared.conversation.queue.execute.requested":["session","queueExecute"],"workspace.queue.pause":["session","queuePause"],"workspace.queue.resume":["session","queueResume"],"session.interrupt.requested":["session","interruptRequest"],"session.interrupt":["session","interrupt"],"run.interrupt":["session","interruptRun"],"run.cancel":["session","cancelRun"],"run.approval.decide":["session","approval"],"approval.decided":["session","approval"],"run.user.input.responded":["session","inputResponse"],"session.command.execute":["session","command"],"runner.command.execute":["session","command"],"runner.defaults.save":["session","config"],"session.metadata.update":["session","metadata"],"session.config.update":["session","config"],"session.pin.move":["session","pin"],"session.schedule.save":["session","scheduleSave"],"session.schedule.remove":["session","scheduleRemove"],"session.schedule.proposal.resolve":["session","scheduleResolve"],"node.upgrade.request":["node","upgradeRequest"],"node.upgrade.cancel":["node","upgradeCancel"],"computer.use.enable":["node","computerEnable"],"computer.use.disable":["node","computerDisable"],"computer.use.enabled":["node","computerEnable"],"computer.use.disabled":["node","computerDisable"],"workspace.file.write":["workspace","fileWrite"],"workspace.files.mutate":["workspace","fileChange"],"workspace.files.upload.complete":["workspace","uploadComplete"],"workspace.files.upload.cancel":["workspace","uploadCancel"],"workspace.change.restore":["workspace","gitRestore"],"workspace.git.settings.update":["workspace","gitConfig"],"workspace.skills.git-exclude-repair":["workspace","repairSkill"],"terminal.open":["workspace","terminalOpen"],"terminal.command.open":["workspace","terminalOpen"],"terminal.close":["workspace","terminalClose"],"terminal.attach.authorize":["workspace","terminalOpen"],"terminal.connected":["workspace","terminalOpen"],"mail.test.executed":["mail","test"],"mar-agent.model.test":["model","test"],"node.skills.install":["node","installSkill"],"node.skills.remove":["node","removeSkill"],"node.mcps.install":["node","installMcp"],"node.mcps.remove":["node","removeMcp"],"workspace.skills.install":["workspace","installSkill"],"workspace.skills.remove":["workspace","removeSkill"],"workspace.mcps.install":["workspace","installMcp"],"workspace.mcps.remove":["workspace","removeMcp"],"node.registered":["node","register"],"node.revoked":["node","revoke"],"node.deleted":["node","delete"],"workspace.registered":["workspace","register"],"workspace.unregistered":["workspace","unregister"],"workspace.updated":["workspace","update"],"user.created":["user","create"],"user.updated":["user","update"],"user.deleted":["user","delete"],"organization.created":["organization","create"],"organization.renamed":["organization","rename"],"organization.moved":["organization","move"],"organization.deleted":["organization","delete"],"oauth.identity.linked":["oauth","bind"],"oauth.identity.unlinked":["oauth","unbind"],"oauth.identity.bound":["oauth","bind"],"oauth.identity.unbound":["oauth","unbind"],"license.import":["license","import"],"license.activated":["license","activate"],"license.replaced":["license","update"],"environment.secret.created":["secret","create"],"environment.secret.replaced":["secret","update"],"environment.secret.deleted":["secret","delete"],"system.setting.updated":["setting","update"],"session.rewind":["session","rewind"],"session.rollback":["session","rollback"],"session.remove":["session","remove"],"session.start":["session","start"],"session.create":["session","create"],"session.message":["session","send"],"run.user-input.respond":["session","inputResponse"],"model.created":["model","create"],"model.updated":["model","update"],"model.deleted":["model","delete"],"image.model.created":["imageModel","create"],"image.model.updated":["imageModel","update"],"image.model.deleted":["imageModel","delete"],"conversation.template.created":["template","create"],"conversation.template.updated":["template","update"],"conversation.template.published":["template","publish"],"conversation.template.archived":["template","archive"],"conversation.template.deleted":["template","delete"],"conversation.template.tested":["template","test"],"oauth.provider.created":["oauth","create"],"oauth.provider.updated":["oauth","update"],"oauth.provider.deleted":["oauth","delete"],"oauth.provider.tested":["oauth","test"],"credential.saved":["credential","save"],"credential.updated":["credential","update"],"credential.deleted":["credential","delete"],"credential.refreshed":["credential","refresh"],"credential.tested":["credential","test"],"skill.source.created":["skill","create"],"skill.source.updated":["skill","update"],"skill.source.deleted":["skill","delete"],"skill.catalog.created":["skill","create"],"skill.catalog.updated":["skill","update"],"skill.catalog.deleted":["skill","delete"],"skill.catalog.upgraded":["skill","upgrade"],"mcp.source.created":["mcp","create"],"mcp.source.updated":["mcp","update"],"mcp.source.deleted":["mcp","delete"],"mcp.catalog.created":["mcp","create"],"mcp.catalog.updated":["mcp","update"],"mcp.catalog.deleted":["mcp","delete"],"mcp.catalog.upgraded":["mcp","upgrade"]};function Qe(h){const E=h.eventType.replaceAll("_","."),b=Object.hasOwn(ae,E)?ae[E]:void 0;if(b){if(E==="workspace.files.mutate"){const f=h.metadata?.mutation,P={CREATE_FILE:"fileCreate",CREATE_DIRECTORY:"directoryCreate",RENAME:"fileRename",MOVE:"fileMove",DELETE:"fileDelete"};if(typeof f=="string"&&Object.hasOwn(P,f))return[b[0],P[f]]}return b}return["other","unknown"]}function te(h,E){const b=typeof E=="string"&&E.length>0?E:void 0,f=typeof h=="string"||typeof h=="number"?String(h):void 0;return b&&f&&b!==f?`${b} / ${f}`:b??f}const Be={"element-loading-custom-class":"mar-page-loading",class:"management-page audit-management"},je={class:"filter-row"},$e={class:"filter-field"},We={class:"table-actions"},Ke=Se({__name:"AuditManagementPage",props:{request:{type:Function}},setup(h){const E=h,b=Date.now(),f=[new Date(b-30*864e5),new Date(b)],P=Ve("audit",["from","to"]),C=Number(P.from),A=Number(P.to),_=O(Number.isSafeInteger(C)&&Number.isSafeInteger(A)&&C<=A?[new Date(C),new Date(A)]:f),o=O(),S=O(!1),N=O(!1);let U=0;Ne(_,a=>{const[n,u]=a??f;Fe("audit",{from:n.getTime(),to:u.getTime()})});const ne=m(()=>({SUCCESS:e("generated.auditManagementPage.success"),DENIED:e("generated.auditManagementPage.denied"),FAILED:e("generated.auditManagementPage.failed")})),Q=m(()=>({USER:e("generated.auditManagementPage.user2"),ORGANIZATION:e("generated.auditManagementPage.organization2"),ENTERPRISE:e("generated.auditManagementPage.enterprise"),NODE:e("audit.business.node"),WORKSPACE:e("audit.business.workspace"),SESSION:e("audit.business.session"),MODEL:e("audit.business.model"),IMAGE_MODEL:e("audit.business.imageModel"),TEMPLATE:e("audit.business.template"),SKILL:e("audit.business.skill"),SKILL_SOURCE:e("audit.targets.skillSource"),MCP:e("audit.business.mcp"),MCP_SOURCE:e("audit.targets.mcpSource"),ENVIRONMENT_SECRET:e("audit.business.secret"),CREDENTIAL:e("audit.business.credential"),SYSTEM_SETTING:e("audit.business.setting"),MAIL_TEMPLATE:e("audit.targets.mailTemplate"),LICENSE:e("audit.business.license"),FILE:e("audit.targets.file"),TERMINAL:e("audit.targets.terminal"),RUN:e("generated.auditManagementPage.run")})),oe=m(()=>({PASSWORD:e("generated.auditManagementPage.password"),OAUTH2:"OAuth 2.0",SYSTEM:e("generated.auditManagementPage.system")})),re=m(()=>({NEW_SESSION:e("generated.auditManagementPage.inputModeNewSession"),SEND:e("generated.auditManagementPage.inputModeSend"),CONTINUE:e("generated.auditManagementPage.inputModeContinue"),STEER:e("generated.auditManagementPage.inputModeSteer"),QUEUE:e("generated.auditManagementPage.inputModeQueue"),REPLACE_CURRENT:e("generated.auditManagementPage.inputModeReplaceCurrent"),RUN_NOW:e("generated.auditManagementPage.inputModeRunNow"),USER_INPUT_RESPONSE:e("generated.auditManagementPage.inputModeUserInputResponse"),EDIT_QUEUE:e("generated.auditManagementPage.inputModeEditQueue"),DELETE_QUEUE:e("generated.auditManagementPage.inputModeDeleteQueue"),REORDER_QUEUE:e("generated.auditManagementPage.inputModeReorderQueue"),EXECUTE_QUEUE:e("generated.auditManagementPage.inputModeExecuteQueue"),PAUSE_QUEUE:e("generated.auditManagementPage.inputModePauseQueue"),RESUME_QUEUE:e("generated.auditManagementPage.inputModeResumeQueue")})),se=m(()=>[{key:"requestId",label:e("generated.auditManagementPage.requestID")},{key:"operationId",label:e("generated.auditManagementPage.operationID")},{key:"sessionPublicId",label:e("generated.auditManagementPage.sessionPublicID")},{key:"eventType",label:e("audit.eventCode")},{key:"targetType",label:e("generated.auditManagementPage.targetType")},{key:"targetId",label:Q.value[o.value?.targetType??""]??e("audit.target")},{key:"organizationId",label:e("audit.business.organization")},{key:"nodeId",label:e("audit.business.node")},{key:"workspaceId",label:e("audit.business.workspace")},{key:"agentSessionId",label:e("audit.business.session")},{key:"targetUserId",label:e("audit.grantedUser")},{key:"targetOrganizationId",label:e("audit.grantedOrganization")},{key:"runId",label:e("generated.auditManagementPage.runID")},{key:"clientMessageId",label:e("generated.auditManagementPage.clientMessageID")},{key:"queueItemId",label:e("generated.auditManagementPage.queueItemID")},{key:"inputMode",label:e("generated.auditManagementPage.inputMode")}]),ie=m(()=>({RBAC_DENIED:e("generated.auditManagementPage.insufficientPermissions"),LICENSE_MANAGEMENT_FROZEN:e("generated.auditManagementPage.licenseManagementFrozen"),CSRF_INVALID:e("generated.auditManagementPage.requestValidationFailed"),ORIGIN_NOT_ALLOWED:e("generated.auditManagementPage.requestOriginNotAllowed")})),L=m(()=>{const a=new URLSearchParams({limit:String(X)}),[n,u]=_.value??f;return a.set("from",String(n.getTime())),a.set("to",String(u.getTime())),a}),i=Le({context:()=>L.value.toString(),key:a=>a.id,read:async a=>{const n=new URLSearchParams(L.value);return n.set("page",String(a)),ze(await E.request(`/api/audit-events?${n}`),"events")}});qe(i);const B=i.items,z=i.loading,q=m(()=>i.result.value!==void 0),de=m(()=>{const a=new URLSearchParams(L.value);return a.delete("limit"),a.set("format","csv"),`/api/audit-events/export?${a}`});function j(a){const[n,u]=Qe(a);return e("audit.operation",{resource:e(`audit.business.${n}`),action:e(`audit.actions.${u}`)})}const $=m(()=>{const a=o.value?.metadata?.before,n=o.value?.metadata?.after,u=a&&typeof a=="object"&&!Array.isArray(a)?a:{},d=n&&typeof n=="object"&&!Array.isArray(n)?n:{};return[...new Set([...Object.keys(u),...Object.keys(d)])].map(g=>({field:le.value[g]??g,before:W(u[g],g),after:W(d[g],g)}))}),le=m(()=>({name:e("audit.fields.name"),parentOrganizationId:e("audit.fields.parentOrganizationId"),organizationId:e("audit.fields.organizationId"),role:e("audit.fields.role"),enabled:e("audit.fields.enabled"),ownerType:e("audit.fields.ownerType"),ownerOrganizationId:e("audit.fields.ownerOrganizationId"),targetUserId:e("audit.fields.targetUserId"),targetOrganizationId:e("audit.fields.targetOrganizationId"),groupName:e("audit.fields.groupName"),version:e("audit.fields.version"),preserveGitConfig:e("audit.fields.preserveGitConfig"),model:e("audit.fields.model"),effort:e("audit.fields.effort"),runner:e("audit.fields.runner"),permissionMode:e("audit.fields.permissionMode"),featured:e("audit.fields.featured"),provider:e("audit.fields.provider")})),ue=m(()=>({ADMIN:e("audit.roleAdmin"),ORG_ADMIN:e("audit.roleOrgAdmin"),MEMBER:e("audit.roleMember")})),ce=m(()=>({PERSONAL:e("audit.scopePersonal"),ORGANIZATION:e("audit.scopeOrganization"),SYSTEM:e("audit.scopeSystem"),ENTERPRISE:e("audit.scopeEnterprise")}));function W(a,n){return a==null?"—":typeof a=="boolean"?e(n==="enabled"?a?"audit.flagEnabled":"audit.flagDisabled":a?"audit.yes":"audit.no"):typeof a=="string"&&n==="role"?ue.value[a]??a:typeof a=="string"&&n==="ownerType"?ce.value[a]??a:typeof a=="object"?JSON.stringify(a):String(a)}function K(a,n){if(n==="targetId"&&(a.targetType==="NODE"&&a.targetId===a.nodeId||a.targetType==="WORKSPACE"&&a.targetId===a.workspaceId||a.targetType==="SESSION"&&a.targetId===a.agentSessionId||a.targetType==="ORGANIZATION"&&a.targetId===String(a.organizationId)))return;const u={targetId:a.targetName,nodeId:a.metadata?.nodeName??(a.targetType==="NODE"&&a.targetId===a.nodeId?a.targetName:void 0),workspaceId:a.metadata?.workspaceName??(a.targetType==="WORKSPACE"&&a.targetId===a.workspaceId?a.targetName:void 0),organizationId:a.metadata?.organizationName??(a.targetType==="ORGANIZATION"&&a.targetId===String(a.organizationId)?a.targetName:void 0),agentSessionId:a.metadata?.sessionName??a.conversationPayload?.conversationTitle??(a.targetType==="SESSION"?a.targetName:void 0),targetUserId:a.metadata?.targetUserName,targetOrganizationId:a.metadata?.targetOrganizationName},d=a[n]??a.metadata?.[n];return n in u?te(d,u[n]):n==="targetType"&&typeof d=="string"?Q.value[d]??d:n==="inputMode"&&typeof d=="string"?re.value[d]??d:d??void 0}function ge(a){return a===null?"":ie.value[a]??a}function Z(a){return ne.value[a]}function Y(a){return a==="FAILED"?"danger":a==="DENIED"?"warning":"info"}async function pe(a){const n=++U;o.value=a,S.value=!0;const u=()=>n===U&&o.value?.id===a.id;try{const d=await E.request(`/api/audit-events/${encodeURIComponent(a.id)}`,{cache:"no-store"});u()&&(o.value=d)}catch(d){if(!u())return;Ae(d instanceof Error?Ge(d):e("generated.auditManagementPage.unableToLoadAuditEvents"),"error",d)}finally{u()&&(S.value=!1)}}function R(){U+=1,o.value=void 0,S.value=!1}function x(){return i.load(!0)}async function me(){N.value=!0;try{await x()}finally{N.value=!1}}return Re(()=>{i.start(),x()}),Te(()=>i.dispose()),Oe(R),(a,n)=>{const u=Me,d=ve,g=Pe,H=Ee,J=_e,M=ke,fe=he,be=ye,V=De;return F((v(),T("section",Be,[k("div",je,[k("label",$e,[k("span",null,l(t(e)("generated.auditManagementPage.timeRange")),1),s(u,{modelValue:_.value,"onUpdate:modelValue":n[0]||(n[0]=c=>_.value=c),type:"datetimerange",clearable:!1,"range-separator":t(e)("generated.auditManagementPage.to"),"start-placeholder":t(e)("generated.auditManagementPage.startTime"),"end-placeholder":t(e)("generated.auditManagementPage.endTime"),class:"audit-range-picker",onChange:n[1]||(n[1]=c=>x()),"prefix-icon":t(y)("calendar"),"clear-icon":t(y)("clear-input")},{"prev-month":r(()=>[s(D,{name:"chevron-left"})]),"next-month":r(()=>[s(D,{name:"chevron-right"})]),"prev-year":r(()=>[s(D,{name:"chevrons-left"})]),"next-year":r(()=>[s(D,{name:"chevrons-right"})]),_:1},8,["modelValue","range-separator","start-placeholder","end-placeholder","prefix-icon","clear-icon"])])]),k("div",We,[s(d,{icon:t(y)("refresh"),loading:N.value&&q.value,onClick:me,"loading-icon":t(y)("loading-action")},{default:r(()=>[p(l(t(e)("generated.auditManagementPage.refresh")),1)]),_:1},8,["icon","loading","loading-icon"]),s(d,{tag:"a",icon:t(y)("download"),href:de.value},{default:r(()=>[p(l(t(e)("generated.auditManagementPage.exportCSV")),1)]),_:1},8,["icon","href"])]),F((v(),w(J,{class:"clickable-rows",data:t(B),"row-key":"id",onRowClick:pe},{default:r(()=>[s(g,{label:t(e)("generated.auditManagementPage.time"),"min-width":"180"},{default:r(({row:c})=>[p(l(t(ee)(c.occurredAt)),1)]),_:1},8,["label"]),s(g,{label:t(e)("audit.target"),"min-width":"180"},{default:r(({row:c})=>[p(l(c.targetName||c.targetId||"—"),1)]),_:1},8,["label"]),s(g,{label:t(e)("generated.auditManagementPage.event"),"min-width":"220"},{default:r(({row:c})=>[p(l(j(c)),1)]),_:1},8,["label"]),s(g,{prop:"actorUsername",label:t(e)("generated.auditManagementPage.actor"),"min-width":"130"},null,8,["label"]),s(g,{label:t(e)("generated.auditManagementPage.result"),width:"100"},{default:r(({row:c})=>[s(H,{type:Y(c.result),effect:"plain"},{default:r(()=>[p(l(Z(c.result)),1)]),_:2},1032,["type"])]),_:1},8,["label"])]),_:1},8,["data"])),[[V,t(z)&&q.value&&!t(i).loadingMore.value&&!N.value&&!t(i).failure.value]]),s(xe,{total:t(i).total.value,page:t(i).page.value,"page-size":t(X),mobile:t(i).mobileViewport.value,"mobile-visible-count":t(B).length,"has-more":t(i).hasMore.value,loading:t(z),"loading-more":t(i).loadingMore.value,failed:t(i).failure.value!==void 0,"incremental-failed":t(i).failure.value?.incremental===!0,error:t(i).failure.value?.error,"context-key":t(i).contextKey.value,onRetry:t(i).retry,onPage:t(i).setPage,onLoadMore:t(i).loadMore},null,8,["total","page","page-size","mobile","mobile-visible-count","has-more","loading","loading-more","failed","incremental-failed","error","context-key","onRetry","onPage","onLoadMore"]),o.value!==void 0?(v(),w(be,{key:0,onVnodeMounted:t(Ie),onVnodeBeforeUnmount:t(we),"model-value":o.value!==void 0,title:t(e)("generated.auditManagementPage.auditDetails"),width:"min(720px, calc(100vw - 32px))",onClose:R,"onUpdate:modelValue":R,"close-icon":t(y)("close")},{footer:r(()=>[s(d,{onClick:R},{default:r(()=>[p(l(t(e)("common.close")),1)]),_:1})]),default:r(()=>[o.value?F((v(),w(fe,{key:0,class:"mar-detail-descriptions",column:1,border:""},{default:r(()=>[s(M,{label:t(e)("generated.auditManagementPage.auditEventId")},{default:r(()=>[k("code",null,l(o.value.id),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.event2")},{default:r(()=>[p(l(j(o.value)),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.time2")},{default:r(()=>[p(l(t(ee)(o.value.occurredAt)),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.actor2")},{default:r(()=>[p(l(t(te)(o.value.actorUserId,o.value.actorUsername)??"—"),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.authentication2")},{default:r(()=>[p(l(oe.value[o.value.authenticationMethod]??o.value.authenticationMethod)+l(o.value.providerId?` · ${o.value.providerId}`:""),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.result2")},{default:r(()=>[s(H,{type:Y(o.value.result),effect:"plain"},{default:r(()=>[p(l(Z(o.value.result)),1)]),_:1},8,["type"]),o.value.result!=="SUCCESS"&&o.value.errorCode?(v(),T(G,{key:0},[p(" · "+l(t(e)("generated.auditManagementPage.errorCode"))+": ",1),k("code",null,l(ge(o.value.errorCode)),1)],64)):I("",!0)]),_:1},8,["label"]),o.value.conversationPayload?(v(),w(M,{key:0,label:t(e)("generated.auditManagementPage.userMessage")},{default:r(()=>[k("pre",null,l(o.value.conversationPayload.userMessage),1)]),_:1},8,["label"])):I("",!0),(v(!0),T(G,null,Ce(se.value,c=>(v(),T(G,{key:c.key},[K(o.value,c.key)!==void 0?(v(),w(M,{key:0,label:c.label},{default:r(()=>[p(l(K(o.value,c.key)),1)]),_:2},1032,["label"])):I("",!0)],64))),128)),$.value.length?(v(),w(M,{key:1,label:t(e)("audit.changes")},{default:r(()=>[s(J,{data:$.value},{default:r(()=>[s(g,{prop:"field",label:t(e)("audit.field")},null,8,["label"]),s(g,{prop:"before",label:t(e)("audit.before")},null,8,["label"]),s(g,{prop:"after",label:t(e)("audit.after")},null,8,["label"])]),_:1},8,["data"])]),_:1},8,["label"])):I("",!0),Object.keys(o.value.metadata||{}).length>0?(v(),w(M,{key:2,label:t(e)("common.metadata")},{default:r(()=>[k("pre",null,l(JSON.stringify(o.value.metadata||{},null,2)),1)]),_:1},8,["label"])):I("",!0)]),_:1})),[[V,S.value]]):I("",!0)]),_:1},8,["onVnodeMounted","onVnodeBeforeUnmount","model-value","title","close-icon"])):I("",!0)])),[[V,t(z)&&!q.value&&!t(i).failure.value]])}}}),ha=Ue(Ke,[["__scopeId","data-v-7a6cc863"]]);export{ha as default};
1
+ import{a as ve}from"./el-input-DRF3bOe1.js";import{E as Ee}from"./index-B7tnVSor.js";import{E as Me}from"./el-date-picker-Lb4E2Nje.js";import{E as he,a as ke}from"./el-descriptions-B48GJeGA.js";import{u as we,m as Ie,E as ye}from"./mobile-dialog-return-service-Csexw-by.js";import{E as Pe,a as _e}from"./el-table-column-BRybrdLI.js";import{d as Se,w as Ne,D as Re,N as Te,Y as Oe,E as F,F as De,u as t,o as v,b as T,G as k,H as l,t as e,g as s,q as r,s as y,I as p,p as w,O as G,v as I,P as Ce,a as O,c as m,K as Ae,_ as Ue}from"./index-DsgwAvJA.js";import"./el-checkbox-D7CsqiQq.js";/* empty css */import{c as Le,p as ze,w as qe,a as X,M as xe}from"./ManagementPagination-BwZo73aV.js";import{M as D}from"./MarIcon-0cJTzTai.js";import{m as Ve,r as Fe}from"./management-url-service-DsBUOSH4.js";import{f as ee}from"./time-presentation-BRvT6nTd.js";import"./conversation-history-D9993EDO.js";import{e as Ge}from"./error-presentation-CJfLHEK_.js";import"./use-form-common-props-BJ2vZd_0.js";import"./el-select-BSaB1c5h.js";import"./_baseFindIndex-D7XfJLKM.js";import"./_baseIteratee-CnCgfzqY.js";import"./index-C90_sIrz.js";import"./advancedFormat-tqE8I04X.js";import"./merge-B-E3iBqN.js";import"./isArrayLikeObject-Bg1E4S9y.js";import"./last-DXTTfs9a.js";import"./BusyIndicator-DJEYrwl2.js";const ae={operation:["other","legacy"],"conversation.input":["session","send"],"admin.initialized":["authentication","initialize"],"login.succeeded":["authentication","signIn"],"login.failed":["authentication","signIn"],"oauth.login.succeeded":["oauth","signIn"],"oauth.login.failed":["oauth","signIn"],"login.rate.limited":["authentication","rateLimit"],"login.session.lru.evicted":["userSession","evict"],logout:["authentication","signOut"],"password.changed":["user","changePassword"],"password.reset":["user","resetPassword"],"password.reset.by.admin":["user","resetPassword"],"user.password.reset":["user","resetPassword"],"user.created.by.admin":["user","create"],"user.deleted.by.admin":["user","delete"],"user.session.revoked":["userSession","revoke"],"node.registration.token.created":["node","registrationToken"],"conversation.hosting.enable":["node","hostingEnable"],"conversation.hosting.disable":["node","hostingDisable"],"conversation.hosting.cleanup.execute":["node","hostingCleanup"],"conversation.hosting.storage.inspected":["node","storageInspect"],"conversation.hosting.cleanup.previewed":["node","cleanupPreview"],"resource.ownership.changed":["grant","ownership"],"workspace.sessions.cleanup":["session","cleanup"],"node.display.name.updated":["node","rename"],"node.display.name.cleared":["node","clearName"],"node.ownership.changed":["node","ownership"],"workspace.ownership.changed":["workspace","ownership"],"workspace.group.updated":["workspace","group"],"resource.grant":["grant","grant"],"resource.grant.created":["grant","grant"],"resource.grant.revoked":["grant","revoke"],"resource.ownership":["grant","ownership"],"conversation.hosting.enabled":["node","hostingEnable"],"conversation.hosting.disabled":["node","hostingDisable"],"conversation.hosting.cleanup.executed":["node","hostingCleanup"],"shared.conversation.input.accepted":["session","send"],"shared.conversation.input.rejected":["session","send"],"shared.conversation.queue.updated":["session","queueEdit"],"shared.conversation.queue.deleted":["session","queueDelete"],"shared.conversation.queue.reordered":["session","queueReorder"],"shared.conversation.queue.execute.requested":["session","queueExecute"],"workspace.queue.pause":["session","queuePause"],"workspace.queue.resume":["session","queueResume"],"session.interrupt.requested":["session","interruptRequest"],"session.interrupt":["session","interrupt"],"run.interrupt":["session","interruptRun"],"run.cancel":["session","cancelRun"],"run.approval.decide":["session","approval"],"approval.decided":["session","approval"],"run.user.input.responded":["session","inputResponse"],"session.command.execute":["session","command"],"runner.command.execute":["session","command"],"runner.defaults.save":["session","config"],"session.metadata.update":["session","metadata"],"session.config.update":["session","config"],"session.pin.move":["session","pin"],"session.schedule.save":["session","scheduleSave"],"session.schedule.remove":["session","scheduleRemove"],"session.schedule.proposal.resolve":["session","scheduleResolve"],"node.upgrade.request":["node","upgradeRequest"],"node.upgrade.cancel":["node","upgradeCancel"],"computer.use.enable":["node","computerEnable"],"computer.use.disable":["node","computerDisable"],"computer.use.enabled":["node","computerEnable"],"computer.use.disabled":["node","computerDisable"],"workspace.file.write":["workspace","fileWrite"],"workspace.files.mutate":["workspace","fileChange"],"workspace.files.upload.complete":["workspace","uploadComplete"],"workspace.files.upload.cancel":["workspace","uploadCancel"],"workspace.change.restore":["workspace","gitRestore"],"workspace.git.settings.update":["workspace","gitConfig"],"workspace.skills.git-exclude-repair":["workspace","repairSkill"],"terminal.open":["workspace","terminalOpen"],"terminal.command.open":["workspace","terminalOpen"],"terminal.close":["workspace","terminalClose"],"terminal.attach.authorize":["workspace","terminalOpen"],"terminal.connected":["workspace","terminalOpen"],"mail.test.executed":["mail","test"],"mar-agent.model.test":["model","test"],"node.skills.install":["node","installSkill"],"node.skills.remove":["node","removeSkill"],"node.mcps.install":["node","installMcp"],"node.mcps.remove":["node","removeMcp"],"workspace.skills.install":["workspace","installSkill"],"workspace.skills.remove":["workspace","removeSkill"],"workspace.mcps.install":["workspace","installMcp"],"workspace.mcps.remove":["workspace","removeMcp"],"node.registered":["node","register"],"node.revoked":["node","revoke"],"node.deleted":["node","delete"],"workspace.registered":["workspace","register"],"workspace.unregistered":["workspace","unregister"],"workspace.updated":["workspace","update"],"user.created":["user","create"],"user.updated":["user","update"],"user.deleted":["user","delete"],"organization.created":["organization","create"],"organization.renamed":["organization","rename"],"organization.moved":["organization","move"],"organization.deleted":["organization","delete"],"oauth.identity.linked":["oauth","bind"],"oauth.identity.unlinked":["oauth","unbind"],"oauth.identity.bound":["oauth","bind"],"oauth.identity.unbound":["oauth","unbind"],"license.import":["license","import"],"license.activated":["license","activate"],"license.replaced":["license","update"],"environment.secret.created":["secret","create"],"environment.secret.replaced":["secret","update"],"environment.secret.deleted":["secret","delete"],"system.setting.updated":["setting","update"],"session.rewind":["session","rewind"],"session.rollback":["session","rollback"],"session.remove":["session","remove"],"session.start":["session","start"],"session.create":["session","create"],"session.message":["session","send"],"run.user-input.respond":["session","inputResponse"],"model.created":["model","create"],"model.updated":["model","update"],"model.deleted":["model","delete"],"image.model.created":["imageModel","create"],"image.model.updated":["imageModel","update"],"image.model.deleted":["imageModel","delete"],"conversation.template.created":["template","create"],"conversation.template.updated":["template","update"],"conversation.template.published":["template","publish"],"conversation.template.archived":["template","archive"],"conversation.template.deleted":["template","delete"],"conversation.template.tested":["template","test"],"oauth.provider.created":["oauth","create"],"oauth.provider.updated":["oauth","update"],"oauth.provider.deleted":["oauth","delete"],"oauth.provider.tested":["oauth","test"],"credential.saved":["credential","save"],"credential.updated":["credential","update"],"credential.deleted":["credential","delete"],"credential.refreshed":["credential","refresh"],"credential.tested":["credential","test"],"skill.source.created":["skill","create"],"skill.source.updated":["skill","update"],"skill.source.deleted":["skill","delete"],"skill.catalog.created":["skill","create"],"skill.catalog.updated":["skill","update"],"skill.catalog.deleted":["skill","delete"],"skill.catalog.upgraded":["skill","upgrade"],"mcp.source.created":["mcp","create"],"mcp.source.updated":["mcp","update"],"mcp.source.deleted":["mcp","delete"],"mcp.catalog.created":["mcp","create"],"mcp.catalog.updated":["mcp","update"],"mcp.catalog.deleted":["mcp","delete"],"mcp.catalog.upgraded":["mcp","upgrade"]};function Qe(h){const E=h.eventType.replaceAll("_","."),b=Object.hasOwn(ae,E)?ae[E]:void 0;if(b){if(E==="workspace.files.mutate"){const f=h.metadata?.mutation,P={CREATE_FILE:"fileCreate",CREATE_DIRECTORY:"directoryCreate",RENAME:"fileRename",MOVE:"fileMove",DELETE:"fileDelete"};if(typeof f=="string"&&Object.hasOwn(P,f))return[b[0],P[f]]}return b}return["other","unknown"]}function te(h,E){const b=typeof E=="string"&&E.length>0?E:void 0,f=typeof h=="string"||typeof h=="number"?String(h):void 0;return b&&f&&b!==f?`${b} / ${f}`:b??f}const Be={"element-loading-custom-class":"mar-page-loading",class:"management-page audit-management"},je={class:"filter-row"},$e={class:"filter-field"},We={class:"table-actions"},Ke=Se({__name:"AuditManagementPage",props:{request:{type:Function}},setup(h){const E=h,b=Date.now(),f=[new Date(b-30*864e5),new Date(b)],P=Ve("audit",["from","to"]),C=Number(P.from),A=Number(P.to),_=O(Number.isSafeInteger(C)&&Number.isSafeInteger(A)&&C<=A?[new Date(C),new Date(A)]:f),o=O(),S=O(!1),N=O(!1);let U=0;Ne(_,a=>{const[n,u]=a??f;Fe("audit",{from:n.getTime(),to:u.getTime()})});const ne=m(()=>({SUCCESS:e("generated.auditManagementPage.success"),DENIED:e("generated.auditManagementPage.denied"),FAILED:e("generated.auditManagementPage.failed")})),Q=m(()=>({USER:e("generated.auditManagementPage.user2"),ORGANIZATION:e("generated.auditManagementPage.organization2"),ENTERPRISE:e("generated.auditManagementPage.enterprise"),NODE:e("audit.business.node"),WORKSPACE:e("audit.business.workspace"),SESSION:e("audit.business.session"),MODEL:e("audit.business.model"),IMAGE_MODEL:e("audit.business.imageModel"),TEMPLATE:e("audit.business.template"),SKILL:e("audit.business.skill"),SKILL_SOURCE:e("audit.targets.skillSource"),MCP:e("audit.business.mcp"),MCP_SOURCE:e("audit.targets.mcpSource"),ENVIRONMENT_SECRET:e("audit.business.secret"),CREDENTIAL:e("audit.business.credential"),SYSTEM_SETTING:e("audit.business.setting"),MAIL_TEMPLATE:e("audit.targets.mailTemplate"),LICENSE:e("audit.business.license"),FILE:e("audit.targets.file"),TERMINAL:e("audit.targets.terminal"),RUN:e("generated.auditManagementPage.run")})),oe=m(()=>({PASSWORD:e("generated.auditManagementPage.password"),OAUTH2:"OAuth 2.0",SYSTEM:e("generated.auditManagementPage.system")})),re=m(()=>({NEW_SESSION:e("generated.auditManagementPage.inputModeNewSession"),SEND:e("generated.auditManagementPage.inputModeSend"),CONTINUE:e("generated.auditManagementPage.inputModeContinue"),STEER:e("generated.auditManagementPage.inputModeSteer"),QUEUE:e("generated.auditManagementPage.inputModeQueue"),REPLACE_CURRENT:e("generated.auditManagementPage.inputModeReplaceCurrent"),RUN_NOW:e("generated.auditManagementPage.inputModeRunNow"),USER_INPUT_RESPONSE:e("generated.auditManagementPage.inputModeUserInputResponse"),EDIT_QUEUE:e("generated.auditManagementPage.inputModeEditQueue"),DELETE_QUEUE:e("generated.auditManagementPage.inputModeDeleteQueue"),REORDER_QUEUE:e("generated.auditManagementPage.inputModeReorderQueue"),EXECUTE_QUEUE:e("generated.auditManagementPage.inputModeExecuteQueue"),PAUSE_QUEUE:e("generated.auditManagementPage.inputModePauseQueue"),RESUME_QUEUE:e("generated.auditManagementPage.inputModeResumeQueue")})),se=m(()=>[{key:"requestId",label:e("generated.auditManagementPage.requestID")},{key:"operationId",label:e("generated.auditManagementPage.operationID")},{key:"sessionPublicId",label:e("generated.auditManagementPage.sessionPublicID")},{key:"eventType",label:e("audit.eventCode")},{key:"targetType",label:e("generated.auditManagementPage.targetType")},{key:"targetId",label:Q.value[o.value?.targetType??""]??e("audit.target")},{key:"organizationId",label:e("audit.business.organization")},{key:"nodeId",label:e("audit.business.node")},{key:"workspaceId",label:e("audit.business.workspace")},{key:"agentSessionId",label:e("audit.business.session")},{key:"targetUserId",label:e("audit.grantedUser")},{key:"targetOrganizationId",label:e("audit.grantedOrganization")},{key:"runId",label:e("generated.auditManagementPage.runID")},{key:"clientMessageId",label:e("generated.auditManagementPage.clientMessageID")},{key:"queueItemId",label:e("generated.auditManagementPage.queueItemID")},{key:"inputMode",label:e("generated.auditManagementPage.inputMode")}]),ie=m(()=>({RBAC_DENIED:e("generated.auditManagementPage.insufficientPermissions"),LICENSE_MANAGEMENT_FROZEN:e("generated.auditManagementPage.licenseManagementFrozen"),CSRF_INVALID:e("generated.auditManagementPage.requestValidationFailed"),ORIGIN_NOT_ALLOWED:e("generated.auditManagementPage.requestOriginNotAllowed")})),L=m(()=>{const a=new URLSearchParams({limit:String(X)}),[n,u]=_.value??f;return a.set("from",String(n.getTime())),a.set("to",String(u.getTime())),a}),i=Le({context:()=>L.value.toString(),key:a=>a.id,read:async a=>{const n=new URLSearchParams(L.value);return n.set("page",String(a)),ze(await E.request(`/api/audit-events?${n}`),"events")}});qe(i);const B=i.items,z=i.loading,q=m(()=>i.result.value!==void 0),de=m(()=>{const a=new URLSearchParams(L.value);return a.delete("limit"),a.set("format","csv"),`/api/audit-events/export?${a}`});function j(a){const[n,u]=Qe(a);return e("audit.operation",{resource:e(`audit.business.${n}`),action:e(`audit.actions.${u}`)})}const $=m(()=>{const a=o.value?.metadata?.before,n=o.value?.metadata?.after,u=a&&typeof a=="object"&&!Array.isArray(a)?a:{},d=n&&typeof n=="object"&&!Array.isArray(n)?n:{};return[...new Set([...Object.keys(u),...Object.keys(d)])].map(g=>({field:le.value[g]??g,before:W(u[g],g),after:W(d[g],g)}))}),le=m(()=>({name:e("audit.fields.name"),parentOrganizationId:e("audit.fields.parentOrganizationId"),organizationId:e("audit.fields.organizationId"),role:e("audit.fields.role"),enabled:e("audit.fields.enabled"),ownerType:e("audit.fields.ownerType"),ownerOrganizationId:e("audit.fields.ownerOrganizationId"),targetUserId:e("audit.fields.targetUserId"),targetOrganizationId:e("audit.fields.targetOrganizationId"),groupName:e("audit.fields.groupName"),version:e("audit.fields.version"),preserveGitConfig:e("audit.fields.preserveGitConfig"),model:e("audit.fields.model"),effort:e("audit.fields.effort"),runner:e("audit.fields.runner"),permissionMode:e("audit.fields.permissionMode"),featured:e("audit.fields.featured"),provider:e("audit.fields.provider")})),ue=m(()=>({ADMIN:e("audit.roleAdmin"),ORG_ADMIN:e("audit.roleOrgAdmin"),MEMBER:e("audit.roleMember")})),ce=m(()=>({PERSONAL:e("audit.scopePersonal"),ORGANIZATION:e("audit.scopeOrganization"),SYSTEM:e("audit.scopeSystem"),ENTERPRISE:e("audit.scopeEnterprise")}));function W(a,n){return a==null?"—":typeof a=="boolean"?e(n==="enabled"?a?"audit.flagEnabled":"audit.flagDisabled":a?"audit.yes":"audit.no"):typeof a=="string"&&n==="role"?ue.value[a]??a:typeof a=="string"&&n==="ownerType"?ce.value[a]??a:typeof a=="object"?JSON.stringify(a):String(a)}function K(a,n){if(n==="targetId"&&(a.targetType==="NODE"&&a.targetId===a.nodeId||a.targetType==="WORKSPACE"&&a.targetId===a.workspaceId||a.targetType==="SESSION"&&a.targetId===a.agentSessionId||a.targetType==="ORGANIZATION"&&a.targetId===String(a.organizationId)))return;const u={targetId:a.targetName,nodeId:a.metadata?.nodeName??(a.targetType==="NODE"&&a.targetId===a.nodeId?a.targetName:void 0),workspaceId:a.metadata?.workspaceName??(a.targetType==="WORKSPACE"&&a.targetId===a.workspaceId?a.targetName:void 0),organizationId:a.metadata?.organizationName??(a.targetType==="ORGANIZATION"&&a.targetId===String(a.organizationId)?a.targetName:void 0),agentSessionId:a.metadata?.sessionName??a.conversationPayload?.conversationTitle??(a.targetType==="SESSION"?a.targetName:void 0),targetUserId:a.metadata?.targetUserName,targetOrganizationId:a.metadata?.targetOrganizationName},d=a[n]??a.metadata?.[n];return n in u?te(d,u[n]):n==="targetType"&&typeof d=="string"?Q.value[d]??d:n==="inputMode"&&typeof d=="string"?re.value[d]??d:d??void 0}function ge(a){return a===null?"":ie.value[a]??a}function Z(a){return ne.value[a]}function Y(a){return a==="FAILED"?"danger":a==="DENIED"?"warning":"info"}async function pe(a){const n=++U;o.value=a,S.value=!0;const u=()=>n===U&&o.value?.id===a.id;try{const d=await E.request(`/api/audit-events/${encodeURIComponent(a.id)}`,{cache:"no-store"});u()&&(o.value=d)}catch(d){if(!u())return;Ae(d instanceof Error?Ge(d):e("generated.auditManagementPage.unableToLoadAuditEvents"),"error",d)}finally{u()&&(S.value=!1)}}function R(){U+=1,o.value=void 0,S.value=!1}function x(){return i.load(!0)}async function me(){N.value=!0;try{await x()}finally{N.value=!1}}return Re(()=>{i.start(),x()}),Te(()=>i.dispose()),Oe(R),(a,n)=>{const u=Me,d=ve,g=Pe,H=Ee,J=_e,M=ke,fe=he,be=ye,V=De;return F((v(),T("section",Be,[k("div",je,[k("label",$e,[k("span",null,l(t(e)("generated.auditManagementPage.timeRange")),1),s(u,{modelValue:_.value,"onUpdate:modelValue":n[0]||(n[0]=c=>_.value=c),type:"datetimerange",clearable:!1,"range-separator":t(e)("generated.auditManagementPage.to"),"start-placeholder":t(e)("generated.auditManagementPage.startTime"),"end-placeholder":t(e)("generated.auditManagementPage.endTime"),class:"audit-range-picker",onChange:n[1]||(n[1]=c=>x()),"prefix-icon":t(y)("calendar"),"clear-icon":t(y)("clear-input")},{"prev-month":r(()=>[s(D,{name:"chevron-left"})]),"next-month":r(()=>[s(D,{name:"chevron-right"})]),"prev-year":r(()=>[s(D,{name:"chevrons-left"})]),"next-year":r(()=>[s(D,{name:"chevrons-right"})]),_:1},8,["modelValue","range-separator","start-placeholder","end-placeholder","prefix-icon","clear-icon"])])]),k("div",We,[s(d,{icon:t(y)("refresh"),loading:N.value&&q.value,onClick:me,"loading-icon":t(y)("loading-action")},{default:r(()=>[p(l(t(e)("generated.auditManagementPage.refresh")),1)]),_:1},8,["icon","loading","loading-icon"]),s(d,{tag:"a",icon:t(y)("download"),href:de.value},{default:r(()=>[p(l(t(e)("generated.auditManagementPage.exportCSV")),1)]),_:1},8,["icon","href"])]),F((v(),w(J,{class:"clickable-rows",data:t(B),"row-key":"id",onRowClick:pe},{default:r(()=>[s(g,{label:t(e)("generated.auditManagementPage.time"),"min-width":"180"},{default:r(({row:c})=>[p(l(t(ee)(c.occurredAt)),1)]),_:1},8,["label"]),s(g,{label:t(e)("audit.target"),"min-width":"180"},{default:r(({row:c})=>[p(l(c.targetName||c.targetId||"—"),1)]),_:1},8,["label"]),s(g,{label:t(e)("generated.auditManagementPage.event"),"min-width":"220"},{default:r(({row:c})=>[p(l(j(c)),1)]),_:1},8,["label"]),s(g,{prop:"actorUsername",label:t(e)("generated.auditManagementPage.actor"),"min-width":"130"},null,8,["label"]),s(g,{label:t(e)("generated.auditManagementPage.result"),width:"100"},{default:r(({row:c})=>[s(H,{type:Y(c.result),effect:"plain"},{default:r(()=>[p(l(Z(c.result)),1)]),_:2},1032,["type"])]),_:1},8,["label"])]),_:1},8,["data"])),[[V,t(z)&&q.value&&!t(i).loadingMore.value&&!N.value&&!t(i).failure.value]]),s(xe,{total:t(i).total.value,page:t(i).page.value,"page-size":t(X),mobile:t(i).mobileViewport.value,"mobile-visible-count":t(B).length,"has-more":t(i).hasMore.value,loading:t(z),"loading-more":t(i).loadingMore.value,failed:t(i).failure.value!==void 0,"incremental-failed":t(i).failure.value?.incremental===!0,error:t(i).failure.value?.error,"context-key":t(i).contextKey.value,onRetry:t(i).retry,onPage:t(i).setPage,onLoadMore:t(i).loadMore},null,8,["total","page","page-size","mobile","mobile-visible-count","has-more","loading","loading-more","failed","incremental-failed","error","context-key","onRetry","onPage","onLoadMore"]),o.value!==void 0?(v(),w(be,{key:0,onVnodeMounted:t(Ie),onVnodeBeforeUnmount:t(we),"model-value":o.value!==void 0,title:t(e)("generated.auditManagementPage.auditDetails"),width:"min(720px, calc(100vw - 32px))",onClose:R,"onUpdate:modelValue":R,"close-icon":t(y)("close")},{footer:r(()=>[s(d,{onClick:R},{default:r(()=>[p(l(t(e)("common.close")),1)]),_:1})]),default:r(()=>[o.value?F((v(),w(fe,{key:0,class:"mar-detail-descriptions",column:1,border:""},{default:r(()=>[s(M,{label:t(e)("generated.auditManagementPage.auditEventId")},{default:r(()=>[k("code",null,l(o.value.id),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.event2")},{default:r(()=>[p(l(j(o.value)),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.time2")},{default:r(()=>[p(l(t(ee)(o.value.occurredAt)),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.actor2")},{default:r(()=>[p(l(t(te)(o.value.actorUserId,o.value.actorUsername)??"—"),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.authentication2")},{default:r(()=>[p(l(oe.value[o.value.authenticationMethod]??o.value.authenticationMethod)+l(o.value.providerId?` · ${o.value.providerId}`:""),1)]),_:1},8,["label"]),s(M,{label:t(e)("generated.auditManagementPage.result2")},{default:r(()=>[s(H,{type:Y(o.value.result),effect:"plain"},{default:r(()=>[p(l(Z(o.value.result)),1)]),_:1},8,["type"]),o.value.result!=="SUCCESS"&&o.value.errorCode?(v(),T(G,{key:0},[p(" · "+l(t(e)("generated.auditManagementPage.errorCode"))+": ",1),k("code",null,l(ge(o.value.errorCode)),1)],64)):I("",!0)]),_:1},8,["label"]),o.value.conversationPayload?(v(),w(M,{key:0,label:t(e)("generated.auditManagementPage.userMessage")},{default:r(()=>[k("pre",null,l(o.value.conversationPayload.userMessage),1)]),_:1},8,["label"])):I("",!0),(v(!0),T(G,null,Ce(se.value,c=>(v(),T(G,{key:c.key},[K(o.value,c.key)!==void 0?(v(),w(M,{key:0,label:c.label},{default:r(()=>[p(l(K(o.value,c.key)),1)]),_:2},1032,["label"])):I("",!0)],64))),128)),$.value.length?(v(),w(M,{key:1,label:t(e)("audit.changes")},{default:r(()=>[s(J,{data:$.value},{default:r(()=>[s(g,{prop:"field",label:t(e)("audit.field")},null,8,["label"]),s(g,{prop:"before",label:t(e)("audit.before")},null,8,["label"]),s(g,{prop:"after",label:t(e)("audit.after")},null,8,["label"])]),_:1},8,["data"])]),_:1},8,["label"])):I("",!0),Object.keys(o.value.metadata||{}).length>0?(v(),w(M,{key:2,label:t(e)("common.metadata")},{default:r(()=>[k("pre",null,l(JSON.stringify(o.value.metadata||{},null,2)),1)]),_:1},8,["label"])):I("",!0)]),_:1})),[[V,S.value]]):I("",!0)]),_:1},8,["onVnodeMounted","onVnodeBeforeUnmount","model-value","title","close-icon"])):I("",!0)])),[[V,t(z)&&!q.value&&!t(i).failure.value]])}}}),ha=Ue(Ke,[["__scopeId","data-v-7a6cc863"]]);export{ha as default};
@@ -1 +1 @@
1
- import{_ as c,o as e,b as o}from"./index-BCZqekVb.js";const r={},s={class:"busy-indicator","aria-hidden":"true"};function t(n,a){return e(),o("i",s)}const i=c(r,[["render",t]]);export{i as B};
1
+ import{_ as c,o as e,b as o}from"./index-DsgwAvJA.js";const r={},s={class:"busy-indicator","aria-hidden":"true"};function t(n,a){return e(),o("i",s)}const i=c(r,[["render",t]]);export{i as B};