@nextclaw/ui 0.12.20-beta.0 → 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.
- package/CHANGELOG.md +12 -0
- package/dist/assets/api-BcqDx0tm.js +15 -0
- package/dist/assets/app-manager-provider-DVYBjif-.js +1 -0
- package/dist/assets/{app-navigation.config-BORqHkbN.js → app-navigation.config-CMoWvFEI.js} +1 -1
- package/dist/assets/{channels-list-page-sISO_4Yj.js → channels-list-page-CsoI4OJm.js} +2 -2
- package/dist/assets/{chat-ChCu7LQD.js → chat-CA3aRmhx.js} +6 -6
- package/dist/assets/chat-page-gdSN6Pr6.js +1 -0
- package/dist/assets/chunk-JZWAC4HX-u4uYphxM.js +3 -0
- package/dist/assets/{desktop-update-config-BfJ5iSeY.js → desktop-update-config-CD6-2PfI.js} +1 -1
- package/dist/assets/{dialog-B-CXiFPZ.js → dialog-csshWetU.js} +1 -1
- package/dist/assets/{dist-DYVfg3q5.js → dist-Bl94Ahwx.js} +1 -1
- package/dist/assets/{es2015-BXroVnPi.js → es2015-JCM5-KtW.js} +1 -1
- package/dist/assets/index-BTDFuKka.js +2 -0
- package/dist/assets/marketplace-page-DJGDpTAo.js +1 -0
- package/dist/assets/{marketplace-page-C9oZ01rM.js → marketplace-page-DxlxHCFm.js} +2 -2
- package/dist/assets/{mcp-marketplace-page-DuEixgSs.js → mcp-marketplace-page-5UjYRWOR.js} +2 -2
- package/dist/assets/mcp-marketplace-page-C1XaHZZO.js +1 -0
- package/dist/assets/{model-config-mfhqEZBG.js → model-config-PccJ9XyH.js} +1 -1
- package/dist/assets/{notice-card-CozHB03G.js → notice-card-CCgk6FvF.js} +1 -1
- package/dist/assets/{popover-CPUPma-w.js → popover-YAsxDBhY.js} +1 -1
- package/dist/assets/{provider-scoped-model-input-CL9sti2I.js → provider-scoped-model-input-CzpF7cug.js} +1 -1
- package/dist/assets/{providers-list-HPmL2akJ.js → providers-list-8qDMER8o.js} +1 -1
- package/dist/assets/remote-D4TtLPAp.js +1 -0
- package/dist/assets/runtime-config-page-D-4c5H5z.js +1 -0
- package/dist/assets/{search-config-Bcnk9VlL.js → search-config-D3a65l3r.js} +1 -1
- package/dist/assets/{secrets-config-Dde-5Y1w.js → secrets-config-CoMlR_7i.js} +2 -2
- package/dist/assets/{select-BELPuXLW.js → select-DIZrwsKU.js} +1 -1
- package/dist/assets/{sessions-config-page-CG49_0Z6.js → sessions-config-page-Cc0TJStn.js} +2 -2
- package/dist/assets/{setting-row-D5DtT6Ny.js → setting-row-DiQyrE81.js} +1 -1
- package/dist/assets/{tag-chip-D9BWWgYg.js → tag-chip-C3wDBe_-.js} +1 -1
- package/dist/assets/{theme-provider-DeBrTglS.js → theme-provider-aOmrJ9J6.js} +1 -1
- package/dist/assets/{tooltip-CI0rpNee.js → tooltip-Dq5Xehpk.js} +1 -1
- package/dist/assets/use-config-BQJjq1mP.js +1 -0
- package/dist/assets/{use-confirm-dialog-hbynwWf2.js → use-confirm-dialog-DBoV5n5P.js} +1 -1
- package/dist/assets/{use-infinite-scroll-loader-Cw5qQr3-.js → use-infinite-scroll-loader-JAicqVC5.js} +1 -1
- package/dist/assets/{use-viewport-layout-CWHVDC6z.js → use-viewport-layout-BX3XqzJ4.js} +1 -1
- package/dist/index.html +16 -16
- package/package.json +8 -6
- package/src/app/hooks/use-realtime-query-bridge.ts +5 -5
- package/src/features/channels/components/config/channel-form.tsx +3 -3
- package/src/features/chat/hooks/use-ncp-chat-page-data.ts +7 -6
- package/src/features/chat/pages/ncp-chat-page.test.ts +22 -8
- package/src/features/chat/utils/chat-session-preference-governance.utils.test.tsx +114 -0
- package/src/features/chat/utils/chat-session-preference-governance.utils.ts +30 -36
- package/src/shared/lib/api/index.ts +12 -12
- package/src/shared/lib/api/ncp-session.test.ts +17 -18
- package/src/shared/lib/api/raw-client.utils.ts +3 -126
- package/src/shared/lib/api/services/agents.service.ts +18 -0
- package/src/shared/lib/api/services/channel-auth.service.ts +21 -0
- package/src/shared/lib/api/{client.ts → services/client.service.ts} +45 -1
- package/src/shared/lib/api/services/config.service.ts +171 -0
- package/src/shared/lib/api/services/marketplace.service.ts +66 -0
- package/src/shared/lib/api/services/mcp-marketplace.service.ts +70 -0
- package/src/shared/lib/api/services/ncp-attachments.service.ts +14 -0
- package/src/shared/lib/api/services/ncp-session.service.ts +39 -0
- package/src/shared/lib/api/services/remote.service.ts +50 -0
- package/src/shared/lib/api/services/runtime-control.service.ts +18 -0
- package/src/shared/lib/api/services/runtime-update.service.ts +26 -0
- package/src/shared/lib/api/services/server-path.service.ts +16 -0
- package/src/shared/lib/transport/index.ts +1 -0
- package/src/shared/lib/transport/local-transport.service.ts +24 -4
- package/src/shared/lib/transport/remote-transport.service.ts +1 -1
- package/src/shared/lib/transport/request-raw-api-response.utils.ts +133 -0
- package/src/shared/lib/transport/transport.types.ts +8 -2
- package/dist/assets/api-C412zuay.js +0 -15
- package/dist/assets/app-manager-provider-Cm-KiZZG.js +0 -1
- package/dist/assets/chat-page-BCaNZJGT.js +0 -1
- package/dist/assets/chunk-JZWAC4HX-DvbcIVPf.js +0 -3
- package/dist/assets/index-CqPDhosM.js +0 -2
- package/dist/assets/marketplace-page-C8uaWkfd.js +0 -1
- package/dist/assets/mcp-marketplace-page-rNqr6ZpD.js +0 -1
- package/dist/assets/remote-oDlAdgVA.js +0 -1
- package/dist/assets/runtime-config-page-BCshTAAE.js +0 -1
- package/dist/assets/use-config-CrWZ_TSF.js +0 -1
- package/src/shared/lib/api/agents.ts +0 -34
- package/src/shared/lib/api/channel-auth.ts +0 -35
- package/src/shared/lib/api/config.ts +0 -362
- package/src/shared/lib/api/marketplace.ts +0 -156
- package/src/shared/lib/api/mcp-marketplace.ts +0 -138
- package/src/shared/lib/api/ncp-attachments.ts +0 -41
- package/src/shared/lib/api/ncp-session.ts +0 -78
- package/src/shared/lib/api/remote.ts +0 -86
- package/src/shared/lib/api/runtime-control.ts +0 -34
- package/src/shared/lib/api/runtime-update.service.ts +0 -50
- package/src/shared/lib/api/server-path.ts +0 -46
|
@@ -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,50 +0,0 @@
|
|
|
1
|
-
import type { UpdatePreferences, UpdateSnapshot } from '@nextclaw/kernel';
|
|
2
|
-
import { api } from './client';
|
|
3
|
-
|
|
4
|
-
export async function fetchRuntimeUpdate(): Promise<UpdateSnapshot> {
|
|
5
|
-
const response = await api.get<UpdateSnapshot>('/api/runtime/update');
|
|
6
|
-
if (!response.ok) {
|
|
7
|
-
throw new Error(response.error.message);
|
|
8
|
-
}
|
|
9
|
-
return response.data;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export async function checkRuntimeUpdate(): Promise<UpdateSnapshot> {
|
|
13
|
-
const response = await api.post<UpdateSnapshot>('/api/runtime/update/check', {});
|
|
14
|
-
if (!response.ok) {
|
|
15
|
-
throw new Error(response.error.message);
|
|
16
|
-
}
|
|
17
|
-
return response.data;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export async function downloadRuntimeUpdate(): Promise<UpdateSnapshot> {
|
|
21
|
-
const response = await api.post<UpdateSnapshot>('/api/runtime/update/download', {});
|
|
22
|
-
if (!response.ok) {
|
|
23
|
-
throw new Error(response.error.message);
|
|
24
|
-
}
|
|
25
|
-
return response.data;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function applyRuntimeUpdate(): Promise<UpdateSnapshot> {
|
|
29
|
-
const response = await api.post<UpdateSnapshot>('/api/runtime/update/apply', {});
|
|
30
|
-
if (!response.ok) {
|
|
31
|
-
throw new Error(response.error.message);
|
|
32
|
-
}
|
|
33
|
-
return response.data;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export async function updateRuntimeUpdatePreferences(preferences: Partial<UpdatePreferences>): Promise<UpdateSnapshot> {
|
|
37
|
-
const response = await api.put<UpdateSnapshot>('/api/runtime/update/preferences', preferences);
|
|
38
|
-
if (!response.ok) {
|
|
39
|
-
throw new Error(response.error.message);
|
|
40
|
-
}
|
|
41
|
-
return response.data;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export async function updateRuntimeUpdateChannel(channel: UpdateSnapshot['channel']): Promise<UpdateSnapshot> {
|
|
45
|
-
const response = await api.put<UpdateSnapshot>('/api/runtime/update/channel', { channel });
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
throw new Error(response.error.message);
|
|
48
|
-
}
|
|
49
|
-
return response.data;
|
|
50
|
-
}
|
|
@@ -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
|
-
}
|