@nextclaw/ui 0.12.19 → 0.12.20-beta.1

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 (185) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/assets/api-BcqDx0tm.js +15 -0
  3. package/dist/assets/app-manager-provider-DVYBjif-.js +1 -0
  4. package/dist/assets/app-navigation.config-CMoWvFEI.js +1 -0
  5. package/dist/assets/{book-open-CVEuA0y5.js → book-open-DgLqYpNY.js} +1 -1
  6. package/dist/assets/{channels-list-page-BqhqaBf1.js → channels-list-page-CsoI4OJm.js} +2 -2
  7. package/dist/assets/{chat-D4KecKjB.js → chat-CA3aRmhx.js} +13 -12
  8. package/dist/assets/chat-page-gdSN6Pr6.js +1 -0
  9. package/dist/assets/chunk-JZWAC4HX-u4uYphxM.js +3 -0
  10. package/dist/assets/{config-split-page-BGjVACdO.js → config-split-page-BMRGuCJQ.js} +1 -1
  11. package/dist/assets/{createLucideIcon-PPrXCGK8.js → createLucideIcon-BZkY6emz.js} +1 -1
  12. package/dist/assets/desktop-update-config-CD6-2PfI.js +1 -0
  13. package/dist/assets/{dialog-CTCX7oLf.js → dialog-csshWetU.js} +1 -1
  14. package/dist/assets/{dist-FL5e8mMi.js → dist-Bl94Ahwx.js} +1 -1
  15. package/dist/assets/{doc-browser-C02neCIE.js → doc-browser-BUlCkZo2.js} +1 -1
  16. package/dist/assets/doc-browser-CzCV73NJ.js +1 -0
  17. package/dist/assets/doc-browser-Doh2541x.js +1 -0
  18. package/dist/assets/{doc-browser-context-C-WPOji4.js → doc-browser-context-DfLHAWbG.js} +1 -1
  19. package/dist/assets/{es2015-BNy4R8AC.js → es2015-JCM5-KtW.js} +1 -1
  20. package/dist/assets/{external-link-BNtqJE01.js → external-link-Sw3ah_JD.js} +1 -1
  21. package/dist/assets/{folder-QyJHVUNz.js → folder-D7-VTnkz.js} +1 -1
  22. package/dist/assets/{hash-BGYUE-zr.js → hash-zajSTDXZ.js} +1 -1
  23. package/dist/assets/i18n-C5Mibli1.js +1 -0
  24. package/dist/assets/index-BTDFuKka.js +2 -0
  25. package/dist/assets/index-CUmk8xFK.css +1 -0
  26. package/dist/assets/{key-round-DenCfA2w.js → key-round-CnI1mc9F.js} +1 -1
  27. package/dist/assets/loader-circle-B5i8oMMY.js +1 -0
  28. package/dist/assets/{logo-badge-CKAxvQFc.js → logo-badge-BQgKnVtz.js} +1 -1
  29. package/dist/assets/{logos-CqXnaJIm.js → logos-CqVm0q0W.js} +1 -1
  30. package/dist/assets/marketplace-page-DJGDpTAo.js +1 -0
  31. package/dist/assets/{marketplace-page-XnDa2ulT.js → marketplace-page-DxlxHCFm.js} +2 -2
  32. package/dist/assets/mcp-marketplace-page-5UjYRWOR.js +40 -0
  33. package/dist/assets/mcp-marketplace-page-C1XaHZZO.js +1 -0
  34. package/dist/assets/message-square-D6Z4NwpG.js +1 -0
  35. package/dist/assets/{model-config-ByeL6Toe.js → model-config-PccJ9XyH.js} +1 -1
  36. package/dist/assets/{notice-card-D00-02yg.js → notice-card-CCgk6FvF.js} +1 -1
  37. package/dist/assets/play-D8WJLnJe.js +1 -0
  38. package/dist/assets/plus-Di0KAkiO.js +1 -0
  39. package/dist/assets/{popover-AmJkxio3.js → popover-YAsxDBhY.js} +1 -1
  40. package/dist/assets/{provider-scoped-model-input-CfFJsJp-.js → provider-scoped-model-input-CzpF7cug.js} +1 -1
  41. package/dist/assets/{providers-list-HMQzW2WV.js → providers-list-8qDMER8o.js} +1 -1
  42. package/dist/assets/{refresh-ccw-B-dhb3yS.js → refresh-ccw-Bii4w8aB.js} +1 -1
  43. package/dist/assets/refresh-cw-BxojR62w.js +1 -0
  44. package/dist/assets/remote-D4TtLPAp.js +1 -0
  45. package/dist/assets/{rotate-cw-BWqAG3Fv.js → rotate-cw-1Xqa7LZ8.js} +1 -1
  46. package/dist/assets/runtime-config-page-D-4c5H5z.js +1 -0
  47. package/dist/assets/{save-DpdkGieJ.js → save--BVI5wZX.js} +1 -1
  48. package/dist/assets/search-config-D3a65l3r.js +1 -0
  49. package/dist/assets/{search-CQUdr7j_.js → search-vChioOoe.js} +1 -1
  50. package/dist/assets/{secrets-config-YCsGd1am.js → secrets-config-CoMlR_7i.js} +2 -2
  51. package/dist/assets/{select-DVUtSFHZ.js → select-DIZrwsKU.js} +1 -1
  52. package/dist/assets/{sessions-config-page-BKN-XdKr.js → sessions-config-page-Cc0TJStn.js} +2 -2
  53. package/dist/assets/{setting-row-Cb5-lFs-.js → setting-row-DiQyrE81.js} +1 -1
  54. package/dist/assets/{settings-DgtZZlnF.js → settings-CiRChctQ.js} +1 -1
  55. package/dist/assets/skeleton-CFQRIUzt.js +1 -0
  56. package/dist/assets/{sparkles-DNSCyDhL.js → sparkles-D1ZKWdm4.js} +1 -1
  57. package/dist/assets/{status-dot-X_j51OfA.js → status-dot-Dv_hiUVa.js} +1 -1
  58. package/dist/assets/{tabs-custom-CcWmekaF.js → tabs-custom-CsACkVji.js} +1 -1
  59. package/dist/assets/{tag-chip-fdbK2wE6.js → tag-chip-C3wDBe_-.js} +1 -1
  60. package/dist/assets/theme-provider-aOmrJ9J6.js +1 -0
  61. package/dist/assets/{tooltip-BkZCQcKw.js → tooltip-Dq5Xehpk.js} +1 -1
  62. package/dist/assets/{trash-2-CqciSCsg.js → trash-2-rY9ZteZX.js} +1 -1
  63. package/dist/assets/use-config-BQJjq1mP.js +1 -0
  64. package/dist/assets/{use-confirm-dialog-DSrb9205.js → use-confirm-dialog-DBoV5n5P.js} +1 -1
  65. package/dist/assets/{use-infinite-scroll-loader-DmowtyTI.js → use-infinite-scroll-loader-JAicqVC5.js} +1 -1
  66. package/dist/assets/{use-viewport-layout-CaALCA51.js → use-viewport-layout-BX3XqzJ4.js} +1 -1
  67. package/dist/assets/x-DpTzXQcX.js +1 -0
  68. package/dist/index.html +40 -39
  69. package/package.json +9 -6
  70. package/src/app/hooks/use-realtime-query-bridge.ts +5 -5
  71. package/src/app/index.tsx +7 -1
  72. package/src/features/channels/components/config/channel-form.tsx +3 -3
  73. package/src/features/channels/components/config/weixin-channel-auth-section.tsx +1 -1
  74. package/src/features/chat/components/conversation/chat-conversation-panel.tsx +1 -0
  75. package/src/features/chat/components/conversation/chat-input-bar.container.tsx +9 -4
  76. package/src/features/chat/components/conversation/chat-message-list.container.test.tsx +64 -6
  77. package/src/features/chat/components/conversation/chat-message-list.container.tsx +185 -17
  78. package/src/features/chat/components/session/session-context-icon.tsx +1 -4
  79. package/src/features/chat/hooks/use-ncp-chat-derived-state.ts +3 -1
  80. package/src/features/chat/hooks/use-ncp-chat-page-data.ts +7 -6
  81. package/src/features/chat/hooks/use-ncp-session-conversation.test.tsx +74 -2
  82. package/src/features/chat/hooks/use-ncp-session-conversation.ts +32 -10
  83. package/src/features/chat/hooks/use-selected-session-context-window-indicator.ts +20 -0
  84. package/src/features/chat/managers/ncp-chat-input.manager.test.ts +25 -0
  85. package/src/features/chat/managers/ncp-chat-input.manager.ts +5 -1
  86. package/src/features/chat/pages/ncp-chat-page.test.ts +22 -8
  87. package/src/features/chat/pages/ncp-chat-page.tsx +15 -11
  88. package/src/features/chat/stores/chat-thread.store.ts +8 -2
  89. package/src/features/chat/utils/chat-context-window-indicator.utils.ts +50 -0
  90. package/src/features/chat/utils/chat-runtime.utils.ts +1 -1
  91. package/src/features/chat/utils/chat-session-preference-governance.utils.test.tsx +114 -0
  92. package/src/features/chat/utils/chat-session-preference-governance.utils.ts +30 -36
  93. package/src/features/chat/utils/ncp-chat-runtime-availability.utils.test.ts +165 -0
  94. package/src/features/chat/utils/ncp-chat-runtime-availability.utils.ts +50 -0
  95. package/src/features/chat/utils/ncp-session-adapter.utils.test.ts +27 -0
  96. package/src/features/chat/utils/ncp-session-adapter.utils.ts +6 -4
  97. package/src/features/chat/utils/ncp-session-context-metadata.utils.ts +121 -0
  98. package/src/features/chat/utils/session-context.utils.ts +1 -2
  99. package/src/features/system-status/components/config/runtime-config-editor.tsx +6 -0
  100. package/src/features/system-status/components/config/runtime-settings-card.tsx +12 -0
  101. package/src/features/system-status/components/desktop-update-config.test.tsx +17 -7
  102. package/src/features/system-status/components/desktop-update-config.tsx +75 -30
  103. package/src/features/system-status/hooks/use-system-status.ts +0 -11
  104. package/src/features/system-status/index.ts +4 -1
  105. package/src/features/system-status/managers/runtime-update.manager.ts +330 -0
  106. package/src/features/system-status/managers/system-status.manager.test.ts +0 -25
  107. package/src/features/system-status/managers/system-status.manager.ts +1 -30
  108. package/src/features/system-status/stores/runtime-update.store.ts +24 -0
  109. package/src/features/system-status/types/system-status.types.ts +0 -2
  110. package/src/features/system-status/utils/runtime-config-agent.utils.ts +6 -1
  111. package/src/features/system-status/utils/system-status.utils.test.ts +1 -85
  112. package/src/features/system-status/utils/system-status.utils.ts +1 -23
  113. package/src/platforms/desktop/managers/desktop-update.manager.ts +6 -0
  114. package/src/platforms/desktop/types/desktop-update.types.ts +21 -19
  115. package/src/shared/components/common/brand-header.test.tsx +142 -0
  116. package/src/shared/components/common/brand-header.tsx +93 -0
  117. package/src/shared/components/cron-config.tsx +1 -1
  118. package/src/shared/components/doc-browser/doc-browser-context.test.tsx +1 -1
  119. package/src/shared/components/doc-browser/doc-browser.tsx +1 -1
  120. package/src/shared/components/search-config.tsx +3 -3
  121. package/src/shared/lib/api/README.md +3 -0
  122. package/src/shared/lib/api/index.ts +13 -11
  123. package/src/shared/lib/api/ncp-session.test.ts +17 -18
  124. package/src/shared/lib/api/ncp-session.types.ts +92 -0
  125. package/src/shared/lib/api/raw-client.utils.ts +3 -126
  126. package/src/shared/lib/api/services/agents.service.ts +18 -0
  127. package/src/shared/lib/api/services/channel-auth.service.ts +21 -0
  128. package/src/shared/lib/api/{client.ts → services/client.service.ts} +45 -1
  129. package/src/shared/lib/api/services/config.service.ts +171 -0
  130. package/src/shared/lib/api/services/marketplace.service.ts +66 -0
  131. package/src/shared/lib/api/services/mcp-marketplace.service.ts +70 -0
  132. package/src/shared/lib/api/services/ncp-attachments.service.ts +14 -0
  133. package/src/shared/lib/api/services/ncp-session.service.ts +39 -0
  134. package/src/shared/lib/api/services/remote.service.ts +50 -0
  135. package/src/shared/lib/api/services/runtime-control.service.ts +18 -0
  136. package/src/shared/lib/api/services/runtime-update.service.ts +26 -0
  137. package/src/shared/lib/api/services/server-path.service.ts +16 -0
  138. package/src/shared/lib/api/types.ts +9 -74
  139. package/src/shared/lib/i18n/{chat.ts → chat-labels.utils.ts} +13 -1
  140. package/src/shared/lib/i18n/desktop-update-labels.utils.ts +65 -0
  141. package/src/shared/lib/i18n/index.ts +4 -5
  142. package/src/shared/lib/i18n/runtime/i18n-language-owner.ts +5 -5
  143. package/src/shared/lib/transport/index.ts +1 -0
  144. package/src/shared/lib/transport/local-transport.service.ts +24 -4
  145. package/src/shared/lib/transport/remote-transport.service.ts +2 -2
  146. package/src/shared/lib/transport/request-raw-api-response.utils.ts +133 -0
  147. package/src/shared/lib/transport/transport.types.ts +8 -2
  148. package/src/shared/lib/ui-document-title/index.ts +1 -1
  149. package/tsconfig.json +1 -0
  150. package/dist/assets/api-BurjmW4A.js +0 -15
  151. package/dist/assets/app-manager-provider-DhxUmyTv.js +0 -1
  152. package/dist/assets/app-navigation.config-Bpd16Pem.js +0 -1
  153. package/dist/assets/chat-page-Cc7n80lW.js +0 -1
  154. package/dist/assets/chunk-JZWAC4HX-24FLdHl7.js +0 -3
  155. package/dist/assets/desktop-update-config-fMLlSStv.js +0 -1
  156. package/dist/assets/doc-browser-COj7x090.js +0 -1
  157. package/dist/assets/doc-browser-fyn7eDTp.js +0 -1
  158. package/dist/assets/i18n-CM4y8Mw9.js +0 -1
  159. package/dist/assets/index-CtVSzMPM.js +0 -2
  160. package/dist/assets/index-N3hjuljD.css +0 -1
  161. package/dist/assets/loader-circle-R23uEPkM.js +0 -1
  162. package/dist/assets/marketplace-page-mF-M5mku.js +0 -1
  163. package/dist/assets/mcp-marketplace-page-BArKWcRZ.js +0 -40
  164. package/dist/assets/mcp-marketplace-page-DBUcIIHJ.js +0 -1
  165. package/dist/assets/message-square-Dm34zD6k.js +0 -1
  166. package/dist/assets/play-ul4L6MWm.js +0 -1
  167. package/dist/assets/plus-D14303DH.js +0 -1
  168. package/dist/assets/remote-B4ELSd3u.js +0 -1
  169. package/dist/assets/runtime-config-page-N4FP6H0M.js +0 -1
  170. package/dist/assets/search-config-B62TY-z2.js +0 -1
  171. package/dist/assets/skeleton-BCPi52jT.js +0 -1
  172. package/dist/assets/theme-provider-WTWq_jYq.js +0 -1
  173. package/dist/assets/use-config-CyvhbRhf.js +0 -1
  174. package/dist/assets/x-tYcSDsrY.js +0 -1
  175. package/src/shared/lib/api/agents.ts +0 -34
  176. package/src/shared/lib/api/channel-auth.ts +0 -35
  177. package/src/shared/lib/api/config.ts +0 -362
  178. package/src/shared/lib/api/marketplace.ts +0 -156
  179. package/src/shared/lib/api/mcp-marketplace.ts +0 -138
  180. package/src/shared/lib/api/ncp-attachments.ts +0 -41
  181. package/src/shared/lib/api/ncp-session.ts +0 -78
  182. package/src/shared/lib/api/remote.ts +0 -86
  183. package/src/shared/lib/api/runtime-control.ts +0 -34
  184. package/src/shared/lib/api/server-path.ts +0 -46
  185. /package/dist/assets/{config-hints-CPNzbMEp.js → config-hints-MogHYQ8G.js} +0 -0
@@ -1,78 +0,0 @@
1
- import { api } from './client';
2
- import type {
3
- NcpSessionMessagesView,
4
- NcpSessionSkillsView,
5
- NcpSessionsListView,
6
- NcpSessionSummaryView,
7
- SessionPatchUpdate
8
- } from './types';
9
-
10
- // GET /api/ncp/sessions
11
- export async function fetchNcpSessions(params?: { limit?: number }): Promise<NcpSessionsListView> {
12
- const query = new URLSearchParams();
13
- if (typeof params?.limit === 'number' && Number.isFinite(params.limit)) {
14
- query.set('limit', String(Math.max(1, Math.trunc(params.limit))));
15
- }
16
- const suffix = query.toString();
17
- const response = await api.get<NcpSessionsListView>(suffix ? `/api/ncp/sessions?${suffix}` : '/api/ncp/sessions');
18
- if (!response.ok) {
19
- throw new Error(response.error.message);
20
- }
21
- return response.data;
22
- }
23
-
24
- // GET /api/ncp/sessions/:sessionId/messages
25
- export async function fetchNcpSessionMessages(sessionId: string, limit = 200): Promise<NcpSessionMessagesView> {
26
- const response = await api.get<NcpSessionMessagesView>(
27
- `/api/ncp/sessions/${encodeURIComponent(sessionId)}/messages?limit=${Math.max(1, Math.trunc(limit))}`
28
- );
29
- if (!response.ok) {
30
- throw new Error(response.error.message);
31
- }
32
- return response.data;
33
- }
34
-
35
- // GET /api/ncp/sessions/:sessionId/skills
36
- export async function fetchNcpSessionSkills(
37
- sessionId: string,
38
- params?: { projectRoot?: string | null }
39
- ): Promise<NcpSessionSkillsView> {
40
- const query = new URLSearchParams();
41
- const projectRoot = params?.projectRoot?.trim();
42
- if (projectRoot) {
43
- query.set('projectRoot', projectRoot);
44
- }
45
- const suffix = query.toString();
46
- const response = await api.get<NcpSessionSkillsView>(
47
- suffix
48
- ? `/api/ncp/sessions/${encodeURIComponent(sessionId)}/skills?${suffix}`
49
- : `/api/ncp/sessions/${encodeURIComponent(sessionId)}/skills`
50
- );
51
- if (!response.ok) {
52
- throw new Error(response.error.message);
53
- }
54
- return response.data;
55
- }
56
-
57
- // PUT /api/ncp/sessions/:sessionId
58
- export async function updateNcpSession(
59
- sessionId: string,
60
- data: SessionPatchUpdate
61
- ): Promise<NcpSessionSummaryView> {
62
- const response = await api.put<NcpSessionSummaryView>(`/api/ncp/sessions/${encodeURIComponent(sessionId)}`, data);
63
- if (!response.ok) {
64
- throw new Error(response.error.message);
65
- }
66
- return response.data;
67
- }
68
-
69
- // DELETE /api/ncp/sessions/:sessionId
70
- export async function deleteNcpSession(sessionId: string): Promise<{ deleted: boolean; sessionId: string }> {
71
- const response = await api.delete<{ deleted: boolean; sessionId: string }>(
72
- `/api/ncp/sessions/${encodeURIComponent(sessionId)}`
73
- );
74
- if (!response.ok) {
75
- throw new Error(response.error.message);
76
- }
77
- return response.data;
78
- }
@@ -1,86 +0,0 @@
1
- import { api } from './client';
2
- import type {
3
- RemoteAccessView,
4
- RemoteAccountProfileUpdateRequest,
5
- RemoteBrowserAuthPollRequest,
6
- RemoteBrowserAuthPollResult,
7
- RemoteBrowserAuthStartRequest,
8
- RemoteBrowserAuthStartResult,
9
- RemoteDoctorView,
10
- RemoteLoginRequest,
11
- RemoteServiceAction,
12
- RemoteServiceActionResult,
13
- RemoteSettingsUpdateRequest
14
- } from './remote.types';
15
-
16
- export async function fetchRemoteStatus(): Promise<RemoteAccessView> {
17
- const response = await api.get<RemoteAccessView>('/api/remote/status');
18
- if (!response.ok) {
19
- throw new Error(response.error.message);
20
- }
21
- return response.data;
22
- }
23
-
24
- export async function fetchRemoteDoctor(): Promise<RemoteDoctorView> {
25
- const response = await api.get<RemoteDoctorView>('/api/remote/doctor');
26
- if (!response.ok) {
27
- throw new Error(response.error.message);
28
- }
29
- return response.data;
30
- }
31
-
32
- export async function loginRemote(data: RemoteLoginRequest): Promise<RemoteAccessView> {
33
- const response = await api.post<RemoteAccessView>('/api/remote/login', data);
34
- if (!response.ok) {
35
- throw new Error(response.error.message);
36
- }
37
- return response.data;
38
- }
39
-
40
- export async function startRemoteBrowserAuth(data: RemoteBrowserAuthStartRequest): Promise<RemoteBrowserAuthStartResult> {
41
- const response = await api.post<RemoteBrowserAuthStartResult>('/api/remote/auth/start', data);
42
- if (!response.ok) {
43
- throw new Error(response.error.message);
44
- }
45
- return response.data;
46
- }
47
-
48
- export async function pollRemoteBrowserAuth(data: RemoteBrowserAuthPollRequest): Promise<RemoteBrowserAuthPollResult> {
49
- const response = await api.post<RemoteBrowserAuthPollResult>('/api/remote/auth/poll', data);
50
- if (!response.ok) {
51
- throw new Error(response.error.message);
52
- }
53
- return response.data;
54
- }
55
-
56
- export async function logoutRemote(): Promise<RemoteAccessView> {
57
- const response = await api.post<RemoteAccessView>('/api/remote/logout', {});
58
- if (!response.ok) {
59
- throw new Error(response.error.message);
60
- }
61
- return response.data;
62
- }
63
-
64
- export async function updateRemoteAccountProfile(data: RemoteAccountProfileUpdateRequest): Promise<RemoteAccessView> {
65
- const response = await api.put<RemoteAccessView>('/api/remote/account/profile', data);
66
- if (!response.ok) {
67
- throw new Error(response.error.message);
68
- }
69
- return response.data;
70
- }
71
-
72
- export async function updateRemoteSettings(data: RemoteSettingsUpdateRequest): Promise<RemoteAccessView> {
73
- const response = await api.put<RemoteAccessView>('/api/remote/settings', data);
74
- if (!response.ok) {
75
- throw new Error(response.error.message);
76
- }
77
- return response.data;
78
- }
79
-
80
- export async function controlRemoteService(action: RemoteServiceAction): Promise<RemoteServiceActionResult> {
81
- const response = await api.post<RemoteServiceActionResult>(`/api/remote/service/${action}`, {});
82
- if (!response.ok) {
83
- throw new Error(response.error.message);
84
- }
85
- return response.data;
86
- }
@@ -1,34 +0,0 @@
1
- import { api } from './client';
2
- import type { RuntimeControlActionResult, RuntimeControlView } from './runtime-control.types';
3
-
4
- export async function fetchRuntimeControl(): Promise<RuntimeControlView> {
5
- const response = await api.get<RuntimeControlView>('/api/runtime/control');
6
- if (!response.ok) {
7
- throw new Error(response.error.message);
8
- }
9
- return response.data;
10
- }
11
-
12
- export async function startRuntimeService(): Promise<RuntimeControlActionResult> {
13
- const response = await api.post<RuntimeControlActionResult>('/api/runtime/control/start-service', {});
14
- if (!response.ok) {
15
- throw new Error(response.error.message);
16
- }
17
- return response.data;
18
- }
19
-
20
- export async function restartRuntimeService(): Promise<RuntimeControlActionResult> {
21
- const response = await api.post<RuntimeControlActionResult>('/api/runtime/control/restart-service', {});
22
- if (!response.ok) {
23
- throw new Error(response.error.message);
24
- }
25
- return response.data;
26
- }
27
-
28
- export async function stopRuntimeService(): Promise<RuntimeControlActionResult> {
29
- const response = await api.post<RuntimeControlActionResult>('/api/runtime/control/stop-service', {});
30
- if (!response.ok) {
31
- throw new Error(response.error.message);
32
- }
33
- return response.data;
34
- }
@@ -1,46 +0,0 @@
1
- import { api } from './client';
2
- import type { ServerPathBrowseView, ServerPathReadView } from './types';
3
-
4
- export async function fetchServerPathBrowse(params?: {
5
- path?: string | null;
6
- includeFiles?: boolean;
7
- }): Promise<ServerPathBrowseView> {
8
- const path = typeof params?.path === 'string' ? params.path.trim() : '';
9
- const includeFiles = Boolean(params?.includeFiles);
10
- const query = new URLSearchParams();
11
- if (path) {
12
- query.set('path', path);
13
- }
14
- if (includeFiles) {
15
- query.set('includeFiles', '1');
16
- }
17
- const suffix = query.toString();
18
- const response = await api.get<ServerPathBrowseView>(
19
- suffix ? `/api/server-paths/browse?${suffix}` : '/api/server-paths/browse'
20
- );
21
- if (!response.ok) {
22
- throw new Error(response.error.message);
23
- }
24
- return response.data;
25
- }
26
-
27
- export async function fetchServerPathRead(params: {
28
- path: string;
29
- basePath?: string | null;
30
- }): Promise<ServerPathReadView> {
31
- const { path } = params;
32
- const basePath =
33
- typeof params.basePath === 'string' ? params.basePath.trim() : '';
34
- const query = new URLSearchParams();
35
- query.set('path', path.trim());
36
- if (basePath) {
37
- query.set('basePath', basePath);
38
- }
39
- const response = await api.get<ServerPathReadView>(
40
- `/api/server-paths/read?${query.toString()}`
41
- );
42
- if (!response.ok) {
43
- throw new Error(response.error.message);
44
- }
45
- return response.data;
46
- }