hermes-web-ui 0.3.6 → 0.3.8

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 (87) hide show
  1. package/README.md +21 -2
  2. package/bin/hermes-web-ui.mjs +15 -1
  3. package/dist/client/assets/{Add-CKf6ViXR.js → Add-s316k4Av.js} +1 -1
  4. package/dist/client/assets/{Button-CrrCCorI.js → Button-BkA_RI8a.js} +1 -1
  5. package/dist/client/assets/{ChannelsView-D4I7hhZO.js → ChannelsView-DPmPn8DW.js} +1 -1
  6. package/dist/client/assets/ChatView-DEtziOPB.js +127 -0
  7. package/dist/client/assets/{ChatView-Vfi_jEpI.css → ChatView-DI3XN8vz.css} +1 -1
  8. package/dist/client/assets/{Close-C9xwy-pW.js → Close-CrLD0IXG.js} +1 -1
  9. package/dist/client/assets/{FormItem-BgJdrTW0.js → FormItem-CQLdFrl9.js} +1 -1
  10. package/dist/client/assets/{GatewaysView-Cib2JydO.js → GatewaysView-CC1Y0tZZ.js} +1 -1
  11. package/dist/client/assets/{Input-ChENEW-Z.js → Input-nXKlujwJ.js} +1 -1
  12. package/dist/client/assets/{InputNumber-Xd6HWSdp.js → InputNumber-DLZwwIyX.js} +1 -1
  13. package/dist/client/assets/{JobsView-SnToCbDd.js → JobsView-BC0bBrJO.js} +2 -2
  14. package/dist/client/assets/{LoginView-BZdmMnsf.js → LoginView-PqpFR9bV.js} +1 -1
  15. package/dist/client/assets/{LogsView-DblvOJIg.js → LogsView-DtR88N0b.js} +1 -1
  16. package/dist/client/assets/{MarkdownRenderer-DJLVk7ei.js → MarkdownRenderer-BSLfTurm.js} +1 -1
  17. package/dist/client/assets/{MemoryView-exXvRwCc.js → MemoryView-CJRWnePL.js} +1 -1
  18. package/dist/client/assets/{Modal-B2zvXTrk.js → Modal-Bp9RK8LZ.js} +1 -1
  19. package/dist/client/assets/ModelsView-7Obe34Cz.js +1 -0
  20. package/dist/client/assets/{ModelsView-jbgZP3YF.css → ModelsView-VM-oMq5M.css} +1 -1
  21. package/dist/client/assets/{Popconfirm-BoZc0kKk.js → Popconfirm-DTdUi7r_.js} +1 -1
  22. package/dist/client/assets/{Popover-Cu52vG3D.js → Popover-_M3o0B7L.js} +1 -1
  23. package/dist/client/assets/{ProfilesView-D0FY7Jwe.js → ProfilesView-1_GmRx-S.js} +1 -1
  24. package/dist/client/assets/{Select-BHc7u-Yf.js → Select-aHPR3urY.js} +2 -2
  25. package/dist/client/assets/{SettingRow-i-UXlco7.js → SettingRow-DKasLuS5.js} +1 -1
  26. package/dist/client/assets/{SettingsView-Dhr2wzAB.css → SettingsView-C3sd8K0e.css} +1 -1
  27. package/dist/client/assets/SettingsView-DZCA7_CM.js +352 -0
  28. package/dist/client/assets/{SkillsView-B5QBaAzi.js → SkillsView-Dk7O05cK.js} +1 -1
  29. package/dist/client/assets/{Spin-DsNCRPk9.js → Spin-Bt_9cTiO.js} +1 -1
  30. package/dist/client/assets/{Suffix-3xK0KZGt.js → Suffix-XaH8SDbR.js} +1 -1
  31. package/dist/client/assets/{Switch-Bf63XXgA.js → Switch-D1_psmjT.js} +1 -1
  32. package/dist/client/assets/{Tag-Dmbj68Ki.js → Tag-3FaOhoJN.js} +1 -1
  33. package/dist/client/assets/{TerminalView-DrJHZ0qI.js → TerminalView-DNU7oQxK.js} +1 -1
  34. package/dist/client/assets/{Tooltip-CRbZNhG0.js → Tooltip-YHrHWGPa.js} +1 -1
  35. package/dist/client/assets/{UsageView-DQ43JasX.js → UsageView-COCrOiiV.js} +1 -1
  36. package/dist/client/assets/{Warning-kBbRMAif.js → Warning-B6CM9aBl.js} +1 -1
  37. package/dist/client/assets/{_plugin-vue_export-helper-CnosYBkx.js → _plugin-vue_export-helper-BGG8ORDx.js} +1 -1
  38. package/dist/client/assets/app-B7ktf7Fh.js +1 -0
  39. package/dist/client/assets/app-BPvTl2-V.js +1 -0
  40. package/dist/client/assets/{browser-Djp4tkp3.js → browser-f5W8abIG.js} +1 -1
  41. package/dist/client/assets/chat-6q6pkzEW.js +6 -0
  42. package/dist/client/assets/composables-xV7dhNpf.js +1 -0
  43. package/dist/client/assets/{fade-in.cssr-CIVyTG6A.js → fade-in.cssr-ifHK7yH1.js} +1 -1
  44. package/dist/client/assets/index-CSCYx7ux.js +284 -0
  45. package/dist/client/assets/{jobs-CcVaCGMJ.js → jobs-DObWfhbO.js} +1 -1
  46. package/dist/client/assets/{light-D9G2GshF.js → light-CxjyoF0s.js} +1 -1
  47. package/dist/client/assets/{light-KCEDTUGE.js → light-D1yfed_s.js} +1 -1
  48. package/dist/client/assets/{light-BPqyaxve.js → light-DWy-mwyK.js} +1 -1
  49. package/dist/client/assets/{light-CSp9-LhE.js → light-D_3MwJj1.js} +1 -1
  50. package/dist/client/assets/{light-BF6E9z0k.js → light-DgLcPjgU.js} +1 -1
  51. package/dist/client/assets/{light-BJ96fCLC.js → light-TGFKT-UB.js} +1 -1
  52. package/dist/client/assets/models-DQ4CT-vv.js +1 -0
  53. package/dist/client/assets/{pinia-iHE5_ZXa.js → pinia-DcAkZ8vx.js} +1 -1
  54. package/dist/client/assets/{profiles-CJCR84uQ.js → profiles-DzkigJwq.js} +1 -1
  55. package/dist/client/assets/{router-C-NNJUuf.js → router-D8sJ39Io.js} +2 -2
  56. package/dist/client/assets/{sessions-C4bnNvzS.js → sessions-Dg8n9PBo.js} +1 -1
  57. package/dist/client/assets/{skills-B4slZfeZ.js → skills-BehzdECn.js} +1 -1
  58. package/dist/client/assets/{use-message-BIpqgDet.js → use-message-DBz2JSTt.js} +1 -1
  59. package/dist/client/assets/{useTheme-B78N9tyz.js → useTheme-UdVT814n.js} +1 -1
  60. package/dist/client/index.html +27 -27
  61. package/dist/server/index.js +8 -3
  62. package/dist/server/routes/hermes/filesystem.js +231 -199
  63. package/dist/server/routes/hermes/group-chat.d.ts +2 -0
  64. package/dist/server/routes/hermes/group-chat.js +135 -0
  65. package/dist/server/routes/hermes/logs.js +50 -11
  66. package/dist/server/routes/hermes/proxy-handler.js +16 -6
  67. package/dist/server/routes/upload.js +41 -11
  68. package/dist/server/services/group-chat/coordinator.d.ts +14 -0
  69. package/dist/server/services/group-chat/coordinator.js +230 -0
  70. package/dist/server/services/group-chat/index.d.ts +5 -0
  71. package/dist/server/services/group-chat/index.js +115 -0
  72. package/dist/server/services/group-chat/rooms-db.d.ts +56 -0
  73. package/dist/server/services/group-chat/rooms-db.js +199 -0
  74. package/dist/server/services/hermes/gateway-manager.d.ts +2 -0
  75. package/dist/server/services/hermes/gateway-manager.js +15 -0
  76. package/dist/server/services/hermes/hermes-profile.d.ts +6 -0
  77. package/dist/server/services/hermes/hermes-profile.js +12 -0
  78. package/dist/server/shared/providers.js +1 -13
  79. package/package.json +1 -1
  80. package/dist/client/assets/ChatView-DxyBUK57.js +0 -127
  81. package/dist/client/assets/ModelsView-DGs47Cj4.js +0 -1
  82. package/dist/client/assets/SettingsView-BW6ctYG5.js +0 -352
  83. package/dist/client/assets/app-BT9yU6N6.js +0 -1
  84. package/dist/client/assets/app-CjNVVG5x.js +0 -1
  85. package/dist/client/assets/chat-DlC9S9DK.js +0 -6
  86. package/dist/client/assets/composables-DCA4Yga5.js +0 -1
  87. package/dist/client/assets/index-D12ukDT7.js +0 -284
@@ -1 +1 @@
1
- import{o as e}from"./router-C-NNJUuf.js";async function t(t,n){let r=new URLSearchParams;t&&r.set(`source`,t),n&&r.set(`limit`,String(n));let i=r.toString();return(await e(`/api/hermes/sessions${i?`?${i}`:``}`)).sessions}async function n(t){try{return(await e(`/api/hermes/sessions/${t}`)).session}catch{return null}}async function r(t){try{return await e(`/api/hermes/sessions/${t}`,{method:`DELETE`}),!0}catch{return!1}}async function i(t,n){try{return await e(`/api/hermes/sessions/${t}/rename`,{method:`POST`,body:JSON.stringify({title:n})}),!0}catch{return!1}}export{i,n,t as r,r as t};
1
+ import{o as e}from"./router-D8sJ39Io.js";async function t(t,n){let r=new URLSearchParams;t&&r.set(`source`,t),n&&r.set(`limit`,String(n));let i=r.toString();return(await e(`/api/hermes/sessions${i?`?${i}`:``}`)).sessions}async function n(t){try{return(await e(`/api/hermes/sessions/${t}`)).session}catch{return null}}async function r(t){try{return await e(`/api/hermes/sessions/${t}`,{method:`DELETE`}),!0}catch{return!1}}async function i(t,n){try{return await e(`/api/hermes/sessions/${t}/rename`,{method:`POST`,body:JSON.stringify({title:n})}),!0}catch{return!1}}export{i,n,t as r,r as t};
@@ -1 +1 @@
1
- import{o as e}from"./router-C-NNJUuf.js";async function t(){return(await e(`/api/hermes/skills`)).categories}async function n(t){return(await e(`/api/hermes/skills/${t}`)).content}async function r(t,n){return(await e(`/api/hermes/skills/${t}/${n}/files`)).files}async function i(){return e(`/api/hermes/memory`)}async function a(t,n){await e(`/api/hermes/memory`,{method:`POST`,body:JSON.stringify({section:t,content:n})})}async function o(t,n){await e(`/api/hermes/skills/toggle`,{method:`PUT`,body:JSON.stringify({name:t,enabled:n})})}export{a,t as i,n,o,r,i as t};
1
+ import{o as e}from"./router-D8sJ39Io.js";async function t(){return(await e(`/api/hermes/skills`)).categories}async function n(t){return(await e(`/api/hermes/skills/${t}`)).content}async function r(t,n){return(await e(`/api/hermes/skills/${t}/${n}/files`)).files}async function i(){return e(`/api/hermes/memory`)}async function a(t,n){await e(`/api/hermes/memory`,{method:`POST`,body:JSON.stringify({section:t,content:n})})}async function o(t,n){await e(`/api/hermes/skills/toggle`,{method:`PUT`,body:JSON.stringify({name:t,enabled:n})})}export{a,t as i,n,o,r,i as t};
@@ -1 +1 @@
1
- import{F as e}from"./router-C-NNJUuf.js";import{$ as t,Y as n}from"./browser-Djp4tkp3.js";var r=t(`n-message-api`),i=t(`n-message-provider`);function a(){let t=e(r,null);return t===null&&n(`use-message`,"No outer <n-message-provider /> founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A."),t}export{r as n,i as r,a as t};
1
+ import{F as e}from"./router-D8sJ39Io.js";import{$ as t,Y as n}from"./browser-f5W8abIG.js";var r=t(`n-message-api`),i=t(`n-message-provider`);function a(){let t=e(r,null);return t===null&&n(`use-message`,"No outer <n-message-provider /> founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A."),t}export{r as n,i as r,a as t};
@@ -1 +1 @@
1
- import{X as e,ct as t}from"./router-C-NNJUuf.js";var n=`hermes_theme`,r=t(localStorage.getItem(n)||`system`),i=t(!1);function a(e){i.value=e,document.documentElement.classList.toggle(`dark`,e)}function o(e){return e===`system`?window.matchMedia(`(prefers-color-scheme: dark)`).matches:e===`dark`}a(o(r.value)),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{r.value===`system`&&a(o(`system`))}),e(r,e=>{localStorage.setItem(n,e),a(o(e))});function s(){function e(e){r.value=e}function t(){r.value=i.value?`light`:`dark`}return{mode:r,isDark:i,setMode:e,toggleTheme:t}}export{s as t};
1
+ import{X as e,ct as t}from"./router-D8sJ39Io.js";var n=`hermes_theme`,r=t(localStorage.getItem(n)||`system`),i=t(!1);function a(e){i.value=e,document.documentElement.classList.toggle(`dark`,e)}function o(e){return e===`system`?window.matchMedia(`(prefers-color-scheme: dark)`).matches:e===`dark`}a(o(r.value)),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{r.value===`system`&&a(o(`system`))}),e(r,e=>{localStorage.setItem(n,e),a(o(e))});function s(){function e(e){r.value=e}function t(){r.value=i.value?`light`:`dark`}return{mode:r,isDark:i,setMode:e,toggleTheme:t}}export{s as t};
@@ -6,36 +6,36 @@
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>Hermes</title>
9
- <script type="module" crossorigin src="/assets/index-D12ukDT7.js"></script>
10
- <link rel="modulepreload" crossorigin href="/assets/router-C-NNJUuf.js">
11
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-CnosYBkx.js">
12
- <link rel="modulepreload" crossorigin href="/assets/browser-Djp4tkp3.js">
13
- <link rel="modulepreload" crossorigin href="/assets/fade-in.cssr-CIVyTG6A.js">
14
- <link rel="modulepreload" crossorigin href="/assets/Suffix-3xK0KZGt.js">
15
- <link rel="modulepreload" crossorigin href="/assets/Close-C9xwy-pW.js">
16
- <link rel="modulepreload" crossorigin href="/assets/Popover-Cu52vG3D.js">
17
- <link rel="modulepreload" crossorigin href="/assets/Button-CrrCCorI.js">
18
- <link rel="modulepreload" crossorigin href="/assets/Tag-Dmbj68Ki.js">
9
+ <script type="module" crossorigin src="/assets/index-CSCYx7ux.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/assets/router-D8sJ39Io.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BGG8ORDx.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/browser-f5W8abIG.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/fade-in.cssr-ifHK7yH1.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/Suffix-XaH8SDbR.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/Close-CrLD0IXG.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/Popover-_M3o0B7L.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/Button-BkA_RI8a.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/Tag-3FaOhoJN.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/create-5zWq3BEB.js">
20
- <link rel="modulepreload" crossorigin href="/assets/Select-BHc7u-Yf.js">
21
- <link rel="modulepreload" crossorigin href="/assets/Warning-kBbRMAif.js">
22
- <link rel="modulepreload" crossorigin href="/assets/Modal-B2zvXTrk.js">
23
- <link rel="modulepreload" crossorigin href="/assets/Input-ChENEW-Z.js">
24
- <link rel="modulepreload" crossorigin href="/assets/light-KCEDTUGE.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/Select-aHPR3urY.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/Warning-B6CM9aBl.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/Modal-Bp9RK8LZ.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/Input-nXKlujwJ.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/light-D1yfed_s.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/omit-1BRB6K75.js">
26
- <link rel="modulepreload" crossorigin href="/assets/pinia-iHE5_ZXa.js">
27
- <link rel="modulepreload" crossorigin href="/assets/profiles-CJCR84uQ.js">
28
- <link rel="modulepreload" crossorigin href="/assets/sessions-C4bnNvzS.js">
29
- <link rel="modulepreload" crossorigin href="/assets/app-BT9yU6N6.js">
30
- <link rel="modulepreload" crossorigin href="/assets/chat-DlC9S9DK.js">
31
- <link rel="modulepreload" crossorigin href="/assets/light-BJ96fCLC.js">
32
- <link rel="modulepreload" crossorigin href="/assets/use-message-BIpqgDet.js">
33
- <link rel="modulepreload" crossorigin href="/assets/light-BPqyaxve.js">
34
- <link rel="modulepreload" crossorigin href="/assets/light-D9G2GshF.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/pinia-DcAkZ8vx.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/profiles-DzkigJwq.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/sessions-Dg8n9PBo.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/app-B7ktf7Fh.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/chat-6q6pkzEW.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/light-TGFKT-UB.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/use-message-DBz2JSTt.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/light-DWy-mwyK.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/light-CxjyoF0s.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/_common-Yp55QE79.js">
36
- <link rel="modulepreload" crossorigin href="/assets/light-CSp9-LhE.js">
37
- <link rel="modulepreload" crossorigin href="/assets/light-BF6E9z0k.js">
38
- <link rel="modulepreload" crossorigin href="/assets/useTheme-B78N9tyz.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/light-D_3MwJj1.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/light-DgLcPjgU.js">
38
+ <link rel="modulepreload" crossorigin href="/assets/useTheme-UdVT814n.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/logo-Cd-t_oGE.js">
40
40
  <link rel="stylesheet" crossorigin href="/assets/index-BEcRccNA.css">
41
41
  </head>
@@ -72,6 +72,7 @@ async function checkLatestVersion() {
72
72
  try {
73
73
  const res = await fetch('https://registry.npmjs.org/hermes-web-ui/latest', {
74
74
  signal: AbortSignal.timeout(5000),
75
+ headers: { 'Cache-Control': 'no-cache' },
75
76
  });
76
77
  if (res.ok) {
77
78
  const data = await res.json();
@@ -111,9 +112,11 @@ async function bootstrap() {
111
112
  app.use(async (ctx, next) => {
112
113
  if (ctx.path === '/api/hermes/update' && ctx.method === 'POST') {
113
114
  const isWin = process.platform === 'win32';
115
+ // Run npm install directly — calling `hermes-web-ui update` would kill this
116
+ // process (stopDaemon) before the response can be sent to the client.
114
117
  const cmd = isWin
115
- ? 'cmd /c hermes-web-ui update'
116
- : 'hermes-web-ui update';
118
+ ? 'cmd /c npm install -g hermes-web-ui@latest'
119
+ : 'npm install -g hermes-web-ui@latest';
117
120
  try {
118
121
  const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
119
122
  const output = execSync(cmd, {
@@ -122,6 +125,8 @@ async function bootstrap() {
122
125
  stdio: ['pipe', 'pipe', 'pipe'],
123
126
  });
124
127
  ctx.body = { success: true, message: output.trim() };
128
+ // Restart the server after response is sent
129
+ setTimeout(() => process.exit(0), 1000);
125
130
  }
126
131
  catch (err) {
127
132
  ctx.status = 500;
@@ -186,7 +191,7 @@ async function bootstrap() {
186
191
  bindShutdown();
187
192
  // Check for updates every 4 hours
188
193
  checkLatestVersion();
189
- setInterval(checkLatestVersion, 4 * 60 * 60 * 1000);
194
+ setInterval(checkLatestVersion, 60 * 60 * 1000);
190
195
  }
191
196
  // ============================
192
197
  // ✅ 统一关闭逻辑(核心)