modelfusion 0.33.1 → 0.35.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.
Files changed (92) hide show
  1. package/README.md +47 -1
  2. package/{model-function/generate-text → event-source}/AsyncQueue.cjs +11 -10
  3. package/event-source/AsyncQueue.d.ts +8 -0
  4. package/{model-function/generate-text → event-source}/AsyncQueue.js +11 -10
  5. package/event-source/EventSourceParserStream.cjs +34 -0
  6. package/event-source/EventSourceParserStream.d.ts +15 -0
  7. package/event-source/EventSourceParserStream.js +30 -0
  8. package/event-source/convertReadableStreamToAsyncIterable.cjs +19 -0
  9. package/event-source/convertReadableStreamToAsyncIterable.d.ts +1 -0
  10. package/event-source/convertReadableStreamToAsyncIterable.js +15 -0
  11. package/event-source/createEventSourceStream.cjs +15 -0
  12. package/event-source/createEventSourceStream.d.ts +1 -0
  13. package/event-source/createEventSourceStream.js +11 -0
  14. package/event-source/index.cjs +19 -0
  15. package/event-source/index.d.ts +3 -0
  16. package/event-source/index.js +3 -0
  17. package/event-source/parseEventSourceStream.cjs +12 -0
  18. package/event-source/parseEventSourceStream.d.ts +4 -0
  19. package/event-source/parseEventSourceStream.js +8 -0
  20. package/event-source/readEventSourceStream.cjs +33 -0
  21. package/event-source/readEventSourceStream.d.ts +6 -0
  22. package/event-source/readEventSourceStream.js +26 -0
  23. package/index.cjs +1 -0
  24. package/index.d.ts +1 -0
  25. package/index.js +1 -0
  26. package/model-function/AsyncIterableResultPromise.cjs +37 -0
  27. package/model-function/AsyncIterableResultPromise.d.ts +16 -0
  28. package/model-function/AsyncIterableResultPromise.js +33 -0
  29. package/model-function/{generate-text/DeltaEvent.d.ts → DeltaEvent.d.ts} +1 -1
  30. package/model-function/ModelCallEvent.d.ts +3 -2
  31. package/model-function/generate-structure/StructureFromTextGenerationModel.d.ts +1 -1
  32. package/model-function/generate-structure/StructureGenerationModel.d.ts +10 -1
  33. package/model-function/generate-structure/StructureStreamingEvent.cjs +2 -0
  34. package/model-function/generate-structure/StructureStreamingEvent.d.ts +7 -0
  35. package/model-function/generate-structure/StructureStreamingEvent.js +1 -0
  36. package/model-function/generate-structure/fixJson.cjs +215 -0
  37. package/model-function/generate-structure/fixJson.d.ts +1 -0
  38. package/model-function/generate-structure/fixJson.js +211 -0
  39. package/model-function/generate-structure/fixJson.test.cjs +130 -0
  40. package/model-function/generate-structure/fixJson.test.d.ts +1 -0
  41. package/model-function/generate-structure/fixJson.test.js +128 -0
  42. package/model-function/generate-structure/generateStructure.cjs +3 -1
  43. package/model-function/generate-structure/generateStructure.d.ts +1 -1
  44. package/model-function/generate-structure/generateStructure.js +3 -1
  45. package/model-function/generate-structure/parsePartialJson.cjs +29 -0
  46. package/model-function/generate-structure/parsePartialJson.d.ts +1 -0
  47. package/model-function/generate-structure/parsePartialJson.js +22 -0
  48. package/model-function/generate-structure/streamStructure.cjs +167 -0
  49. package/model-function/generate-structure/streamStructure.d.ts +17 -0
  50. package/model-function/generate-structure/streamStructure.js +160 -0
  51. package/model-function/generate-text/TextGenerationModel.d.ts +4 -4
  52. package/model-function/generate-text/streamText.cjs +47 -68
  53. package/model-function/generate-text/streamText.d.ts +3 -18
  54. package/model-function/generate-text/streamText.js +46 -66
  55. package/model-function/index.cjs +3 -2
  56. package/model-function/index.d.ts +3 -2
  57. package/model-function/index.js +3 -2
  58. package/model-provider/cohere/CohereTextGenerationModel.cjs +3 -3
  59. package/model-provider/cohere/CohereTextGenerationModel.d.ts +3 -3
  60. package/model-provider/cohere/CohereTextGenerationModel.js +3 -3
  61. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +0 -12
  62. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +0 -2
  63. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +0 -12
  64. package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +23 -23
  65. package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +3 -3
  66. package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +23 -23
  67. package/model-provider/openai/OpenAITextGenerationModel.cjs +27 -25
  68. package/model-provider/openai/OpenAITextGenerationModel.d.ts +3 -3
  69. package/model-provider/openai/OpenAITextGenerationModel.js +27 -25
  70. package/model-provider/openai/chat/OpenAIChatModel.cjs +23 -2
  71. package/model-provider/openai/chat/OpenAIChatModel.d.ts +4 -2
  72. package/model-provider/openai/chat/OpenAIChatModel.js +23 -2
  73. package/model-provider/openai/chat/OpenAIChatStreamIterable.cjs +27 -24
  74. package/model-provider/openai/chat/OpenAIChatStreamIterable.d.ts +1 -1
  75. package/model-provider/openai/chat/OpenAIChatStreamIterable.js +27 -24
  76. package/package.json +9 -5
  77. package/prompt/PromptFormatTextGenerationModel.d.ts +1 -1
  78. package/tool/useTool.cjs +3 -4
  79. package/tool/useTool.d.ts +1 -1
  80. package/tool/useTool.js +3 -4
  81. package/model-function/generate-text/AsyncQueue.d.ts +0 -17
  82. package/model-function/generate-text/TextDeltaEventSource.cjs +0 -54
  83. package/model-function/generate-text/TextDeltaEventSource.d.ts +0 -5
  84. package/model-function/generate-text/TextDeltaEventSource.js +0 -46
  85. package/model-function/generate-text/extractTextDeltas.cjs +0 -23
  86. package/model-function/generate-text/extractTextDeltas.d.ts +0 -7
  87. package/model-function/generate-text/extractTextDeltas.js +0 -19
  88. package/model-function/generate-text/parseEventSourceReadableStream.cjs +0 -30
  89. package/model-function/generate-text/parseEventSourceReadableStream.d.ts +0 -8
  90. package/model-function/generate-text/parseEventSourceReadableStream.js +0 -26
  91. /package/model-function/{generate-text/DeltaEvent.cjs → DeltaEvent.cjs} +0 -0
  92. /package/model-function/{generate-text/DeltaEvent.js → DeltaEvent.js} +0 -0
@@ -1,54 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseTextDeltaEventSource = exports.createTextDeltaEventSource = void 0;
7
- const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
8
- const zod_1 = require("zod");
9
- const AsyncQueue_js_1 = require("./AsyncQueue.cjs");
10
- const parseEventSourceReadableStream_js_1 = require("./parseEventSourceReadableStream.cjs");
11
- const textEncoder = new TextEncoder();
12
- const textDeltaEventDataSchema = zod_1.z.object({
13
- textDelta: zod_1.z.string().optional(),
14
- isFinished: zod_1.z.boolean(),
15
- });
16
- function enqueueData(controller, data) {
17
- controller.enqueue(textEncoder.encode(`data: ${JSON.stringify(data)}\n\n`));
18
- }
19
- function createTextDeltaEventSource(textDeltas) {
20
- return new ReadableStream({
21
- async start(controller) {
22
- for await (const textDelta of textDeltas) {
23
- enqueueData(controller, { textDelta, isFinished: false });
24
- }
25
- enqueueData(controller, { isFinished: true });
26
- },
27
- });
28
- }
29
- exports.createTextDeltaEventSource = createTextDeltaEventSource;
30
- function parseTextDeltaEventSource(stream, options) {
31
- const queue = new AsyncQueue_js_1.AsyncQueue();
32
- // run async (no await on purpose):
33
- (0, parseEventSourceReadableStream_js_1.parseEventSourceReadableStream)({
34
- stream,
35
- callback: (event) => {
36
- if (event.type !== "event") {
37
- return;
38
- }
39
- try {
40
- const data = textDeltaEventDataSchema.parse(secure_json_parse_1.default.parse(event.data));
41
- queue.push(data.textDelta);
42
- if (data.isFinished) {
43
- queue.close();
44
- }
45
- }
46
- catch (error) {
47
- options?.errorHandler(error);
48
- queue.close();
49
- }
50
- },
51
- });
52
- return queue;
53
- }
54
- exports.parseTextDeltaEventSource = parseTextDeltaEventSource;
@@ -1,5 +0,0 @@
1
- import { ErrorHandler } from "../../util/ErrorHandler.js";
2
- export declare function createTextDeltaEventSource(textDeltas: AsyncIterable<string>): ReadableStream<any>;
3
- export declare function parseTextDeltaEventSource(stream: ReadableStream<Uint8Array>, options?: {
4
- errorHandler: ErrorHandler;
5
- }): AsyncIterable<string | undefined>;
@@ -1,46 +0,0 @@
1
- import SecureJSON from "secure-json-parse";
2
- import { z } from "zod";
3
- import { AsyncQueue } from "./AsyncQueue.js";
4
- import { parseEventSourceReadableStream } from "./parseEventSourceReadableStream.js";
5
- const textEncoder = new TextEncoder();
6
- const textDeltaEventDataSchema = z.object({
7
- textDelta: z.string().optional(),
8
- isFinished: z.boolean(),
9
- });
10
- function enqueueData(controller, data) {
11
- controller.enqueue(textEncoder.encode(`data: ${JSON.stringify(data)}\n\n`));
12
- }
13
- export function createTextDeltaEventSource(textDeltas) {
14
- return new ReadableStream({
15
- async start(controller) {
16
- for await (const textDelta of textDeltas) {
17
- enqueueData(controller, { textDelta, isFinished: false });
18
- }
19
- enqueueData(controller, { isFinished: true });
20
- },
21
- });
22
- }
23
- export function parseTextDeltaEventSource(stream, options) {
24
- const queue = new AsyncQueue();
25
- // run async (no await on purpose):
26
- parseEventSourceReadableStream({
27
- stream,
28
- callback: (event) => {
29
- if (event.type !== "event") {
30
- return;
31
- }
32
- try {
33
- const data = textDeltaEventDataSchema.parse(SecureJSON.parse(event.data));
34
- queue.push(data.textDelta);
35
- if (data.isFinished) {
36
- queue.close();
37
- }
38
- }
39
- catch (error) {
40
- options?.errorHandler(error);
41
- queue.close();
42
- }
43
- },
44
- });
45
- return queue;
46
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractTextDeltas = void 0;
4
- async function* extractTextDeltas({ deltaIterable, extractDelta, onDone, onError, }) {
5
- let accumulatedText = "";
6
- let lastFullDelta;
7
- for await (const event of deltaIterable) {
8
- if (event?.type === "error") {
9
- onError(event.error);
10
- throw event.error;
11
- }
12
- if (event?.type === "delta") {
13
- lastFullDelta = event.fullDelta;
14
- const delta = extractDelta(lastFullDelta);
15
- if (delta != null && delta.length > 0) {
16
- accumulatedText += delta;
17
- yield delta;
18
- }
19
- }
20
- }
21
- onDone(accumulatedText, lastFullDelta);
22
- }
23
- exports.extractTextDeltas = extractTextDeltas;
@@ -1,7 +0,0 @@
1
- import { DeltaEvent } from "./DeltaEvent.js";
2
- export declare function extractTextDeltas<FULL_DELTA>({ deltaIterable, extractDelta, onDone, onError, }: {
3
- deltaIterable: AsyncIterable<DeltaEvent<FULL_DELTA>>;
4
- extractDelta: (fullDelta: FULL_DELTA) => string | undefined;
5
- onDone: (fullText: string, lastFullDelta: FULL_DELTA | undefined) => void;
6
- onError: (error: unknown) => void;
7
- }): AsyncIterable<string>;
@@ -1,19 +0,0 @@
1
- export async function* extractTextDeltas({ deltaIterable, extractDelta, onDone, onError, }) {
2
- let accumulatedText = "";
3
- let lastFullDelta;
4
- for await (const event of deltaIterable) {
5
- if (event?.type === "error") {
6
- onError(event.error);
7
- throw event.error;
8
- }
9
- if (event?.type === "delta") {
10
- lastFullDelta = event.fullDelta;
11
- const delta = extractDelta(lastFullDelta);
12
- if (delta != null && delta.length > 0) {
13
- accumulatedText += delta;
14
- yield delta;
15
- }
16
- }
17
- }
18
- onDone(accumulatedText, lastFullDelta);
19
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseEventSourceReadableStream = void 0;
4
- const eventsource_parser_1 = require("eventsource-parser");
5
- async function* convertReadableStreamToAsyncIterable(reader) {
6
- while (true) {
7
- const result = await reader.read();
8
- if (result.done) {
9
- break;
10
- }
11
- yield result.value;
12
- }
13
- }
14
- /**
15
- * @internal
16
- */
17
- async function parseEventSourceReadableStream({ stream, callback, }) {
18
- try {
19
- const parser = (0, eventsource_parser_1.createParser)(callback);
20
- const decoder = new TextDecoder();
21
- const iterable = convertReadableStreamToAsyncIterable(stream.getReader());
22
- for await (const value of iterable) {
23
- parser.feed(decoder.decode(value));
24
- }
25
- }
26
- catch (error) {
27
- console.error(error); // TODO introduce error handler param
28
- }
29
- }
30
- exports.parseEventSourceReadableStream = parseEventSourceReadableStream;
@@ -1,8 +0,0 @@
1
- import { EventSourceParseCallback } from "eventsource-parser";
2
- /**
3
- * @internal
4
- */
5
- export declare function parseEventSourceReadableStream({ stream, callback, }: {
6
- stream: ReadableStream<Uint8Array>;
7
- callback: EventSourceParseCallback;
8
- }): Promise<void>;
@@ -1,26 +0,0 @@
1
- import { createParser } from "eventsource-parser";
2
- async function* convertReadableStreamToAsyncIterable(reader) {
3
- while (true) {
4
- const result = await reader.read();
5
- if (result.done) {
6
- break;
7
- }
8
- yield result.value;
9
- }
10
- }
11
- /**
12
- * @internal
13
- */
14
- export async function parseEventSourceReadableStream({ stream, callback, }) {
15
- try {
16
- const parser = createParser(callback);
17
- const decoder = new TextDecoder();
18
- const iterable = convertReadableStreamToAsyncIterable(stream.getReader());
19
- for await (const value of iterable) {
20
- parser.feed(decoder.decode(value));
21
- }
22
- }
23
- catch (error) {
24
- console.error(error); // TODO introduce error handler param
25
- }
26
- }