v0-sdk 0.5.2 → 0.6.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/dist/index.cjs +87 -1
- package/dist/index.d.ts +172 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
2
2
|
|
|
3
3
|
function createFetcher(config = {}) {
|
|
4
4
|
const baseUrl = config.baseUrl || 'https://api.v0.dev/v1';
|
|
5
|
+
let sessionToken = null;
|
|
5
6
|
return async function fetcher(url, method, params = {}) {
|
|
6
7
|
const apiKey = config.apiKey || process.env.V0_API_KEY;
|
|
7
8
|
if (!apiKey) {
|
|
@@ -12,9 +13,12 @@ function createFetcher(config = {}) {
|
|
|
12
13
|
const hasBody = method !== 'GET' && params.body;
|
|
13
14
|
const headers = {
|
|
14
15
|
Authorization: `Bearer ${apiKey}`,
|
|
15
|
-
'x-session-cache': '1',
|
|
16
16
|
...params.headers
|
|
17
17
|
};
|
|
18
|
+
// Include session token in headers if available
|
|
19
|
+
if (sessionToken) {
|
|
20
|
+
headers['x-session-token'] = sessionToken;
|
|
21
|
+
}
|
|
18
22
|
if (hasBody) {
|
|
19
23
|
headers['Content-Type'] = 'application/json';
|
|
20
24
|
}
|
|
@@ -23,6 +27,11 @@ function createFetcher(config = {}) {
|
|
|
23
27
|
headers,
|
|
24
28
|
body: hasBody ? JSON.stringify(params.body) : undefined
|
|
25
29
|
});
|
|
30
|
+
// Check for session token in response headers
|
|
31
|
+
const newSessionToken = res.headers.get('x-session-token');
|
|
32
|
+
if (newSessionToken) {
|
|
33
|
+
sessionToken = newSessionToken;
|
|
34
|
+
}
|
|
26
35
|
if (!res.ok) {
|
|
27
36
|
const text = await res.text();
|
|
28
37
|
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
@@ -121,6 +130,22 @@ function createClient(config = {}) {
|
|
|
121
130
|
body
|
|
122
131
|
});
|
|
123
132
|
},
|
|
133
|
+
async findMessages (params) {
|
|
134
|
+
const pathParams = {
|
|
135
|
+
chatId: params.chatId
|
|
136
|
+
};
|
|
137
|
+
const query = Object.fromEntries(Object.entries({
|
|
138
|
+
limit: params.limit,
|
|
139
|
+
cursor: params.cursor
|
|
140
|
+
}).filter(([_, value])=>value !== undefined));
|
|
141
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
142
|
+
return fetcher(`/chats/${pathParams.chatId}/messages`, 'GET', {
|
|
143
|
+
pathParams,
|
|
144
|
+
...hasQuery ? {
|
|
145
|
+
query
|
|
146
|
+
} : {}
|
|
147
|
+
});
|
|
148
|
+
},
|
|
124
149
|
async sendMessage (params) {
|
|
125
150
|
const pathParams = {
|
|
126
151
|
chatId: params.chatId
|
|
@@ -136,6 +161,53 @@ function createClient(config = {}) {
|
|
|
136
161
|
body
|
|
137
162
|
});
|
|
138
163
|
},
|
|
164
|
+
async getMessage (params) {
|
|
165
|
+
const pathParams = {
|
|
166
|
+
chatId: params.chatId,
|
|
167
|
+
messageId: params.messageId
|
|
168
|
+
};
|
|
169
|
+
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}`, 'GET', {
|
|
170
|
+
pathParams
|
|
171
|
+
});
|
|
172
|
+
},
|
|
173
|
+
async findVersions (params) {
|
|
174
|
+
const pathParams = {
|
|
175
|
+
chatId: params.chatId
|
|
176
|
+
};
|
|
177
|
+
const query = Object.fromEntries(Object.entries({
|
|
178
|
+
limit: params.limit,
|
|
179
|
+
cursor: params.cursor
|
|
180
|
+
}).filter(([_, value])=>value !== undefined));
|
|
181
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
182
|
+
return fetcher(`/chats/${pathParams.chatId}/versions`, 'GET', {
|
|
183
|
+
pathParams,
|
|
184
|
+
...hasQuery ? {
|
|
185
|
+
query
|
|
186
|
+
} : {}
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
async getVersion (params) {
|
|
190
|
+
const pathParams = {
|
|
191
|
+
chatId: params.chatId,
|
|
192
|
+
versionId: params.versionId
|
|
193
|
+
};
|
|
194
|
+
return fetcher(`/chats/${pathParams.chatId}/versions/${pathParams.versionId}`, 'GET', {
|
|
195
|
+
pathParams
|
|
196
|
+
});
|
|
197
|
+
},
|
|
198
|
+
async updateVersion (params) {
|
|
199
|
+
const pathParams = {
|
|
200
|
+
chatId: params.chatId,
|
|
201
|
+
versionId: params.versionId
|
|
202
|
+
};
|
|
203
|
+
const body = {
|
|
204
|
+
files: params.files
|
|
205
|
+
};
|
|
206
|
+
return fetcher(`/chats/${pathParams.chatId}/versions/${pathParams.versionId}`, 'PATCH', {
|
|
207
|
+
pathParams,
|
|
208
|
+
body
|
|
209
|
+
});
|
|
210
|
+
},
|
|
139
211
|
async resume (params) {
|
|
140
212
|
const pathParams = {
|
|
141
213
|
chatId: params.chatId,
|
|
@@ -178,6 +250,20 @@ function createClient(config = {}) {
|
|
|
178
250
|
pathParams
|
|
179
251
|
});
|
|
180
252
|
},
|
|
253
|
+
async update (params) {
|
|
254
|
+
const pathParams = {
|
|
255
|
+
projectId: params.projectId
|
|
256
|
+
};
|
|
257
|
+
const body = {
|
|
258
|
+
name: params.name,
|
|
259
|
+
description: params.description,
|
|
260
|
+
instructions: params.instructions
|
|
261
|
+
};
|
|
262
|
+
return fetcher(`/projects/${pathParams.projectId}`, 'PATCH', {
|
|
263
|
+
pathParams,
|
|
264
|
+
body
|
|
265
|
+
});
|
|
266
|
+
},
|
|
181
267
|
async assign (params) {
|
|
182
268
|
const pathParams = {
|
|
183
269
|
projectId: params.projectId
|
package/dist/index.d.ts
CHANGED
|
@@ -6,29 +6,38 @@ type ChatDetail = {
|
|
|
6
6
|
name?: string;
|
|
7
7
|
/** @deprecated */
|
|
8
8
|
title?: string;
|
|
9
|
+
createdAt: string;
|
|
9
10
|
updatedAt?: string;
|
|
10
11
|
favorite: boolean;
|
|
11
12
|
authorId: string;
|
|
12
13
|
projectId?: string;
|
|
14
|
+
webUrl: string;
|
|
15
|
+
apiUrl: string;
|
|
13
16
|
latestVersion?: {
|
|
14
17
|
id: string;
|
|
15
18
|
object: 'version';
|
|
16
19
|
status: 'pending' | 'completed' | 'failed';
|
|
17
20
|
demoUrl?: string;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
updatedAt?: string;
|
|
18
23
|
files: {
|
|
19
24
|
object: 'file';
|
|
20
25
|
name: string;
|
|
21
26
|
content: string;
|
|
27
|
+
locked: boolean;
|
|
22
28
|
}[];
|
|
23
29
|
};
|
|
30
|
+
/** @deprecated */
|
|
24
31
|
url: string;
|
|
25
32
|
messages: Array<{
|
|
26
33
|
id: string;
|
|
27
34
|
object: 'message';
|
|
28
35
|
content: string;
|
|
29
36
|
createdAt: string;
|
|
37
|
+
updatedAt?: string;
|
|
30
38
|
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git';
|
|
31
39
|
role: 'user' | 'assistant';
|
|
40
|
+
apiUrl: string;
|
|
32
41
|
}>;
|
|
33
42
|
files?: {
|
|
34
43
|
lang: string;
|
|
@@ -52,15 +61,20 @@ type ChatSummary = {
|
|
|
52
61
|
name?: string;
|
|
53
62
|
/** @deprecated */
|
|
54
63
|
title?: string;
|
|
64
|
+
createdAt: string;
|
|
55
65
|
updatedAt?: string;
|
|
56
66
|
favorite: boolean;
|
|
57
67
|
authorId: string;
|
|
58
68
|
projectId?: string;
|
|
69
|
+
webUrl: string;
|
|
70
|
+
apiUrl: string;
|
|
59
71
|
latestVersion?: {
|
|
60
72
|
id: string;
|
|
61
73
|
object: 'version';
|
|
62
74
|
status: 'pending' | 'completed' | 'failed';
|
|
63
75
|
demoUrl?: string;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
updatedAt?: string;
|
|
64
78
|
};
|
|
65
79
|
};
|
|
66
80
|
interface DeploymentDetail {
|
|
@@ -77,6 +91,7 @@ interface FileDetail {
|
|
|
77
91
|
object: 'file';
|
|
78
92
|
name: string;
|
|
79
93
|
content: string;
|
|
94
|
+
locked: boolean;
|
|
80
95
|
}
|
|
81
96
|
type HookDetail = {
|
|
82
97
|
id: string;
|
|
@@ -95,27 +110,23 @@ interface HookSummary {
|
|
|
95
110
|
type MessageDetail = {
|
|
96
111
|
id: string;
|
|
97
112
|
object: 'message';
|
|
113
|
+
content: string;
|
|
114
|
+
createdAt: string;
|
|
115
|
+
updatedAt?: string;
|
|
116
|
+
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git';
|
|
117
|
+
role: 'user' | 'assistant';
|
|
118
|
+
apiUrl: string;
|
|
98
119
|
chatId: string;
|
|
99
|
-
url: string;
|
|
100
|
-
files: {
|
|
101
|
-
object: 'file';
|
|
102
|
-
name: string;
|
|
103
|
-
}[];
|
|
104
|
-
demo?: string;
|
|
105
|
-
text: string;
|
|
106
|
-
modelConfiguration: {
|
|
107
|
-
modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg';
|
|
108
|
-
imageGenerations?: boolean;
|
|
109
|
-
thinking?: boolean;
|
|
110
|
-
};
|
|
111
120
|
};
|
|
112
121
|
type MessageSummary = {
|
|
113
122
|
id: string;
|
|
114
123
|
object: 'message';
|
|
115
124
|
content: string;
|
|
116
125
|
createdAt: string;
|
|
126
|
+
updatedAt?: string;
|
|
117
127
|
type: 'message' | 'forked-block' | 'forked-chat' | 'open-in-v0' | 'refinement' | 'added-environment-variables' | 'added-integration' | 'deleted-file' | 'moved-file' | 'renamed-file' | 'edited-file' | 'replace-src' | 'reverted-block' | 'fix-with-v0' | 'auto-fix-with-v0' | 'sync-git';
|
|
118
128
|
role: 'user' | 'assistant';
|
|
129
|
+
apiUrl: string;
|
|
119
130
|
};
|
|
120
131
|
type ProjectDetail = {
|
|
121
132
|
id: string;
|
|
@@ -126,6 +137,8 @@ type ProjectDetail = {
|
|
|
126
137
|
updatedAt?: string;
|
|
127
138
|
apiUrl: string;
|
|
128
139
|
webUrl: string;
|
|
140
|
+
description?: string;
|
|
141
|
+
instructions?: string;
|
|
129
142
|
chats: Array<{
|
|
130
143
|
id: string;
|
|
131
144
|
object: 'chat';
|
|
@@ -134,15 +147,20 @@ type ProjectDetail = {
|
|
|
134
147
|
name?: string;
|
|
135
148
|
/** @deprecated */
|
|
136
149
|
title?: string;
|
|
150
|
+
createdAt: string;
|
|
137
151
|
updatedAt?: string;
|
|
138
152
|
favorite: boolean;
|
|
139
153
|
authorId: string;
|
|
140
154
|
projectId?: string;
|
|
155
|
+
webUrl: string;
|
|
156
|
+
apiUrl: string;
|
|
141
157
|
latestVersion?: {
|
|
142
158
|
id: string;
|
|
143
159
|
object: 'version';
|
|
144
160
|
status: 'pending' | 'completed' | 'failed';
|
|
145
161
|
demoUrl?: string;
|
|
162
|
+
createdAt: string;
|
|
163
|
+
updatedAt?: string;
|
|
146
164
|
};
|
|
147
165
|
}>;
|
|
148
166
|
};
|
|
@@ -173,6 +191,28 @@ interface VercelProjectDetail {
|
|
|
173
191
|
object: 'vercel_project';
|
|
174
192
|
name: string;
|
|
175
193
|
}
|
|
194
|
+
type VersionDetail = {
|
|
195
|
+
id: string;
|
|
196
|
+
object: 'version';
|
|
197
|
+
status: 'pending' | 'completed' | 'failed';
|
|
198
|
+
demoUrl?: string;
|
|
199
|
+
createdAt: string;
|
|
200
|
+
updatedAt?: string;
|
|
201
|
+
files: {
|
|
202
|
+
object: 'file';
|
|
203
|
+
name: string;
|
|
204
|
+
content: string;
|
|
205
|
+
locked: boolean;
|
|
206
|
+
}[];
|
|
207
|
+
};
|
|
208
|
+
type VersionSummary = {
|
|
209
|
+
id: string;
|
|
210
|
+
object: 'version';
|
|
211
|
+
status: 'pending' | 'completed' | 'failed';
|
|
212
|
+
demoUrl?: string;
|
|
213
|
+
createdAt: string;
|
|
214
|
+
updatedAt?: string;
|
|
215
|
+
};
|
|
176
216
|
interface ChatsCreateRequest {
|
|
177
217
|
message: string;
|
|
178
218
|
attachments?: {
|
|
@@ -202,13 +242,16 @@ type ChatsInitRequest = {
|
|
|
202
242
|
files: Array<{
|
|
203
243
|
name: string;
|
|
204
244
|
url: string;
|
|
245
|
+
locked?: boolean;
|
|
205
246
|
content?: never;
|
|
206
247
|
} | {
|
|
207
248
|
name: string;
|
|
208
249
|
content: string;
|
|
250
|
+
locked?: boolean;
|
|
209
251
|
url?: never;
|
|
210
252
|
}>;
|
|
211
253
|
repo?: never;
|
|
254
|
+
lockAllFiles?: never;
|
|
212
255
|
registry?: never;
|
|
213
256
|
zip?: never;
|
|
214
257
|
} | {
|
|
@@ -217,6 +260,7 @@ type ChatsInitRequest = {
|
|
|
217
260
|
url: string;
|
|
218
261
|
branch?: string;
|
|
219
262
|
};
|
|
263
|
+
lockAllFiles?: boolean;
|
|
220
264
|
files?: never;
|
|
221
265
|
registry?: never;
|
|
222
266
|
zip?: never;
|
|
@@ -225,6 +269,7 @@ type ChatsInitRequest = {
|
|
|
225
269
|
registry: {
|
|
226
270
|
url: string;
|
|
227
271
|
};
|
|
272
|
+
lockAllFiles?: boolean;
|
|
228
273
|
files?: never;
|
|
229
274
|
repo?: never;
|
|
230
275
|
zip?: never;
|
|
@@ -233,6 +278,7 @@ type ChatsInitRequest = {
|
|
|
233
278
|
zip: {
|
|
234
279
|
url: string;
|
|
235
280
|
};
|
|
281
|
+
lockAllFiles?: boolean;
|
|
236
282
|
files?: never;
|
|
237
283
|
repo?: never;
|
|
238
284
|
registry?: never;
|
|
@@ -245,17 +291,23 @@ type ChatsInitResponse = {
|
|
|
245
291
|
name?: string;
|
|
246
292
|
/** @deprecated */
|
|
247
293
|
title?: string;
|
|
294
|
+
createdAt: string;
|
|
248
295
|
updatedAt?: string;
|
|
249
296
|
favorite: boolean;
|
|
250
297
|
authorId: string;
|
|
251
298
|
projectId?: string;
|
|
299
|
+
webUrl: string;
|
|
300
|
+
apiUrl: string;
|
|
252
301
|
latestVersion?: {
|
|
253
302
|
id: string;
|
|
254
303
|
object: 'version';
|
|
255
304
|
status: 'pending' | 'completed' | 'failed';
|
|
256
305
|
demoUrl?: string;
|
|
306
|
+
createdAt: string;
|
|
307
|
+
updatedAt?: string;
|
|
257
308
|
files: FileDetail[];
|
|
258
309
|
};
|
|
310
|
+
/** @deprecated */
|
|
259
311
|
url: string;
|
|
260
312
|
messages: MessageSummary[];
|
|
261
313
|
files?: {
|
|
@@ -280,17 +332,23 @@ type ChatsGetByIdResponse = {
|
|
|
280
332
|
name?: string;
|
|
281
333
|
/** @deprecated */
|
|
282
334
|
title?: string;
|
|
335
|
+
createdAt: string;
|
|
283
336
|
updatedAt?: string;
|
|
284
337
|
favorite: boolean;
|
|
285
338
|
authorId: string;
|
|
286
339
|
projectId?: string;
|
|
340
|
+
webUrl: string;
|
|
341
|
+
apiUrl: string;
|
|
287
342
|
latestVersion?: {
|
|
288
343
|
id: string;
|
|
289
344
|
object: 'version';
|
|
290
345
|
status: 'pending' | 'completed' | 'failed';
|
|
291
346
|
demoUrl?: string;
|
|
347
|
+
createdAt: string;
|
|
348
|
+
updatedAt?: string;
|
|
292
349
|
files: FileDetail[];
|
|
293
350
|
};
|
|
351
|
+
/** @deprecated */
|
|
294
352
|
url: string;
|
|
295
353
|
messages: MessageSummary[];
|
|
296
354
|
files?: {
|
|
@@ -314,17 +372,23 @@ type ChatsUpdateResponse = {
|
|
|
314
372
|
name?: string;
|
|
315
373
|
/** @deprecated */
|
|
316
374
|
title?: string;
|
|
375
|
+
createdAt: string;
|
|
317
376
|
updatedAt?: string;
|
|
318
377
|
favorite: boolean;
|
|
319
378
|
authorId: string;
|
|
320
379
|
projectId?: string;
|
|
380
|
+
webUrl: string;
|
|
381
|
+
apiUrl: string;
|
|
321
382
|
latestVersion?: {
|
|
322
383
|
id: string;
|
|
323
384
|
object: 'version';
|
|
324
385
|
status: 'pending' | 'completed' | 'failed';
|
|
325
386
|
demoUrl?: string;
|
|
387
|
+
createdAt: string;
|
|
388
|
+
updatedAt?: string;
|
|
326
389
|
files: FileDetail[];
|
|
327
390
|
};
|
|
391
|
+
/** @deprecated */
|
|
328
392
|
url: string;
|
|
329
393
|
messages: MessageSummary[];
|
|
330
394
|
files?: {
|
|
@@ -355,17 +419,23 @@ type ChatsForkResponse = {
|
|
|
355
419
|
name?: string;
|
|
356
420
|
/** @deprecated */
|
|
357
421
|
title?: string;
|
|
422
|
+
createdAt: string;
|
|
358
423
|
updatedAt?: string;
|
|
359
424
|
favorite: boolean;
|
|
360
425
|
authorId: string;
|
|
361
426
|
projectId?: string;
|
|
427
|
+
webUrl: string;
|
|
428
|
+
apiUrl: string;
|
|
362
429
|
latestVersion?: {
|
|
363
430
|
id: string;
|
|
364
431
|
object: 'version';
|
|
365
432
|
status: 'pending' | 'completed' | 'failed';
|
|
366
433
|
demoUrl?: string;
|
|
434
|
+
createdAt: string;
|
|
435
|
+
updatedAt?: string;
|
|
367
436
|
files: FileDetail[];
|
|
368
437
|
};
|
|
438
|
+
/** @deprecated */
|
|
369
439
|
url: string;
|
|
370
440
|
messages: MessageSummary[];
|
|
371
441
|
files?: {
|
|
@@ -378,6 +448,15 @@ type ChatsForkResponse = {
|
|
|
378
448
|
text: string;
|
|
379
449
|
};
|
|
380
450
|
type ProjectsGetByChatIdResponse = ProjectDetail;
|
|
451
|
+
interface ChatsFindMessagesResponse {
|
|
452
|
+
object: 'list';
|
|
453
|
+
data: MessageSummary[];
|
|
454
|
+
pagination: {
|
|
455
|
+
hasMore: boolean;
|
|
456
|
+
nextCursor?: string;
|
|
457
|
+
nextUrl?: string;
|
|
458
|
+
};
|
|
459
|
+
}
|
|
381
460
|
interface ChatsSendMessageRequest {
|
|
382
461
|
message: string;
|
|
383
462
|
attachments?: {
|
|
@@ -398,17 +477,23 @@ type ChatsSendMessageResponse = {
|
|
|
398
477
|
name?: string;
|
|
399
478
|
/** @deprecated */
|
|
400
479
|
title?: string;
|
|
480
|
+
createdAt: string;
|
|
401
481
|
updatedAt?: string;
|
|
402
482
|
favorite: boolean;
|
|
403
483
|
authorId: string;
|
|
404
484
|
projectId?: string;
|
|
485
|
+
webUrl: string;
|
|
486
|
+
apiUrl: string;
|
|
405
487
|
latestVersion?: {
|
|
406
488
|
id: string;
|
|
407
489
|
object: 'version';
|
|
408
490
|
status: 'pending' | 'completed' | 'failed';
|
|
409
491
|
demoUrl?: string;
|
|
492
|
+
createdAt: string;
|
|
493
|
+
updatedAt?: string;
|
|
410
494
|
files: FileDetail[];
|
|
411
495
|
};
|
|
496
|
+
/** @deprecated */
|
|
412
497
|
url: string;
|
|
413
498
|
messages: MessageSummary[];
|
|
414
499
|
files?: {
|
|
@@ -426,6 +511,25 @@ type ChatsSendMessageResponse = {
|
|
|
426
511
|
};
|
|
427
512
|
chatId: string;
|
|
428
513
|
};
|
|
514
|
+
type ChatsGetMessageResponse = MessageDetail;
|
|
515
|
+
interface ChatsFindVersionsResponse {
|
|
516
|
+
object: 'list';
|
|
517
|
+
data: VersionSummary[];
|
|
518
|
+
pagination: {
|
|
519
|
+
hasMore: boolean;
|
|
520
|
+
nextCursor?: string;
|
|
521
|
+
nextUrl?: string;
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
type ChatsGetVersionResponse = VersionDetail;
|
|
525
|
+
interface ChatsUpdateVersionRequest {
|
|
526
|
+
files: {
|
|
527
|
+
name: string;
|
|
528
|
+
content: string;
|
|
529
|
+
locked?: boolean;
|
|
530
|
+
}[];
|
|
531
|
+
}
|
|
532
|
+
type ChatsUpdateVersionResponse = VersionDetail;
|
|
429
533
|
type ChatsResumeResponse = MessageDetail;
|
|
430
534
|
interface DeploymentsFindResponse {
|
|
431
535
|
object: 'list';
|
|
@@ -503,6 +607,12 @@ interface ProjectsCreateRequest {
|
|
|
503
607
|
}
|
|
504
608
|
type ProjectsCreateResponse = ProjectDetail;
|
|
505
609
|
type ProjectsGetByIdResponse = ProjectDetail;
|
|
610
|
+
interface ProjectsUpdateRequest {
|
|
611
|
+
name?: string;
|
|
612
|
+
description?: string;
|
|
613
|
+
instructions?: string;
|
|
614
|
+
}
|
|
615
|
+
type ProjectsUpdateResponse = ProjectDetail;
|
|
506
616
|
interface ProjectsAssignRequest {
|
|
507
617
|
chatId: string;
|
|
508
618
|
}
|
|
@@ -593,9 +703,31 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
593
703
|
fork(params: {
|
|
594
704
|
chatId: string;
|
|
595
705
|
} & ChatsForkRequest): Promise<ChatsForkResponse>;
|
|
706
|
+
findMessages(params: {
|
|
707
|
+
chatId: string;
|
|
708
|
+
limit?: string;
|
|
709
|
+
cursor?: string;
|
|
710
|
+
}): Promise<ChatsFindMessagesResponse>;
|
|
596
711
|
sendMessage(params: {
|
|
597
712
|
chatId: string;
|
|
598
713
|
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse>;
|
|
714
|
+
getMessage(params: {
|
|
715
|
+
chatId: string;
|
|
716
|
+
messageId: string;
|
|
717
|
+
}): Promise<ChatsGetMessageResponse>;
|
|
718
|
+
findVersions(params: {
|
|
719
|
+
chatId: string;
|
|
720
|
+
limit?: string;
|
|
721
|
+
cursor?: string;
|
|
722
|
+
}): Promise<ChatsFindVersionsResponse>;
|
|
723
|
+
getVersion(params: {
|
|
724
|
+
chatId: string;
|
|
725
|
+
versionId: string;
|
|
726
|
+
}): Promise<ChatsGetVersionResponse>;
|
|
727
|
+
updateVersion(params: {
|
|
728
|
+
chatId: string;
|
|
729
|
+
versionId: string;
|
|
730
|
+
} & ChatsUpdateVersionRequest): Promise<ChatsUpdateVersionResponse>;
|
|
599
731
|
resume(params: {
|
|
600
732
|
chatId: string;
|
|
601
733
|
messageId: string;
|
|
@@ -610,6 +742,9 @@ declare function createClient(config?: V0ClientConfig): {
|
|
|
610
742
|
getById(params: {
|
|
611
743
|
projectId: string;
|
|
612
744
|
}): Promise<ProjectsGetByIdResponse>;
|
|
745
|
+
update(params: {
|
|
746
|
+
projectId: string;
|
|
747
|
+
} & ProjectsUpdateRequest): Promise<ProjectsUpdateResponse>;
|
|
613
748
|
assign(params: {
|
|
614
749
|
projectId: string;
|
|
615
750
|
} & ProjectsAssignRequest): Promise<ProjectsAssignResponse>;
|
|
@@ -694,9 +829,31 @@ declare const v0: {
|
|
|
694
829
|
fork(params: {
|
|
695
830
|
chatId: string;
|
|
696
831
|
} & ChatsForkRequest): Promise<ChatsForkResponse>;
|
|
832
|
+
findMessages(params: {
|
|
833
|
+
chatId: string;
|
|
834
|
+
limit?: string;
|
|
835
|
+
cursor?: string;
|
|
836
|
+
}): Promise<ChatsFindMessagesResponse>;
|
|
697
837
|
sendMessage(params: {
|
|
698
838
|
chatId: string;
|
|
699
839
|
} & ChatsSendMessageRequest): Promise<ChatsSendMessageResponse>;
|
|
840
|
+
getMessage(params: {
|
|
841
|
+
chatId: string;
|
|
842
|
+
messageId: string;
|
|
843
|
+
}): Promise<ChatsGetMessageResponse>;
|
|
844
|
+
findVersions(params: {
|
|
845
|
+
chatId: string;
|
|
846
|
+
limit?: string;
|
|
847
|
+
cursor?: string;
|
|
848
|
+
}): Promise<ChatsFindVersionsResponse>;
|
|
849
|
+
getVersion(params: {
|
|
850
|
+
chatId: string;
|
|
851
|
+
versionId: string;
|
|
852
|
+
}): Promise<ChatsGetVersionResponse>;
|
|
853
|
+
updateVersion(params: {
|
|
854
|
+
chatId: string;
|
|
855
|
+
versionId: string;
|
|
856
|
+
} & ChatsUpdateVersionRequest): Promise<ChatsUpdateVersionResponse>;
|
|
700
857
|
resume(params: {
|
|
701
858
|
chatId: string;
|
|
702
859
|
messageId: string;
|
|
@@ -711,6 +868,9 @@ declare const v0: {
|
|
|
711
868
|
getById(params: {
|
|
712
869
|
projectId: string;
|
|
713
870
|
}): Promise<ProjectsGetByIdResponse>;
|
|
871
|
+
update(params: {
|
|
872
|
+
projectId: string;
|
|
873
|
+
} & ProjectsUpdateRequest): Promise<ProjectsUpdateResponse>;
|
|
714
874
|
assign(params: {
|
|
715
875
|
projectId: string;
|
|
716
876
|
} & ProjectsAssignRequest): Promise<ProjectsAssignResponse>;
|
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 AssistantMessageContentRichPart =\n | {\n createdAt: number\n finishedAt: number | null\n lastPartSentAt: number | null\n taskNameActive?: string | null\n taskNameComplete?: string | null\n error?:\n | {\n type: 'INPUT_SCHEMA_ERROR'\n flattenedError: Record<string, any>\n message?: never\n code?: never\n }\n | {\n type: 'HANDLED_EXECUTION_ERROR'\n message: string\n code: 'GENERIC_ERROR'\n flattenedError?: never\n }\n | {\n type: 'UNHANDLED_EXECUTION_ERROR'\n flattenedError?: never\n message?: never\n code?: never\n }\n id: string\n llmContent?:\n | Array<\n | {\n type: 'text'\n text: string\n url?: never\n }\n | {\n type: 'image'\n url: string\n text?: never\n }\n >\n | any\n type: 'task-thinking-v1'\n parts: Array<\n | {\n type: 'thinking-end'\n duration: number\n thought: string\n }\n | {\n type: 'parse-error'\n duration?: never\n thought?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-start-v1'\n parts: Array<\n | {\n type: 'launch-tasks'\n }\n | {\n type: 'parse-error'\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-stopped-v1'\n parts: Array<\n | {\n type: 'manually-stopped-on-client'\n invocations?: never\n }\n | {\n type: 'orchestrator-invocations-exhausted'\n invocations: number\n }\n | {\n type: 'subagent-invocations-exhausted'\n invocations: number\n }\n | {\n type: 'agent-timeout'\n invocations?: never\n }\n | {\n type: 'orchestrator-error'\n invocations?: never\n }\n | {\n type: 'parse-error'\n invocations?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-diagnostics-v1'\n parts: Array<\n | {\n type: 'diagnostic-invocations-exhausted'\n summaries?: never\n }\n | {\n type: 'fetching-diagnostics'\n summaries?: never\n }\n | {\n type: 'diagnostics-passed'\n summaries?: never\n }\n | {\n type: 'diagnostics-found-issues'\n summaries: string[]\n }\n | {\n type: 'parse-error'\n summaries?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-coding-v1'\n parts: Array<\n | {\n type: 'code-project'\n isVersioned: boolean\n changedFiles: {\n fileName: string\n baseName: string\n isActive: boolean\n isTerminated: boolean\n isDeleted: boolean\n isMoved: boolean\n }[]\n latestDeploymentInfo?: any\n lastDeployedAt?: string\n lastEditedAt?: string\n needsBlockSource: boolean\n blockId: string\n meta: Record<string, any>\n closed: boolean\n lang: string\n source: string\n }\n | {\n type: 'parse-error'\n isVersioned?: never\n changedFiles?: never\n latestDeploymentInfo?: never\n lastDeployedAt?: never\n lastEditedAt?: never\n needsBlockSource?: never\n blockId?: never\n meta?: never\n closed?: never\n lang?: never\n source?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-fetch-from-web-v1'\n parts: Array<\n | {\n type: 'starting-fetch-from-web'\n url: string\n favicon?: never\n image?: never\n title?: never\n publishedDate?: never\n }\n | {\n type: 'finished-fetch-from-web'\n url: string\n favicon: string | null\n image: string | null\n title: string | null\n publishedDate: string | null\n }\n | {\n type: 'parse-error'\n url?: never\n favicon?: never\n image?: never\n title?: never\n publishedDate?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-inspect-site-v1'\n parts: Array<\n | {\n type: 'starting-inspect-site'\n url: string\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n screenshotResults?: never\n }\n | {\n type: 'screenshot'\n screenshotUrl?: string | null\n url: string\n path?: string | null\n pageTitle?: string | null\n logoUrl?: string | null\n screenshotResults?: never\n }\n | {\n type: 'inspect-site-complete'\n screenshotResults: Array<{\n type: 'screenshot'\n screenshotUrl?: string | null\n title?: string | null\n }>\n url?: never\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n }\n | {\n type: 'parse-error'\n url?: never\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n screenshotResults?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-search-web-v1'\n parts: Array<\n | {\n type: 'starting-web-search'\n query: string\n count?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'got-results'\n count: number\n query?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'failed-web-search'\n query?: never\n count?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'finished-web-search'\n answer: string\n citations: Array<{\n url: string\n favicon: string | null\n image: string | null\n title: string | null\n publishedDate: string | null\n }>\n query?: never\n count?: never\n }\n | {\n type: 'parse-error'\n query?: never\n count?: never\n answer?: never\n citations?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-manage-todos-v1'\n parts: Array<\n | {\n type: 'starting-todo-manager'\n updatedList?: never\n plan?: never\n }\n | {\n type: 'updated-todo-list'\n updatedList: Array<{\n status: 'todo' | 'in-progress' | 'done'\n task: string\n }>\n plan?: never\n }\n | {\n type: 'read-todo-list'\n updatedList?: never\n plan?: never\n }\n | {\n type: 'generated-technical-plan'\n plan: string\n updatedList?: never\n }\n | {\n type: 'parse-error'\n updatedList?: never\n plan?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-search-repo-v1'\n parts: Array<\n | {\n type: 'starting-repo-search'\n query: string\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'ls'\n path?: string\n query?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'ls-results'\n numFiles: number\n query?: never\n path?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'grepping-repo'\n pattern: string\n path?: string\n globPattern?: string\n query?: never\n numFiles?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'grep-results'\n numMatches: number\n pattern: string\n query?: never\n path?: never\n numFiles?: never\n globPattern?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'select-files'\n filePaths: string[]\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'reading-file'\n filePath: string\n offset?: number | null\n limit?: number | null\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n result?: never\n }\n | {\n type: 'repo-search-result'\n query: string\n result: string\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'parse-error'\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-run-shell-command-v1'\n parts: Array<\n | {\n type: 'starting-shell-command'\n command: string\n directory?: string | null\n description?: string | null\n output?: never\n exitCode?: never\n backgroundPids?: never\n }\n | {\n type: 'finished-shell-command'\n output: string\n exitCode: number\n backgroundPids: number[]\n directory?: string | null\n command: string\n description?: never\n }\n | {\n type: 'parse-error'\n command?: never\n directory?: never\n description?: never\n output?: never\n exitCode?: never\n backgroundPids?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-read-files-v1'\n parts: Array<\n | {\n type: 'starting-read-files'\n filePaths: string[]\n fileContents?: never\n }\n | {\n type: 'finished-read-files'\n fileContents: Record<string, any>\n filePaths?: never\n }\n | {\n type: 'parse-error'\n filePaths?: never\n fileContents?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-generate-design-inspiration-v1'\n parts: Array<\n | {\n type: 'starting-design-inspiration'\n prompt: string\n images?: never\n }\n | {\n type: 'finished-design-inspiration'\n images: Array<{\n url: string\n description: string | null\n uploadedAt: string | null\n score?: number\n }>\n prompt?: never\n }\n | {\n type: 'parse-error'\n prompt?: never\n images?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-request-install-integration-v1'\n parts: Array<\n | {\n type: 'request-install-integration'\n steps: Array<{\n type: 'add-integration' | 'add-env-var'\n stepName: string\n }>\n }\n | {\n type: 'parse-error'\n steps?: never\n }\n >\n }\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: {\n object: 'file'\n name: string\n content: string\n }[]\n }\n url: string\n messages: Array<{\n id: string\n object: 'message'\n content: string\n createdAt: 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 }>\n files?: {\n lang: string\n meta: Record<string, any>\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'\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: 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 FileDetail {\n object: 'file'\n name: string\n content: string\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 | 'project.created'\n | 'project.updated'\n | 'project.deleted'\n >\n chatId?: string\n projectId?: string\n url: string\n}\n\nexport type HookEventDetail = {\n id: string\n object: 'hookEvent'\n event:\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'project.created'\n | 'project.updated'\n | 'project.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 type MessageDetail = {\n id: string\n object: 'message'\n chatId: string\n url: string\n files: {\n object: 'file'\n name: string\n }[]\n demo?: string\n text: string\n modelConfiguration: {\n modelId: 'v0-1.5-sm' | 'v0-1.5-md' | 'v0-1.5-lg'\n imageGenerations?: boolean\n thinking?: boolean\n }\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\n createdAt: 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}\n\nexport type ProjectDetail = {\n id: string\n object: 'project'\n name: string\n vercelProjectId?: string\n createdAt: string\n updatedAt?: string\n apiUrl: string\n webUrl: 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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n }\n }>\n}\n\nexport interface ProjectSummary {\n id: string\n object: 'project'\n name: string\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 files: {\n object: 'file'\n name: string\n content: string\n }[]\n}\n\nexport type VersionSummary = {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\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 content?: never\n }\n | {\n name: string\n content: string\n url?: never\n }\n >\n repo?: never\n registry?: never\n zip?: never\n }\n | {\n type: 'repo'\n repo: {\n url: string\n branch?: string\n }\n files?: never\n registry?: never\n zip?: never\n }\n | {\n type: 'registry'\n registry: {\n url: string\n }\n files?: never\n repo?: never\n zip?: never\n }\n | {\n type: 'zip'\n zip: {\n url: string\n }\n files?: never\n repo?: never\n registry?: never\n }\n)\n\nexport type ChatsInitResponse = {\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: FileDetail[]\n }\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\n\nexport interface ChatsDeleteResponse {\n id: string\n object: 'chat'\n deleted: true\n}\n\nexport type ChatsGetByIdResponse = {\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: FileDetail[]\n }\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\n\nexport interface ChatsUpdateRequest {\n name?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n}\n\nexport type ChatsUpdateResponse = {\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: FileDetail[]\n }\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\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}\n\nexport type ChatsForkResponse = {\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: FileDetail[]\n }\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\n\nexport type ProjectsGetByChatIdResponse = ProjectDetail\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\n}\n\nexport type ChatsSendMessageResponse = {\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 updatedAt?: string\n favorite: boolean\n authorId: string\n projectId?: string\n latestVersion?: {\n id: string\n object: 'version'\n status: 'pending' | 'completed' | 'failed'\n demoUrl?: string\n files: FileDetail[]\n }\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n chatId: string\n}\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 | 'project.created'\n | 'project.updated'\n | 'project.deleted'\n >\n chatId?: string\n projectId?: 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 | 'project.created'\n | 'project.updated'\n | 'project.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}\n\nexport type ProjectsCreateResponse = ProjectDetail\n\nexport type ProjectsGetByIdResponse = 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 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 }\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 }\n return fetcher(`/chats/${pathParams.chatId}/fork`, 'POST', {\n pathParams,\n body,\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 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 }\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 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\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 projectId: params.projectId,\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":"AAuiBO;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;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;AAWO;AACP;AACA;AACA;AACA;AAKO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AAUO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AAuBO;AACP;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;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;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;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;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;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;AACO;AACA;AACA;AACP;AACA;AACO;AACP;AACA;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;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;;;"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../src/sdk/v0.ts"],"sourcesContent":["import { createFetcher } from './core'\n\nexport type AssistantMessageContentRichPart =\n | {\n createdAt: number\n finishedAt: number | null\n lastPartSentAt: number | null\n taskNameActive?: string | null\n taskNameComplete?: string | null\n error?:\n | {\n type: 'INPUT_SCHEMA_ERROR'\n flattenedError: Record<string, any>\n message?: never\n code?: never\n }\n | {\n type: 'HANDLED_EXECUTION_ERROR'\n message: string\n code: 'GENERIC_ERROR'\n flattenedError?: never\n }\n | {\n type: 'UNHANDLED_EXECUTION_ERROR'\n flattenedError?: never\n message?: never\n code?: never\n }\n id: string\n llmContent?:\n | Array<\n | {\n type: 'text'\n text: string\n url?: never\n }\n | {\n type: 'image'\n url: string\n text?: never\n }\n >\n | any\n type: 'task-thinking-v1'\n parts: Array<\n | {\n type: 'thinking-end'\n duration: number\n thought: string\n }\n | {\n type: 'parse-error'\n duration?: never\n thought?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-start-v1'\n parts: Array<\n | {\n type: 'launch-tasks'\n }\n | {\n type: 'parse-error'\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-stopped-v1'\n parts: Array<\n | {\n type: 'manually-stopped-on-client'\n invocations?: never\n }\n | {\n type: 'orchestrator-invocations-exhausted'\n invocations: number\n }\n | {\n type: 'subagent-invocations-exhausted'\n invocations: number\n }\n | {\n type: 'agent-timeout'\n invocations?: never\n }\n | {\n type: 'orchestrator-error'\n invocations?: never\n }\n | {\n type: 'parse-error'\n invocations?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-diagnostics-v1'\n parts: Array<\n | {\n type: 'diagnostic-invocations-exhausted'\n summaries?: never\n }\n | {\n type: 'fetching-diagnostics'\n summaries?: never\n }\n | {\n type: 'diagnostics-passed'\n summaries?: never\n }\n | {\n type: 'diagnostics-found-issues'\n summaries: string[]\n }\n | {\n type: 'parse-error'\n summaries?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-coding-v1'\n parts: Array<\n | {\n type: 'code-project'\n isVersioned: boolean\n changedFiles: {\n fileName: string\n baseName: string\n isActive: boolean\n isTerminated: boolean\n isDeleted: boolean\n isMoved: boolean\n }[]\n latestDeploymentInfo?: any\n lastDeployedAt?: string\n lastEditedAt?: string\n needsBlockSource: boolean\n blockId: string\n meta: Record<string, any>\n closed: boolean\n lang: string\n source: string\n }\n | {\n type: 'parse-error'\n isVersioned?: never\n changedFiles?: never\n latestDeploymentInfo?: never\n lastDeployedAt?: never\n lastEditedAt?: never\n needsBlockSource?: never\n blockId?: never\n meta?: never\n closed?: never\n lang?: never\n source?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-fetch-from-web-v1'\n parts: Array<\n | {\n type: 'starting-fetch-from-web'\n url: string\n favicon?: never\n image?: never\n title?: never\n publishedDate?: never\n }\n | {\n type: 'finished-fetch-from-web'\n url: string\n favicon: string | null\n image: string | null\n title: string | null\n publishedDate: string | null\n }\n | {\n type: 'parse-error'\n url?: never\n favicon?: never\n image?: never\n title?: never\n publishedDate?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-inspect-site-v1'\n parts: Array<\n | {\n type: 'starting-inspect-site'\n url: string\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n screenshotResults?: never\n }\n | {\n type: 'screenshot'\n screenshotUrl?: string | null\n url: string\n path?: string | null\n pageTitle?: string | null\n logoUrl?: string | null\n screenshotResults?: never\n }\n | {\n type: 'inspect-site-complete'\n screenshotResults: Array<{\n type: 'screenshot'\n screenshotUrl?: string | null\n title?: string | null\n }>\n url?: never\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n }\n | {\n type: 'parse-error'\n url?: never\n screenshotUrl?: never\n path?: never\n pageTitle?: never\n logoUrl?: never\n screenshotResults?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-search-web-v1'\n parts: Array<\n | {\n type: 'starting-web-search'\n query: string\n count?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'got-results'\n count: number\n query?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'failed-web-search'\n query?: never\n count?: never\n answer?: never\n citations?: never\n }\n | {\n type: 'finished-web-search'\n answer: string\n citations: Array<{\n url: string\n favicon: string | null\n image: string | null\n title: string | null\n publishedDate: string | null\n }>\n query?: never\n count?: never\n }\n | {\n type: 'parse-error'\n query?: never\n count?: never\n answer?: never\n citations?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-manage-todos-v1'\n parts: Array<\n | {\n type: 'starting-todo-manager'\n updatedList?: never\n plan?: never\n }\n | {\n type: 'updated-todo-list'\n updatedList: Array<{\n status: 'todo' | 'in-progress' | 'done'\n task: string\n }>\n plan?: never\n }\n | {\n type: 'read-todo-list'\n updatedList?: never\n plan?: never\n }\n | {\n type: 'generated-technical-plan'\n plan: string\n updatedList?: never\n }\n | {\n type: 'parse-error'\n updatedList?: never\n plan?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-read-file-v1'\n parts: Array<\n | {\n type: 'starting-search-in-file'\n query: string\n pattern?: never\n chunks?: never\n numMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'grepping-file'\n pattern: string\n query?: never\n chunks?: never\n numMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'selected-chunks'\n chunks: {\n filePath: string\n offset: number\n limit: number\n }[]\n query?: never\n pattern?: never\n numMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'grep-results'\n numMatches: number\n pattern: string\n query?: never\n chunks?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'reading-file'\n filePath: string\n offset?: number | null\n limit?: number | null\n query?: never\n pattern?: never\n chunks?: never\n numMatches?: never\n }\n | {\n type: 'parse-error'\n query?: never\n pattern?: never\n chunks?: never\n numMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-search-repo-v1'\n parts: Array<\n | {\n type: 'starting-repo-search'\n query: string\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'ls'\n path?: string\n query?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'ls-results'\n numFiles: number\n query?: never\n path?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'grepping-repo'\n pattern: string\n path?: string\n globPattern?: string\n query?: never\n numFiles?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'grep-results'\n numMatches: number\n pattern: string\n query?: never\n path?: never\n numFiles?: never\n globPattern?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'grep-file-results'\n numFileMatches: number\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'select-files'\n filePaths: string[]\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n | {\n type: 'reading-file'\n filePath: string\n offset?: number | null\n limit?: number | null\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n result?: never\n }\n | {\n type: 'repo-search-result'\n query: string\n result: string\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n }\n | {\n type: 'parse-error'\n query?: never\n path?: never\n numFiles?: never\n pattern?: never\n globPattern?: never\n numMatches?: never\n numFileMatches?: never\n filePaths?: never\n filePath?: never\n offset?: never\n limit?: never\n result?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-run-shell-command-v1'\n parts: Array<\n | {\n type: 'starting-shell-command'\n command: string\n directory?: string | null\n description?: string | null\n output?: never\n exitCode?: never\n backgroundPids?: never\n }\n | {\n type: 'finished-shell-command'\n output: string\n exitCode: number\n backgroundPids: number[]\n directory?: string | null\n command: string\n description?: never\n }\n | {\n type: 'parse-error'\n command?: never\n directory?: never\n description?: never\n output?: never\n exitCode?: never\n backgroundPids?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-read-files-v1'\n parts: Array<\n | {\n type: 'starting-read-files'\n filePaths: string[]\n fileContents?: never\n }\n | {\n type: 'finished-read-files'\n fileContents: Record<string, any>\n filePaths?: never\n }\n | {\n type: 'parse-error'\n filePaths?: never\n fileContents?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-generate-design-inspiration-v1'\n parts: Array<\n | {\n type: 'starting-design-inspiration'\n prompt: string\n images?: never\n }\n | {\n type: 'finished-design-inspiration'\n images: Array<{\n url: string\n description: string | null\n uploadedAt: string | null\n score?: number\n }>\n prompt?: never\n }\n | {\n type: 'parse-error'\n prompt?: never\n images?: never\n }\n >\n }\n | {\n createdAt: createdAt\n finishedAt: finishedAt\n lastPartSentAt: lastPartSentAt\n taskNameActive?: taskNameActive\n taskNameComplete?: taskNameComplete\n error?: error\n id: id\n llmContent?: llmContent\n type: 'task-request-install-integration-v1'\n parts: Array<\n | {\n type: 'request-install-integration'\n steps: Array<{\n type: 'add-integration' | 'add-env-var'\n stepName: string\n }>\n }\n | {\n type: 'parse-error'\n steps?: never\n }\n >\n }\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 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 apiUrl: string\n }>\n files?: {\n lang: string\n meta: Record<string, any>\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'\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 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 | 'project.created'\n | 'project.updated'\n | 'project.deleted'\n >\n chatId?: string\n projectId?: string\n url: string\n}\n\nexport type HookEventDetail = {\n id: string\n object: 'hookEvent'\n event:\n | 'chat.created'\n | 'chat.updated'\n | 'chat.deleted'\n | 'message.created'\n | 'message.updated'\n | 'message.deleted'\n | 'project.created'\n | 'project.updated'\n | 'project.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 type MessageDetail = {\n id: string\n object: 'message'\n content: string\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 apiUrl: string\n chatId: string\n}\n\nexport type MessageSummary = {\n id: string\n object: 'message'\n content: string\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 apiUrl: string\n}\n\nexport type MessageSummaryList = {\n object: 'list'\n data: Array<{\n id: string\n object: 'message'\n content: string\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 apiUrl: string\n }>\n pagination: {\n hasMore: boolean\n nextCursor?: string\n nextUrl?: string\n }\n}\n\nexport type ProjectDetail = {\n id: string\n object: 'project'\n name: string\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 interface ProjectSummary {\n id: string\n object: 'project'\n name: string\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\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 }\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 }\n | {\n type: 'registry'\n registry: {\n url: string\n }\n lockAllFiles?: boolean\n files?: never\n repo?: never\n zip?: 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 }\n)\n\nexport type ChatsInitResponse = {\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: FileDetail[]\n }\n /** @deprecated */\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\n\nexport interface ChatsDeleteResponse {\n id: string\n object: 'chat'\n deleted: true\n}\n\nexport type ChatsGetByIdResponse = {\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: FileDetail[]\n }\n /** @deprecated */\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\n\nexport interface ChatsUpdateRequest {\n name?: string\n privacy?: 'public' | 'private' | 'team' | 'team-edit' | 'unlisted'\n}\n\nexport type ChatsUpdateResponse = {\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: FileDetail[]\n }\n /** @deprecated */\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\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}\n\nexport type ChatsForkResponse = {\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: FileDetail[]\n }\n /** @deprecated */\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\n source: string\n }[]\n /** @deprecated */\n demo?: string\n text: string\n}\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n responseMode?: 'sync' | 'async'\n}\n\nexport type ChatsSendMessageResponse = {\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: FileDetail[]\n }\n /** @deprecated */\n url: string\n messages: MessageSummary[]\n files?: {\n lang: string\n meta: Record<string, any>\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'\n imageGenerations?: boolean\n thinking?: boolean\n }\n chatId: string\n}\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 | 'project.created'\n | 'project.updated'\n | 'project.deleted'\n >\n chatId?: string\n projectId?: 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 | 'project.created'\n | 'project.updated'\n | 'project.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}\n\nexport type ProjectsCreateResponse = ProjectDetail\n\nexport type ProjectsGetByIdResponse = ProjectDetail\n\nexport interface ProjectsUpdateRequest {\n name?: string\n description?: string\n instructions?: string\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 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 }\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 }\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 }\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 }\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\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 projectId: params.projectId,\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":"AAmoBO;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;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;AAWO;AACP;AACA;AACA;AACA;AACA;AAKO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBO;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;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AAUO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AAMO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AAiBO;AACP;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;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;AACO;AACP;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;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;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;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;AACO;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;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;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;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;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;;;"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
function createFetcher(config = {}) {
|
|
2
2
|
const baseUrl = config.baseUrl || 'https://api.v0.dev/v1';
|
|
3
|
+
let sessionToken = null;
|
|
3
4
|
return async function fetcher(url, method, params = {}) {
|
|
4
5
|
const apiKey = config.apiKey || process.env.V0_API_KEY;
|
|
5
6
|
if (!apiKey) {
|
|
@@ -10,9 +11,12 @@ function createFetcher(config = {}) {
|
|
|
10
11
|
const hasBody = method !== 'GET' && params.body;
|
|
11
12
|
const headers = {
|
|
12
13
|
Authorization: `Bearer ${apiKey}`,
|
|
13
|
-
'x-session-cache': '1',
|
|
14
14
|
...params.headers
|
|
15
15
|
};
|
|
16
|
+
// Include session token in headers if available
|
|
17
|
+
if (sessionToken) {
|
|
18
|
+
headers['x-session-token'] = sessionToken;
|
|
19
|
+
}
|
|
16
20
|
if (hasBody) {
|
|
17
21
|
headers['Content-Type'] = 'application/json';
|
|
18
22
|
}
|
|
@@ -21,6 +25,11 @@ function createFetcher(config = {}) {
|
|
|
21
25
|
headers,
|
|
22
26
|
body: hasBody ? JSON.stringify(params.body) : undefined
|
|
23
27
|
});
|
|
28
|
+
// Check for session token in response headers
|
|
29
|
+
const newSessionToken = res.headers.get('x-session-token');
|
|
30
|
+
if (newSessionToken) {
|
|
31
|
+
sessionToken = newSessionToken;
|
|
32
|
+
}
|
|
24
33
|
if (!res.ok) {
|
|
25
34
|
const text = await res.text();
|
|
26
35
|
throw new Error(`HTTP ${res.status}: ${text}`);
|
|
@@ -119,6 +128,22 @@ function createClient(config = {}) {
|
|
|
119
128
|
body
|
|
120
129
|
});
|
|
121
130
|
},
|
|
131
|
+
async findMessages (params) {
|
|
132
|
+
const pathParams = {
|
|
133
|
+
chatId: params.chatId
|
|
134
|
+
};
|
|
135
|
+
const query = Object.fromEntries(Object.entries({
|
|
136
|
+
limit: params.limit,
|
|
137
|
+
cursor: params.cursor
|
|
138
|
+
}).filter(([_, value])=>value !== undefined));
|
|
139
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
140
|
+
return fetcher(`/chats/${pathParams.chatId}/messages`, 'GET', {
|
|
141
|
+
pathParams,
|
|
142
|
+
...hasQuery ? {
|
|
143
|
+
query
|
|
144
|
+
} : {}
|
|
145
|
+
});
|
|
146
|
+
},
|
|
122
147
|
async sendMessage (params) {
|
|
123
148
|
const pathParams = {
|
|
124
149
|
chatId: params.chatId
|
|
@@ -134,6 +159,53 @@ function createClient(config = {}) {
|
|
|
134
159
|
body
|
|
135
160
|
});
|
|
136
161
|
},
|
|
162
|
+
async getMessage (params) {
|
|
163
|
+
const pathParams = {
|
|
164
|
+
chatId: params.chatId,
|
|
165
|
+
messageId: params.messageId
|
|
166
|
+
};
|
|
167
|
+
return fetcher(`/chats/${pathParams.chatId}/messages/${pathParams.messageId}`, 'GET', {
|
|
168
|
+
pathParams
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
async findVersions (params) {
|
|
172
|
+
const pathParams = {
|
|
173
|
+
chatId: params.chatId
|
|
174
|
+
};
|
|
175
|
+
const query = Object.fromEntries(Object.entries({
|
|
176
|
+
limit: params.limit,
|
|
177
|
+
cursor: params.cursor
|
|
178
|
+
}).filter(([_, value])=>value !== undefined));
|
|
179
|
+
const hasQuery = Object.keys(query).length > 0;
|
|
180
|
+
return fetcher(`/chats/${pathParams.chatId}/versions`, 'GET', {
|
|
181
|
+
pathParams,
|
|
182
|
+
...hasQuery ? {
|
|
183
|
+
query
|
|
184
|
+
} : {}
|
|
185
|
+
});
|
|
186
|
+
},
|
|
187
|
+
async getVersion (params) {
|
|
188
|
+
const pathParams = {
|
|
189
|
+
chatId: params.chatId,
|
|
190
|
+
versionId: params.versionId
|
|
191
|
+
};
|
|
192
|
+
return fetcher(`/chats/${pathParams.chatId}/versions/${pathParams.versionId}`, 'GET', {
|
|
193
|
+
pathParams
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
async updateVersion (params) {
|
|
197
|
+
const pathParams = {
|
|
198
|
+
chatId: params.chatId,
|
|
199
|
+
versionId: params.versionId
|
|
200
|
+
};
|
|
201
|
+
const body = {
|
|
202
|
+
files: params.files
|
|
203
|
+
};
|
|
204
|
+
return fetcher(`/chats/${pathParams.chatId}/versions/${pathParams.versionId}`, 'PATCH', {
|
|
205
|
+
pathParams,
|
|
206
|
+
body
|
|
207
|
+
});
|
|
208
|
+
},
|
|
137
209
|
async resume (params) {
|
|
138
210
|
const pathParams = {
|
|
139
211
|
chatId: params.chatId,
|
|
@@ -176,6 +248,20 @@ function createClient(config = {}) {
|
|
|
176
248
|
pathParams
|
|
177
249
|
});
|
|
178
250
|
},
|
|
251
|
+
async update (params) {
|
|
252
|
+
const pathParams = {
|
|
253
|
+
projectId: params.projectId
|
|
254
|
+
};
|
|
255
|
+
const body = {
|
|
256
|
+
name: params.name,
|
|
257
|
+
description: params.description,
|
|
258
|
+
instructions: params.instructions
|
|
259
|
+
};
|
|
260
|
+
return fetcher(`/projects/${pathParams.projectId}`, 'PATCH', {
|
|
261
|
+
pathParams,
|
|
262
|
+
body
|
|
263
|
+
});
|
|
264
|
+
},
|
|
179
265
|
async assign (params) {
|
|
180
266
|
const pathParams = {
|
|
181
267
|
projectId: params.projectId
|