modelfusion 0.18.0 → 0.20.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 (40) hide show
  1. package/README.md +4 -5
  2. package/model-function/embed-text/embedText.cjs +64 -18
  3. package/model-function/embed-text/embedText.d.ts +3 -19
  4. package/model-function/embed-text/embedText.js +64 -18
  5. package/model-function/executeCall.cjs +49 -3
  6. package/model-function/executeCall.d.ts +18 -5
  7. package/model-function/executeCall.js +46 -1
  8. package/model-function/generate-image/generateImage.cjs +17 -9
  9. package/model-function/generate-image/generateImage.d.ts +2 -11
  10. package/model-function/generate-image/generateImage.js +17 -9
  11. package/model-function/generate-json/generateJson.cjs +2 -9
  12. package/model-function/generate-json/generateJson.d.ts +2 -11
  13. package/model-function/generate-json/generateJson.js +2 -9
  14. package/model-function/generate-json/generateJsonOrText.cjs +2 -9
  15. package/model-function/generate-json/generateJsonOrText.d.ts +3 -15
  16. package/model-function/generate-json/generateJsonOrText.js +2 -9
  17. package/model-function/generate-text/generateText.cjs +14 -9
  18. package/model-function/generate-text/generateText.d.ts +2 -11
  19. package/model-function/generate-text/generateText.js +14 -9
  20. package/model-function/generate-text/streamText.cjs +44 -9
  21. package/model-function/generate-text/streamText.d.ts +16 -12
  22. package/model-function/generate-text/streamText.js +41 -7
  23. package/model-function/synthesize-speech/synthesizeSpeech.cjs +5 -8
  24. package/model-function/synthesize-speech/synthesizeSpeech.d.ts +2 -10
  25. package/model-function/synthesize-speech/synthesizeSpeech.js +5 -8
  26. package/model-function/transcribe-speech/transcribe.cjs +16 -9
  27. package/model-function/transcribe-speech/transcribe.d.ts +2 -11
  28. package/model-function/transcribe-speech/transcribe.js +16 -9
  29. package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +3 -3
  30. package/model-provider/openai/OpenAITextGenerationModel.cjs +8 -0
  31. package/model-provider/openai/OpenAITextGenerationModel.d.ts +10 -2
  32. package/model-provider/openai/OpenAITextGenerationModel.js +8 -0
  33. package/model-provider/openai/TikTokenTokenizer.cjs +5 -1
  34. package/model-provider/openai/TikTokenTokenizer.js +5 -1
  35. package/package.json +1 -1
  36. package/tool/executeTool.cjs +48 -9
  37. package/tool/executeTool.d.ts +16 -9
  38. package/tool/executeTool.js +45 -7
  39. package/tool/useTool.cjs +2 -3
  40. package/tool/useTool.js +2 -3
@@ -10,15 +10,22 @@ export type ExecuteToolMetadata = {
10
10
  startEpochSeconds: number;
11
11
  durationInMs: number;
12
12
  };
13
+ export declare class ExecuteToolPromise<OUTPUT> extends Promise<OUTPUT> {
14
+ private fullPromise;
15
+ private outputPromise;
16
+ constructor(fullPromise: Promise<{
17
+ output: OUTPUT;
18
+ metadata: ExecuteToolMetadata;
19
+ }>);
20
+ asFullResponse(): Promise<{
21
+ output: OUTPUT;
22
+ metadata: ExecuteToolMetadata;
23
+ }>;
24
+ then<TResult1 = OUTPUT, TResult2 = never>(onfulfilled?: ((value: OUTPUT) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
25
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<OUTPUT | TResult>;
26
+ finally(onfinally?: (() => void) | undefined | null): Promise<OUTPUT>;
27
+ }
13
28
  /**
14
29
  * `executeTool` directly executes a tool with the given parameters.
15
30
  */
16
- export declare function executeTool<TOOL extends Tool<any, any, any>>(tool: TOOL, input: z.infer<TOOL["inputSchema"]>, options: FunctionOptions<undefined> & {
17
- fullResponse: true;
18
- }): Promise<{
19
- output: Awaited<ReturnType<TOOL["execute"]>>;
20
- metadata: ExecuteToolMetadata;
21
- }>;
22
- export declare function executeTool<TOOL extends Tool<any, any, any>>(tool: TOOL, input: z.infer<TOOL["inputSchema"]>, options?: FunctionOptions<undefined> & {
23
- fullResponse?: false;
24
- }): Promise<ReturnType<TOOL["execute"]>>;
31
+ export declare function executeTool<TOOL extends Tool<any, any, any>>(tool: TOOL, input: z.infer<TOOL["inputSchema"]>, options?: FunctionOptions<undefined>): ExecuteToolPromise<ReturnType<TOOL["execute"]>>;
@@ -4,8 +4,48 @@ import { startDurationMeasurement } from "../util/DurationMeasurement.js";
4
4
  import { AbortError } from "../util/api/AbortError.js";
5
5
  import { runSafe } from "../util/runSafe.js";
6
6
  import { ToolExecutionError } from "./ToolExecutionError.js";
7
+ export class ExecuteToolPromise extends Promise {
8
+ constructor(fullPromise) {
9
+ super((resolve) => {
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ resolve(null); // we override the resolve function
12
+ });
13
+ Object.defineProperty(this, "fullPromise", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: fullPromise
18
+ });
19
+ Object.defineProperty(this, "outputPromise", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ this.outputPromise = fullPromise.then((result) => result.output);
26
+ }
27
+ asFullResponse() {
28
+ return this.fullPromise;
29
+ }
30
+ then(onfulfilled, onrejected) {
31
+ return this.outputPromise.then(onfulfilled, onrejected);
32
+ }
33
+ catch(onrejected) {
34
+ return this.outputPromise.catch(onrejected);
35
+ }
36
+ finally(onfinally) {
37
+ return this.outputPromise.finally(onfinally);
38
+ }
39
+ }
40
+ /**
41
+ * `executeTool` directly executes a tool with the given parameters.
42
+ */
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ export function executeTool(tool, input, options) {
45
+ return new ExecuteToolPromise(doExecuteTool(tool, input, options));
46
+ }
7
47
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
- export async function executeTool(tool, input, options) {
48
+ async function doExecuteTool(tool, input, options) {
9
49
  const run = options?.run;
10
50
  const eventSource = new RunFunctionEventSource({
11
51
  observers: run?.observers ?? [],
@@ -67,10 +107,8 @@ export async function executeTool(tool, input, options) {
67
107
  input,
68
108
  output,
69
109
  });
70
- return options?.fullResponse === true
71
- ? {
72
- output,
73
- metadata: finishMetadata,
74
- }
75
- : output;
110
+ return {
111
+ output,
112
+ metadata: finishMetadata,
113
+ };
76
114
  }
package/tool/useTool.cjs CHANGED
@@ -14,14 +14,13 @@ const executeTool_js_1 = require("./executeTool.cjs");
14
14
  * and the result of the tool execution (`result` property, typed).
15
15
  */
16
16
  async function useTool(model, tool, prompt, options) {
17
- const { value } = await (0, generateJson_js_1.generateJson)(model, {
17
+ const { output: value } = await (0, generateJson_js_1.generateJson)(model, {
18
18
  name: tool.name,
19
19
  description: tool.description,
20
20
  schema: tool.inputSchema,
21
21
  }, () => prompt(tool), {
22
22
  ...(options ?? {}),
23
- fullResponse: true,
24
- });
23
+ }).asFullResponse();
25
24
  return {
26
25
  tool: tool.name,
27
26
  parameters: value,
package/tool/useTool.js CHANGED
@@ -11,14 +11,13 @@ import { executeTool } from "./executeTool.js";
11
11
  * and the result of the tool execution (`result` property, typed).
12
12
  */
13
13
  export async function useTool(model, tool, prompt, options) {
14
- const { value } = await generateJson(model, {
14
+ const { output: value } = await generateJson(model, {
15
15
  name: tool.name,
16
16
  description: tool.description,
17
17
  schema: tool.inputSchema,
18
18
  }, () => prompt(tool), {
19
19
  ...(options ?? {}),
20
- fullResponse: true,
21
- });
20
+ }).asFullResponse();
22
21
  return {
23
22
  tool: tool.name,
24
23
  parameters: value,