@vibes.diy/call-ai-v2 14.3.17 → 14.3.18
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/call-ai-v2",
|
|
3
|
-
"version": "14.3.
|
|
3
|
+
"version": "14.3.18",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"license": "Apache-2.0",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@adviser/cement": "~0.5.34",
|
|
18
|
-
"@vibes.diy/identity": "14.3.
|
|
18
|
+
"@vibes.diy/identity": "14.3.18",
|
|
19
19
|
"arktype": "~2.2.3",
|
|
20
20
|
"cmd-ts": "~0.15.0",
|
|
21
21
|
"mime": "~4.1.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { createSseStream, isSseLine } from "./sse-stream.js";
|
|
3
|
+
import { isDataLine } from "./data-stream.js";
|
|
4
|
+
function rawChunk() {
|
|
5
|
+
return {
|
|
6
|
+
id: "gen-1",
|
|
7
|
+
provider: "OpenAI",
|
|
8
|
+
model: "vendor/model",
|
|
9
|
+
object: "chat.completion.chunk",
|
|
10
|
+
created: 1,
|
|
11
|
+
service_tier: "default",
|
|
12
|
+
choices: [{ index: 0, delta: { content: "hi", refusal: null }, finish_reason: null, native_finish_reason: null }],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
async function run(json, opts) {
|
|
16
|
+
const input = new ReadableStream({
|
|
17
|
+
start(ctrl) {
|
|
18
|
+
ctrl.enqueue({ type: "data.begin", streamId: "s", timestamp: new Date() });
|
|
19
|
+
ctrl.enqueue({ type: "data.line", streamId: "s", json, dataLineNr: 1, timestamp: new Date() });
|
|
20
|
+
ctrl.enqueue({ type: "data.end", streamId: "s", totalDataLines: 1, timestamp: new Date() });
|
|
21
|
+
ctrl.close();
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const out = [];
|
|
25
|
+
const reader = input.pipeThrough(createSseStream("s", opts)).getReader();
|
|
26
|
+
for (;;) {
|
|
27
|
+
const { done, value } = await reader.read();
|
|
28
|
+
if (done)
|
|
29
|
+
break;
|
|
30
|
+
out.push(value);
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
describe("createSseStream's passthrough data.line keeps the provider's fields", () => {
|
|
35
|
+
it("by default: the top-level and delta keys the schema does not declare survive on the raw event", async () => {
|
|
36
|
+
const json = rawChunk();
|
|
37
|
+
const out = await run(json);
|
|
38
|
+
const raw = out.find((m) => isDataLine(m));
|
|
39
|
+
expect(raw).toBeDefined();
|
|
40
|
+
expect(raw.json).toEqual(rawChunk());
|
|
41
|
+
expect(json).toEqual(rawChunk());
|
|
42
|
+
const line = out.find((m) => isSseLine(m));
|
|
43
|
+
expect(line).toBeDefined();
|
|
44
|
+
expect(line.chunk).not.toHaveProperty("service_tier");
|
|
45
|
+
});
|
|
46
|
+
it("with parseInPlace the parsed chunk is the same normalized value", async () => {
|
|
47
|
+
const out = await run(rawChunk(), { parseInPlace: true });
|
|
48
|
+
const line = out.find((m) => isSseLine(m));
|
|
49
|
+
expect(line.chunk).not.toHaveProperty("service_tier");
|
|
50
|
+
expect(line.chunk.choices[0].delta).toEqual({ content: "hi" });
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=sse-stream-passthrough.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-stream-passthrough.test.js","sourceRoot":"","sources":["../jsr/sse-stream-passthrough.test.ts"],"names":[],"mappings":"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"}
|
package/sse-stream.d.ts
CHANGED
|
@@ -241,4 +241,6 @@ export declare const isSseError: (msg: unknown, streamId?: string) => msg is Sse
|
|
|
241
241
|
export declare const isSseEnd: (msg: unknown, streamId?: string) => msg is SseEndMsg;
|
|
242
242
|
export declare const isSseStats: (msg: unknown, streamId?: string) => msg is SseStatsMsg;
|
|
243
243
|
export declare const isSseMsg: (msg: unknown, streamId?: string) => msg is SseStreamMsg;
|
|
244
|
-
export declare function createSseStream(filterStreamId: string
|
|
244
|
+
export declare function createSseStream(filterStreamId: string, opts?: {
|
|
245
|
+
readonly parseInPlace?: boolean;
|
|
246
|
+
}): TransformStream<DataStreamMsg, SseStreamMsg>;
|
package/sse-stream.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type } from "arktype";
|
|
1
|
+
import { scope, type } from "arktype";
|
|
2
2
|
import { CoercedDate } from "./types.js";
|
|
3
3
|
import { isDataBegin, isDataLine, isDataEnd, isDataStats } from "./data-stream.js";
|
|
4
4
|
import { isStatsCollect } from "./stats-stream.js";
|
|
@@ -45,6 +45,7 @@ export const SseChunk = type({
|
|
|
45
45
|
"error?": "unknown",
|
|
46
46
|
"+": "delete",
|
|
47
47
|
});
|
|
48
|
+
const SseChunkInPlace = scope({ SseChunk }, { clone: false }).export().SseChunk;
|
|
48
49
|
export const SseBeginMsg = type({
|
|
49
50
|
type: "'sse.begin'",
|
|
50
51
|
streamId: "string",
|
|
@@ -89,7 +90,8 @@ export const isSseError = (msg, streamId) => SseErrorMsg.allows(msg) && (!stream
|
|
|
89
90
|
export const isSseEnd = (msg, streamId) => SseEndMsg.allows(msg) && (!streamId || msg.streamId === streamId);
|
|
90
91
|
export const isSseStats = (msg, streamId) => SseStatsMsg.allows(msg) && (!streamId || msg.streamId === streamId);
|
|
91
92
|
export const isSseMsg = (msg, streamId) => SseStreamMsg.allows(msg) && (!streamId || msg.streamId === streamId);
|
|
92
|
-
export function createSseStream(filterStreamId) {
|
|
93
|
+
export function createSseStream(filterStreamId, opts) {
|
|
94
|
+
const parseChunk = opts?.parseInPlace === true ? SseChunkInPlace : SseChunk;
|
|
93
95
|
let chunkNr = 0;
|
|
94
96
|
let errorNr = 0;
|
|
95
97
|
const usages = [];
|
|
@@ -118,7 +120,7 @@ export function createSseStream(filterStreamId) {
|
|
|
118
120
|
});
|
|
119
121
|
}
|
|
120
122
|
else if (kind === "data.line" && isDataLine(msg, filterStreamId)) {
|
|
121
|
-
const result =
|
|
123
|
+
const result = parseChunk(msg.json);
|
|
122
124
|
if (result instanceof type.errors) {
|
|
123
125
|
errorNr++;
|
|
124
126
|
controller.enqueue({
|
package/sse-stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-stream.js","sourceRoot":"","sources":["../jsr/sse-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sse-stream.js","sourceRoot":"","sources":["../jsr/sse-stream.ts"],"names":[],"mappings":"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"}
|