v0-sdk 0.16.2 → 0.16.4
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/dist/index.cjs +82 -4
- package/dist/index.d.ts +196 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -4
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -145,7 +145,9 @@ function createClient(config = {}) {
|
|
|
145
145
|
projectId: params.projectId,
|
|
146
146
|
modelConfiguration: params.modelConfiguration,
|
|
147
147
|
responseMode: params.responseMode,
|
|
148
|
-
designSystemId: params.designSystemId
|
|
148
|
+
designSystemId: params.designSystemId,
|
|
149
|
+
mcpServerIds: params.mcpServerIds,
|
|
150
|
+
metadata: params.metadata
|
|
149
151
|
};
|
|
150
152
|
if (params.responseMode === 'experimental_stream') {
|
|
151
153
|
return await streamingFetcher(`/chats`, 'POST', {
|
|
@@ -160,7 +162,9 @@ function createClient(config = {}) {
|
|
|
160
162
|
const query = params ? Object.fromEntries(Object.entries({
|
|
161
163
|
limit: params.limit !== undefined ? String(params.limit) : undefined,
|
|
162
164
|
offset: params.offset !== undefined ? String(params.offset) : undefined,
|
|
163
|
-
isFavorite: params.isFavorite !== undefined ? String(params.isFavorite) : undefined
|
|
165
|
+
isFavorite: params.isFavorite !== undefined ? String(params.isFavorite) : undefined,
|
|
166
|
+
vercelProjectId: params.vercelProjectId,
|
|
167
|
+
branch: params.branch
|
|
164
168
|
}).filter(([_, value])=>value !== undefined)) : {};
|
|
165
169
|
const hasQuery = Object.keys(query).length > 0;
|
|
166
170
|
return fetcher(`/chats`, 'GET', {
|
|
@@ -197,7 +201,8 @@ function createClient(config = {}) {
|
|
|
197
201
|
};
|
|
198
202
|
const body = {
|
|
199
203
|
name: params.name,
|
|
200
|
-
privacy: params.privacy
|
|
204
|
+
privacy: params.privacy,
|
|
205
|
+
metadata: params.metadata
|
|
201
206
|
};
|
|
202
207
|
return fetcher(`/chats/${pathParams.chatId}`, 'PATCH', {
|
|
203
208
|
pathParams,
|
|
@@ -254,7 +259,8 @@ function createClient(config = {}) {
|
|
|
254
259
|
attachments: params.attachments,
|
|
255
260
|
system: params.system,
|
|
256
261
|
modelConfiguration: params.modelConfiguration,
|
|
257
|
-
responseMode: params.responseMode
|
|
262
|
+
responseMode: params.responseMode,
|
|
263
|
+
mcpServerIds: params.mcpServerIds
|
|
258
264
|
};
|
|
259
265
|
if (params.responseMode === 'experimental_stream') {
|
|
260
266
|
return await streamingFetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
@@ -359,6 +365,15 @@ function createClient(config = {}) {
|
|
|
359
365
|
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}/resume`, 'POST', {
|
|
360
366
|
pathParams
|
|
361
367
|
});
|
|
368
|
+
},
|
|
369
|
+
async stop (params) {
|
|
370
|
+
const pathParams = {
|
|
371
|
+
chatId: params.chatId,
|
|
372
|
+
messageId: params.messageId
|
|
373
|
+
};
|
|
374
|
+
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}/stop`, 'POST', {
|
|
375
|
+
pathParams
|
|
376
|
+
});
|
|
362
377
|
}
|
|
363
378
|
},
|
|
364
379
|
projects: {
|
|
@@ -697,6 +712,69 @@ function createClient(config = {}) {
|
|
|
697
712
|
query
|
|
698
713
|
} : {}
|
|
699
714
|
});
|
|
715
|
+
},
|
|
716
|
+
async getUserActivity (params) {
|
|
717
|
+
const query = params ? Object.fromEntries(Object.entries({
|
|
718
|
+
startDate: params.startDate,
|
|
719
|
+
endDate: params.endDate
|
|
720
|
+
}).filter(([_, value])=>value !== undefined)) : {};
|
|
721
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
722
|
+
return fetcher(`/reports/user-activity`, 'GET', {
|
|
723
|
+
...hasQuery ? {
|
|
724
|
+
query
|
|
725
|
+
} : {}
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
mcpServers: {
|
|
730
|
+
async find () {
|
|
731
|
+
return fetcher(`/mcp-servers`, 'GET', {});
|
|
732
|
+
},
|
|
733
|
+
async create (params) {
|
|
734
|
+
const body = {
|
|
735
|
+
name: params.name,
|
|
736
|
+
url: params.url,
|
|
737
|
+
description: params.description,
|
|
738
|
+
enabled: params.enabled,
|
|
739
|
+
auth: params.auth,
|
|
740
|
+
scope: params.scope
|
|
741
|
+
};
|
|
742
|
+
return fetcher(`/mcp-servers`, 'POST', {
|
|
743
|
+
body
|
|
744
|
+
});
|
|
745
|
+
},
|
|
746
|
+
async getById (params) {
|
|
747
|
+
const pathParams = {
|
|
748
|
+
mcpServerId: params.mcpServerId
|
|
749
|
+
};
|
|
750
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'GET', {
|
|
751
|
+
pathParams
|
|
752
|
+
});
|
|
753
|
+
},
|
|
754
|
+
async update (params) {
|
|
755
|
+
const pathParams = {
|
|
756
|
+
mcpServerId: params.mcpServerId
|
|
757
|
+
};
|
|
758
|
+
const body = {
|
|
759
|
+
name: params.name,
|
|
760
|
+
url: params.url,
|
|
761
|
+
description: params.description,
|
|
762
|
+
enabled: params.enabled,
|
|
763
|
+
auth: params.auth,
|
|
764
|
+
scope: params.scope
|
|
765
|
+
};
|
|
766
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'PATCH', {
|
|
767
|
+
pathParams,
|
|
768
|
+
body
|
|
769
|
+
});
|
|
770
|
+
},
|
|
771
|
+
async delete (params) {
|
|
772
|
+
const pathParams = {
|
|
773
|
+
mcpServerId: params.mcpServerId
|
|
774
|
+
};
|
|
775
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'DELETE', {
|
|
776
|
+
pathParams
|
|
777
|
+
});
|
|
700
778
|
}
|
|
701
779
|
}
|
|
702
780
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ type ChatDetail = {
|
|
|
43
43
|
experimental_content?: Array<unknown[] | unknown[]>;
|
|
44
44
|
createdAt: string;
|
|
45
45
|
updatedAt?: string;
|
|
46
|
-
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit';
|
|
46
|
+
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit' | 'design-mode';
|
|
47
47
|
role: 'user' | 'assistant';
|
|
48
48
|
finishReason?: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other';
|
|
49
49
|
apiUrl: string;
|
|
@@ -68,13 +68,14 @@ type ChatDetail = {
|
|
|
68
68
|
text: string;
|
|
69
69
|
modelConfiguration?: {
|
|
70
70
|
/** @deprecated */
|
|
71
|
-
modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
71
|
+
modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
72
72
|
imageGenerations?: boolean;
|
|
73
73
|
thinking?: boolean;
|
|
74
74
|
};
|
|
75
75
|
permissions: {
|
|
76
76
|
write: boolean;
|
|
77
77
|
};
|
|
78
|
+
metadata: Record<string, unknown>;
|
|
78
79
|
};
|
|
79
80
|
type ChatSummary = {
|
|
80
81
|
id: string;
|
|
@@ -250,7 +251,7 @@ type MessageDetail = {
|
|
|
250
251
|
experimental_content?: Array<unknown[] | unknown[]>;
|
|
251
252
|
createdAt: string;
|
|
252
253
|
updatedAt?: string;
|
|
253
|
-
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit';
|
|
254
|
+
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit' | 'design-mode';
|
|
254
255
|
role: 'user' | 'assistant';
|
|
255
256
|
finishReason?: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other';
|
|
256
257
|
apiUrl: string;
|
|
@@ -273,7 +274,7 @@ type MessageSummary = {
|
|
|
273
274
|
experimental_content?: Array<unknown[] | unknown[]>;
|
|
274
275
|
createdAt: string;
|
|
275
276
|
updatedAt?: string;
|
|
276
|
-
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit';
|
|
277
|
+
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit' | 'design-mode';
|
|
277
278
|
role: 'user' | 'assistant';
|
|
278
279
|
finishReason?: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other';
|
|
279
280
|
apiUrl: string;
|
|
@@ -297,7 +298,7 @@ type MessageSummaryList = {
|
|
|
297
298
|
experimental_content?: Array<unknown[] | unknown[]>;
|
|
298
299
|
createdAt: string;
|
|
299
300
|
updatedAt?: string;
|
|
300
|
-
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit';
|
|
301
|
+
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git' | 'pull-changes' | 'fix-cve' | 'answered-questions' | 'cloned-repo' | 'manual-commit' | 'design-mode';
|
|
301
302
|
role: 'user' | 'assistant';
|
|
302
303
|
finishReason?: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other';
|
|
303
304
|
apiUrl: string;
|
|
@@ -564,12 +565,14 @@ interface ChatsCreateRequest {
|
|
|
564
565
|
projectId?: string;
|
|
565
566
|
modelConfiguration?: {
|
|
566
567
|
/** @deprecated */
|
|
567
|
-
modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
568
|
+
modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
568
569
|
imageGenerations?: boolean;
|
|
569
570
|
thinking?: boolean;
|
|
570
571
|
};
|
|
571
572
|
responseMode?: 'sync' | 'async' | 'experimental_stream';
|
|
572
573
|
designSystemId?: string | null;
|
|
574
|
+
mcpServerIds?: string[];
|
|
575
|
+
metadata?: Record<string, unknown>;
|
|
573
576
|
}
|
|
574
577
|
type ChatsCreateResponse = ChatDetail;
|
|
575
578
|
type ChatsCreateStreamResponse = ReadableStream<Uint8Array>;
|
|
@@ -581,6 +584,7 @@ type ChatsInitRequest = {
|
|
|
581
584
|
name?: string;
|
|
582
585
|
chatPrivacy?: 'public' | 'private' | 'team-edit' | 'team' | 'unlisted';
|
|
583
586
|
projectId?: string;
|
|
587
|
+
metadata?: Record<string, unknown>;
|
|
584
588
|
} & ({
|
|
585
589
|
type: 'files';
|
|
586
590
|
files: Array<{
|
|
@@ -649,6 +653,7 @@ type ChatsGetByIdResponse = ChatDetail;
|
|
|
649
653
|
interface ChatsUpdateRequest {
|
|
650
654
|
name?: string;
|
|
651
655
|
privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted';
|
|
656
|
+
metadata?: Record<string, unknown> | unknown;
|
|
652
657
|
}
|
|
653
658
|
type ChatsUpdateResponse = ChatDetail;
|
|
654
659
|
interface ChatsFavoriteRequest {
|
|
@@ -682,11 +687,12 @@ interface ChatsSendMessageRequest {
|
|
|
682
687
|
system?: string;
|
|
683
688
|
modelConfiguration?: {
|
|
684
689
|
/** @deprecated */
|
|
685
|
-
modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
690
|
+
modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast';
|
|
686
691
|
imageGenerations?: boolean;
|
|
687
692
|
thinking?: boolean;
|
|
688
693
|
};
|
|
689
694
|
responseMode?: 'sync' | 'async' | 'experimental_stream';
|
|
695
|
+
mcpServerIds?: string[];
|
|
690
696
|
}
|
|
691
697
|
type ChatsSendMessageResponse = ChatDetail;
|
|
692
698
|
type ChatsSendMessageStreamResponse = ReadableStream<Uint8Array>;
|
|
@@ -717,6 +723,9 @@ interface ChatsDeleteVersionFilesRequest {
|
|
|
717
723
|
}
|
|
718
724
|
type ChatsDeleteVersionFilesResponse = VersionDetail;
|
|
719
725
|
type ChatsResumeResponse = MessageDetail;
|
|
726
|
+
interface ChatsStopResponse {
|
|
727
|
+
success: true;
|
|
728
|
+
}
|
|
720
729
|
interface DeploymentsFindResponse {
|
|
721
730
|
object: 'list';
|
|
722
731
|
data: DeploymentDetail[];
|
|
@@ -945,6 +954,139 @@ type ReportsGetUsageResponse = {
|
|
|
945
954
|
totalCount: number;
|
|
946
955
|
};
|
|
947
956
|
};
|
|
957
|
+
type ReportsGetUserActivityResponse = {
|
|
958
|
+
object: 'list';
|
|
959
|
+
data: Array<{
|
|
960
|
+
id: string;
|
|
961
|
+
object: 'user_activity';
|
|
962
|
+
user: {
|
|
963
|
+
id: string;
|
|
964
|
+
object: 'user';
|
|
965
|
+
name?: string;
|
|
966
|
+
email: string;
|
|
967
|
+
avatar: string;
|
|
968
|
+
createdAt: string;
|
|
969
|
+
updatedAt?: string;
|
|
970
|
+
teamV0Role: 'V0Builder' | 'V0Chatter' | 'V0Viewer' | unknown;
|
|
971
|
+
};
|
|
972
|
+
chatCount: number;
|
|
973
|
+
messageCount: number;
|
|
974
|
+
activeDays: number;
|
|
975
|
+
firstActivity: string | unknown;
|
|
976
|
+
lastActivity: string | unknown;
|
|
977
|
+
}>;
|
|
978
|
+
meta: {
|
|
979
|
+
totalCount: number;
|
|
980
|
+
dateRange: {
|
|
981
|
+
start: string | unknown;
|
|
982
|
+
end: string | unknown;
|
|
983
|
+
};
|
|
984
|
+
};
|
|
985
|
+
};
|
|
986
|
+
type McpServersFindResponse = {
|
|
987
|
+
object: 'list';
|
|
988
|
+
data: Array<{
|
|
989
|
+
object: 'mcp_server';
|
|
990
|
+
id: string;
|
|
991
|
+
name: string;
|
|
992
|
+
url: string;
|
|
993
|
+
description?: string;
|
|
994
|
+
enabled: boolean;
|
|
995
|
+
auth: {
|
|
996
|
+
type: 'none' | 'bearer' | 'custom-headers' | 'oauth';
|
|
997
|
+
};
|
|
998
|
+
scope: 'user' | 'team';
|
|
999
|
+
createdAt: string;
|
|
1000
|
+
updatedAt?: string;
|
|
1001
|
+
}>;
|
|
1002
|
+
};
|
|
1003
|
+
interface McpServersCreateRequest {
|
|
1004
|
+
name: string;
|
|
1005
|
+
url: string;
|
|
1006
|
+
description?: string;
|
|
1007
|
+
enabled?: boolean;
|
|
1008
|
+
auth?: {
|
|
1009
|
+
type: 'none';
|
|
1010
|
+
token?: never;
|
|
1011
|
+
headers?: never;
|
|
1012
|
+
} | {
|
|
1013
|
+
type: 'bearer';
|
|
1014
|
+
token: string;
|
|
1015
|
+
headers?: never;
|
|
1016
|
+
} | {
|
|
1017
|
+
type: 'custom-headers';
|
|
1018
|
+
headers: Record<string, unknown>;
|
|
1019
|
+
token?: never;
|
|
1020
|
+
};
|
|
1021
|
+
scope?: 'user' | 'team';
|
|
1022
|
+
}
|
|
1023
|
+
type McpServersCreateResponse = {
|
|
1024
|
+
object: 'mcp_server';
|
|
1025
|
+
id: string;
|
|
1026
|
+
name: string;
|
|
1027
|
+
url: string;
|
|
1028
|
+
description?: string;
|
|
1029
|
+
enabled: boolean;
|
|
1030
|
+
auth: {
|
|
1031
|
+
type: 'none' | 'bearer' | 'custom-headers' | 'oauth';
|
|
1032
|
+
};
|
|
1033
|
+
scope: 'user' | 'team';
|
|
1034
|
+
createdAt: string;
|
|
1035
|
+
updatedAt?: string;
|
|
1036
|
+
};
|
|
1037
|
+
type McpServersGetByIdResponse = {
|
|
1038
|
+
object: 'mcp_server';
|
|
1039
|
+
id: string;
|
|
1040
|
+
name: string;
|
|
1041
|
+
url: string;
|
|
1042
|
+
description?: string;
|
|
1043
|
+
enabled: boolean;
|
|
1044
|
+
auth: {
|
|
1045
|
+
type: 'none' | 'bearer' | 'custom-headers' | 'oauth';
|
|
1046
|
+
};
|
|
1047
|
+
scope: 'user' | 'team';
|
|
1048
|
+
createdAt: string;
|
|
1049
|
+
updatedAt?: string;
|
|
1050
|
+
};
|
|
1051
|
+
interface McpServersUpdateRequest {
|
|
1052
|
+
name?: string;
|
|
1053
|
+
url?: string;
|
|
1054
|
+
description?: string;
|
|
1055
|
+
enabled?: boolean;
|
|
1056
|
+
auth?: {
|
|
1057
|
+
type: 'none';
|
|
1058
|
+
token?: never;
|
|
1059
|
+
headers?: never;
|
|
1060
|
+
} | {
|
|
1061
|
+
type: 'bearer';
|
|
1062
|
+
token: string;
|
|
1063
|
+
headers?: never;
|
|
1064
|
+
} | {
|
|
1065
|
+
type: 'custom-headers';
|
|
1066
|
+
headers: Record<string, unknown>;
|
|
1067
|
+
token?: never;
|
|
1068
|
+
};
|
|
1069
|
+
scope?: 'user' | 'team';
|
|
1070
|
+
}
|
|
1071
|
+
type McpServersUpdateResponse = {
|
|
1072
|
+
object: 'mcp_server';
|
|
1073
|
+
id: string;
|
|
1074
|
+
name: string;
|
|
1075
|
+
url: string;
|
|
1076
|
+
description?: string;
|
|
1077
|
+
enabled: boolean;
|
|
1078
|
+
auth: {
|
|
1079
|
+
type: 'none' | 'bearer' | 'custom-headers' | 'oauth';
|
|
1080
|
+
};
|
|
1081
|
+
scope: 'user' | 'team';
|
|
1082
|
+
createdAt: string;
|
|
1083
|
+
updatedAt?: string;
|
|
1084
|
+
};
|
|
1085
|
+
interface McpServersDeleteResponse {
|
|
1086
|
+
object: 'mcp_server';
|
|
1087
|
+
id: string;
|
|
1088
|
+
deleted: true;
|
|
1089
|
+
}
|
|
948
1090
|
interface V0ClientConfig {
|
|
949
1091
|
apiKey?: string;
|
|
950
1092
|
baseUrl?: string;
|
|
@@ -956,6 +1098,8 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
956
1098
|
limit?: number;
|
|
957
1099
|
offset?: number;
|
|
958
1100
|
isFavorite?: boolean;
|
|
1101
|
+
vercelProjectId?: string;
|
|
1102
|
+
branch?: string;
|
|
959
1103
|
}): Promise<ChatsFindResponse>;
|
|
960
1104
|
init(params: ChatsInitRequest): Promise<ChatsInitResponse>;
|
|
961
1105
|
delete(params: {
|
|
@@ -1013,6 +1157,10 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
1013
1157
|
chatId: string;
|
|
1014
1158
|
messageId: string;
|
|
1015
1159
|
}): Promise<ChatsResumeResponse>;
|
|
1160
|
+
stop(params: {
|
|
1161
|
+
chatId: string;
|
|
1162
|
+
messageId: string;
|
|
1163
|
+
}): Promise<ChatsStopResponse>;
|
|
1016
1164
|
};
|
|
1017
1165
|
projects: {
|
|
1018
1166
|
getByChatId(params: {
|
|
@@ -1119,6 +1267,23 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
1119
1267
|
limit?: number;
|
|
1120
1268
|
cursor?: string;
|
|
1121
1269
|
}): Promise<ReportsGetUsageResponse>;
|
|
1270
|
+
getUserActivity(params?: {
|
|
1271
|
+
startDate?: string;
|
|
1272
|
+
endDate?: string;
|
|
1273
|
+
}): Promise<ReportsGetUserActivityResponse>;
|
|
1274
|
+
};
|
|
1275
|
+
mcpServers: {
|
|
1276
|
+
find(): Promise<McpServersFindResponse>;
|
|
1277
|
+
create(params: McpServersCreateRequest): Promise<McpServersCreateResponse>;
|
|
1278
|
+
getById(params: {
|
|
1279
|
+
mcpServerId: string;
|
|
1280
|
+
}): Promise<McpServersGetByIdResponse>;
|
|
1281
|
+
update(params: {
|
|
1282
|
+
mcpServerId: string;
|
|
1283
|
+
} & McpServersUpdateRequest): Promise<McpServersUpdateResponse>;
|
|
1284
|
+
delete(params: {
|
|
1285
|
+
mcpServerId: string;
|
|
1286
|
+
}): Promise<McpServersDeleteResponse>;
|
|
1122
1287
|
};
|
|
1123
1288
|
};
|
|
1124
1289
|
declare const v0: {
|
|
@@ -1128,6 +1293,8 @@ declare const v0: {
|
|
|
1128
1293
|
limit?: number;
|
|
1129
1294
|
offset?: number;
|
|
1130
1295
|
isFavorite?: boolean;
|
|
1296
|
+
vercelProjectId?: string;
|
|
1297
|
+
branch?: string;
|
|
1131
1298
|
}): Promise<ChatsFindResponse>;
|
|
1132
1299
|
init(params: ChatsInitRequest): Promise<ChatsInitResponse>;
|
|
1133
1300
|
delete(params: {
|
|
@@ -1185,6 +1352,10 @@ declare const v0: {
|
|
|
1185
1352
|
chatId: string;
|
|
1186
1353
|
messageId: string;
|
|
1187
1354
|
}): Promise<ChatsResumeResponse>;
|
|
1355
|
+
stop(params: {
|
|
1356
|
+
chatId: string;
|
|
1357
|
+
messageId: string;
|
|
1358
|
+
}): Promise<ChatsStopResponse>;
|
|
1188
1359
|
};
|
|
1189
1360
|
projects: {
|
|
1190
1361
|
getByChatId(params: {
|
|
@@ -1291,9 +1462,26 @@ declare const v0: {
|
|
|
1291
1462
|
limit?: number;
|
|
1292
1463
|
cursor?: string;
|
|
1293
1464
|
}): Promise<ReportsGetUsageResponse>;
|
|
1465
|
+
getUserActivity(params?: {
|
|
1466
|
+
startDate?: string;
|
|
1467
|
+
endDate?: string;
|
|
1468
|
+
}): Promise<ReportsGetUserActivityResponse>;
|
|
1469
|
+
};
|
|
1470
|
+
mcpServers: {
|
|
1471
|
+
find(): Promise<McpServersFindResponse>;
|
|
1472
|
+
create(params: McpServersCreateRequest): Promise<McpServersCreateResponse>;
|
|
1473
|
+
getById(params: {
|
|
1474
|
+
mcpServerId: string;
|
|
1475
|
+
}): Promise<McpServersGetByIdResponse>;
|
|
1476
|
+
update(params: {
|
|
1477
|
+
mcpServerId: string;
|
|
1478
|
+
} & McpServersUpdateRequest): Promise<McpServersUpdateResponse>;
|
|
1479
|
+
delete(params: {
|
|
1480
|
+
mcpServerId: string;
|
|
1481
|
+
}): Promise<McpServersDeleteResponse>;
|
|
1294
1482
|
};
|
|
1295
1483
|
};
|
|
1296
1484
|
|
|
1297
1485
|
export { createClient, parseStreamingResponse, v0 };
|
|
1298
|
-
export type { ChatDetail, ChatSummary, ChatsCreateRequest, ChatsCreateResponse, ChatsCreateStreamResponse, ChatsDeleteResponse, ChatsDeleteVersionFilesRequest, ChatsDeleteVersionFilesResponse, ChatsFavoriteRequest, ChatsFavoriteResponse, ChatsFindMessagesResponse, ChatsFindResponse, ChatsFindVersionsResponse, ChatsForkRequest, ChatsForkResponse, ChatsGetByIdResponse, ChatsGetMessageResponse, ChatsGetVersionResponse, ChatsInitRequest, ChatsInitResponse, ChatsResumeResponse, ChatsSendMessageRequest, ChatsSendMessageResponse, ChatsSendMessageStreamResponse, ChatsUpdateRequest, ChatsUpdateResponse, ChatsUpdateVersionRequest, ChatsUpdateVersionResponse, ConflictError, DeploymentDetail, DeploymentSummary, DeploymentsCreateRequest, DeploymentsCreateResponse, DeploymentsDeleteResponse, DeploymentsFindErrorsResponse, DeploymentsFindLogsResponse, DeploymentsFindResponse, DeploymentsGetByIdResponse, EnvironmentVariableDetailSchema, EnvironmentVariableSummarySchema, EnvironmentVariablesListSchema, FileDetail, FileSummary, ForbiddenError, HookDetail, HookEventDetail, HookSummary, HooksCreateRequest, HooksCreateResponse, HooksDeleteResponse, HooksFindResponse, HooksGetByIdResponse, HooksUpdateRequest, HooksUpdateResponse, IntegrationConnectionDetailSchema, IntegrationConnectionListSchema, IntegrationConnectionSummarySchema, IntegrationDetailSchema, IntegrationListSchema, IntegrationSummarySchema, IntegrationsVercelProjectsCreateRequest, IntegrationsVercelProjectsCreateResponse, IntegrationsVercelProjectsFindResponse, InternalServerError, MessageDetail, MessageSummary, MessageSummaryList, NotFoundError, NotificationPreferenceSchema, PayloadTooLargeError, ProductDetailSchema, ProductListSchema, ProductSummarySchema, ProjectDetail, ProjectSummary, ProjectsAssignRequest, ProjectsAssignResponse, ProjectsCreateEnvVarsRequest, ProjectsCreateEnvVarsResponse, ProjectsCreateRequest, ProjectsCreateResponse, ProjectsDeleteEnvVarsRequest, ProjectsDeleteEnvVarsResponse, ProjectsDeleteResponse, ProjectsFindEnvVarsResponse, ProjectsFindResponse, ProjectsGetByChatIdResponse, ProjectsGetByIdResponse, ProjectsGetEnvVarResponse, ProjectsUpdateEnvVarsRequest, ProjectsUpdateEnvVarsResponse, ProjectsUpdateRequest, ProjectsUpdateResponse, RateLimitsFindResponse, ReportsGetUsageResponse, ScopeSummary, SearchResultItem, StreamEvent, TooManyRequestsError, UnauthorizedError, UnprocessableEntityError, UserDetailSchema, UserGetBillingResponse, UserGetPlanResponse, UserGetResponse, UserGetScopesResponse, UserPreferencesPostResponseSchema, UserPreferencesResponseSchema, UserPreferencesSchema, UserSummarySchema, V0ClientConfig, VercelProjectDetail, VercelProjectSummary, VersionDetail, VersionSummary, VersionSummaryList };
|
|
1486
|
+
export type { ChatDetail, ChatSummary, ChatsCreateRequest, ChatsCreateResponse, ChatsCreateStreamResponse, ChatsDeleteResponse, ChatsDeleteVersionFilesRequest, ChatsDeleteVersionFilesResponse, ChatsFavoriteRequest, ChatsFavoriteResponse, ChatsFindMessagesResponse, ChatsFindResponse, ChatsFindVersionsResponse, ChatsForkRequest, ChatsForkResponse, ChatsGetByIdResponse, ChatsGetMessageResponse, ChatsGetVersionResponse, ChatsInitRequest, ChatsInitResponse, ChatsResumeResponse, ChatsSendMessageRequest, ChatsSendMessageResponse, ChatsSendMessageStreamResponse, ChatsStopResponse, ChatsUpdateRequest, ChatsUpdateResponse, ChatsUpdateVersionRequest, ChatsUpdateVersionResponse, ConflictError, DeploymentDetail, DeploymentSummary, DeploymentsCreateRequest, DeploymentsCreateResponse, DeploymentsDeleteResponse, DeploymentsFindErrorsResponse, DeploymentsFindLogsResponse, DeploymentsFindResponse, DeploymentsGetByIdResponse, EnvironmentVariableDetailSchema, EnvironmentVariableSummarySchema, EnvironmentVariablesListSchema, FileDetail, FileSummary, ForbiddenError, HookDetail, HookEventDetail, HookSummary, HooksCreateRequest, HooksCreateResponse, HooksDeleteResponse, HooksFindResponse, HooksGetByIdResponse, HooksUpdateRequest, HooksUpdateResponse, IntegrationConnectionDetailSchema, IntegrationConnectionListSchema, IntegrationConnectionSummarySchema, IntegrationDetailSchema, IntegrationListSchema, IntegrationSummarySchema, IntegrationsVercelProjectsCreateRequest, IntegrationsVercelProjectsCreateResponse, IntegrationsVercelProjectsFindResponse, InternalServerError, McpServersCreateRequest, McpServersCreateResponse, McpServersDeleteResponse, McpServersFindResponse, McpServersGetByIdResponse, McpServersUpdateRequest, McpServersUpdateResponse, MessageDetail, MessageSummary, MessageSummaryList, NotFoundError, NotificationPreferenceSchema, PayloadTooLargeError, ProductDetailSchema, ProductListSchema, ProductSummarySchema, ProjectDetail, ProjectSummary, ProjectsAssignRequest, ProjectsAssignResponse, ProjectsCreateEnvVarsRequest, ProjectsCreateEnvVarsResponse, ProjectsCreateRequest, ProjectsCreateResponse, ProjectsDeleteEnvVarsRequest, ProjectsDeleteEnvVarsResponse, ProjectsDeleteResponse, ProjectsFindEnvVarsResponse, ProjectsFindResponse, ProjectsGetByChatIdResponse, ProjectsGetByIdResponse, ProjectsGetEnvVarResponse, ProjectsUpdateEnvVarsRequest, ProjectsUpdateEnvVarsResponse, ProjectsUpdateRequest, ProjectsUpdateResponse, RateLimitsFindResponse, ReportsGetUsageResponse, ReportsGetUserActivityResponse, ScopeSummary, SearchResultItem, StreamEvent, TooManyRequestsError, UnauthorizedError, UnprocessableEntityError, UserDetailSchema, UserGetBillingResponse, UserGetPlanResponse, UserGetResponse, UserGetScopesResponse, UserPreferencesPostResponseSchema, UserPreferencesResponseSchema, UserPreferencesSchema, UserSummarySchema, V0ClientConfig, VercelProjectDetail, VercelProjectSummary, VersionDetail, VersionSummary, VersionSummaryList };
|
|
1299
1487
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../src/sdk/core.ts","../src/sdk/v0.ts"],"sourcesContent":["export interface ClientConfig {\n apiKey?: string\n baseUrl?: string\n}\n\nexport function createFetcher(config: ClientConfig = {}) {\n const baseUrl = config.baseUrl || 'https://api.v0.dev/v1'\n let sessionToken: string | null = null\n\n return async function fetcher(\n url: string,\n method: string,\n params: {\n body?: any\n query?: Record<string, string>\n pathParams?: Record<string, string>\n headers?: Record<string, string>\n } = {},\n ): Promise<any> {\n const apiKey = config.apiKey || process.env.V0_API_KEY\n\n if (!apiKey) {\n throw new Error(\n 'API key is required. Provide it via config.apiKey or V0_API_KEY environment variable',\n )\n }\n\n const queryString = params.query\n ? '?' + new URLSearchParams(params.query).toString()\n : ''\n\n const finalUrl = baseUrl + url + queryString\n\n const hasBody = method !== 'GET' && params.body\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n 'User-Agent': 'v0-sdk/0.1.0',\n ...params.headers,\n }\n\n // Include session token in headers if available\n if (sessionToken) {\n headers['x-session-token'] = sessionToken\n }\n\n if (hasBody) {\n headers['Content-Type'] = 'application/json'\n }\n\n const res = await fetch(finalUrl, {\n method,\n headers,\n body: hasBody ? JSON.stringify(params.body) : undefined,\n })\n\n // Check for session token in response headers\n const newSessionToken = res.headers.get('x-session-token')\n if (newSessionToken) {\n sessionToken = newSessionToken\n }\n\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`HTTP ${res.status}: ${text}`)\n }\n\n // Handle binary responses based on Content-Type\n const contentType = res.headers.get('content-type') || ''\n if (\n contentType.includes('application/zip') ||\n contentType.includes('application/gzip')\n ) {\n return res.arrayBuffer()\n }\n\n return res.json()\n }\n}\n\n// Streaming response types\nexport interface StreamEvent {\n event?: string\n data: string\n}\n\n// Utility function to parse streaming events\nexport async function* parseStreamingResponse(\n stream: ReadableStream<Uint8Array>,\n): AsyncGenerator<StreamEvent, void, unknown> {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() || '' // Keep the last incomplete line in buffer\n\n for (const line of lines) {\n if (line.trim() === '') continue\n\n if (line.startsWith('data: ')) {\n const data = line.slice(6)\n if (data === '[DONE]') return\n\n try {\n yield {\n event: 'message',\n data: data,\n }\n } catch (e) {\n console.warn('Failed to parse streaming data:', e)\n }\n } else if (line.startsWith('event: ')) {\n const event = line.slice(7)\n yield {\n event: event,\n data: '',\n }\n }\n }\n }\n } finally {\n reader.releaseLock()\n }\n}\n\nexport function createStreamingFetcher(config: ClientConfig = {}) {\n const baseUrl = config.baseUrl || 'https://api.v0.dev/v1'\n let sessionToken: string | null = null\n\n return async function streamingFetcher(\n url: string,\n method: string,\n params: {\n body?: any\n query?: Record<string, string>\n pathParams?: Record<string, string>\n headers?: Record<string, string>\n } = {},\n ): Promise<ReadableStream<Uint8Array>> {\n const apiKey = config.apiKey || process.env.V0_API_KEY\n\n if (!apiKey) {\n throw new Error(\n 'API key is required. Provide it via config.apiKey or V0_API_KEY environment variable',\n )\n }\n\n const queryString = params.query\n ? '?' + new URLSearchParams(params.query).toString()\n : ''\n\n const finalUrl = baseUrl + url + queryString\n\n const hasBody = method !== 'GET' && params.body\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n 'User-Agent': 'v0-sdk/0.1.0',\n Accept: 'text/event-stream',\n 'Cache-Control': 'no-cache',\n ...params.headers,\n }\n\n // Include session token in headers if available\n if (sessionToken) {\n headers['x-session-token'] = sessionToken\n }\n\n if (hasBody) {\n headers['Content-Type'] = 'application/json'\n }\n\n const res = await fetch(finalUrl, {\n method,\n headers,\n body: hasBody ? JSON.stringify(params.body) : undefined,\n })\n\n // Check for session token in response headers\n const newSessionToken = res.headers.get('x-session-token')\n if (newSessionToken) {\n sessionToken = newSessionToken\n }\n\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`HTTP ${res.status}: ${text}`)\n }\n\n if (!res.body) {\n throw new Error('No response body available for streaming')\n }\n\n return res.body\n }\n}\n","import { createFetcher, createStreamingFetcher } from './core'\n\n// Re-export streaming utilities from core\nexport { parseStreamingResponse, type StreamEvent } from './core'\n\nexport type ChatDetail = {\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n files: {\n object: 'file'\n name: string\n content: string\n locked: boolean\n }[]\n }\n /** @deprecated */\n url: string\n messages: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n }>\n files?: {\n lang: string\n meta: Record<string, unknown>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n permissions: {\n write: boolean\n }\n}\n\nexport type ChatSummary = {\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }\n}\n\nexport interface DeploymentDetail {\n id: string\n object: 'deployment'\n inspectorUrl: string\n chatId: string\n projectId: string\n versionId: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface DeploymentSummary {\n id: string\n object: 'deployment'\n inspectorUrl: string\n chatId: string\n projectId: string\n versionId: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface EnvironmentVariableDetailSchema {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n}\n\nexport interface EnvironmentVariableSummarySchema {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n}\n\nexport interface EnvironmentVariablesListSchema {\n object: 'list'\n data: {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n }[]\n}\n\nexport interface FileDetail {\n object: 'file'\n name: string\n content: string\n locked: boolean\n}\n\nexport interface FileSummary {\n object: 'file'\n name: string\n}\n\nexport type HookDetail = {\n id: string\n object: 'hook'\n name: string\n events: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n chatId?: string\n url: string\n}\n\nexport type HookEventDetail = {\n id: string\n object: 'hook_event'\n event:\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n status?: 'pending' | 'success' | 'error'\n createdAt: string\n}\n\nexport interface HookSummary {\n id: string\n object: 'hook'\n name: string\n}\n\nexport interface IntegrationConnectionDetailSchema {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n metadata?: Record<string, unknown>\n}\n\nexport interface IntegrationConnectionListSchema {\n object: 'list'\n data: {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n }[]\n}\n\nexport interface IntegrationConnectionSummarySchema {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n}\n\nexport interface IntegrationDetailSchema {\n id: string\n object: 'integration'\n slug: string\n name: string\n description: string\n iconUrl: string\n}\n\nexport interface IntegrationListSchema {\n object: 'list'\n data: {\n id: string\n object: 'integration'\n slug: string\n name: string\n description: string\n iconUrl: string\n }[]\n}\n\nexport interface IntegrationSummarySchema {\n id: string\n object: 'integration'\n slug: string\n name: string\n}\n\nexport type MessageDetail = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n chatId: string\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n}\n\nexport type MessageSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface NotificationPreferenceSchema {\n liveActivity: boolean\n pushNotifications: boolean\n}\n\nexport interface ProductDetailSchema {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n iconBackgroundColor?: string\n}\n\nexport interface ProductListSchema {\n object: 'list'\n data: {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n }[]\n}\n\nexport interface ProductSummarySchema {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n}\n\nexport type ProjectDetail = {\n id: string\n object: 'project'\n name: string\n privacy: 'private' | 'team'\n vercelProjectId?: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n description?: string\n instructions?: string\n chats: Array<{\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }\n }>\n}\n\nexport type ProjectSummary = {\n id: string\n object: 'project'\n name: string\n privacy: 'private' | 'team'\n vercelProjectId?: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface ScopeSummary {\n id: string\n object: 'scope'\n name?: string\n}\n\nexport type SearchResultItem = {\n id: string\n object: 'chat' | 'project'\n name: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface UserDetailSchema {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: string\n createdAt: string\n updatedAt?: string\n}\n\nexport type UserPreferencesPostResponseSchema = {\n object: 'user_preferences'\n preferences:\n | {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n }\n | unknown\n}\n\nexport type UserPreferencesResponseSchema = {\n object: 'user_preferences'\n preferences:\n | {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n }\n | unknown\n}\n\nexport interface UserPreferencesSchema {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n}\n\nexport interface UserSummarySchema {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: string\n createdAt: string\n updatedAt?: string\n}\n\nexport interface VercelProjectDetail {\n id: string\n object: 'vercel_project'\n name: string\n}\n\nexport interface VercelProjectSummary {\n id: string\n object: 'vercel_project'\n name: string\n}\n\nexport type VersionDetail = {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n files: {\n object: 'file'\n name: string\n content: string\n locked: boolean\n }[]\n}\n\nexport type VersionSummary = {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n}\n\nexport type VersionSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface UnauthorizedError {\n error: {\n message: string\n type: 'unauthorized_error'\n }\n}\n\nexport interface ForbiddenError {\n error: {\n message: string\n type: 'forbidden_error'\n }\n}\n\nexport interface NotFoundError {\n error: {\n message: string\n type: 'not_found_error'\n }\n}\n\nexport interface ConflictError {\n error: {\n message: string\n type: 'conflict_error'\n }\n}\n\nexport interface PayloadTooLargeError {\n error: {\n message: string\n type: 'payload_too_large_error'\n }\n}\n\nexport interface UnprocessableEntityError {\n error: {\n message: string\n type: 'unprocessable_entity_error'\n }\n}\n\nexport interface TooManyRequestsError {\n error: {\n message: string\n type: 'too_many_requests_error'\n }\n}\n\nexport interface InternalServerError {\n error: {\n message: string\n type: 'internal_server_error'\n }\n}\n\nexport interface ChatsCreateRequest {\n message: string\n attachments?: {\n url: string\n }[]\n system?: string\n chatPrivacy?: 'public' | 'private' | 'team-edit' | 'team' | 'unlisted'\n projectId?: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async' | 'experimental_stream'\n designSystemId?: string | null\n}\n\nexport type ChatsCreateResponse = ChatDetail\n\nexport type ChatsCreateStreamResponse = ReadableStream<Uint8Array>\n\nexport interface ChatsFindResponse {\n object: 'list'\n data: ChatSummary[]\n}\n\nexport type ChatsInitRequest = {\n name?: string\n chatPrivacy?: 'public' | 'private' | 'team-edit' | 'team' | 'unlisted'\n projectId?: string\n} & (\n | {\n type: 'files'\n files: Array<\n | {\n name: string\n url: string\n locked?: boolean\n content?: never\n }\n | {\n name: string\n content: string\n locked?: boolean\n url?: never\n }\n >\n repo?: never\n lockAllFiles?: never\n registry?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'repo'\n repo: {\n url: string\n branch?: string\n }\n lockAllFiles?: boolean\n files?: never\n registry?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'registry'\n registry: {\n url: string\n }\n lockAllFiles?: boolean\n files?: never\n repo?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'zip'\n zip: {\n url: string\n }\n lockAllFiles?: boolean\n files?: never\n repo?: never\n registry?: never\n templateId?: never\n }\n | {\n type: 'template'\n templateId: string\n files?: never\n repo?: never\n lockAllFiles?: never\n registry?: never\n zip?: never\n }\n)\n\nexport type ChatsInitResponse = ChatDetail\n\nexport interface ChatsDeleteResponse {\n id: string\n object: 'chat'\n deleted: true\n}\n\nexport type ChatsGetByIdResponse = ChatDetail\n\nexport interface ChatsUpdateRequest {\n name?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n}\n\nexport type ChatsUpdateResponse = ChatDetail\n\nexport interface ChatsFavoriteRequest {\n isFavorite: boolean\n}\n\nexport interface ChatsFavoriteResponse {\n id: string\n object: 'chat'\n favorited: boolean\n}\n\nexport interface ChatsForkRequest {\n versionId?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n}\n\nexport type ChatsForkResponse = ChatDetail\n\nexport type ProjectsGetByChatIdResponse = ProjectDetail\n\nexport interface ChatsFindMessagesResponse {\n object: 'list'\n data: MessageSummary[]\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface ChatsSendMessageRequest {\n message: string\n attachments?: {\n url: string\n }[]\n system?: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async' | 'experimental_stream'\n}\n\nexport type ChatsSendMessageResponse = ChatDetail\n\nexport type ChatsSendMessageStreamResponse = ReadableStream<Uint8Array>\n\nexport type ChatsGetMessageResponse = MessageDetail\n\nexport interface ChatsFindVersionsResponse {\n object: 'list'\n data: VersionSummary[]\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n meta: {\n totalCount: number\n }\n}\n\nexport type ChatsGetVersionResponse = VersionDetail\n\nexport interface ChatsUpdateVersionRequest {\n files: {\n name: string\n content: string\n locked?: boolean\n }[]\n}\n\nexport type ChatsUpdateVersionResponse = VersionDetail\n\nexport interface ChatsDeleteVersionFilesRequest {\n filePaths: string[]\n}\n\nexport type ChatsDeleteVersionFilesResponse = VersionDetail\n\nexport type ChatsResumeResponse = MessageDetail\n\nexport interface DeploymentsFindResponse {\n object: 'list'\n data: DeploymentDetail[]\n}\n\nexport interface DeploymentsCreateRequest {\n projectId: string\n chatId: string\n versionId: string\n}\n\nexport type DeploymentsCreateResponse = DeploymentDetail\n\nexport type DeploymentsGetByIdResponse = DeploymentDetail\n\nexport interface DeploymentsDeleteResponse {\n id: string\n object: 'deployment'\n deleted: true\n}\n\nexport type DeploymentsFindLogsResponse = {\n logs: Array<{\n createdAt: string\n deploymentId: string\n id: string\n text: string\n type: 'stdout' | 'stderr'\n level?: 'error' | 'warning' | 'info'\n object: 'deployment_log'\n }>\n nextSince?: number\n object: 'list'\n}\n\nexport interface DeploymentsFindErrorsResponse {\n fullErrorText?: string\n errorType?: string\n formattedError?: string\n}\n\nexport interface HooksFindResponse {\n object: 'list'\n data: HookSummary[]\n}\n\nexport interface HooksCreateRequest {\n name: string\n events: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n chatId?: string\n url: string\n}\n\nexport type HooksCreateResponse = HookDetail\n\nexport type HooksGetByIdResponse = HookDetail\n\nexport interface HooksUpdateRequest {\n name?: string\n events?: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n url?: string\n}\n\nexport type HooksUpdateResponse = HookDetail\n\nexport interface HooksDeleteResponse {\n id: string\n object: 'hook'\n deleted: true\n}\n\nexport interface IntegrationsVercelProjectsFindResponse {\n object: 'list'\n data: VercelProjectSummary[]\n}\n\nexport interface IntegrationsVercelProjectsCreateRequest {\n projectId: string\n name: string\n}\n\nexport type IntegrationsVercelProjectsCreateResponse = VercelProjectDetail\n\nexport interface ProjectsFindResponse {\n object: 'list'\n data: ProjectSummary[]\n}\n\nexport interface ProjectsCreateRequest {\n name: string\n description?: string\n icon?: string\n environmentVariables?: {\n key: string\n value: string\n }[]\n instructions?: string\n vercelProjectId?: string\n privacy?: 'private' | 'team'\n}\n\nexport type ProjectsCreateResponse = ProjectDetail\n\nexport type ProjectsGetByIdResponse = ProjectDetail\n\nexport interface ProjectsUpdateRequest {\n name?: string\n description?: string\n instructions?: string\n privacy?: 'private' | 'team'\n}\n\nexport type ProjectsUpdateResponse = ProjectDetail\n\nexport interface ProjectsDeleteResponse {\n id: string\n object: 'project'\n deleted: true\n}\n\nexport interface ProjectsAssignRequest {\n chatId: string\n}\n\nexport interface ProjectsAssignResponse {\n object: 'project'\n id: string\n assigned: true\n}\n\nexport interface ProjectsFindEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsCreateEnvVarsRequest {\n environmentVariables: {\n key: string\n value: string\n }[]\n upsert?: boolean\n}\n\nexport interface ProjectsCreateEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsUpdateEnvVarsRequest {\n environmentVariables: {\n id: string\n value: string\n }[]\n}\n\nexport interface ProjectsUpdateEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsDeleteEnvVarsRequest {\n environmentVariableIds: string[]\n}\n\nexport interface ProjectsDeleteEnvVarsResponse {\n object: 'list'\n data: {\n id: string\n object: 'environment_variable'\n deleted: true\n }[]\n}\n\nexport interface ProjectsGetEnvVarResponse {\n object: 'environment_variable'\n data: EnvironmentVariableDetailSchema\n}\n\nexport interface RateLimitsFindResponse {\n remaining?: number\n reset?: number\n limit: number\n dailyLimit?: {\n limit: number\n remaining: number\n reset: number\n isWithinGracePeriod: boolean\n }\n}\n\nexport type UserGetResponse = UserSummarySchema\n\nexport type UserGetBillingResponse =\n | {\n billingType: 'token'\n data: {\n plan: string\n billingMode?: 'test'\n role: string\n billingCycle: {\n start: number\n end: number\n }\n balance: {\n remaining: number\n total: number\n }\n onDemand: {\n balance: number\n blocks?: {\n expirationDate?: number\n effectiveDate: number\n originalBalance: number\n currentBalance: number\n }[]\n }\n }\n }\n | {\n billingType: 'legacy'\n data: {\n remaining?: number\n reset?: number\n limit: number\n }\n }\n\nexport interface UserGetPlanResponse {\n object: 'plan'\n plan: string\n billingCycle: {\n start: number\n end: number\n }\n balance: {\n remaining: number\n total: number\n }\n}\n\nexport interface UserGetScopesResponse {\n object: 'list'\n data: ScopeSummary[]\n}\n\nexport type ReportsGetUsageResponse = {\n object: 'list'\n data: Array<{\n id: string\n object: 'usage_event'\n type?:\n | 'image_generation'\n | 'message'\n | 'manual_debit'\n | 'api_request'\n | 'inline-edit'\n | 'buy-template'\n | 'reverse_template_sale'\n | 'refund_template_purchase'\n promptCost?: string\n completionCost?: string\n totalCost: string\n chatId?: string\n messageId?: string\n userId?: string\n user?: UserSummarySchema\n createdAt: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n meta: {\n totalCount: number\n }\n}\n\nexport interface V0ClientConfig {\n apiKey?: string\n baseUrl?: string\n}\n\nexport function createClient(config: V0ClientConfig = {}) {\n const fetcher = createFetcher(config)\n const streamingFetcher = createStreamingFetcher(config)\n\n return {\n chats: {\n async create(\n params: ChatsCreateRequest,\n ): Promise<ChatsCreateResponse | ChatsCreateStreamResponse> {\n const body = {\n message: params.message,\n attachments: params.attachments,\n system: params.system,\n chatPrivacy: params.chatPrivacy,\n projectId: params.projectId,\n modelConfiguration: params.modelConfiguration,\n responseMode: params.responseMode,\n designSystemId: params.designSystemId,\n }\n\n if (params.responseMode === 'experimental_stream') {\n return await streamingFetcher(`/chats`, 'POST', { body })\n }\n\n return fetcher(`/chats`, 'POST', { body })\n },\n\n async find(params?: {\n limit?: number\n offset?: number\n isFavorite?: boolean\n }): Promise<ChatsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n offset:\n params.offset !== undefined\n ? String(params.offset)\n : undefined,\n isFavorite:\n params.isFavorite !== undefined\n ? String(params.isFavorite)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats`, 'GET', { ...(hasQuery ? { query } : {}) })\n },\n\n async init(params: ChatsInitRequest): Promise<ChatsInitResponse> {\n const body = params\n return fetcher(`/chats/init`, 'POST', { body })\n },\n\n async delete(params: { chatId: string }): Promise<ChatsDeleteResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}`, 'DELETE', { pathParams })\n },\n\n async getById(params: { chatId: string }): Promise<ChatsGetByIdResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}`, 'GET', { pathParams })\n },\n\n async update(\n params: { chatId: string } & ChatsUpdateRequest,\n ): Promise<ChatsUpdateResponse> {\n const pathParams = { chatId: params.chatId }\n const body = { name: params.name, privacy: params.privacy }\n return fetcher(`/chats/${pathParams.chatId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async favorite(\n params: { chatId: string } & ChatsFavoriteRequest,\n ): Promise<ChatsFavoriteResponse> {\n const pathParams = { chatId: params.chatId }\n const body = { isFavorite: params.isFavorite }\n return fetcher(`/chats/${pathParams.chatId}/favorite`, 'PUT', {\n pathParams,\n body,\n })\n },\n\n async fork(\n params: { chatId: string } & ChatsForkRequest,\n ): Promise<ChatsForkResponse> {\n const pathParams = { chatId: params.chatId }\n const body = { versionId: params.versionId, privacy: params.privacy }\n return fetcher(`/chats/${pathParams.chatId}/fork`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async findMessages(params: {\n chatId: string\n limit?: number\n cursor?: string\n }): Promise<ChatsFindMessagesResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats/${pathParams.chatId}/messages`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async sendMessage(\n params: { chatId: string } & ChatsSendMessageRequest,\n ): Promise<ChatsSendMessageResponse | ChatsSendMessageStreamResponse> {\n const pathParams = { chatId: params.chatId }\n const body = {\n message: params.message,\n attachments: params.attachments,\n system: params.system,\n modelConfiguration: params.modelConfiguration,\n responseMode: params.responseMode,\n }\n\n if (params.responseMode === 'experimental_stream') {\n return await streamingFetcher(\n `/chats/${pathParams.chatId}/messages`,\n 'POST',\n { pathParams, body },\n )\n }\n\n return fetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async getMessage(params: {\n chatId: string\n messageId: string\n }): Promise<ChatsGetMessageResponse> {\n const pathParams = {\n chatId: params.chatId,\n messageId: params.messageId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/messages/${pathParams.messageId}`,\n 'GET',\n { pathParams },\n )\n },\n\n async findVersions(params: {\n chatId: string\n limit?: number\n cursor?: string\n }): Promise<ChatsFindVersionsResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats/${pathParams.chatId}/versions`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async getVersion(params: {\n chatId: string\n versionId: string\n includeDefaultFiles?: boolean\n }): Promise<ChatsGetVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const query = Object.fromEntries(\n Object.entries({\n includeDefaultFiles:\n params.includeDefaultFiles !== undefined\n ? String(params.includeDefaultFiles)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n\n async updateVersion(\n params: {\n chatId: string\n versionId: string\n } & ChatsUpdateVersionRequest,\n ): Promise<ChatsUpdateVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const body = { files: params.files }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'PATCH',\n { pathParams, body },\n )\n },\n\n async downloadVersion(params: {\n chatId: string\n versionId: string\n format?: 'zip' | 'tarball'\n includeDefaultFiles?: boolean\n }): Promise<ArrayBuffer> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const query = Object.fromEntries(\n Object.entries({\n format: params.format,\n includeDefaultFiles:\n params.includeDefaultFiles !== undefined\n ? String(params.includeDefaultFiles)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}/download`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n\n async deleteVersionFiles(\n params: {\n chatId: string\n versionId: string\n } & ChatsDeleteVersionFilesRequest,\n ): Promise<ChatsDeleteVersionFilesResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const body = { filePaths: params.filePaths }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}/files/delete`,\n 'POST',\n { pathParams, body },\n )\n },\n\n async resume(params: {\n chatId: string\n messageId: string\n }): Promise<ChatsResumeResponse> {\n const pathParams = {\n chatId: params.chatId,\n messageId: params.messageId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/messages/${pathParams.messageId}/resume`,\n 'POST',\n { pathParams },\n )\n },\n },\n\n projects: {\n async getByChatId(params: {\n chatId: string\n }): Promise<ProjectsGetByChatIdResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}/project`, 'GET', {\n pathParams,\n })\n },\n\n async find(): Promise<ProjectsFindResponse> {\n return fetcher(`/projects`, 'GET', {})\n },\n\n async create(\n params: ProjectsCreateRequest,\n ): Promise<ProjectsCreateResponse> {\n const body = {\n name: params.name,\n description: params.description,\n icon: params.icon,\n environmentVariables: params.environmentVariables,\n instructions: params.instructions,\n vercelProjectId: params.vercelProjectId,\n privacy: params.privacy,\n }\n return fetcher(`/projects`, 'POST', { body })\n },\n\n async getById(params: {\n projectId: string\n }): Promise<ProjectsGetByIdResponse> {\n const pathParams = { projectId: params.projectId }\n return fetcher(`/projects/${pathParams.projectId}`, 'GET', {\n pathParams,\n })\n },\n\n async update(\n params: { projectId: string } & ProjectsUpdateRequest,\n ): Promise<ProjectsUpdateResponse> {\n const pathParams = { projectId: params.projectId }\n const body = {\n name: params.name,\n description: params.description,\n instructions: params.instructions,\n privacy: params.privacy,\n }\n return fetcher(`/projects/${pathParams.projectId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async delete(params: {\n projectId: string\n deleteAllChats?: boolean\n }): Promise<ProjectsDeleteResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n deleteAllChats:\n params.deleteAllChats !== undefined\n ? String(params.deleteAllChats)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}`, 'DELETE', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async assign(\n params: { projectId: string } & ProjectsAssignRequest,\n ): Promise<ProjectsAssignResponse> {\n const pathParams = { projectId: params.projectId }\n const body = { chatId: params.chatId }\n return fetcher(`/projects/${pathParams.projectId}/assign`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async findEnvVars(params: {\n projectId: string\n decrypted?: boolean\n }): Promise<ProjectsFindEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async createEnvVars(\n params: {\n projectId: string\n decrypted?: boolean\n } & ProjectsCreateEnvVarsRequest,\n ): Promise<ProjectsCreateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const body = {\n environmentVariables: params.environmentVariables,\n upsert: params.upsert,\n }\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'POST', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n body,\n })\n },\n\n async updateEnvVars(\n params: {\n projectId: string\n decrypted?: boolean\n } & ProjectsUpdateEnvVarsRequest,\n ): Promise<ProjectsUpdateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const body = { environmentVariables: params.environmentVariables }\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'PATCH', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n body,\n })\n },\n\n async deleteEnvVars(\n params: { projectId: string } & ProjectsDeleteEnvVarsRequest,\n ): Promise<ProjectsDeleteEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const body = { environmentVariableIds: params.environmentVariableIds }\n return fetcher(\n `/projects/${pathParams.projectId}/env-vars/delete`,\n 'POST',\n { pathParams, body },\n )\n },\n\n async getEnvVar(params: {\n projectId: string\n environmentVariableId: string\n decrypted?: boolean\n }): Promise<ProjectsGetEnvVarResponse> {\n const pathParams = {\n projectId: params.projectId,\n environmentVariableId: params.environmentVariableId,\n }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/projects/${pathParams.projectId}/env-vars/${pathParams.environmentVariableId}`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n },\n\n deployments: {\n async find(params: {\n projectId: string\n chatId: string\n versionId: string\n }): Promise<DeploymentsFindResponse> {\n const query = Object.fromEntries(\n Object.entries({\n projectId: params.projectId,\n chatId: params.chatId,\n versionId: params.versionId,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n return fetcher(`/deployments`, 'GET', { query })\n },\n\n async create(\n params: DeploymentsCreateRequest,\n ): Promise<DeploymentsCreateResponse> {\n const body = {\n projectId: params.projectId,\n chatId: params.chatId,\n versionId: params.versionId,\n }\n return fetcher(`/deployments`, 'POST', { body })\n },\n\n async getById(params: {\n deploymentId: string\n }): Promise<DeploymentsGetByIdResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(`/deployments/${pathParams.deploymentId}`, 'GET', {\n pathParams,\n })\n },\n\n async delete(params: {\n deploymentId: string\n }): Promise<DeploymentsDeleteResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(`/deployments/${pathParams.deploymentId}`, 'DELETE', {\n pathParams,\n })\n },\n\n async findLogs(params: {\n deploymentId: string\n since?: number\n }): Promise<DeploymentsFindLogsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n const query = Object.fromEntries(\n Object.entries({\n since:\n params.since !== undefined ? String(params.since) : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/deployments/${pathParams.deploymentId}/logs`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async findErrors(params: {\n deploymentId: string\n }): Promise<DeploymentsFindErrorsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(\n `/deployments/${pathParams.deploymentId}/errors`,\n 'GET',\n { pathParams },\n )\n },\n },\n\n hooks: {\n async find(): Promise<HooksFindResponse> {\n return fetcher(`/hooks`, 'GET', {})\n },\n\n async create(params: HooksCreateRequest): Promise<HooksCreateResponse> {\n const body = {\n name: params.name,\n events: params.events,\n chatId: params.chatId,\n url: params.url,\n }\n return fetcher(`/hooks`, 'POST', { body })\n },\n\n async getById(params: { hookId: string }): Promise<HooksGetByIdResponse> {\n const pathParams = { hookId: params.hookId }\n return fetcher(`/hooks/${pathParams.hookId}`, 'GET', { pathParams })\n },\n\n async update(\n params: { hookId: string } & HooksUpdateRequest,\n ): Promise<HooksUpdateResponse> {\n const pathParams = { hookId: params.hookId }\n const body = {\n name: params.name,\n events: params.events,\n url: params.url,\n }\n return fetcher(`/hooks/${pathParams.hookId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async delete(params: { hookId: string }): Promise<HooksDeleteResponse> {\n const pathParams = { hookId: params.hookId }\n return fetcher(`/hooks/${pathParams.hookId}`, 'DELETE', { pathParams })\n },\n },\n\n integrations: {\n vercel: {\n projects: {\n async find(): Promise<IntegrationsVercelProjectsFindResponse> {\n return fetcher(`/integrations/vercel/projects`, 'GET', {})\n },\n\n async create(\n params: IntegrationsVercelProjectsCreateRequest,\n ): Promise<IntegrationsVercelProjectsCreateResponse> {\n const body = { projectId: params.projectId, name: params.name }\n return fetcher(`/integrations/vercel/projects`, 'POST', { body })\n },\n },\n },\n },\n\n rateLimits: {\n async find(params?: { scope?: string }): Promise<RateLimitsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n scope: params.scope,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/rate-limits`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n },\n\n user: {\n async get(): Promise<UserGetResponse> {\n return fetcher(`/user`, 'GET', {})\n },\n\n async getBilling(params?: {\n scope?: string\n }): Promise<UserGetBillingResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n scope: params.scope,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/user/billing`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async getPlan(): Promise<UserGetPlanResponse> {\n return fetcher(`/user/plan`, 'GET', {})\n },\n\n async getScopes(): Promise<UserGetScopesResponse> {\n return fetcher(`/user/scopes`, 'GET', {})\n },\n },\n\n reports: {\n async getUsage(params?: {\n startDate?: string\n endDate?: string\n chatId?: string\n messageId?: string\n userId?: string\n limit?: number\n cursor?: string\n }): Promise<ReportsGetUsageResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n startDate: params.startDate,\n endDate: params.endDate,\n chatId: params.chatId,\n messageId: params.messageId,\n userId: params.userId,\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/reports/usage`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n },\n }\n}\n\n// Default client for backward compatibility\nexport const v0 = createClient()\n"],"names":[],"mappings":"AAUO;AACP;AACA;AACA;AACO;;ACbA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../src/sdk/core.ts","../src/sdk/v0.ts"],"sourcesContent":["export interface ClientConfig {\n apiKey?: string\n baseUrl?: string\n}\n\nexport function createFetcher(config: ClientConfig = {}) {\n const baseUrl = config.baseUrl || 'https://api.v0.dev/v1'\n let sessionToken: string | null = null\n\n return async function fetcher(\n url: string,\n method: string,\n params: {\n body?: any\n query?: Record<string, string>\n pathParams?: Record<string, string>\n headers?: Record<string, string>\n } = {},\n ): Promise<any> {\n const apiKey = config.apiKey || process.env.V0_API_KEY\n\n if (!apiKey) {\n throw new Error(\n 'API key is required. Provide it via config.apiKey or V0_API_KEY environment variable',\n )\n }\n\n const queryString = params.query\n ? '?' + new URLSearchParams(params.query).toString()\n : ''\n\n const finalUrl = baseUrl + url + queryString\n\n const hasBody = method !== 'GET' && params.body\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n 'User-Agent': 'v0-sdk/0.1.0',\n ...params.headers,\n }\n\n // Include session token in headers if available\n if (sessionToken) {\n headers['x-session-token'] = sessionToken\n }\n\n if (hasBody) {\n headers['Content-Type'] = 'application/json'\n }\n\n const res = await fetch(finalUrl, {\n method,\n headers,\n body: hasBody ? JSON.stringify(params.body) : undefined,\n })\n\n // Check for session token in response headers\n const newSessionToken = res.headers.get('x-session-token')\n if (newSessionToken) {\n sessionToken = newSessionToken\n }\n\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`HTTP ${res.status}: ${text}`)\n }\n\n // Handle binary responses based on Content-Type\n const contentType = res.headers.get('content-type') || ''\n if (\n contentType.includes('application/zip') ||\n contentType.includes('application/gzip')\n ) {\n return res.arrayBuffer()\n }\n\n return res.json()\n }\n}\n\n// Streaming response types\nexport interface StreamEvent {\n event?: string\n data: string\n}\n\n// Utility function to parse streaming events\nexport async function* parseStreamingResponse(\n stream: ReadableStream<Uint8Array>,\n): AsyncGenerator<StreamEvent, void, unknown> {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() || '' // Keep the last incomplete line in buffer\n\n for (const line of lines) {\n if (line.trim() === '') continue\n\n if (line.startsWith('data: ')) {\n const data = line.slice(6)\n if (data === '[DONE]') return\n\n try {\n yield {\n event: 'message',\n data: data,\n }\n } catch (e) {\n console.warn('Failed to parse streaming data:', e)\n }\n } else if (line.startsWith('event: ')) {\n const event = line.slice(7)\n yield {\n event: event,\n data: '',\n }\n }\n }\n }\n } finally {\n reader.releaseLock()\n }\n}\n\nexport function createStreamingFetcher(config: ClientConfig = {}) {\n const baseUrl = config.baseUrl || 'https://api.v0.dev/v1'\n let sessionToken: string | null = null\n\n return async function streamingFetcher(\n url: string,\n method: string,\n params: {\n body?: any\n query?: Record<string, string>\n pathParams?: Record<string, string>\n headers?: Record<string, string>\n } = {},\n ): Promise<ReadableStream<Uint8Array>> {\n const apiKey = config.apiKey || process.env.V0_API_KEY\n\n if (!apiKey) {\n throw new Error(\n 'API key is required. Provide it via config.apiKey or V0_API_KEY environment variable',\n )\n }\n\n const queryString = params.query\n ? '?' + new URLSearchParams(params.query).toString()\n : ''\n\n const finalUrl = baseUrl + url + queryString\n\n const hasBody = method !== 'GET' && params.body\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n 'User-Agent': 'v0-sdk/0.1.0',\n Accept: 'text/event-stream',\n 'Cache-Control': 'no-cache',\n ...params.headers,\n }\n\n // Include session token in headers if available\n if (sessionToken) {\n headers['x-session-token'] = sessionToken\n }\n\n if (hasBody) {\n headers['Content-Type'] = 'application/json'\n }\n\n const res = await fetch(finalUrl, {\n method,\n headers,\n body: hasBody ? JSON.stringify(params.body) : undefined,\n })\n\n // Check for session token in response headers\n const newSessionToken = res.headers.get('x-session-token')\n if (newSessionToken) {\n sessionToken = newSessionToken\n }\n\n if (!res.ok) {\n const text = await res.text()\n throw new Error(`HTTP ${res.status}: ${text}`)\n }\n\n if (!res.body) {\n throw new Error('No response body available for streaming')\n }\n\n return res.body\n }\n}\n","import { createFetcher, createStreamingFetcher } from './core'\n\n// Re-export streaming utilities from core\nexport { parseStreamingResponse, type StreamEvent } from './core'\n\nexport type ChatDetail = {\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n files: {\n object: 'file'\n name: string\n content: string\n locked: boolean\n }[]\n }\n /** @deprecated */\n url: string\n messages: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n | 'design-mode'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n }>\n files?: {\n lang: string\n meta: Record<string, unknown>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n permissions: {\n write: boolean\n }\n metadata: Record<string, unknown>\n}\n\nexport type ChatSummary = {\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }\n}\n\nexport interface DeploymentDetail {\n id: string\n object: 'deployment'\n inspectorUrl: string\n chatId: string\n projectId: string\n versionId: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface DeploymentSummary {\n id: string\n object: 'deployment'\n inspectorUrl: string\n chatId: string\n projectId: string\n versionId: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface EnvironmentVariableDetailSchema {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n}\n\nexport interface EnvironmentVariableSummarySchema {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n}\n\nexport interface EnvironmentVariablesListSchema {\n object: 'list'\n data: {\n id: string\n object: 'environment_variable'\n key: string\n value: string\n decrypted: boolean\n createdAt: number\n updatedAt?: number\n }[]\n}\n\nexport interface FileDetail {\n object: 'file'\n name: string\n content: string\n locked: boolean\n}\n\nexport interface FileSummary {\n object: 'file'\n name: string\n}\n\nexport type HookDetail = {\n id: string\n object: 'hook'\n name: string\n events: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n chatId?: string\n url: string\n}\n\nexport type HookEventDetail = {\n id: string\n object: 'hook_event'\n event:\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n status?: 'pending' | 'success' | 'error'\n createdAt: string\n}\n\nexport interface HookSummary {\n id: string\n object: 'hook'\n name: string\n}\n\nexport interface IntegrationConnectionDetailSchema {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n metadata?: Record<string, unknown>\n}\n\nexport interface IntegrationConnectionListSchema {\n object: 'list'\n data: {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n }[]\n}\n\nexport interface IntegrationConnectionSummarySchema {\n object: 'integration_connection'\n id: string\n connected: boolean\n integration: {\n id: string\n object: 'integration'\n slug: string\n name: string\n }\n}\n\nexport interface IntegrationDetailSchema {\n id: string\n object: 'integration'\n slug: string\n name: string\n description: string\n iconUrl: string\n}\n\nexport interface IntegrationListSchema {\n object: 'list'\n data: {\n id: string\n object: 'integration'\n slug: string\n name: string\n description: string\n iconUrl: string\n }[]\n}\n\nexport interface IntegrationSummarySchema {\n id: string\n object: 'integration'\n slug: string\n name: string\n}\n\nexport type MessageDetail = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n | 'design-mode'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n chatId: string\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n | 'design-mode'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n}\n\nexport type MessageSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<unknown[] | unknown[]>\n createdAt: string\n updatedAt?: string\n type:\n | 'message'\n | 'forked-block'\n | 'forked-chat'\n | 'open-in-v0'\n | 'refinement'\n | 'added-environment-variables'\n | 'added-integration'\n | 'deleted-file'\n | 'moved-file'\n | 'renamed-file'\n | 'edited-file'\n | 'replace-src'\n | 'reverted-block'\n | 'fix-with-v0'\n | 'auto-fix-with-v0'\n | 'sync-git'\n | 'pull-changes'\n | 'fix-cve'\n | 'answered-questions'\n | 'cloned-repo'\n | 'manual-commit'\n | 'design-mode'\n role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n apiUrl: string\n authorId: string | null\n parentId?: string | null\n attachments?: Array<{\n url: string\n name?: string\n contentType?: string\n size: number\n content?: string\n type?: 'screenshot' | 'figma' | 'zip'\n }>\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface NotificationPreferenceSchema {\n liveActivity: boolean\n pushNotifications: boolean\n}\n\nexport interface ProductDetailSchema {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n iconBackgroundColor?: string\n}\n\nexport interface ProductListSchema {\n object: 'list'\n data: {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n }[]\n}\n\nexport interface ProductSummarySchema {\n object: 'product'\n id: string\n slug: string\n name: string\n description: string\n iconUrl: string\n}\n\nexport type ProjectDetail = {\n id: string\n object: 'project'\n name: string\n privacy: 'private' | 'team'\n vercelProjectId?: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n description?: string\n instructions?: string\n chats: Array<{\n id: string\n object: 'chat'\n shareable: boolean\n privacy: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n name?: string\n /** @deprecated */\n title?: string\n createdAt: string\n updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n webUrl: string\n apiUrl: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }\n }>\n}\n\nexport type ProjectSummary = {\n id: string\n object: 'project'\n name: string\n privacy: 'private' | 'team'\n vercelProjectId?: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface ScopeSummary {\n id: string\n object: 'scope'\n name?: string\n}\n\nexport type SearchResultItem = {\n id: string\n object: 'chat' | 'project'\n name: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: string\n}\n\nexport interface UserDetailSchema {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: string\n createdAt: string\n updatedAt?: string\n}\n\nexport type UserPreferencesPostResponseSchema = {\n object: 'user_preferences'\n preferences:\n | {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n }\n | unknown\n}\n\nexport type UserPreferencesResponseSchema = {\n object: 'user_preferences'\n preferences:\n | {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n }\n | unknown\n}\n\nexport interface UserPreferencesSchema {\n notifications: {\n liveActivity: boolean\n pushNotifications: boolean\n }\n}\n\nexport interface UserSummarySchema {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: string\n createdAt: string\n updatedAt?: string\n}\n\nexport interface VercelProjectDetail {\n id: string\n object: 'vercel_project'\n name: string\n}\n\nexport interface VercelProjectSummary {\n id: string\n object: 'vercel_project'\n name: string\n}\n\nexport type VersionDetail = {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n files: {\n object: 'file'\n name: string\n content: string\n locked: boolean\n }[]\n}\n\nexport type VersionSummary = {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n}\n\nexport type VersionSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n screenshotUrl?: string\n createdAt: string\n updatedAt?: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface UnauthorizedError {\n error: {\n message: string\n type: 'unauthorized_error'\n }\n}\n\nexport interface ForbiddenError {\n error: {\n message: string\n type: 'forbidden_error'\n }\n}\n\nexport interface NotFoundError {\n error: {\n message: string\n type: 'not_found_error'\n }\n}\n\nexport interface ConflictError {\n error: {\n message: string\n type: 'conflict_error'\n }\n}\n\nexport interface PayloadTooLargeError {\n error: {\n message: string\n type: 'payload_too_large_error'\n }\n}\n\nexport interface UnprocessableEntityError {\n error: {\n message: string\n type: 'unprocessable_entity_error'\n }\n}\n\nexport interface TooManyRequestsError {\n error: {\n message: string\n type: 'too_many_requests_error'\n }\n}\n\nexport interface InternalServerError {\n error: {\n message: string\n type: 'internal_server_error'\n }\n}\n\nexport interface ChatsCreateRequest {\n message: string\n attachments?: {\n url: string\n }[]\n system?: string\n chatPrivacy?: 'public' | 'private' | 'team-edit' | 'team' | 'unlisted'\n projectId?: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async' | 'experimental_stream'\n designSystemId?: string | null\n mcpServerIds?: string[]\n metadata?: Record<string, unknown>\n}\n\nexport type ChatsCreateResponse = ChatDetail\n\nexport type ChatsCreateStreamResponse = ReadableStream<Uint8Array>\n\nexport interface ChatsFindResponse {\n object: 'list'\n data: ChatSummary[]\n}\n\nexport type ChatsInitRequest = {\n name?: string\n chatPrivacy?: 'public' | 'private' | 'team-edit' | 'team' | 'unlisted'\n projectId?: string\n metadata?: Record<string, unknown>\n} & (\n | {\n type: 'files'\n files: Array<\n | {\n name: string\n url: string\n locked?: boolean\n content?: never\n }\n | {\n name: string\n content: string\n locked?: boolean\n url?: never\n }\n >\n repo?: never\n lockAllFiles?: never\n registry?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'repo'\n repo: {\n url: string\n branch?: string\n }\n lockAllFiles?: boolean\n files?: never\n registry?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'registry'\n registry: {\n url: string\n }\n lockAllFiles?: boolean\n files?: never\n repo?: never\n zip?: never\n templateId?: never\n }\n | {\n type: 'zip'\n zip: {\n url: string\n }\n lockAllFiles?: boolean\n files?: never\n repo?: never\n registry?: never\n templateId?: never\n }\n | {\n type: 'template'\n templateId: string\n files?: never\n repo?: never\n lockAllFiles?: never\n registry?: never\n zip?: never\n }\n)\n\nexport type ChatsInitResponse = ChatDetail\n\nexport interface ChatsDeleteResponse {\n id: string\n object: 'chat'\n deleted: true\n}\n\nexport type ChatsGetByIdResponse = ChatDetail\n\nexport interface ChatsUpdateRequest {\n name?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n metadata?: Record<string, unknown> | unknown\n}\n\nexport type ChatsUpdateResponse = ChatDetail\n\nexport interface ChatsFavoriteRequest {\n isFavorite: boolean\n}\n\nexport interface ChatsFavoriteResponse {\n id: string\n object: 'chat'\n favorited: boolean\n}\n\nexport interface ChatsForkRequest {\n versionId?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n}\n\nexport type ChatsForkResponse = ChatDetail\n\nexport type ProjectsGetByChatIdResponse = ProjectDetail\n\nexport interface ChatsFindMessagesResponse {\n object: 'list'\n data: MessageSummary[]\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport interface ChatsSendMessageRequest {\n message: string\n attachments?: {\n url: string\n }[]\n system?: string\n modelConfiguration?: {\n /** @deprecated */\n modelId?: 'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async' | 'experimental_stream'\n mcpServerIds?: string[]\n}\n\nexport type ChatsSendMessageResponse = ChatDetail\n\nexport type ChatsSendMessageStreamResponse = ReadableStream<Uint8Array>\n\nexport type ChatsGetMessageResponse = MessageDetail\n\nexport interface ChatsFindVersionsResponse {\n object: 'list'\n data: VersionSummary[]\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n meta: {\n totalCount: number\n }\n}\n\nexport type ChatsGetVersionResponse = VersionDetail\n\nexport interface ChatsUpdateVersionRequest {\n files: {\n name: string\n content: string\n locked?: boolean\n }[]\n}\n\nexport type ChatsUpdateVersionResponse = VersionDetail\n\nexport interface ChatsDeleteVersionFilesRequest {\n filePaths: string[]\n}\n\nexport type ChatsDeleteVersionFilesResponse = VersionDetail\n\nexport type ChatsResumeResponse = MessageDetail\n\nexport interface ChatsStopResponse {\n success: true\n}\n\nexport interface DeploymentsFindResponse {\n object: 'list'\n data: DeploymentDetail[]\n}\n\nexport interface DeploymentsCreateRequest {\n projectId: string\n chatId: string\n versionId: string\n}\n\nexport type DeploymentsCreateResponse = DeploymentDetail\n\nexport type DeploymentsGetByIdResponse = DeploymentDetail\n\nexport interface DeploymentsDeleteResponse {\n id: string\n object: 'deployment'\n deleted: true\n}\n\nexport type DeploymentsFindLogsResponse = {\n logs: Array<{\n createdAt: string\n deploymentId: string\n id: string\n text: string\n type: 'stdout' | 'stderr'\n level?: 'error' | 'warning' | 'info'\n object: 'deployment_log'\n }>\n nextSince?: number\n object: 'list'\n}\n\nexport interface DeploymentsFindErrorsResponse {\n fullErrorText?: string\n errorType?: string\n formattedError?: string\n}\n\nexport interface HooksFindResponse {\n object: 'list'\n data: HookSummary[]\n}\n\nexport interface HooksCreateRequest {\n name: string\n events: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n chatId?: string\n url: string\n}\n\nexport type HooksCreateResponse = HookDetail\n\nexport type HooksGetByIdResponse = HookDetail\n\nexport interface HooksUpdateRequest {\n name?: string\n events?: Array<\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'message.finished'\n >\n url?: string\n}\n\nexport type HooksUpdateResponse = HookDetail\n\nexport interface HooksDeleteResponse {\n id: string\n object: 'hook'\n deleted: true\n}\n\nexport interface IntegrationsVercelProjectsFindResponse {\n object: 'list'\n data: VercelProjectSummary[]\n}\n\nexport interface IntegrationsVercelProjectsCreateRequest {\n projectId: string\n name: string\n}\n\nexport type IntegrationsVercelProjectsCreateResponse = VercelProjectDetail\n\nexport interface ProjectsFindResponse {\n object: 'list'\n data: ProjectSummary[]\n}\n\nexport interface ProjectsCreateRequest {\n name: string\n description?: string\n icon?: string\n environmentVariables?: {\n key: string\n value: string\n }[]\n instructions?: string\n vercelProjectId?: string\n privacy?: 'private' | 'team'\n}\n\nexport type ProjectsCreateResponse = ProjectDetail\n\nexport type ProjectsGetByIdResponse = ProjectDetail\n\nexport interface ProjectsUpdateRequest {\n name?: string\n description?: string\n instructions?: string\n privacy?: 'private' | 'team'\n}\n\nexport type ProjectsUpdateResponse = ProjectDetail\n\nexport interface ProjectsDeleteResponse {\n id: string\n object: 'project'\n deleted: true\n}\n\nexport interface ProjectsAssignRequest {\n chatId: string\n}\n\nexport interface ProjectsAssignResponse {\n object: 'project'\n id: string\n assigned: true\n}\n\nexport interface ProjectsFindEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsCreateEnvVarsRequest {\n environmentVariables: {\n key: string\n value: string\n }[]\n upsert?: boolean\n}\n\nexport interface ProjectsCreateEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsUpdateEnvVarsRequest {\n environmentVariables: {\n id: string\n value: string\n }[]\n}\n\nexport interface ProjectsUpdateEnvVarsResponse {\n object: 'list'\n data: EnvironmentVariableSummarySchema[]\n}\n\nexport interface ProjectsDeleteEnvVarsRequest {\n environmentVariableIds: string[]\n}\n\nexport interface ProjectsDeleteEnvVarsResponse {\n object: 'list'\n data: {\n id: string\n object: 'environment_variable'\n deleted: true\n }[]\n}\n\nexport interface ProjectsGetEnvVarResponse {\n object: 'environment_variable'\n data: EnvironmentVariableDetailSchema\n}\n\nexport interface RateLimitsFindResponse {\n remaining?: number\n reset?: number\n limit: number\n dailyLimit?: {\n limit: number\n remaining: number\n reset: number\n isWithinGracePeriod: boolean\n }\n}\n\nexport type UserGetResponse = UserSummarySchema\n\nexport type UserGetBillingResponse =\n | {\n billingType: 'token'\n data: {\n plan: string\n billingMode?: 'test'\n role: string\n billingCycle: {\n start: number\n end: number\n }\n balance: {\n remaining: number\n total: number\n }\n onDemand: {\n balance: number\n blocks?: {\n expirationDate?: number\n effectiveDate: number\n originalBalance: number\n currentBalance: number\n }[]\n }\n }\n }\n | {\n billingType: 'legacy'\n data: {\n remaining?: number\n reset?: number\n limit: number\n }\n }\n\nexport interface UserGetPlanResponse {\n object: 'plan'\n plan: string\n billingCycle: {\n start: number\n end: number\n }\n balance: {\n remaining: number\n total: number\n }\n}\n\nexport interface UserGetScopesResponse {\n object: 'list'\n data: ScopeSummary[]\n}\n\nexport type ReportsGetUsageResponse = {\n object: 'list'\n data: Array<{\n id: string\n object: 'usage_event'\n type?:\n | 'image_generation'\n | 'message'\n | 'manual_debit'\n | 'api_request'\n | 'inline-edit'\n | 'buy-template'\n | 'reverse_template_sale'\n | 'refund_template_purchase'\n promptCost?: string\n completionCost?: string\n totalCost: string\n chatId?: string\n messageId?: string\n userId?: string\n user?: UserSummarySchema\n createdAt: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n meta: {\n totalCount: number\n }\n}\n\nexport type ReportsGetUserActivityResponse = {\n object: 'list'\n data: Array<{\n id: string\n object: 'user_activity'\n user: {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: string\n createdAt: string\n updatedAt?: string\n teamV0Role: 'V0Builder' | 'V0Chatter' | 'V0Viewer' | unknown\n }\n chatCount: number\n messageCount: number\n activeDays: number\n firstActivity: string | unknown\n lastActivity: string | unknown\n }>\n meta: {\n totalCount: number\n dateRange: {\n start: string | unknown\n end: string | unknown\n }\n }\n}\n\nexport type McpServersFindResponse = {\n object: 'list'\n data: Array<{\n object: 'mcp_server'\n id: string\n name: string\n url: string\n description?: string\n enabled: boolean\n auth: {\n type: 'none' | 'bearer' | 'custom-headers' | 'oauth'\n }\n scope: 'user' | 'team'\n createdAt: string\n updatedAt?: string\n }>\n}\n\nexport interface McpServersCreateRequest {\n name: string\n url: string\n description?: string\n enabled?: boolean\n auth?:\n | {\n type: 'none'\n token?: never\n headers?: never\n }\n | {\n type: 'bearer'\n token: string\n headers?: never\n }\n | {\n type: 'custom-headers'\n headers: Record<string, unknown>\n token?: never\n }\n scope?: 'user' | 'team'\n}\n\nexport type McpServersCreateResponse = {\n object: 'mcp_server'\n id: string\n name: string\n url: string\n description?: string\n enabled: boolean\n auth: {\n type: 'none' | 'bearer' | 'custom-headers' | 'oauth'\n }\n scope: 'user' | 'team'\n createdAt: string\n updatedAt?: string\n}\n\nexport type McpServersGetByIdResponse = {\n object: 'mcp_server'\n id: string\n name: string\n url: string\n description?: string\n enabled: boolean\n auth: {\n type: 'none' | 'bearer' | 'custom-headers' | 'oauth'\n }\n scope: 'user' | 'team'\n createdAt: string\n updatedAt?: string\n}\n\nexport interface McpServersUpdateRequest {\n name?: string\n url?: string\n description?: string\n enabled?: boolean\n auth?:\n | {\n type: 'none'\n token?: never\n headers?: never\n }\n | {\n type: 'bearer'\n token: string\n headers?: never\n }\n | {\n type: 'custom-headers'\n headers: Record<string, unknown>\n token?: never\n }\n scope?: 'user' | 'team'\n}\n\nexport type McpServersUpdateResponse = {\n object: 'mcp_server'\n id: string\n name: string\n url: string\n description?: string\n enabled: boolean\n auth: {\n type: 'none' | 'bearer' | 'custom-headers' | 'oauth'\n }\n scope: 'user' | 'team'\n createdAt: string\n updatedAt?: string\n}\n\nexport interface McpServersDeleteResponse {\n object: 'mcp_server'\n id: string\n deleted: true\n}\n\nexport interface V0ClientConfig {\n apiKey?: string\n baseUrl?: string\n}\n\nexport function createClient(config: V0ClientConfig = {}) {\n const fetcher = createFetcher(config)\n const streamingFetcher = createStreamingFetcher(config)\n\n return {\n chats: {\n async create(\n params: ChatsCreateRequest,\n ): Promise<ChatsCreateResponse | ChatsCreateStreamResponse> {\n const body = {\n message: params.message,\n attachments: params.attachments,\n system: params.system,\n chatPrivacy: params.chatPrivacy,\n projectId: params.projectId,\n modelConfiguration: params.modelConfiguration,\n responseMode: params.responseMode,\n designSystemId: params.designSystemId,\n mcpServerIds: params.mcpServerIds,\n metadata: params.metadata,\n }\n\n if (params.responseMode === 'experimental_stream') {\n return await streamingFetcher(`/chats`, 'POST', { body })\n }\n\n return fetcher(`/chats`, 'POST', { body })\n },\n\n async find(params?: {\n limit?: number\n offset?: number\n isFavorite?: boolean\n vercelProjectId?: string\n branch?: string\n }): Promise<ChatsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n offset:\n params.offset !== undefined\n ? String(params.offset)\n : undefined,\n isFavorite:\n params.isFavorite !== undefined\n ? String(params.isFavorite)\n : undefined,\n vercelProjectId: params.vercelProjectId,\n branch: params.branch,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats`, 'GET', { ...(hasQuery ? { query } : {}) })\n },\n\n async init(params: ChatsInitRequest): Promise<ChatsInitResponse> {\n const body = params\n return fetcher(`/chats/init`, 'POST', { body })\n },\n\n async delete(params: { chatId: string }): Promise<ChatsDeleteResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}`, 'DELETE', { pathParams })\n },\n\n async getById(params: { chatId: string }): Promise<ChatsGetByIdResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}`, 'GET', { pathParams })\n },\n\n async update(\n params: { chatId: string } & ChatsUpdateRequest,\n ): Promise<ChatsUpdateResponse> {\n const pathParams = { chatId: params.chatId }\n const body = {\n name: params.name,\n privacy: params.privacy,\n metadata: params.metadata,\n }\n return fetcher(`/chats/${pathParams.chatId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async favorite(\n params: { chatId: string } & ChatsFavoriteRequest,\n ): Promise<ChatsFavoriteResponse> {\n const pathParams = { chatId: params.chatId }\n const body = { isFavorite: params.isFavorite }\n return fetcher(`/chats/${pathParams.chatId}/favorite`, 'PUT', {\n pathParams,\n body,\n })\n },\n\n async fork(\n params: { chatId: string } & ChatsForkRequest,\n ): Promise<ChatsForkResponse> {\n const pathParams = { chatId: params.chatId }\n const body = { versionId: params.versionId, privacy: params.privacy }\n return fetcher(`/chats/${pathParams.chatId}/fork`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async findMessages(params: {\n chatId: string\n limit?: number\n cursor?: string\n }): Promise<ChatsFindMessagesResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats/${pathParams.chatId}/messages`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async sendMessage(\n params: { chatId: string } & ChatsSendMessageRequest,\n ): Promise<ChatsSendMessageResponse | ChatsSendMessageStreamResponse> {\n const pathParams = { chatId: params.chatId }\n const body = {\n message: params.message,\n attachments: params.attachments,\n system: params.system,\n modelConfiguration: params.modelConfiguration,\n responseMode: params.responseMode,\n mcpServerIds: params.mcpServerIds,\n }\n\n if (params.responseMode === 'experimental_stream') {\n return await streamingFetcher(\n `/chats/${pathParams.chatId}/messages`,\n 'POST',\n { pathParams, body },\n )\n }\n\n return fetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async getMessage(params: {\n chatId: string\n messageId: string\n }): Promise<ChatsGetMessageResponse> {\n const pathParams = {\n chatId: params.chatId,\n messageId: params.messageId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/messages/${pathParams.messageId}`,\n 'GET',\n { pathParams },\n )\n },\n\n async findVersions(params: {\n chatId: string\n limit?: number\n cursor?: string\n }): Promise<ChatsFindVersionsResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/chats/${pathParams.chatId}/versions`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async getVersion(params: {\n chatId: string\n versionId: string\n includeDefaultFiles?: boolean\n }): Promise<ChatsGetVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const query = Object.fromEntries(\n Object.entries({\n includeDefaultFiles:\n params.includeDefaultFiles !== undefined\n ? String(params.includeDefaultFiles)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n\n async updateVersion(\n params: {\n chatId: string\n versionId: string\n } & ChatsUpdateVersionRequest,\n ): Promise<ChatsUpdateVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const body = { files: params.files }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'PATCH',\n { pathParams, body },\n )\n },\n\n async downloadVersion(params: {\n chatId: string\n versionId: string\n format?: 'zip' | 'tarball'\n includeDefaultFiles?: boolean\n }): Promise<ArrayBuffer> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const query = Object.fromEntries(\n Object.entries({\n format: params.format,\n includeDefaultFiles:\n params.includeDefaultFiles !== undefined\n ? String(params.includeDefaultFiles)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}/download`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n\n async deleteVersionFiles(\n params: {\n chatId: string\n versionId: string\n } & ChatsDeleteVersionFilesRequest,\n ): Promise<ChatsDeleteVersionFilesResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n const body = { filePaths: params.filePaths }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}/files/delete`,\n 'POST',\n { pathParams, body },\n )\n },\n\n async resume(params: {\n chatId: string\n messageId: string\n }): Promise<ChatsResumeResponse> {\n const pathParams = {\n chatId: params.chatId,\n messageId: params.messageId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/messages/${pathParams.messageId}/resume`,\n 'POST',\n { pathParams },\n )\n },\n\n async stop(params: {\n chatId: string\n messageId: string\n }): Promise<ChatsStopResponse> {\n const pathParams = {\n chatId: params.chatId,\n messageId: params.messageId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/messages/${pathParams.messageId}/stop`,\n 'POST',\n { pathParams },\n )\n },\n },\n\n projects: {\n async getByChatId(params: {\n chatId: string\n }): Promise<ProjectsGetByChatIdResponse> {\n const pathParams = { chatId: params.chatId }\n return fetcher(`/chats/${pathParams.chatId}/project`, 'GET', {\n pathParams,\n })\n },\n\n async find(): Promise<ProjectsFindResponse> {\n return fetcher(`/projects`, 'GET', {})\n },\n\n async create(\n params: ProjectsCreateRequest,\n ): Promise<ProjectsCreateResponse> {\n const body = {\n name: params.name,\n description: params.description,\n icon: params.icon,\n environmentVariables: params.environmentVariables,\n instructions: params.instructions,\n vercelProjectId: params.vercelProjectId,\n privacy: params.privacy,\n }\n return fetcher(`/projects`, 'POST', { body })\n },\n\n async getById(params: {\n projectId: string\n }): Promise<ProjectsGetByIdResponse> {\n const pathParams = { projectId: params.projectId }\n return fetcher(`/projects/${pathParams.projectId}`, 'GET', {\n pathParams,\n })\n },\n\n async update(\n params: { projectId: string } & ProjectsUpdateRequest,\n ): Promise<ProjectsUpdateResponse> {\n const pathParams = { projectId: params.projectId }\n const body = {\n name: params.name,\n description: params.description,\n instructions: params.instructions,\n privacy: params.privacy,\n }\n return fetcher(`/projects/${pathParams.projectId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async delete(params: {\n projectId: string\n deleteAllChats?: boolean\n }): Promise<ProjectsDeleteResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n deleteAllChats:\n params.deleteAllChats !== undefined\n ? String(params.deleteAllChats)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}`, 'DELETE', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async assign(\n params: { projectId: string } & ProjectsAssignRequest,\n ): Promise<ProjectsAssignResponse> {\n const pathParams = { projectId: params.projectId }\n const body = { chatId: params.chatId }\n return fetcher(`/projects/${pathParams.projectId}/assign`, 'POST', {\n pathParams,\n body,\n })\n },\n\n async findEnvVars(params: {\n projectId: string\n decrypted?: boolean\n }): Promise<ProjectsFindEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async createEnvVars(\n params: {\n projectId: string\n decrypted?: boolean\n } & ProjectsCreateEnvVarsRequest,\n ): Promise<ProjectsCreateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const body = {\n environmentVariables: params.environmentVariables,\n upsert: params.upsert,\n }\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'POST', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n body,\n })\n },\n\n async updateEnvVars(\n params: {\n projectId: string\n decrypted?: boolean\n } & ProjectsUpdateEnvVarsRequest,\n ): Promise<ProjectsUpdateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const body = { environmentVariables: params.environmentVariables }\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/projects/${pathParams.projectId}/env-vars`, 'PATCH', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n body,\n })\n },\n\n async deleteEnvVars(\n params: { projectId: string } & ProjectsDeleteEnvVarsRequest,\n ): Promise<ProjectsDeleteEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const body = { environmentVariableIds: params.environmentVariableIds }\n return fetcher(\n `/projects/${pathParams.projectId}/env-vars/delete`,\n 'POST',\n { pathParams, body },\n )\n },\n\n async getEnvVar(params: {\n projectId: string\n environmentVariableId: string\n decrypted?: boolean\n }): Promise<ProjectsGetEnvVarResponse> {\n const pathParams = {\n projectId: params.projectId,\n environmentVariableId: params.environmentVariableId,\n }\n const query = Object.fromEntries(\n Object.entries({\n decrypted:\n params.decrypted !== undefined\n ? String(params.decrypted)\n : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(\n `/projects/${pathParams.projectId}/env-vars/${pathParams.environmentVariableId}`,\n 'GET',\n { pathParams, ...(hasQuery ? { query } : {}) },\n )\n },\n },\n\n deployments: {\n async find(params: {\n projectId: string\n chatId: string\n versionId: string\n }): Promise<DeploymentsFindResponse> {\n const query = Object.fromEntries(\n Object.entries({\n projectId: params.projectId,\n chatId: params.chatId,\n versionId: params.versionId,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n return fetcher(`/deployments`, 'GET', { query })\n },\n\n async create(\n params: DeploymentsCreateRequest,\n ): Promise<DeploymentsCreateResponse> {\n const body = {\n projectId: params.projectId,\n chatId: params.chatId,\n versionId: params.versionId,\n }\n return fetcher(`/deployments`, 'POST', { body })\n },\n\n async getById(params: {\n deploymentId: string\n }): Promise<DeploymentsGetByIdResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(`/deployments/${pathParams.deploymentId}`, 'GET', {\n pathParams,\n })\n },\n\n async delete(params: {\n deploymentId: string\n }): Promise<DeploymentsDeleteResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(`/deployments/${pathParams.deploymentId}`, 'DELETE', {\n pathParams,\n })\n },\n\n async findLogs(params: {\n deploymentId: string\n since?: number\n }): Promise<DeploymentsFindLogsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n const query = Object.fromEntries(\n Object.entries({\n since:\n params.since !== undefined ? String(params.since) : undefined,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/deployments/${pathParams.deploymentId}/logs`, 'GET', {\n pathParams,\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async findErrors(params: {\n deploymentId: string\n }): Promise<DeploymentsFindErrorsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n return fetcher(\n `/deployments/${pathParams.deploymentId}/errors`,\n 'GET',\n { pathParams },\n )\n },\n },\n\n hooks: {\n async find(): Promise<HooksFindResponse> {\n return fetcher(`/hooks`, 'GET', {})\n },\n\n async create(params: HooksCreateRequest): Promise<HooksCreateResponse> {\n const body = {\n name: params.name,\n events: params.events,\n chatId: params.chatId,\n url: params.url,\n }\n return fetcher(`/hooks`, 'POST', { body })\n },\n\n async getById(params: { hookId: string }): Promise<HooksGetByIdResponse> {\n const pathParams = { hookId: params.hookId }\n return fetcher(`/hooks/${pathParams.hookId}`, 'GET', { pathParams })\n },\n\n async update(\n params: { hookId: string } & HooksUpdateRequest,\n ): Promise<HooksUpdateResponse> {\n const pathParams = { hookId: params.hookId }\n const body = {\n name: params.name,\n events: params.events,\n url: params.url,\n }\n return fetcher(`/hooks/${pathParams.hookId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async delete(params: { hookId: string }): Promise<HooksDeleteResponse> {\n const pathParams = { hookId: params.hookId }\n return fetcher(`/hooks/${pathParams.hookId}`, 'DELETE', { pathParams })\n },\n },\n\n integrations: {\n vercel: {\n projects: {\n async find(): Promise<IntegrationsVercelProjectsFindResponse> {\n return fetcher(`/integrations/vercel/projects`, 'GET', {})\n },\n\n async create(\n params: IntegrationsVercelProjectsCreateRequest,\n ): Promise<IntegrationsVercelProjectsCreateResponse> {\n const body = { projectId: params.projectId, name: params.name }\n return fetcher(`/integrations/vercel/projects`, 'POST', { body })\n },\n },\n },\n },\n\n rateLimits: {\n async find(params?: { scope?: string }): Promise<RateLimitsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n scope: params.scope,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/rate-limits`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n },\n\n user: {\n async get(): Promise<UserGetResponse> {\n return fetcher(`/user`, 'GET', {})\n },\n\n async getBilling(params?: {\n scope?: string\n }): Promise<UserGetBillingResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n scope: params.scope,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/user/billing`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async getPlan(): Promise<UserGetPlanResponse> {\n return fetcher(`/user/plan`, 'GET', {})\n },\n\n async getScopes(): Promise<UserGetScopesResponse> {\n return fetcher(`/user/scopes`, 'GET', {})\n },\n },\n\n reports: {\n async getUsage(params?: {\n startDate?: string\n endDate?: string\n chatId?: string\n messageId?: string\n userId?: string\n limit?: number\n cursor?: string\n }): Promise<ReportsGetUsageResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n startDate: params.startDate,\n endDate: params.endDate,\n chatId: params.chatId,\n messageId: params.messageId,\n userId: params.userId,\n limit:\n params.limit !== undefined ? String(params.limit) : undefined,\n cursor: params.cursor,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/reports/usage`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n\n async getUserActivity(params?: {\n startDate?: string\n endDate?: string\n }): Promise<ReportsGetUserActivityResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n startDate: params.startDate,\n endDate: params.endDate,\n }).filter(([_, value]) => value !== undefined),\n ) as Record<string, string>)\n : {}\n const hasQuery = Object.keys(query).length > 0\n return fetcher(`/reports/user-activity`, 'GET', {\n ...(hasQuery ? { query } : {}),\n })\n },\n },\n\n mcpServers: {\n async find(): Promise<McpServersFindResponse> {\n return fetcher(`/mcp-servers`, 'GET', {})\n },\n\n async create(\n params: McpServersCreateRequest,\n ): Promise<McpServersCreateResponse> {\n const body = {\n name: params.name,\n url: params.url,\n description: params.description,\n enabled: params.enabled,\n auth: params.auth,\n scope: params.scope,\n }\n return fetcher(`/mcp-servers`, 'POST', { body })\n },\n\n async getById(params: {\n mcpServerId: string\n }): Promise<McpServersGetByIdResponse> {\n const pathParams = { mcpServerId: params.mcpServerId }\n return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'GET', {\n pathParams,\n })\n },\n\n async update(\n params: { mcpServerId: string } & McpServersUpdateRequest,\n ): Promise<McpServersUpdateResponse> {\n const pathParams = { mcpServerId: params.mcpServerId }\n const body = {\n name: params.name,\n url: params.url,\n description: params.description,\n enabled: params.enabled,\n auth: params.auth,\n scope: params.scope,\n }\n return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'PATCH', {\n pathParams,\n body,\n })\n },\n\n async delete(params: {\n mcpServerId: string\n }): Promise<McpServersDeleteResponse> {\n const pathParams = { mcpServerId: params.mcpServerId }\n return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'DELETE', {\n pathParams,\n })\n },\n },\n }\n}\n\n// Default client for backward compatibility\nexport const v0 = createClient()\n"],"names":[],"mappings":"AAUO;AACP;AACA;AACA;AACO;;ACbA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;"}
|
package/dist/index.js
CHANGED
|
@@ -143,7 +143,9 @@ function createClient(config = {}) {
|
|
|
143
143
|
projectId: params.projectId,
|
|
144
144
|
modelConfiguration: params.modelConfiguration,
|
|
145
145
|
responseMode: params.responseMode,
|
|
146
|
-
designSystemId: params.designSystemId
|
|
146
|
+
designSystemId: params.designSystemId,
|
|
147
|
+
mcpServerIds: params.mcpServerIds,
|
|
148
|
+
metadata: params.metadata
|
|
147
149
|
};
|
|
148
150
|
if (params.responseMode === 'experimental_stream') {
|
|
149
151
|
return await streamingFetcher(`/chats`, 'POST', {
|
|
@@ -158,7 +160,9 @@ function createClient(config = {}) {
|
|
|
158
160
|
const query = params ? Object.fromEntries(Object.entries({
|
|
159
161
|
limit: params.limit !== undefined ? String(params.limit) : undefined,
|
|
160
162
|
offset: params.offset !== undefined ? String(params.offset) : undefined,
|
|
161
|
-
isFavorite: params.isFavorite !== undefined ? String(params.isFavorite) : undefined
|
|
163
|
+
isFavorite: params.isFavorite !== undefined ? String(params.isFavorite) : undefined,
|
|
164
|
+
vercelProjectId: params.vercelProjectId,
|
|
165
|
+
branch: params.branch
|
|
162
166
|
}).filter(([_, value])=>value !== undefined)) : {};
|
|
163
167
|
const hasQuery = Object.keys(query).length > 0;
|
|
164
168
|
return fetcher(`/chats`, 'GET', {
|
|
@@ -195,7 +199,8 @@ function createClient(config = {}) {
|
|
|
195
199
|
};
|
|
196
200
|
const body = {
|
|
197
201
|
name: params.name,
|
|
198
|
-
privacy: params.privacy
|
|
202
|
+
privacy: params.privacy,
|
|
203
|
+
metadata: params.metadata
|
|
199
204
|
};
|
|
200
205
|
return fetcher(`/chats/${pathParams.chatId}`, 'PATCH', {
|
|
201
206
|
pathParams,
|
|
@@ -252,7 +257,8 @@ function createClient(config = {}) {
|
|
|
252
257
|
attachments: params.attachments,
|
|
253
258
|
system: params.system,
|
|
254
259
|
modelConfiguration: params.modelConfiguration,
|
|
255
|
-
responseMode: params.responseMode
|
|
260
|
+
responseMode: params.responseMode,
|
|
261
|
+
mcpServerIds: params.mcpServerIds
|
|
256
262
|
};
|
|
257
263
|
if (params.responseMode === 'experimental_stream') {
|
|
258
264
|
return await streamingFetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
@@ -357,6 +363,15 @@ function createClient(config = {}) {
|
|
|
357
363
|
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}/resume`, 'POST', {
|
|
358
364
|
pathParams
|
|
359
365
|
});
|
|
366
|
+
},
|
|
367
|
+
async stop (params) {
|
|
368
|
+
const pathParams = {
|
|
369
|
+
chatId: params.chatId,
|
|
370
|
+
messageId: params.messageId
|
|
371
|
+
};
|
|
372
|
+
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}/stop`, 'POST', {
|
|
373
|
+
pathParams
|
|
374
|
+
});
|
|
360
375
|
}
|
|
361
376
|
},
|
|
362
377
|
projects: {
|
|
@@ -695,6 +710,69 @@ function createClient(config = {}) {
|
|
|
695
710
|
query
|
|
696
711
|
} : {}
|
|
697
712
|
});
|
|
713
|
+
},
|
|
714
|
+
async getUserActivity (params) {
|
|
715
|
+
const query = params ? Object.fromEntries(Object.entries({
|
|
716
|
+
startDate: params.startDate,
|
|
717
|
+
endDate: params.endDate
|
|
718
|
+
}).filter(([_, value])=>value !== undefined)) : {};
|
|
719
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
720
|
+
return fetcher(`/reports/user-activity`, 'GET', {
|
|
721
|
+
...hasQuery ? {
|
|
722
|
+
query
|
|
723
|
+
} : {}
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
mcpServers: {
|
|
728
|
+
async find () {
|
|
729
|
+
return fetcher(`/mcp-servers`, 'GET', {});
|
|
730
|
+
},
|
|
731
|
+
async create (params) {
|
|
732
|
+
const body = {
|
|
733
|
+
name: params.name,
|
|
734
|
+
url: params.url,
|
|
735
|
+
description: params.description,
|
|
736
|
+
enabled: params.enabled,
|
|
737
|
+
auth: params.auth,
|
|
738
|
+
scope: params.scope
|
|
739
|
+
};
|
|
740
|
+
return fetcher(`/mcp-servers`, 'POST', {
|
|
741
|
+
body
|
|
742
|
+
});
|
|
743
|
+
},
|
|
744
|
+
async getById (params) {
|
|
745
|
+
const pathParams = {
|
|
746
|
+
mcpServerId: params.mcpServerId
|
|
747
|
+
};
|
|
748
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'GET', {
|
|
749
|
+
pathParams
|
|
750
|
+
});
|
|
751
|
+
},
|
|
752
|
+
async update (params) {
|
|
753
|
+
const pathParams = {
|
|
754
|
+
mcpServerId: params.mcpServerId
|
|
755
|
+
};
|
|
756
|
+
const body = {
|
|
757
|
+
name: params.name,
|
|
758
|
+
url: params.url,
|
|
759
|
+
description: params.description,
|
|
760
|
+
enabled: params.enabled,
|
|
761
|
+
auth: params.auth,
|
|
762
|
+
scope: params.scope
|
|
763
|
+
};
|
|
764
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'PATCH', {
|
|
765
|
+
pathParams,
|
|
766
|
+
body
|
|
767
|
+
});
|
|
768
|
+
},
|
|
769
|
+
async delete (params) {
|
|
770
|
+
const pathParams = {
|
|
771
|
+
mcpServerId: params.mcpServerId
|
|
772
|
+
};
|
|
773
|
+
return fetcher(`/mcp-servers/${pathParams.mcpServerId}`, 'DELETE', {
|
|
774
|
+
pathParams
|
|
775
|
+
});
|
|
698
776
|
}
|
|
699
777
|
}
|
|
700
778
|
};
|