v0-sdk 0.9.0 → 0.11.0
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/README.md +28 -8
- package/dist/index.cjs +107 -0
- package/dist/index.d.ts +31 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +107 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# v0-sdk
|
|
2
2
|
|
|
3
3
|
> **⚠️ Developer Preview**: This SDK is currently in beta and is subject to change. Use in production at your own risk.
|
|
4
4
|
|
|
@@ -7,11 +7,11 @@ A TypeScript SDK for interacting with the v0 Platform API to create and manage A
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install
|
|
10
|
+
npm install v0-sdk
|
|
11
11
|
# or
|
|
12
|
-
yarn add
|
|
12
|
+
yarn add v0-sdk
|
|
13
13
|
# or
|
|
14
|
-
pnpm add
|
|
14
|
+
pnpm add v0-sdk
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Quick Start
|
|
@@ -23,7 +23,7 @@ Set `V0_API_KEY` environment variable.
|
|
|
23
23
|
### Create Chat and Generate Code
|
|
24
24
|
|
|
25
25
|
```typescript
|
|
26
|
-
import { v0 } from '
|
|
26
|
+
import { v0 } from 'v0-sdk'
|
|
27
27
|
|
|
28
28
|
// Create a new chat
|
|
29
29
|
const chat = await v0.chats.create({
|
|
@@ -59,7 +59,7 @@ The SDK supports two ways to create a client:
|
|
|
59
59
|
Use the default client with environment variables:
|
|
60
60
|
|
|
61
61
|
```typescript
|
|
62
|
-
import { v0 } from '
|
|
62
|
+
import { v0 } from 'v0-sdk'
|
|
63
63
|
|
|
64
64
|
// Uses V0_API_KEY environment variable
|
|
65
65
|
const chat = await v0.chats.create({
|
|
@@ -72,7 +72,7 @@ const chat = await v0.chats.create({
|
|
|
72
72
|
Create a custom client with specific configuration:
|
|
73
73
|
|
|
74
74
|
```typescript
|
|
75
|
-
import { createClient } from '
|
|
75
|
+
import { createClient } from 'v0-sdk'
|
|
76
76
|
|
|
77
77
|
// Create client with custom API key
|
|
78
78
|
const v0 = createClient({
|
|
@@ -106,6 +106,26 @@ const result = await v0.chats.create({
|
|
|
106
106
|
})
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
+
#### Streaming Chat Creation
|
|
110
|
+
|
|
111
|
+
Create a chat with streaming response for real-time output:
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { parseStreamingResponse } from 'v0-sdk'
|
|
115
|
+
|
|
116
|
+
const stream = await v0.chats.create({
|
|
117
|
+
message: 'Create a React button component',
|
|
118
|
+
responseMode: 'experimental_stream',
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
// Parse the streaming response
|
|
122
|
+
for await (const event of parseStreamingResponse(stream)) {
|
|
123
|
+
if (event.event === 'message') {
|
|
124
|
+
console.log('Received chunk:', event.data)
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
109
129
|
#### Get Chat by ID
|
|
110
130
|
|
|
111
131
|
```typescript
|
|
@@ -189,7 +209,7 @@ import type {
|
|
|
189
209
|
UserDetail,
|
|
190
210
|
ProjectDetail,
|
|
191
211
|
V0ClientConfig,
|
|
192
|
-
} from '
|
|
212
|
+
} from 'v0-sdk'
|
|
193
213
|
|
|
194
214
|
// Type-safe client configuration
|
|
195
215
|
const config: V0ClientConfig = {
|
package/dist/index.cjs
CHANGED
|
@@ -13,6 +13,7 @@ function createFetcher(config = {}) {
|
|
|
13
13
|
const hasBody = method !== 'GET' && params.body;
|
|
14
14
|
const headers = {
|
|
15
15
|
Authorization: `Bearer ${apiKey}`,
|
|
16
|
+
'User-Agent': 'v0-sdk/0.1.0',
|
|
16
17
|
...params.headers
|
|
17
18
|
};
|
|
18
19
|
// Include session token in headers if available
|
|
@@ -39,9 +40,95 @@ function createFetcher(config = {}) {
|
|
|
39
40
|
return res.json();
|
|
40
41
|
};
|
|
41
42
|
}
|
|
43
|
+
// Utility function to parse streaming events
|
|
44
|
+
async function* parseStreamingResponse(stream) {
|
|
45
|
+
const reader = stream.getReader();
|
|
46
|
+
const decoder = new TextDecoder();
|
|
47
|
+
let buffer = '';
|
|
48
|
+
try {
|
|
49
|
+
while(true){
|
|
50
|
+
const { done, value } = await reader.read();
|
|
51
|
+
if (done) break;
|
|
52
|
+
buffer += decoder.decode(value, {
|
|
53
|
+
stream: true
|
|
54
|
+
});
|
|
55
|
+
const lines = buffer.split('\n');
|
|
56
|
+
buffer = lines.pop() || ''; // Keep the last incomplete line in buffer
|
|
57
|
+
for (const line of lines){
|
|
58
|
+
if (line.trim() === '') continue;
|
|
59
|
+
if (line.startsWith('data: ')) {
|
|
60
|
+
const data = line.slice(6);
|
|
61
|
+
if (data === '[DONE]') return;
|
|
62
|
+
try {
|
|
63
|
+
yield {
|
|
64
|
+
event: 'message',
|
|
65
|
+
data: data
|
|
66
|
+
};
|
|
67
|
+
} catch (e) {
|
|
68
|
+
console.warn('Failed to parse streaming data:', e);
|
|
69
|
+
}
|
|
70
|
+
} else if (line.startsWith('event: ')) {
|
|
71
|
+
const event = line.slice(7);
|
|
72
|
+
yield {
|
|
73
|
+
event: event,
|
|
74
|
+
data: ''
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} finally{
|
|
80
|
+
reader.releaseLock();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function createStreamingFetcher(config = {}) {
|
|
84
|
+
const baseUrl = config.baseUrl || 'https://api.v0.dev/v1';
|
|
85
|
+
let sessionToken = null;
|
|
86
|
+
return async function streamingFetcher(url, method, params = {}) {
|
|
87
|
+
const apiKey = config.apiKey || process.env.V0_API_KEY;
|
|
88
|
+
if (!apiKey) {
|
|
89
|
+
throw new Error('API key is required. Provide it via config.apiKey or V0_API_KEY environment variable');
|
|
90
|
+
}
|
|
91
|
+
const queryString = params.query ? '?' + new URLSearchParams(params.query).toString() : '';
|
|
92
|
+
const finalUrl = baseUrl + url + queryString;
|
|
93
|
+
const hasBody = method !== 'GET' && params.body;
|
|
94
|
+
const headers = {
|
|
95
|
+
Authorization: `Bearer ${apiKey}`,
|
|
96
|
+
'User-Agent': 'v0-sdk/0.1.0',
|
|
97
|
+
Accept: 'text/event-stream',
|
|
98
|
+
'Cache-Control': 'no-cache',
|
|
99
|
+
...params.headers
|
|
100
|
+
};
|
|
101
|
+
// Include session token in headers if available
|
|
102
|
+
if (sessionToken) {
|
|
103
|
+
headers['x-session-token'] = sessionToken;
|
|
104
|
+
}
|
|
105
|
+
if (hasBody) {
|
|
106
|
+
headers['Content-Type'] = 'application/json';
|
|
107
|
+
}
|
|
108
|
+
const res = await fetch(finalUrl, {
|
|
109
|
+
method,
|
|
110
|
+
headers,
|
|
111
|
+
body: hasBody ? JSON.stringify(params.body) : undefined
|
|
112
|
+
});
|
|
113
|
+
// Check for session token in response headers
|
|
114
|
+
const newSessionToken = res.headers.get('x-session-token');
|
|
115
|
+
if (newSessionToken) {
|
|
116
|
+
sessionToken = newSessionToken;
|
|
117
|
+
}
|
|
118
|
+
if (!res.ok) {
|
|
119
|
+
const text = await res.text();
|
|
120
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
121
|
+
}
|
|
122
|
+
if (!res.body) {
|
|
123
|
+
throw new Error('No response body available for streaming');
|
|
124
|
+
}
|
|
125
|
+
return res.body;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
42
128
|
|
|
43
129
|
function createClient(config = {}) {
|
|
44
130
|
const fetcher = createFetcher(config);
|
|
131
|
+
const streamingFetcher = createStreamingFetcher(config);
|
|
45
132
|
return {
|
|
46
133
|
chats: {
|
|
47
134
|
async create (params) {
|
|
@@ -55,6 +142,11 @@ function createClient(config = {}) {
|
|
|
55
142
|
responseMode: params.responseMode,
|
|
56
143
|
designSystemId: params.designSystemId
|
|
57
144
|
};
|
|
145
|
+
if (params.responseMode === 'experimental_stream') {
|
|
146
|
+
return await streamingFetcher(`/chats`, 'POST', {
|
|
147
|
+
body
|
|
148
|
+
});
|
|
149
|
+
}
|
|
58
150
|
return fetcher(`/chats`, 'POST', {
|
|
59
151
|
body
|
|
60
152
|
});
|
|
@@ -158,6 +250,12 @@ function createClient(config = {}) {
|
|
|
158
250
|
modelConfiguration: params.modelConfiguration,
|
|
159
251
|
responseMode: params.responseMode
|
|
160
252
|
};
|
|
253
|
+
if (params.responseMode === 'experimental_stream') {
|
|
254
|
+
return await streamingFetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
255
|
+
pathParams,
|
|
256
|
+
body
|
|
257
|
+
});
|
|
258
|
+
}
|
|
161
259
|
return fetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
162
260
|
pathParams,
|
|
163
261
|
body
|
|
@@ -269,6 +367,14 @@ function createClient(config = {}) {
|
|
|
269
367
|
body
|
|
270
368
|
});
|
|
271
369
|
},
|
|
370
|
+
async delete (params) {
|
|
371
|
+
const pathParams = {
|
|
372
|
+
projectId: params.projectId
|
|
373
|
+
};
|
|
374
|
+
return fetcher(`/projects/${pathParams.projectId}`, 'DELETE', {
|
|
375
|
+
pathParams
|
|
376
|
+
});
|
|
377
|
+
},
|
|
272
378
|
async assign (params) {
|
|
273
379
|
const pathParams = {
|
|
274
380
|
projectId: params.projectId
|
|
@@ -530,4 +636,5 @@ function createClient(config = {}) {
|
|
|
530
636
|
const v0 = createClient();
|
|
531
637
|
|
|
532
638
|
exports.createClient = createClient;
|
|
639
|
+
exports.parseStreamingResponse = parseStreamingResponse;
|
|
533
640
|
exports.v0 = v0;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
interface StreamEvent {
|
|
2
|
+
event?: string;
|
|
3
|
+
data: string;
|
|
4
|
+
}
|
|
5
|
+
declare function parseStreamingResponse(stream: ReadableStream<Uint8Array>): AsyncGenerator<StreamEvent, void, unknown>;
|
|
6
|
+
|
|
1
7
|
type ChatDetail = {
|
|
2
8
|
id: string;
|
|
3
9
|
object: 'chat';
|
|
@@ -149,14 +155,14 @@ type HookDetail = {
|
|
|
149
155
|
id: string;
|
|
150
156
|
object: 'hook';
|
|
151
157
|
name: string;
|
|
152
|
-
events: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted'>;
|
|
158
|
+
events: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted' | 'message.finished'>;
|
|
153
159
|
chatId?: string;
|
|
154
160
|
url: string;
|
|
155
161
|
};
|
|
156
162
|
type HookEventDetail = {
|
|
157
163
|
id: string;
|
|
158
164
|
object: 'hook_event';
|
|
159
|
-
event: 'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted';
|
|
165
|
+
event: 'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted' | 'message.finished';
|
|
160
166
|
status?: 'pending' | 'success' | 'error';
|
|
161
167
|
createdAt: string;
|
|
162
168
|
};
|
|
@@ -448,10 +454,11 @@ interface ChatsCreateRequest {
|
|
|
448
454
|
imageGenerations?: boolean;
|
|
449
455
|
thinking?: boolean;
|
|
450
456
|
};
|
|
451
|
-
responseMode?: 'sync' | 'async';
|
|
457
|
+
responseMode?: 'sync' | 'async' | 'experimental_stream';
|
|
452
458
|
designSystemId?: string | null;
|
|
453
459
|
}
|
|
454
460
|
type ChatsCreateResponse = ChatDetail;
|
|
461
|
+
type ChatsCreateStreamResponse = ReadableStream<Uint8Array>;
|
|
455
462
|
interface ChatsFindResponse {
|
|
456
463
|
object: 'list';
|
|
457
464
|
data: ChatSummary[];
|
|
@@ -563,9 +570,10 @@ interface ChatsSendMessageRequest {
|
|
|
563
570
|
imageGenerations?: boolean;
|
|
564
571
|
thinking?: boolean;
|
|
565
572
|
};
|
|
566
|
-
responseMode?: 'sync' | 'async';
|
|
573
|
+
responseMode?: 'sync' | 'async' | 'experimental_stream';
|
|
567
574
|
}
|
|
568
575
|
type ChatsSendMessageResponse = ChatDetail;
|
|
576
|
+
type ChatsSendMessageStreamResponse = ReadableStream<Uint8Array>;
|
|
569
577
|
type ChatsGetMessageResponse = MessageDetail;
|
|
570
578
|
interface ChatsFindVersionsResponse {
|
|
571
579
|
object: 'list';
|
|
@@ -619,7 +627,7 @@ interface HooksFindResponse {
|
|
|
619
627
|
}
|
|
620
628
|
interface HooksCreateRequest {
|
|
621
629
|
name: string;
|
|
622
|
-
events: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted'>;
|
|
630
|
+
events: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted' | 'message.finished'>;
|
|
623
631
|
chatId?: string;
|
|
624
632
|
url: string;
|
|
625
633
|
}
|
|
@@ -627,7 +635,7 @@ type HooksCreateResponse = HookDetail;
|
|
|
627
635
|
type HooksGetByIdResponse = HookDetail;
|
|
628
636
|
interface HooksUpdateRequest {
|
|
629
637
|
name?: string;
|
|
630
|
-
events?: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted'>;
|
|
638
|
+
events?: Array<'chat.created' | 'chat.updated' | 'chat.deleted' | 'message.created' | 'message.updated' | 'message.deleted' | 'message.finished'>;
|
|
631
639
|
url?: string;
|
|
632
640
|
}
|
|
633
641
|
type HooksUpdateResponse = HookDetail;
|
|
@@ -670,6 +678,11 @@ interface ProjectsUpdateRequest {
|
|
|
670
678
|
privacy?: 'private' | 'team';
|
|
671
679
|
}
|
|
672
680
|
type ProjectsUpdateResponse = ProjectDetail;
|
|
681
|
+
interface ProjectsDeleteResponse {
|
|
682
|
+
id: string;
|
|
683
|
+
object: 'project';
|
|
684
|
+
deleted: true;
|
|
685
|
+
}
|
|
673
686
|
interface ProjectsAssignRequest {
|
|
674
687
|
chatId: string;
|
|
675
688
|
}
|
|
@@ -778,7 +791,7 @@ interface V0ClientConfig {
|
|
|
778
791
|
}
|
|
779
792
|
declare function createClient(config?: V0ClientConfig): {
|
|
780
793
|
chats: {
|
|
781
|
-
create(params: ChatsCreateRequest): Promise<ChatsCreateResponse>;
|
|
794
|
+
create(params: ChatsCreateRequest): Promise<ChatsCreateResponse | ChatsCreateStreamResponse>;
|
|
782
795
|
find(params?: {
|
|
783
796
|
limit?: string;
|
|
784
797
|
offset?: string;
|
|
@@ -807,7 +820,7 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
807
820
|
}): Promise<ChatsFindMessagesResponse>;
|
|
808
821
|
sendMessage(params: {
|
|
809
822
|
chatId: string;
|
|
810
|
-
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse>;
|
|
823
|
+
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse | ChatsSendMessageStreamResponse>;
|
|
811
824
|
getMessage(params: {
|
|
812
825
|
chatId: string;
|
|
813
826
|
messageId: string;
|
|
@@ -842,6 +855,9 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
842
855
|
update(params: {
|
|
843
856
|
projectId: string;
|
|
844
857
|
} & ProjectsUpdateRequest): Promise<ProjectsUpdateResponse>;
|
|
858
|
+
delete(params: {
|
|
859
|
+
projectId: string;
|
|
860
|
+
}): Promise<ProjectsDeleteResponse>;
|
|
845
861
|
assign(params: {
|
|
846
862
|
projectId: string;
|
|
847
863
|
} & ProjectsAssignRequest): Promise<ProjectsAssignResponse>;
|
|
@@ -924,7 +940,7 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
924
940
|
};
|
|
925
941
|
declare const v0: {
|
|
926
942
|
chats: {
|
|
927
|
-
create(params: ChatsCreateRequest): Promise<ChatsCreateResponse>;
|
|
943
|
+
create(params: ChatsCreateRequest): Promise<ChatsCreateResponse | ChatsCreateStreamResponse>;
|
|
928
944
|
find(params?: {
|
|
929
945
|
limit?: string;
|
|
930
946
|
offset?: string;
|
|
@@ -953,7 +969,7 @@ declare const v0: {
|
|
|
953
969
|
}): Promise<ChatsFindMessagesResponse>;
|
|
954
970
|
sendMessage(params: {
|
|
955
971
|
chatId: string;
|
|
956
|
-
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse>;
|
|
972
|
+
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse | ChatsSendMessageStreamResponse>;
|
|
957
973
|
getMessage(params: {
|
|
958
974
|
chatId: string;
|
|
959
975
|
messageId: string;
|
|
@@ -988,6 +1004,9 @@ declare const v0: {
|
|
|
988
1004
|
update(params: {
|
|
989
1005
|
projectId: string;
|
|
990
1006
|
} & ProjectsUpdateRequest): Promise<ProjectsUpdateResponse>;
|
|
1007
|
+
delete(params: {
|
|
1008
|
+
projectId: string;
|
|
1009
|
+
}): Promise<ProjectsDeleteResponse>;
|
|
991
1010
|
assign(params: {
|
|
992
1011
|
projectId: string;
|
|
993
1012
|
} & ProjectsAssignRequest): Promise<ProjectsAssignResponse>;
|
|
@@ -1069,6 +1088,6 @@ declare const v0: {
|
|
|
1069
1088
|
};
|
|
1070
1089
|
};
|
|
1071
1090
|
|
|
1072
|
-
export { createClient, v0 };
|
|
1073
|
-
export type { ChatDetail, ChatSummary, ChatsCreateRequest, ChatsCreateResponse, ChatsDeleteResponse, ChatsFavoriteRequest, ChatsFavoriteResponse, ChatsFindMessagesResponse, ChatsFindResponse, ChatsFindVersionsResponse, ChatsForkRequest, ChatsForkResponse, ChatsGetByIdResponse, ChatsGetMessageResponse, ChatsGetVersionResponse, ChatsInitRequest, ChatsInitResponse, ChatsResumeResponse, ChatsSendMessageRequest, ChatsSendMessageResponse, ChatsUpdateRequest, ChatsUpdateResponse, ChatsUpdateVersionRequest, ChatsUpdateVersionResponse, DeploymentDetail, DeploymentSummary, DeploymentsCreateRequest, DeploymentsCreateResponse, DeploymentsDeleteResponse, DeploymentsFindErrorsResponse, DeploymentsFindLogsResponse, DeploymentsFindResponse, DeploymentsGetByIdResponse, EnvironmentVariableDetailSchema, EnvironmentVariableSummarySchema, EnvironmentVariablesListSchema, FileDetail, FileSummary, HookDetail, HookEventDetail, HookSummary, HooksCreateRequest, HooksCreateResponse, HooksDeleteResponse, HooksFindResponse, HooksGetByIdResponse, HooksUpdateRequest, HooksUpdateResponse, IntegrationConnectionDetailSchema, IntegrationConnectionListSchema, IntegrationConnectionSummarySchema, IntegrationDetailSchema, IntegrationListSchema, IntegrationSummarySchema, IntegrationsVercelProjectsCreateRequest, IntegrationsVercelProjectsCreateResponse, IntegrationsVercelProjectsFindResponse, MessageDetail, MessageSummary, MessageSummaryList, ProductDetailSchema, ProductListSchema, ProductSummarySchema, ProjectDetail, ProjectSummary, ProjectsAssignRequest, ProjectsAssignResponse, ProjectsCreateEnvVarsRequest, ProjectsCreateEnvVarsResponse, ProjectsCreateRequest, ProjectsCreateResponse, ProjectsDeleteEnvVarsRequest, ProjectsDeleteEnvVarsResponse, ProjectsFindEnvVarsResponse, ProjectsFindResponse, ProjectsGetByChatIdResponse, ProjectsGetByIdResponse, ProjectsGetEnvVarResponse, ProjectsUpdateEnvVarsRequest, ProjectsUpdateEnvVarsResponse, ProjectsUpdateRequest, ProjectsUpdateResponse, RateLimitsFindResponse, ScopeSummary, SearchResultItem, UserDetail, UserGetBillingResponse, UserGetPlanResponse, UserGetResponse, UserGetScopesResponse, V0ClientConfig, VercelProjectDetail, VercelProjectSummary, VersionDetail, VersionSummary, VersionSummaryList };
|
|
1091
|
+
export { createClient, parseStreamingResponse, v0 };
|
|
1092
|
+
export type { ChatDetail, ChatSummary, ChatsCreateRequest, ChatsCreateResponse, ChatsCreateStreamResponse, ChatsDeleteResponse, ChatsFavoriteRequest, ChatsFavoriteResponse, ChatsFindMessagesResponse, ChatsFindResponse, ChatsFindVersionsResponse, ChatsForkRequest, ChatsForkResponse, ChatsGetByIdResponse, ChatsGetMessageResponse, ChatsGetVersionResponse, ChatsInitRequest, ChatsInitResponse, ChatsResumeResponse, ChatsSendMessageRequest, ChatsSendMessageResponse, ChatsSendMessageStreamResponse, ChatsUpdateRequest, ChatsUpdateResponse, ChatsUpdateVersionRequest, ChatsUpdateVersionResponse, DeploymentDetail, DeploymentSummary, DeploymentsCreateRequest, DeploymentsCreateResponse, DeploymentsDeleteResponse, DeploymentsFindErrorsResponse, DeploymentsFindLogsResponse, DeploymentsFindResponse, DeploymentsGetByIdResponse, EnvironmentVariableDetailSchema, EnvironmentVariableSummarySchema, EnvironmentVariablesListSchema, FileDetail, FileSummary, HookDetail, HookEventDetail, HookSummary, HooksCreateRequest, HooksCreateResponse, HooksDeleteResponse, HooksFindResponse, HooksGetByIdResponse, HooksUpdateRequest, HooksUpdateResponse, IntegrationConnectionDetailSchema, IntegrationConnectionListSchema, IntegrationConnectionSummarySchema, IntegrationDetailSchema, IntegrationListSchema, IntegrationSummarySchema, IntegrationsVercelProjectsCreateRequest, IntegrationsVercelProjectsCreateResponse, IntegrationsVercelProjectsFindResponse, MessageDetail, MessageSummary, MessageSummaryList, ProductDetailSchema, ProductListSchema, ProductSummarySchema, ProjectDetail, ProjectSummary, ProjectsAssignRequest, ProjectsAssignResponse, ProjectsCreateEnvVarsRequest, ProjectsCreateEnvVarsResponse, ProjectsCreateRequest, ProjectsCreateResponse, ProjectsDeleteEnvVarsRequest, ProjectsDeleteEnvVarsResponse, ProjectsDeleteResponse, ProjectsFindEnvVarsResponse, ProjectsFindResponse, ProjectsGetByChatIdResponse, ProjectsGetByIdResponse, ProjectsGetEnvVarResponse, ProjectsUpdateEnvVarsRequest, ProjectsUpdateEnvVarsResponse, ProjectsUpdateRequest, ProjectsUpdateResponse, RateLimitsFindResponse, ScopeSummary, SearchResultItem, StreamEvent, UserDetail, UserGetBillingResponse, UserGetPlanResponse, UserGetResponse, UserGetScopesResponse, V0ClientConfig, VercelProjectDetail, VercelProjectSummary, VersionDetail, VersionSummary, VersionSummaryList };
|
|
1074
1093
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../src/sdk/v0.ts"],"sourcesContent":["import { createFetcher } 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 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<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\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 modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\n imageGenerations?: boolean\n thinking?: 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 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 >\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 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<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n chatId: string\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n}\n\nexport type MessageSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\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 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 UserDetail {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: 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 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 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 createdAt: string\n updatedAt?: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\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 modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\n designSystemId?: string | null\n}\n\nexport type ChatsCreateResponse = ChatDetail\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 modelConfiguration?: {\n modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\n}\n\nexport type ChatsSendMessageResponse = ChatDetail\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}\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 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 interface DeploymentsFindLogsResponse {\n error?: string\n logs: string[]\n nextSince?: number\n}\n\nexport interface DeploymentsFindErrorsResponse {\n error?: string\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 >\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 >\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: VercelProjectDetail[]\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 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}\n\nexport type UserGetResponse = UserDetail\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 interface V0ClientConfig {\n apiKey?: string\n baseUrl?: string\n}\n\nexport function createClient(config: V0ClientConfig = {}) {\n const fetcher = createFetcher(config)\n\n return {\n chats: {\n async create(params: ChatsCreateRequest): Promise<ChatsCreateResponse> {\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 return fetcher(`/chats`, 'POST', { body })\n },\n\n async find(params?: {\n limit?: string\n offset?: string\n isFavorite?: string\n }): Promise<ChatsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n limit: params.limit,\n offset: params.offset,\n isFavorite: params.isFavorite,\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?: string\n cursor?: string\n }): Promise<ChatsFindMessagesResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit: params.limit,\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> {\n const pathParams = { chatId: params.chatId }\n const body = {\n message: params.message,\n attachments: params.attachments,\n modelConfiguration: params.modelConfiguration,\n responseMode: params.responseMode,\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?: string\n cursor?: string\n }): Promise<ChatsFindVersionsResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit: params.limit,\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 }): Promise<ChatsGetVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'GET',\n { pathParams },\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 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 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?: string\n }): Promise<ProjectsFindEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\n } & ProjectsCreateEnvVarsRequest,\n ): Promise<ProjectsCreateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\n } & ProjectsUpdateEnvVarsRequest,\n ): Promise<ProjectsUpdateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\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: params.decrypted,\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?: string\n }): Promise<DeploymentsFindLogsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n const query = Object.fromEntries(\n Object.entries({\n since: params.since,\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}\n\n// Default client for backward compatibility\nexport const v0 = createClient()\n"],"names":[],"mappings":"AAAO;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;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;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;AACO;AACP;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;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;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;AACO;AACP;AACA;AACA;AACA;AACO;AACP;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;AACO;AACP;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;AACO;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;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;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;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;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;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;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;;;"}
|
|
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 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 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<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\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 modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\n imageGenerations?: boolean\n thinking?: 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 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<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n chatId: string\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n}\n\nexport type MessageSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'message'\n content: string\n experimental_content?: Array<\n | [0, unknown[]]\n | [\n 1,\n {\n title?: string\n [key: string]: unknown\n },\n ]\n >\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 role: 'user' | 'assistant'\n finishReason?:\n | 'stop'\n | 'length'\n | 'content-filter'\n | 'tool-calls'\n | 'error'\n | 'other'\n | 'unknown'\n apiUrl: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\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 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 UserDetail {\n id: string\n object: 'user'\n name?: string\n email: string\n avatar: 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 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 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 createdAt: string\n updatedAt?: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\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 modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\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 modelConfiguration?: {\n modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg' | 'v0-gpt-5'\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}\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 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 interface DeploymentsFindLogsResponse {\n error?: string\n logs: string[]\n nextSince?: number\n}\n\nexport interface DeploymentsFindErrorsResponse {\n error?: string\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: VercelProjectDetail[]\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}\n\nexport type UserGetResponse = UserDetail\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 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?: string\n offset?: string\n isFavorite?: string\n }): Promise<ChatsFindResponse> {\n const query = params\n ? (Object.fromEntries(\n Object.entries({\n limit: params.limit,\n offset: params.offset,\n isFavorite: params.isFavorite,\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?: string\n cursor?: string\n }): Promise<ChatsFindMessagesResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit: params.limit,\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 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?: string\n cursor?: string\n }): Promise<ChatsFindVersionsResponse> {\n const pathParams = { chatId: params.chatId }\n const query = Object.fromEntries(\n Object.entries({\n limit: params.limit,\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 }): Promise<ChatsGetVersionResponse> {\n const pathParams = {\n chatId: params.chatId,\n versionId: params.versionId,\n }\n return fetcher(\n `/chats/${pathParams.chatId}/versions/${pathParams.versionId}`,\n 'GET',\n { pathParams },\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 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 }): Promise<ProjectsDeleteResponse> {\n const pathParams = { projectId: params.projectId }\n return fetcher(`/projects/${pathParams.projectId}`, 'DELETE', {\n pathParams,\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?: string\n }): Promise<ProjectsFindEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\n } & ProjectsCreateEnvVarsRequest,\n ): Promise<ProjectsCreateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\n } & ProjectsUpdateEnvVarsRequest,\n ): Promise<ProjectsUpdateEnvVarsResponse> {\n const pathParams = { projectId: params.projectId }\n const query = Object.fromEntries(\n Object.entries({\n decrypted: params.decrypted,\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?: string\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: params.decrypted,\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?: string\n }): Promise<DeploymentsFindLogsResponse> {\n const pathParams = { deploymentId: params.deploymentId }\n const query = Object.fromEntries(\n Object.entries({\n since: params.since,\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}\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;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;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;AACO;AACP;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;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;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;AACO;AACP;AACA;AACA;AACA;AACO;AACP;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;AACO;AACP;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;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;AACO;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;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;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;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;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;;;"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ function createFetcher(config = {}) {
|
|
|
11
11
|
const hasBody = method !== 'GET' && params.body;
|
|
12
12
|
const headers = {
|
|
13
13
|
Authorization: `Bearer ${apiKey}`,
|
|
14
|
+
'User-Agent': 'v0-sdk/0.1.0',
|
|
14
15
|
...params.headers
|
|
15
16
|
};
|
|
16
17
|
// Include session token in headers if available
|
|
@@ -37,9 +38,95 @@ function createFetcher(config = {}) {
|
|
|
37
38
|
return res.json();
|
|
38
39
|
};
|
|
39
40
|
}
|
|
41
|
+
// Utility function to parse streaming events
|
|
42
|
+
async function* parseStreamingResponse(stream) {
|
|
43
|
+
const reader = stream.getReader();
|
|
44
|
+
const decoder = new TextDecoder();
|
|
45
|
+
let buffer = '';
|
|
46
|
+
try {
|
|
47
|
+
while(true){
|
|
48
|
+
const { done, value } = await reader.read();
|
|
49
|
+
if (done) break;
|
|
50
|
+
buffer += decoder.decode(value, {
|
|
51
|
+
stream: true
|
|
52
|
+
});
|
|
53
|
+
const lines = buffer.split('\n');
|
|
54
|
+
buffer = lines.pop() || ''; // Keep the last incomplete line in buffer
|
|
55
|
+
for (const line of lines){
|
|
56
|
+
if (line.trim() === '') continue;
|
|
57
|
+
if (line.startsWith('data: ')) {
|
|
58
|
+
const data = line.slice(6);
|
|
59
|
+
if (data === '[DONE]') return;
|
|
60
|
+
try {
|
|
61
|
+
yield {
|
|
62
|
+
event: 'message',
|
|
63
|
+
data: data
|
|
64
|
+
};
|
|
65
|
+
} catch (e) {
|
|
66
|
+
console.warn('Failed to parse streaming data:', e);
|
|
67
|
+
}
|
|
68
|
+
} else if (line.startsWith('event: ')) {
|
|
69
|
+
const event = line.slice(7);
|
|
70
|
+
yield {
|
|
71
|
+
event: event,
|
|
72
|
+
data: ''
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} finally{
|
|
78
|
+
reader.releaseLock();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function createStreamingFetcher(config = {}) {
|
|
82
|
+
const baseUrl = config.baseUrl || 'https://api.v0.dev/v1';
|
|
83
|
+
let sessionToken = null;
|
|
84
|
+
return async function streamingFetcher(url, method, params = {}) {
|
|
85
|
+
const apiKey = config.apiKey || process.env.V0_API_KEY;
|
|
86
|
+
if (!apiKey) {
|
|
87
|
+
throw new Error('API key is required. Provide it via config.apiKey or V0_API_KEY environment variable');
|
|
88
|
+
}
|
|
89
|
+
const queryString = params.query ? '?' + new URLSearchParams(params.query).toString() : '';
|
|
90
|
+
const finalUrl = baseUrl + url + queryString;
|
|
91
|
+
const hasBody = method !== 'GET' && params.body;
|
|
92
|
+
const headers = {
|
|
93
|
+
Authorization: `Bearer ${apiKey}`,
|
|
94
|
+
'User-Agent': 'v0-sdk/0.1.0',
|
|
95
|
+
Accept: 'text/event-stream',
|
|
96
|
+
'Cache-Control': 'no-cache',
|
|
97
|
+
...params.headers
|
|
98
|
+
};
|
|
99
|
+
// Include session token in headers if available
|
|
100
|
+
if (sessionToken) {
|
|
101
|
+
headers['x-session-token'] = sessionToken;
|
|
102
|
+
}
|
|
103
|
+
if (hasBody) {
|
|
104
|
+
headers['Content-Type'] = 'application/json';
|
|
105
|
+
}
|
|
106
|
+
const res = await fetch(finalUrl, {
|
|
107
|
+
method,
|
|
108
|
+
headers,
|
|
109
|
+
body: hasBody ? JSON.stringify(params.body) : undefined
|
|
110
|
+
});
|
|
111
|
+
// Check for session token in response headers
|
|
112
|
+
const newSessionToken = res.headers.get('x-session-token');
|
|
113
|
+
if (newSessionToken) {
|
|
114
|
+
sessionToken = newSessionToken;
|
|
115
|
+
}
|
|
116
|
+
if (!res.ok) {
|
|
117
|
+
const text = await res.text();
|
|
118
|
+
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
119
|
+
}
|
|
120
|
+
if (!res.body) {
|
|
121
|
+
throw new Error('No response body available for streaming');
|
|
122
|
+
}
|
|
123
|
+
return res.body;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
40
126
|
|
|
41
127
|
function createClient(config = {}) {
|
|
42
128
|
const fetcher = createFetcher(config);
|
|
129
|
+
const streamingFetcher = createStreamingFetcher(config);
|
|
43
130
|
return {
|
|
44
131
|
chats: {
|
|
45
132
|
async create (params) {
|
|
@@ -53,6 +140,11 @@ function createClient(config = {}) {
|
|
|
53
140
|
responseMode: params.responseMode,
|
|
54
141
|
designSystemId: params.designSystemId
|
|
55
142
|
};
|
|
143
|
+
if (params.responseMode === 'experimental_stream') {
|
|
144
|
+
return await streamingFetcher(`/chats`, 'POST', {
|
|
145
|
+
body
|
|
146
|
+
});
|
|
147
|
+
}
|
|
56
148
|
return fetcher(`/chats`, 'POST', {
|
|
57
149
|
body
|
|
58
150
|
});
|
|
@@ -156,6 +248,12 @@ function createClient(config = {}) {
|
|
|
156
248
|
modelConfiguration: params.modelConfiguration,
|
|
157
249
|
responseMode: params.responseMode
|
|
158
250
|
};
|
|
251
|
+
if (params.responseMode === 'experimental_stream') {
|
|
252
|
+
return await streamingFetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
253
|
+
pathParams,
|
|
254
|
+
body
|
|
255
|
+
});
|
|
256
|
+
}
|
|
159
257
|
return fetcher(`/chats/${pathParams.chatId}/messages`, 'POST', {
|
|
160
258
|
pathParams,
|
|
161
259
|
body
|
|
@@ -267,6 +365,14 @@ function createClient(config = {}) {
|
|
|
267
365
|
body
|
|
268
366
|
});
|
|
269
367
|
},
|
|
368
|
+
async delete (params) {
|
|
369
|
+
const pathParams = {
|
|
370
|
+
projectId: params.projectId
|
|
371
|
+
};
|
|
372
|
+
return fetcher(`/projects/${pathParams.projectId}`, 'DELETE', {
|
|
373
|
+
pathParams
|
|
374
|
+
});
|
|
375
|
+
},
|
|
270
376
|
async assign (params) {
|
|
271
377
|
const pathParams = {
|
|
272
378
|
projectId: params.projectId
|
|
@@ -527,4 +633,4 @@ function createClient(config = {}) {
|
|
|
527
633
|
// Default client for backward compatibility
|
|
528
634
|
const v0 = createClient();
|
|
529
635
|
|
|
530
|
-
export { createClient, v0 };
|
|
636
|
+
export { createClient, parseStreamingResponse, v0 };
|