ai 2.1.26 → 2.1.27
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.d.ts +48 -3
- package/dist/index.js +236 -253
- package/dist/index.mjs +235 -256
- package/package.json +3 -3
- package/react/dist/index.js +177 -197
- package/react/dist/index.mjs +177 -199
- package/react/dist/index.server.js +14 -38
- package/react/dist/index.server.mjs +14 -39
- package/solid/dist/index.js +156 -184
- package/solid/dist/index.mjs +156 -187
- package/svelte/dist/index.d.ts +2 -2
- package/svelte/dist/index.js +232 -236
- package/svelte/dist/index.mjs +232 -239
- package/vue/dist/index.d.ts +2 -2
- package/vue/dist/index.js +153 -177
- package/vue/dist/index.mjs +153 -180
package/svelte/dist/index.js
CHANGED
@@ -1,25 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
var __defProp = Object.defineProperty;
|
3
|
-
var __defProps = Object.defineProperties;
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
6
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
7
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
8
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
9
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
10
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
11
|
-
var __spreadValues = (a, b) => {
|
12
|
-
for (var prop in b || (b = {}))
|
13
|
-
if (__hasOwnProp.call(b, prop))
|
14
|
-
__defNormalProp(a, prop, b[prop]);
|
15
|
-
if (__getOwnPropSymbols)
|
16
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
17
|
-
if (__propIsEnum.call(b, prop))
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
19
|
-
}
|
20
|
-
return a;
|
21
|
-
};
|
22
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
23
6
|
var __export = (target, all) => {
|
24
7
|
for (var name in all)
|
25
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
@@ -33,26 +16,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
33
16
|
return to;
|
34
17
|
};
|
35
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
36
|
-
var __async = (__this, __arguments, generator) => {
|
37
|
-
return new Promise((resolve, reject) => {
|
38
|
-
var fulfilled = (value) => {
|
39
|
-
try {
|
40
|
-
step(generator.next(value));
|
41
|
-
} catch (e) {
|
42
|
-
reject(e);
|
43
|
-
}
|
44
|
-
};
|
45
|
-
var rejected = (value) => {
|
46
|
-
try {
|
47
|
-
step(generator.throw(value));
|
48
|
-
} catch (e) {
|
49
|
-
reject(e);
|
50
|
-
}
|
51
|
-
};
|
52
|
-
var step = (x3) => x3.done ? resolve(x3.value) : Promise.resolve(x3.value).then(fulfilled, rejected);
|
53
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
54
|
-
});
|
55
|
-
};
|
56
19
|
|
57
20
|
// svelte/index.ts
|
58
21
|
var svelte_exports = {};
|
@@ -164,14 +127,14 @@ var q = class {
|
|
164
127
|
* Removes an key-value pair from the cache.
|
165
128
|
*/
|
166
129
|
remove(e, t) {
|
167
|
-
const { broadcast: s } =
|
130
|
+
const { broadcast: s } = { ...L, ...t };
|
168
131
|
s && this.broadcast(e, void 0), this.elements.delete(e);
|
169
132
|
}
|
170
133
|
/**
|
171
134
|
* Removes all the key-value pairs from the cache.
|
172
135
|
*/
|
173
136
|
clear(e) {
|
174
|
-
const { broadcast: t } =
|
137
|
+
const { broadcast: t } = { ...S, ...e };
|
175
138
|
if (t)
|
176
139
|
for (const s of this.elements.keys())
|
177
140
|
this.broadcast(s, void 0);
|
@@ -206,12 +169,12 @@ var q = class {
|
|
206
169
|
var x = {
|
207
170
|
cache: new q(),
|
208
171
|
errors: new I(),
|
209
|
-
fetcher: (r) =>
|
210
|
-
const e =
|
172
|
+
fetcher: async (r) => {
|
173
|
+
const e = await fetch(r);
|
211
174
|
if (!e.ok)
|
212
175
|
throw Error("Not a 2XX response.");
|
213
176
|
return e.json();
|
214
|
-
}
|
177
|
+
},
|
215
178
|
fallbackData: void 0,
|
216
179
|
loadInitialCache: true,
|
217
180
|
revalidateOnStart: true,
|
@@ -235,12 +198,13 @@ var x = {
|
|
235
198
|
},
|
236
199
|
revalidateFunction: void 0
|
237
200
|
};
|
238
|
-
var E =
|
201
|
+
var E = {
|
202
|
+
...x,
|
239
203
|
force: false
|
240
|
-
}
|
204
|
+
};
|
241
205
|
var T = {
|
242
206
|
revalidate: true,
|
243
|
-
revalidateOptions:
|
207
|
+
revalidateOptions: { ...E },
|
244
208
|
revalidateFunction: void 0
|
245
209
|
};
|
246
210
|
var X = {
|
@@ -252,7 +216,7 @@ var H = class {
|
|
252
216
|
*/
|
253
217
|
constructor(e) {
|
254
218
|
h(this, "options");
|
255
|
-
this.options =
|
219
|
+
this.options = { ...x, ...e };
|
256
220
|
}
|
257
221
|
/**
|
258
222
|
* Gets the cache of the SWR.
|
@@ -269,11 +233,9 @@ var H = class {
|
|
269
233
|
/**
|
270
234
|
* Requests the data using the provided fetcher.
|
271
235
|
*/
|
272
|
-
requestData(e, t) {
|
273
|
-
return
|
274
|
-
|
275
|
-
throw this.errors.emit(e, s), s;
|
276
|
-
});
|
236
|
+
async requestData(e, t) {
|
237
|
+
return await Promise.resolve(t(e)).catch((s) => {
|
238
|
+
throw this.errors.emit(e, s), s;
|
277
239
|
});
|
278
240
|
}
|
279
241
|
/**
|
@@ -293,7 +255,7 @@ var H = class {
|
|
293
255
|
* are specified, it clears all the cache keys.
|
294
256
|
*/
|
295
257
|
clear(e, t) {
|
296
|
-
const s =
|
258
|
+
const s = { ...X, ...t };
|
297
259
|
if (e == null)
|
298
260
|
return this.cache.clear(s);
|
299
261
|
if (!Array.isArray(e))
|
@@ -304,49 +266,50 @@ var H = class {
|
|
304
266
|
/**
|
305
267
|
* Revalidates the key and mutates the cache if needed.
|
306
268
|
*/
|
307
|
-
revalidate(e, t) {
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
}
|
320
|
-
|
321
|
-
|
269
|
+
async revalidate(e, t) {
|
270
|
+
if (!e)
|
271
|
+
throw new Error("[Revalidate] Key issue: ${key}");
|
272
|
+
const { fetcher: s, dedupingInterval: i } = this.options, { force: a, fetcher: o, dedupingInterval: n } = {
|
273
|
+
...E,
|
274
|
+
fetcher: s,
|
275
|
+
dedupingInterval: i,
|
276
|
+
...t
|
277
|
+
};
|
278
|
+
if (a || !this.cache.has(e) || this.cache.has(e) && this.cache.get(e).hasExpired()) {
|
279
|
+
const c2 = this.requestData(e, o), l = c2.catch(() => {
|
280
|
+
});
|
281
|
+
return this.cache.set(e, new O({ data: l }).expiresIn(n)), await c2;
|
282
|
+
}
|
283
|
+
return this.getWait(e);
|
322
284
|
}
|
323
285
|
/**
|
324
286
|
* Mutates the data of a given key with a new value.
|
325
287
|
* This is used to replace the cache contents of the
|
326
288
|
* given key manually.
|
327
289
|
*/
|
328
|
-
mutate(e, t, s) {
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
}
|
347
|
-
|
348
|
-
|
349
|
-
|
290
|
+
async mutate(e, t, s) {
|
291
|
+
var _a;
|
292
|
+
if (!e)
|
293
|
+
throw new Error("[Mutate] Key issue: ${key}");
|
294
|
+
const {
|
295
|
+
revalidate: i,
|
296
|
+
revalidateOptions: a,
|
297
|
+
revalidateFunction: o
|
298
|
+
} = {
|
299
|
+
...T,
|
300
|
+
...s
|
301
|
+
};
|
302
|
+
let n;
|
303
|
+
if (typeof t == "function") {
|
304
|
+
let c2;
|
305
|
+
if (this.cache.has(e)) {
|
306
|
+
const l = this.cache.get(e);
|
307
|
+
l.isResolving() || (c2 = l.data);
|
308
|
+
}
|
309
|
+
n = t(c2);
|
310
|
+
} else
|
311
|
+
n = t;
|
312
|
+
return this.cache.set(e, new O({ data: n })), i ? await ((_a = o == null ? void 0 : o(e, a)) != null ? _a : this.revalidate(e, a)) : n;
|
350
313
|
}
|
351
314
|
/**
|
352
315
|
* Gets the data of the given key. Keep in mind
|
@@ -424,7 +387,13 @@ var H = class {
|
|
424
387
|
reconnectWhen: W2,
|
425
388
|
focusWhen: D2,
|
426
389
|
revalidateFunction: d
|
427
|
-
} =
|
390
|
+
} = {
|
391
|
+
// Current instance options
|
392
|
+
// (includes default options)
|
393
|
+
...this.options,
|
394
|
+
// Current call options.
|
395
|
+
...i
|
396
|
+
}, K2 = (m) => {
|
428
397
|
var _a;
|
429
398
|
return (_a = d == null ? void 0 : d(this.resolveKey(e), m)) != null ? _a : this.revalidate(this.resolveKey(e), m);
|
430
399
|
}, f = () => K2({ fetcher: a, dedupingInterval: l }), u = n ? this.get(this.resolveKey(e)) : o != null ? o : void 0, g = c2 ? f() : Promise.resolve(void 0), M = u ? Promise.resolve(u) : g;
|
@@ -540,13 +509,15 @@ var O2 = class extends H {
|
|
540
509
|
const o = (g) => {
|
541
510
|
a.set(void 0), i.set(g);
|
542
511
|
}, l = (g) => a.set(g);
|
543
|
-
r || (r = this.subscribe(e, o, l,
|
544
|
-
loadInitialCache: true
|
545
|
-
|
512
|
+
r || (r = this.subscribe(e, o, l, {
|
513
|
+
loadInitialCache: true,
|
514
|
+
...n
|
515
|
+
}).unsubscribe);
|
546
516
|
}), (0, import_svelte.onDestroy)(() => r == null ? void 0 : r());
|
547
|
-
const d = (o, l) => this.mutate(this.resolveKey(e), o,
|
548
|
-
revalidateOptions: n
|
549
|
-
|
517
|
+
const d = (o, l) => this.mutate(this.resolveKey(e), o, {
|
518
|
+
revalidateOptions: n,
|
519
|
+
...l
|
520
|
+
}), u = (o) => this.revalidate(this.resolveKey(e), { ...n, ...o }), f = (o) => this.clear(this.resolveKey(e), o), s = S2([i, a], ([o, l]) => o === void 0 && l === void 0), h2 = S2([i, a], ([o, l]) => o !== void 0 && l === void 0);
|
550
521
|
return { data: i, error: a, mutate: d, revalidate: u, clear: f, isLoading: s, isValid: h2 };
|
551
522
|
}
|
552
523
|
};
|
@@ -570,43 +541,53 @@ function createChunkDecoder() {
|
|
570
541
|
}
|
571
542
|
|
572
543
|
// svelte/use-chat.ts
|
573
|
-
var getStreamedResponse = (api, chatRequest, mutate, extraMetadata, previousMessages, abortControllerRef, onFinish, onResponse, sendExtraMessageFields) =>
|
544
|
+
var getStreamedResponse = async (api, chatRequest, mutate, extraMetadata, previousMessages, abortControllerRef, onFinish, onResponse, sendExtraMessageFields) => {
|
574
545
|
var _a, _b, _c, _d;
|
575
546
|
mutate(chatRequest.messages);
|
576
|
-
const res =
|
547
|
+
const res = await fetch(api, {
|
577
548
|
method: "POST",
|
578
|
-
body: JSON.stringify(
|
549
|
+
body: JSON.stringify({
|
579
550
|
messages: sendExtraMessageFields ? chatRequest.messages : chatRequest.messages.map(
|
580
|
-
({ role, content, name, function_call }) =>
|
551
|
+
({ role, content, name, function_call }) => ({
|
581
552
|
role,
|
582
|
-
content
|
583
|
-
|
584
|
-
function_call
|
553
|
+
content,
|
554
|
+
...name !== void 0 && { name },
|
555
|
+
...function_call !== void 0 && {
|
556
|
+
function_call
|
557
|
+
}
|
585
558
|
})
|
586
|
-
)
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
559
|
+
),
|
560
|
+
...extraMetadata.body,
|
561
|
+
...(_a = chatRequest.options) == null ? void 0 : _a.body,
|
562
|
+
...chatRequest.functions !== void 0 && {
|
563
|
+
functions: chatRequest.functions
|
564
|
+
},
|
565
|
+
...chatRequest.function_call !== void 0 && {
|
566
|
+
function_call: chatRequest.function_call
|
567
|
+
}
|
568
|
+
}),
|
592
569
|
credentials: extraMetadata.credentials,
|
593
|
-
headers:
|
594
|
-
|
595
|
-
|
596
|
-
|
570
|
+
headers: {
|
571
|
+
...extraMetadata.headers,
|
572
|
+
...(_b = chatRequest.options) == null ? void 0 : _b.headers
|
573
|
+
},
|
574
|
+
...abortControllerRef !== null && {
|
575
|
+
signal: abortControllerRef.signal
|
576
|
+
}
|
577
|
+
}).catch((err) => {
|
597
578
|
mutate(previousMessages);
|
598
579
|
throw err;
|
599
580
|
});
|
600
581
|
if (onResponse) {
|
601
582
|
try {
|
602
|
-
|
583
|
+
await onResponse(res);
|
603
584
|
} catch (err) {
|
604
585
|
throw err;
|
605
586
|
}
|
606
587
|
}
|
607
588
|
if (!res.ok) {
|
608
589
|
mutate(previousMessages);
|
609
|
-
throw new Error(
|
590
|
+
throw new Error(await res.text() || "Failed to fetch the chat response.");
|
610
591
|
}
|
611
592
|
if (!res.body) {
|
612
593
|
throw new Error("The response body is empty.");
|
@@ -623,14 +604,14 @@ var getStreamedResponse = (api, chatRequest, mutate, extraMetadata, previousMess
|
|
623
604
|
role: "assistant"
|
624
605
|
};
|
625
606
|
while (true) {
|
626
|
-
const { done, value } =
|
607
|
+
const { done, value } = await reader.read();
|
627
608
|
if (done) {
|
628
609
|
break;
|
629
610
|
}
|
630
611
|
streamedResponse += decode(value);
|
631
612
|
const functionStart = streamedResponse.indexOf("{");
|
632
613
|
if (functionStart !== -1) {
|
633
|
-
const matches =
|
614
|
+
const matches = /(.*?)(?:({"function_call".*?}})(.*))?$/gs.exec(
|
634
615
|
streamedResponse
|
635
616
|
);
|
636
617
|
responseMessage.content = `${(_c = matches == null ? void 0 : matches[1]) != null ? _c : ""}${(_d = matches == null ? void 0 : matches[3]) != null ? _d : ""}`;
|
@@ -638,7 +619,7 @@ var getStreamedResponse = (api, chatRequest, mutate, extraMetadata, previousMess
|
|
638
619
|
} else {
|
639
620
|
responseMessage.content = streamedResponse;
|
640
621
|
}
|
641
|
-
mutate([...chatRequest.messages,
|
622
|
+
mutate([...chatRequest.messages, { ...responseMessage }]);
|
642
623
|
if (abortControllerRef === null) {
|
643
624
|
reader.cancel();
|
644
625
|
break;
|
@@ -647,13 +628,13 @@ var getStreamedResponse = (api, chatRequest, mutate, extraMetadata, previousMess
|
|
647
628
|
if (typeof responseMessage.function_call === "string") {
|
648
629
|
const parsedFunctionCall = JSON.parse(responseMessage.function_call).function_call;
|
649
630
|
responseMessage.function_call = parsedFunctionCall;
|
650
|
-
mutate([...chatRequest.messages,
|
631
|
+
mutate([...chatRequest.messages, { ...responseMessage }]);
|
651
632
|
}
|
652
633
|
if (onFinish) {
|
653
634
|
onFinish(responseMessage);
|
654
635
|
}
|
655
636
|
return responseMessage;
|
656
|
-
}
|
637
|
+
};
|
657
638
|
var uniqueId = 0;
|
658
639
|
var store = {};
|
659
640
|
function useChat({
|
@@ -676,6 +657,9 @@ function useChat({
|
|
676
657
|
fetcher: () => store[key] || initialMessages,
|
677
658
|
fallbackData: initialMessages
|
678
659
|
});
|
660
|
+
const { data: isLoading, mutate: mutateLoading } = F2(
|
661
|
+
`${key}-loading`
|
662
|
+
);
|
679
663
|
data.set(initialMessages);
|
680
664
|
const mutate = (data2) => {
|
681
665
|
store[key] = data2;
|
@@ -689,83 +673,86 @@ function useChat({
|
|
689
673
|
body
|
690
674
|
};
|
691
675
|
const error = (0, import_store.writable)(void 0);
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
676
|
+
async function triggerRequest(chatRequest) {
|
677
|
+
try {
|
678
|
+
mutateLoading(true);
|
679
|
+
abortController = new AbortController();
|
680
|
+
while (true) {
|
681
|
+
const streamedResponseMessage = await getStreamedResponse(
|
682
|
+
api,
|
683
|
+
chatRequest,
|
684
|
+
mutate,
|
685
|
+
extraMetadata,
|
686
|
+
(0, import_store.get)(messages),
|
687
|
+
abortController,
|
688
|
+
onFinish,
|
689
|
+
onResponse,
|
690
|
+
sendExtraMessageFields
|
691
|
+
);
|
692
|
+
if (streamedResponseMessage.function_call === void 0 || typeof streamedResponseMessage.function_call === "string") {
|
693
|
+
break;
|
694
|
+
}
|
695
|
+
if (experimental_onFunctionCall) {
|
696
|
+
const functionCall = streamedResponseMessage.function_call;
|
697
|
+
const functionCallResponse = await experimental_onFunctionCall((0, import_store.get)(messages), functionCall);
|
698
|
+
if (functionCallResponse === void 0)
|
711
699
|
break;
|
712
|
-
|
713
|
-
if (experimental_onFunctionCall) {
|
714
|
-
const functionCall = streamedResponseMessage.function_call;
|
715
|
-
const functionCallResponse = yield experimental_onFunctionCall((0, import_store.get)(messages), functionCall);
|
716
|
-
if (functionCallResponse === void 0)
|
717
|
-
break;
|
718
|
-
chatRequest = functionCallResponse;
|
719
|
-
}
|
700
|
+
chatRequest = functionCallResponse;
|
720
701
|
}
|
702
|
+
}
|
703
|
+
abortController = null;
|
704
|
+
return null;
|
705
|
+
} catch (err) {
|
706
|
+
if (err.name === "AbortError") {
|
721
707
|
abortController = null;
|
722
708
|
return null;
|
723
|
-
} catch (err) {
|
724
|
-
if (err.name === "AbortError") {
|
725
|
-
abortController = null;
|
726
|
-
return null;
|
727
|
-
}
|
728
|
-
if (onError && err instanceof Error) {
|
729
|
-
onError(err);
|
730
|
-
}
|
731
|
-
error.set(err);
|
732
|
-
} finally {
|
733
|
-
isLoading.set(false);
|
734
709
|
}
|
735
|
-
|
710
|
+
if (onError && err instanceof Error) {
|
711
|
+
onError(err);
|
712
|
+
}
|
713
|
+
error.set(err);
|
714
|
+
} finally {
|
715
|
+
mutateLoading(false);
|
716
|
+
}
|
736
717
|
}
|
737
|
-
const append =
|
718
|
+
const append = async (message, { options, functions, function_call } = {}) => {
|
738
719
|
if (!message.id) {
|
739
720
|
message.id = nanoid();
|
740
721
|
}
|
741
|
-
const chatRequest =
|
722
|
+
const chatRequest = {
|
742
723
|
messages: (0, import_store.get)(messages).concat(message),
|
743
|
-
options
|
744
|
-
|
724
|
+
options,
|
725
|
+
...functions !== void 0 && { functions },
|
726
|
+
...function_call !== void 0 && { function_call }
|
727
|
+
};
|
745
728
|
return triggerRequest(chatRequest);
|
746
|
-
}
|
747
|
-
const reload =
|
729
|
+
};
|
730
|
+
const reload = async ({
|
748
731
|
options,
|
749
732
|
functions,
|
750
733
|
function_call
|
751
|
-
} = {}) {
|
734
|
+
} = {}) => {
|
752
735
|
const messagesSnapshot = (0, import_store.get)(messages);
|
753
736
|
if (messagesSnapshot.length === 0)
|
754
737
|
return null;
|
755
738
|
const lastMessage = messagesSnapshot.at(-1);
|
756
739
|
if ((lastMessage == null ? void 0 : lastMessage.role) === "assistant") {
|
757
|
-
const chatRequest2 =
|
740
|
+
const chatRequest2 = {
|
758
741
|
messages: messagesSnapshot.slice(0, -1),
|
759
|
-
options
|
760
|
-
|
742
|
+
options,
|
743
|
+
...functions !== void 0 && { functions },
|
744
|
+
...function_call !== void 0 && { function_call }
|
745
|
+
};
|
761
746
|
return triggerRequest(chatRequest2);
|
762
747
|
}
|
763
|
-
const chatRequest =
|
748
|
+
const chatRequest = {
|
764
749
|
messages: messagesSnapshot,
|
765
|
-
options
|
766
|
-
|
750
|
+
options,
|
751
|
+
...functions !== void 0 && { functions },
|
752
|
+
...function_call !== void 0 && { function_call }
|
753
|
+
};
|
767
754
|
return triggerRequest(chatRequest);
|
768
|
-
}
|
755
|
+
};
|
769
756
|
const stop = () => {
|
770
757
|
if (abortController) {
|
771
758
|
abortController.abort();
|
@@ -822,10 +809,17 @@ function useCompletion({
|
|
822
809
|
} = {}) {
|
823
810
|
const completionId = id || `completion-${uniqueId2++}`;
|
824
811
|
const key = `${api}|${completionId}`;
|
825
|
-
const {
|
812
|
+
const {
|
813
|
+
data,
|
814
|
+
mutate: originalMutate,
|
815
|
+
isLoading: isSWRLoading
|
816
|
+
} = F2(key, {
|
826
817
|
fetcher: () => store2[key] || initialCompletion,
|
827
818
|
fallbackData: initialCompletion
|
828
819
|
});
|
820
|
+
const { data: isLoading, mutate: mutateLoading } = F2(
|
821
|
+
`${key}-loading`
|
822
|
+
);
|
829
823
|
data.set(initialCompletion);
|
830
824
|
const mutate = (data2) => {
|
831
825
|
store2[key] = data2;
|
@@ -833,77 +827,79 @@ function useCompletion({
|
|
833
827
|
};
|
834
828
|
const completion = data;
|
835
829
|
const error = (0, import_store2.writable)(void 0);
|
836
|
-
const isLoading = (0, import_store2.writable)(false);
|
837
830
|
let abortController = null;
|
838
|
-
function triggerRequest(prompt, options) {
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
831
|
+
async function triggerRequest(prompt, options) {
|
832
|
+
try {
|
833
|
+
mutateLoading(true);
|
834
|
+
abortController = new AbortController();
|
835
|
+
mutate("");
|
836
|
+
const res = await fetch(api, {
|
837
|
+
method: "POST",
|
838
|
+
body: JSON.stringify({
|
839
|
+
prompt,
|
840
|
+
...body,
|
841
|
+
...options == null ? void 0 : options.body
|
842
|
+
}),
|
843
|
+
headers: {
|
844
|
+
...headers,
|
845
|
+
...options == null ? void 0 : options.headers
|
846
|
+
},
|
847
|
+
signal: abortController.signal,
|
848
|
+
credentials
|
849
|
+
}).catch((err) => {
|
850
|
+
throw err;
|
851
|
+
});
|
852
|
+
if (onResponse) {
|
853
|
+
try {
|
854
|
+
await onResponse(res);
|
855
|
+
} catch (err) {
|
853
856
|
throw err;
|
854
|
-
});
|
855
|
-
if (onResponse) {
|
856
|
-
try {
|
857
|
-
yield onResponse(res);
|
858
|
-
} catch (err) {
|
859
|
-
throw err;
|
860
|
-
}
|
861
|
-
}
|
862
|
-
if (!res.ok) {
|
863
|
-
throw new Error(
|
864
|
-
(yield res.text()) || "Failed to fetch the chat response."
|
865
|
-
);
|
866
857
|
}
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
}
|
858
|
+
}
|
859
|
+
if (!res.ok) {
|
860
|
+
throw new Error(
|
861
|
+
await res.text() || "Failed to fetch the chat response."
|
862
|
+
);
|
863
|
+
}
|
864
|
+
if (!res.body) {
|
865
|
+
throw new Error("The response body is empty.");
|
866
|
+
}
|
867
|
+
let result = "";
|
868
|
+
const reader = res.body.getReader();
|
869
|
+
const decoder = createChunkDecoder();
|
870
|
+
while (true) {
|
871
|
+
const { done, value } = await reader.read();
|
872
|
+
if (done) {
|
873
|
+
break;
|
884
874
|
}
|
885
|
-
|
886
|
-
|
875
|
+
result += decoder(value);
|
876
|
+
mutate(result);
|
877
|
+
if (abortController === null) {
|
878
|
+
reader.cancel();
|
879
|
+
break;
|
887
880
|
}
|
881
|
+
}
|
882
|
+
if (onFinish) {
|
883
|
+
onFinish(prompt, result);
|
884
|
+
}
|
885
|
+
abortController = null;
|
886
|
+
return result;
|
887
|
+
} catch (err) {
|
888
|
+
if (err.name === "AbortError") {
|
888
889
|
abortController = null;
|
889
|
-
return
|
890
|
-
} catch (err) {
|
891
|
-
if (err.name === "AbortError") {
|
892
|
-
abortController = null;
|
893
|
-
return null;
|
894
|
-
}
|
895
|
-
if (onError && error instanceof Error) {
|
896
|
-
onError(error);
|
897
|
-
}
|
898
|
-
error.set(err);
|
899
|
-
} finally {
|
900
|
-
isLoading.set(false);
|
890
|
+
return null;
|
901
891
|
}
|
902
|
-
|
892
|
+
if (onError && error instanceof Error) {
|
893
|
+
onError(error);
|
894
|
+
}
|
895
|
+
error.set(err);
|
896
|
+
} finally {
|
897
|
+
mutateLoading(false);
|
898
|
+
}
|
903
899
|
}
|
904
|
-
const complete = (prompt, options) =>
|
900
|
+
const complete = async (prompt, options) => {
|
905
901
|
return triggerRequest(prompt, options);
|
906
|
-
}
|
902
|
+
};
|
907
903
|
const stop = () => {
|
908
904
|
if (abortController) {
|
909
905
|
abortController.abort();
|