modelfusion 0.19.0 → 0.20.1
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/README.md +5 -6
 - package/model-function/embed-text/embedText.cjs +64 -18
 - package/model-function/embed-text/embedText.d.ts +3 -19
 - package/model-function/embed-text/embedText.js +64 -18
 - package/model-function/executeCall.cjs +49 -3
 - package/model-function/executeCall.d.ts +18 -5
 - package/model-function/executeCall.js +46 -1
 - package/model-function/generate-image/generateImage.cjs +17 -9
 - package/model-function/generate-image/generateImage.d.ts +2 -11
 - package/model-function/generate-image/generateImage.js +17 -9
 - package/model-function/generate-json/generateJson.cjs +2 -9
 - package/model-function/generate-json/generateJson.d.ts +2 -11
 - package/model-function/generate-json/generateJson.js +2 -9
 - package/model-function/generate-json/generateJsonOrText.cjs +2 -9
 - package/model-function/generate-json/generateJsonOrText.d.ts +3 -15
 - package/model-function/generate-json/generateJsonOrText.js +2 -9
 - package/model-function/generate-text/generateText.cjs +14 -9
 - package/model-function/generate-text/generateText.d.ts +2 -11
 - package/model-function/generate-text/generateText.js +14 -9
 - package/model-function/generate-text/streamText.cjs +44 -9
 - package/model-function/generate-text/streamText.d.ts +16 -12
 - package/model-function/generate-text/streamText.js +41 -7
 - package/model-function/synthesize-speech/synthesizeSpeech.cjs +5 -8
 - package/model-function/synthesize-speech/synthesizeSpeech.d.ts +2 -10
 - package/model-function/synthesize-speech/synthesizeSpeech.js +5 -8
 - package/model-function/transcribe-speech/transcribe.cjs +16 -9
 - package/model-function/transcribe-speech/transcribe.d.ts +2 -11
 - package/model-function/transcribe-speech/transcribe.js +16 -9
 - package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +3 -3
 - package/package.json +1 -1
 - package/run/RunFunctionEvent.d.ts +1 -1
 - package/tool/executeTool.cjs +48 -9
 - package/tool/executeTool.d.ts +16 -9
 - package/tool/executeTool.js +45 -7
 - package/tool/index.cjs +1 -0
 - package/tool/index.d.ts +1 -0
 - package/tool/index.js +1 -0
 - package/tool/useTool.cjs +2 -3
 - package/tool/useTool.js +2 -3
 
| 
         @@ -2,10 +2,22 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
3 
     | 
    
         
             
            exports.generateText = void 0;
         
     | 
| 
       4 
4 
     | 
    
         
             
            const executeCall_js_1 = require("../executeCall.cjs");
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            /**
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Generates a text using a prompt.
         
     | 
| 
      
 7 
     | 
    
         
            +
             * The prompt format depends on the model.
         
     | 
| 
      
 8 
     | 
    
         
            +
             * For example, OpenAI text models expect a string prompt, and OpenAI chat models expect an array of chat messages.
         
     | 
| 
      
 9 
     | 
    
         
            +
             *
         
     | 
| 
      
 10 
     | 
    
         
            +
             * @example
         
     | 
| 
      
 11 
     | 
    
         
            +
             * const model = new OpenAITextGenerationModel(...);
         
     | 
| 
      
 12 
     | 
    
         
            +
             *
         
     | 
| 
      
 13 
     | 
    
         
            +
             * const text = await model.generateText(
         
     | 
| 
      
 14 
     | 
    
         
            +
             *   "Write a short story about a robot learning to love:\n\n"
         
     | 
| 
      
 15 
     | 
    
         
            +
             * );
         
     | 
| 
      
 16 
     | 
    
         
            +
             */
         
     | 
| 
      
 17 
     | 
    
         
            +
            function generateText(
         
     | 
| 
       6 
18 
     | 
    
         
             
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       7 
19 
     | 
    
         
             
            model, prompt, options) {
         
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
      
 20 
     | 
    
         
            +
                return (0, executeCall_js_1.executeCall)({
         
     | 
| 
       9 
21 
     | 
    
         
             
                    model,
         
     | 
| 
       10 
22 
     | 
    
         
             
                    options,
         
     | 
| 
       11 
23 
     | 
    
         
             
                    generateResponse: (options) => model.generateTextResponse(prompt, options),
         
     | 
| 
         @@ -46,12 +58,5 @@ model, prompt, options) { 
     | 
|
| 
       46 
58 
     | 
    
         
             
                        generatedText: output,
         
     | 
| 
       47 
59 
     | 
    
         
             
                    }),
         
     | 
| 
       48 
60 
     | 
    
         
             
                });
         
     | 
| 
       49 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       50 
     | 
    
         
            -
                    ? {
         
     | 
| 
       51 
     | 
    
         
            -
                        text: result.output,
         
     | 
| 
       52 
     | 
    
         
            -
                        response: result.response,
         
     | 
| 
       53 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       54 
     | 
    
         
            -
                    }
         
     | 
| 
       55 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       56 
61 
     | 
    
         
             
            }
         
     | 
| 
       57 
62 
     | 
    
         
             
            exports.generateText = generateText;
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { FunctionOptions } from "../FunctionOptions.js";
         
     | 
| 
       2 
     | 
    
         
            -
            import {  
     | 
| 
      
 2 
     | 
    
         
            +
            import { ModelFunctionPromise } from "../executeCall.js";
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerationModel.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            /**
         
     | 
| 
       5 
5 
     | 
    
         
             
             * Generates a text using a prompt.
         
     | 
| 
         @@ -13,13 +13,4 @@ import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerati 
     | 
|
| 
       13 
13 
     | 
    
         
             
             *   "Write a short story about a robot learning to love:\n\n"
         
     | 
| 
       14 
14 
     | 
    
         
             
             * );
         
     | 
| 
       15 
15 
     | 
    
         
             
             */
         
     | 
| 
       16 
     | 
    
         
            -
            export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options 
     | 
| 
       17 
     | 
    
         
            -
                fullResponse: true;
         
     | 
| 
       18 
     | 
    
         
            -
            }): Promise<{
         
     | 
| 
       19 
     | 
    
         
            -
                text: string;
         
     | 
| 
       20 
     | 
    
         
            -
                response: RESPONSE;
         
     | 
| 
       21 
     | 
    
         
            -
                metadata: CallMetadata<TextGenerationModel<PROMPT, RESPONSE, unknown, SETTINGS>>;
         
     | 
| 
       22 
     | 
    
         
            -
            }>;
         
     | 
| 
       23 
     | 
    
         
            -
            export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: FunctionOptions<SETTINGS> & {
         
     | 
| 
       24 
     | 
    
         
            -
                fullResponse?: false;
         
     | 
| 
       25 
     | 
    
         
            -
            }): Promise<string>;
         
     | 
| 
      
 16 
     | 
    
         
            +
            export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: FunctionOptions<SETTINGS>): ModelFunctionPromise<TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, string, RESPONSE>;
         
     | 
| 
         @@ -1,8 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { executeCall } from "../executeCall.js";
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            /**
         
     | 
| 
      
 3 
     | 
    
         
            +
             * Generates a text using a prompt.
         
     | 
| 
      
 4 
     | 
    
         
            +
             * The prompt format depends on the model.
         
     | 
| 
      
 5 
     | 
    
         
            +
             * For example, OpenAI text models expect a string prompt, and OpenAI chat models expect an array of chat messages.
         
     | 
| 
      
 6 
     | 
    
         
            +
             *
         
     | 
| 
      
 7 
     | 
    
         
            +
             * @example
         
     | 
| 
      
 8 
     | 
    
         
            +
             * const model = new OpenAITextGenerationModel(...);
         
     | 
| 
      
 9 
     | 
    
         
            +
             *
         
     | 
| 
      
 10 
     | 
    
         
            +
             * const text = await model.generateText(
         
     | 
| 
      
 11 
     | 
    
         
            +
             *   "Write a short story about a robot learning to love:\n\n"
         
     | 
| 
      
 12 
     | 
    
         
            +
             * );
         
     | 
| 
      
 13 
     | 
    
         
            +
             */
         
     | 
| 
      
 14 
     | 
    
         
            +
            export function generateText(
         
     | 
| 
       3 
15 
     | 
    
         
             
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       4 
16 
     | 
    
         
             
            model, prompt, options) {
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                return executeCall({
         
     | 
| 
       6 
18 
     | 
    
         
             
                    model,
         
     | 
| 
       7 
19 
     | 
    
         
             
                    options,
         
     | 
| 
       8 
20 
     | 
    
         
             
                    generateResponse: (options) => model.generateTextResponse(prompt, options),
         
     | 
| 
         @@ -43,11 +55,4 @@ model, prompt, options) { 
     | 
|
| 
       43 
55 
     | 
    
         
             
                        generatedText: output,
         
     | 
| 
       44 
56 
     | 
    
         
             
                    }),
         
     | 
| 
       45 
57 
     | 
    
         
             
                });
         
     | 
| 
       46 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       47 
     | 
    
         
            -
                    ? {
         
     | 
| 
       48 
     | 
    
         
            -
                        text: result.output,
         
     | 
| 
       49 
     | 
    
         
            -
                        response: result.response,
         
     | 
| 
       50 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       51 
     | 
    
         
            -
                    }
         
     | 
| 
       52 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       53 
58 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,13 +1,51 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            "use strict";
         
     | 
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
     | 
    
         
            -
            exports.streamText = void 0;
         
     | 
| 
      
 3 
     | 
    
         
            +
            exports.streamText = exports.StreamTextPromise = void 0;
         
     | 
| 
       4 
4 
     | 
    
         
             
            const nanoid_1 = require("nanoid");
         
     | 
| 
       5 
5 
     | 
    
         
             
            const RunFunctionEventSource_js_1 = require("../../run/RunFunctionEventSource.cjs");
         
     | 
| 
       6 
6 
     | 
    
         
             
            const DurationMeasurement_js_1 = require("../../util/DurationMeasurement.cjs");
         
     | 
| 
       7 
7 
     | 
    
         
             
            const AbortError_js_1 = require("../../util/api/AbortError.cjs");
         
     | 
| 
       8 
8 
     | 
    
         
             
            const runSafe_js_1 = require("../../util/runSafe.cjs");
         
     | 
| 
       9 
9 
     | 
    
         
             
            const extractTextDeltas_js_1 = require("./extractTextDeltas.cjs");
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            class StreamTextPromise extends Promise {
         
     | 
| 
      
 11 
     | 
    
         
            +
                constructor(fullPromise) {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    super((resolve) => {
         
     | 
| 
      
 13 
     | 
    
         
            +
                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
      
 14 
     | 
    
         
            +
                        resolve(null); // we override the resolve function
         
     | 
| 
      
 15 
     | 
    
         
            +
                    });
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Object.defineProperty(this, "fullPromise", {
         
     | 
| 
      
 17 
     | 
    
         
            +
                        enumerable: true,
         
     | 
| 
      
 18 
     | 
    
         
            +
                        configurable: true,
         
     | 
| 
      
 19 
     | 
    
         
            +
                        writable: true,
         
     | 
| 
      
 20 
     | 
    
         
            +
                        value: fullPromise
         
     | 
| 
      
 21 
     | 
    
         
            +
                    });
         
     | 
| 
      
 22 
     | 
    
         
            +
                    Object.defineProperty(this, "outputPromise", {
         
     | 
| 
      
 23 
     | 
    
         
            +
                        enumerable: true,
         
     | 
| 
      
 24 
     | 
    
         
            +
                        configurable: true,
         
     | 
| 
      
 25 
     | 
    
         
            +
                        writable: true,
         
     | 
| 
      
 26 
     | 
    
         
            +
                        value: void 0
         
     | 
| 
      
 27 
     | 
    
         
            +
                    });
         
     | 
| 
      
 28 
     | 
    
         
            +
                    this.outputPromise = fullPromise.then((result) => result.output);
         
     | 
| 
      
 29 
     | 
    
         
            +
                }
         
     | 
| 
      
 30 
     | 
    
         
            +
                asFullResponse() {
         
     | 
| 
      
 31 
     | 
    
         
            +
                    return this.fullPromise;
         
     | 
| 
      
 32 
     | 
    
         
            +
                }
         
     | 
| 
      
 33 
     | 
    
         
            +
                then(onfulfilled, onrejected) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                    return this.outputPromise.then(onfulfilled, onrejected);
         
     | 
| 
      
 35 
     | 
    
         
            +
                }
         
     | 
| 
      
 36 
     | 
    
         
            +
                catch(onrejected) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    return this.outputPromise.catch(onrejected);
         
     | 
| 
      
 38 
     | 
    
         
            +
                }
         
     | 
| 
      
 39 
     | 
    
         
            +
                finally(onfinally) {
         
     | 
| 
      
 40 
     | 
    
         
            +
                    return this.outputPromise.finally(onfinally);
         
     | 
| 
      
 41 
     | 
    
         
            +
                }
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
            exports.StreamTextPromise = StreamTextPromise;
         
     | 
| 
      
 44 
     | 
    
         
            +
            function streamText(model, prompt, options) {
         
     | 
| 
      
 45 
     | 
    
         
            +
                return new StreamTextPromise(doStreamText(model, prompt, options));
         
     | 
| 
      
 46 
     | 
    
         
            +
            }
         
     | 
| 
      
 47 
     | 
    
         
            +
            exports.streamText = streamText;
         
     | 
| 
      
 48 
     | 
    
         
            +
            async function doStreamText(model, prompt, options) {
         
     | 
| 
       11 
49 
     | 
    
         
             
                if (options?.settings != null) {
         
     | 
| 
       12 
50 
     | 
    
         
             
                    model = model.withSettings(options.settings);
         
     | 
| 
       13 
51 
     | 
    
         
             
                    options = {
         
     | 
| 
         @@ -107,11 +145,8 @@ async function streamText(model, prompt, options) { 
     | 
|
| 
       107 
145 
     | 
    
         
             
                    });
         
     | 
| 
       108 
146 
     | 
    
         
             
                    throw result.error;
         
     | 
| 
       109 
147 
     | 
    
         
             
                }
         
     | 
| 
       110 
     | 
    
         
            -
                return  
     | 
| 
       111 
     | 
    
         
            -
                     
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                    }
         
     | 
| 
       115 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
      
 148 
     | 
    
         
            +
                return {
         
     | 
| 
      
 149 
     | 
    
         
            +
                    output: result.output,
         
     | 
| 
      
 150 
     | 
    
         
            +
                    metadata: startMetadata,
         
     | 
| 
      
 151 
     | 
    
         
            +
                };
         
     | 
| 
       116 
152 
     | 
    
         
             
            }
         
     | 
| 
       117 
     | 
    
         
            -
            exports.streamText = streamText;
         
     | 
| 
         @@ -2,18 +2,22 @@ import { FunctionOptions } from "../FunctionOptions.js"; 
     | 
|
| 
       2 
2 
     | 
    
         
             
            import { CallMetadata } from "../executeCall.js";
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { DeltaEvent } from "./DeltaEvent.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerationModel.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            export declare class StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings> extends Promise<AsyncIterable<string>> {
         
     | 
| 
      
 6 
     | 
    
         
            +
                private fullPromise;
         
     | 
| 
      
 7 
     | 
    
         
            +
                private outputPromise;
         
     | 
| 
      
 8 
     | 
    
         
            +
                constructor(fullPromise: Promise<{
         
     | 
| 
      
 9 
     | 
    
         
            +
                    output: AsyncIterable<string>;
         
     | 
| 
      
 10 
     | 
    
         
            +
                    metadata: Omit<CallMetadata<TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS>>, "durationInMs">;
         
     | 
| 
      
 11 
     | 
    
         
            +
                }>);
         
     | 
| 
      
 12 
     | 
    
         
            +
                asFullResponse(): Promise<{
         
     | 
| 
      
 13 
     | 
    
         
            +
                    output: AsyncIterable<string>;
         
     | 
| 
      
 14 
     | 
    
         
            +
                    metadata: Omit<CallMetadata<TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS>>, "durationInMs">;
         
     | 
| 
      
 15 
     | 
    
         
            +
                }>;
         
     | 
| 
      
 16 
     | 
    
         
            +
                then<TResult1 = AsyncIterable<string>, TResult2 = never>(onfulfilled?: ((value: AsyncIterable<string>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
         
     | 
| 
      
 17 
     | 
    
         
            +
                catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<AsyncIterable<string> | TResult>;
         
     | 
| 
      
 18 
     | 
    
         
            +
                finally(onfinally?: (() => void) | undefined | null): Promise<AsyncIterable<string>>;
         
     | 
| 
      
 19 
     | 
    
         
            +
            }
         
     | 
| 
       5 
20 
     | 
    
         
             
            export declare function streamText<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS> & {
         
     | 
| 
       6 
21 
     | 
    
         
             
                generateDeltaStreamResponse: (prompt: PROMPT, options: FunctionOptions<SETTINGS>) => PromiseLike<AsyncIterable<DeltaEvent<FULL_DELTA>>>;
         
     | 
| 
       7 
22 
     | 
    
         
             
                extractTextDelta: (fullDelta: FULL_DELTA) => string | undefined;
         
     | 
| 
       8 
     | 
    
         
            -
            }, prompt: PROMPT, options?: FunctionOptions<SETTINGS>  
     | 
| 
       9 
     | 
    
         
            -
                fullResponse?: false;
         
     | 
| 
       10 
     | 
    
         
            -
            }): Promise<AsyncIterable<string>>;
         
     | 
| 
       11 
     | 
    
         
            -
            export declare function streamText<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS> & {
         
     | 
| 
       12 
     | 
    
         
            -
                generateDeltaStreamResponse: (prompt: PROMPT, options: FunctionOptions<SETTINGS>) => PromiseLike<AsyncIterable<DeltaEvent<FULL_DELTA>>>;
         
     | 
| 
       13 
     | 
    
         
            -
                extractTextDelta: (fullDelta: FULL_DELTA) => string | undefined;
         
     | 
| 
       14 
     | 
    
         
            -
            }, prompt: PROMPT, options: FunctionOptions<SETTINGS> & {
         
     | 
| 
       15 
     | 
    
         
            -
                fullResponse: true;
         
     | 
| 
       16 
     | 
    
         
            -
            }): Promise<{
         
     | 
| 
       17 
     | 
    
         
            -
                textStream: AsyncIterable<string>;
         
     | 
| 
       18 
     | 
    
         
            -
                metadata: Omit<CallMetadata<TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS>>, "durationInMs">;
         
     | 
| 
       19 
     | 
    
         
            -
            }>;
         
     | 
| 
      
 23 
     | 
    
         
            +
            }, prompt: PROMPT, options?: FunctionOptions<SETTINGS>): StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS>;
         
     | 
| 
         @@ -4,7 +4,43 @@ 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 { extractTextDeltas } from "./extractTextDeltas.js";
         
     | 
| 
       7 
     | 
    
         
            -
            export  
     | 
| 
      
 7 
     | 
    
         
            +
            export class StreamTextPromise 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 
     | 
    
         
            +
            export function streamText(model, prompt, options) {
         
     | 
| 
      
 41 
     | 
    
         
            +
                return new StreamTextPromise(doStreamText(model, prompt, options));
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
            async function doStreamText(model, prompt, options) {
         
     | 
| 
       8 
44 
     | 
    
         
             
                if (options?.settings != null) {
         
     | 
| 
       9 
45 
     | 
    
         
             
                    model = model.withSettings(options.settings);
         
     | 
| 
       10 
46 
     | 
    
         
             
                    options = {
         
     | 
| 
         @@ -104,10 +140,8 @@ export async function streamText(model, prompt, options) { 
     | 
|
| 
       104 
140 
     | 
    
         
             
                    });
         
     | 
| 
       105 
141 
     | 
    
         
             
                    throw result.error;
         
     | 
| 
       106 
142 
     | 
    
         
             
                }
         
     | 
| 
       107 
     | 
    
         
            -
                return  
     | 
| 
       108 
     | 
    
         
            -
                     
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
                    }
         
     | 
| 
       112 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
      
 143 
     | 
    
         
            +
                return {
         
     | 
| 
      
 144 
     | 
    
         
            +
                    output: result.output,
         
     | 
| 
      
 145 
     | 
    
         
            +
                    metadata: startMetadata,
         
     | 
| 
      
 146 
     | 
    
         
            +
                };
         
     | 
| 
       113 
147 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,8 +2,11 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
3 
     | 
    
         
             
            exports.synthesizeSpeech = void 0;
         
     | 
| 
       4 
4 
     | 
    
         
             
            const executeCall_js_1 = require("../executeCall.cjs");
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            /**
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Synthesizes speech from text.
         
     | 
| 
      
 7 
     | 
    
         
            +
             */
         
     | 
| 
      
 8 
     | 
    
         
            +
            function synthesizeSpeech(model, text, options) {
         
     | 
| 
      
 9 
     | 
    
         
            +
                return (0, executeCall_js_1.executeCall)({
         
     | 
| 
       7 
10 
     | 
    
         
             
                    model,
         
     | 
| 
       8 
11 
     | 
    
         
             
                    options,
         
     | 
| 
       9 
12 
     | 
    
         
             
                    generateResponse: (options) => model.generateSpeechResponse(text, options),
         
     | 
| 
         @@ -39,11 +42,5 @@ async function synthesizeSpeech(model, text, options) { 
     | 
|
| 
       39 
42 
     | 
    
         
             
                        speech: output,
         
     | 
| 
       40 
43 
     | 
    
         
             
                    }),
         
     | 
| 
       41 
44 
     | 
    
         
             
                });
         
     | 
| 
       42 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       43 
     | 
    
         
            -
                    ? {
         
     | 
| 
       44 
     | 
    
         
            -
                        speech: result.output,
         
     | 
| 
       45 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       46 
     | 
    
         
            -
                    }
         
     | 
| 
       47 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       48 
45 
     | 
    
         
             
            }
         
     | 
| 
       49 
46 
     | 
    
         
             
            exports.synthesizeSpeech = synthesizeSpeech;
         
     | 
| 
         @@ -1,16 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /// <reference types="node" resolution-mode="require"/>
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { FunctionOptions } from "../FunctionOptions.js";
         
     | 
| 
       3 
     | 
    
         
            -
            import {  
     | 
| 
      
 3 
     | 
    
         
            +
            import { ModelFunctionPromise } from "../executeCall.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            import { SpeechSynthesisModel, SpeechSynthesisModelSettings } from "./SpeechSynthesisModel.js";
         
     | 
| 
       5 
5 
     | 
    
         
             
            /**
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Synthesizes speech from text.
         
     | 
| 
       7 
7 
     | 
    
         
             
             */
         
     | 
| 
       8 
     | 
    
         
            -
            export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options 
     | 
| 
       9 
     | 
    
         
            -
                fullResponse: true;
         
     | 
| 
       10 
     | 
    
         
            -
            }): Promise<{
         
     | 
| 
       11 
     | 
    
         
            -
                speech: Buffer;
         
     | 
| 
       12 
     | 
    
         
            -
                metadata: CallMetadata<SpeechSynthesisModel<SETTINGS>>;
         
     | 
| 
       13 
     | 
    
         
            -
            }>;
         
     | 
| 
       14 
     | 
    
         
            -
            export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: FunctionOptions<SETTINGS> & {
         
     | 
| 
       15 
     | 
    
         
            -
                fullResponse?: false;
         
     | 
| 
       16 
     | 
    
         
            -
            }): Promise<Buffer>;
         
     | 
| 
      
 8 
     | 
    
         
            +
            export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: FunctionOptions<SETTINGS>): ModelFunctionPromise<SpeechSynthesisModel<SETTINGS>, Buffer, Buffer>;
         
     | 
| 
         @@ -1,6 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { executeCall } from "../executeCall.js";
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            /**
         
     | 
| 
      
 3 
     | 
    
         
            +
             * Synthesizes speech from text.
         
     | 
| 
      
 4 
     | 
    
         
            +
             */
         
     | 
| 
      
 5 
     | 
    
         
            +
            export function synthesizeSpeech(model, text, options) {
         
     | 
| 
      
 6 
     | 
    
         
            +
                return executeCall({
         
     | 
| 
       4 
7 
     | 
    
         
             
                    model,
         
     | 
| 
       5 
8 
     | 
    
         
             
                    options,
         
     | 
| 
       6 
9 
     | 
    
         
             
                    generateResponse: (options) => model.generateSpeechResponse(text, options),
         
     | 
| 
         @@ -36,10 +39,4 @@ export async function synthesizeSpeech(model, text, options) { 
     | 
|
| 
       36 
39 
     | 
    
         
             
                        speech: output,
         
     | 
| 
       37 
40 
     | 
    
         
             
                    }),
         
     | 
| 
       38 
41 
     | 
    
         
             
                });
         
     | 
| 
       39 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       40 
     | 
    
         
            -
                    ? {
         
     | 
| 
       41 
     | 
    
         
            -
                        speech: result.output,
         
     | 
| 
       42 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       43 
     | 
    
         
            -
                    }
         
     | 
| 
       44 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       45 
42 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,8 +2,22 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
3 
     | 
    
         
             
            exports.transcribe = void 0;
         
     | 
| 
       4 
4 
     | 
    
         
             
            const executeCall_js_1 = require("../executeCall.cjs");
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            /**
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Transcribe audio data into text.
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * @example
         
     | 
| 
      
 9 
     | 
    
         
            +
             * const data = await fs.promises.readFile("data/test.mp3");
         
     | 
| 
      
 10 
     | 
    
         
            +
             *
         
     | 
| 
      
 11 
     | 
    
         
            +
             * const transcription = await transcribe(
         
     | 
| 
      
 12 
     | 
    
         
            +
             *   new OpenAITranscriptionModel({ model: "whisper-1" }),
         
     | 
| 
      
 13 
     | 
    
         
            +
             *   {
         
     | 
| 
      
 14 
     | 
    
         
            +
             *     type: "mp3",
         
     | 
| 
      
 15 
     | 
    
         
            +
             *     data,
         
     | 
| 
      
 16 
     | 
    
         
            +
             *   }
         
     | 
| 
      
 17 
     | 
    
         
            +
             * );
         
     | 
| 
      
 18 
     | 
    
         
            +
             */
         
     | 
| 
      
 19 
     | 
    
         
            +
            function transcribe(model, data, options) {
         
     | 
| 
      
 20 
     | 
    
         
            +
                return (0, executeCall_js_1.executeCall)({
         
     | 
| 
       7 
21 
     | 
    
         
             
                    model,
         
     | 
| 
       8 
22 
     | 
    
         
             
                    options,
         
     | 
| 
       9 
23 
     | 
    
         
             
                    generateResponse: (options) => model.generateTranscriptionResponse(data, options),
         
     | 
| 
         @@ -39,12 +53,5 @@ async function transcribe(model, data, options) { 
     | 
|
| 
       39 
53 
     | 
    
         
             
                        transcription: output,
         
     | 
| 
       40 
54 
     | 
    
         
             
                    }),
         
     | 
| 
       41 
55 
     | 
    
         
             
                });
         
     | 
| 
       42 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       43 
     | 
    
         
            -
                    ? {
         
     | 
| 
       44 
     | 
    
         
            -
                        transcription: result.output,
         
     | 
| 
       45 
     | 
    
         
            -
                        response: result.response,
         
     | 
| 
       46 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       47 
     | 
    
         
            -
                    }
         
     | 
| 
       48 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       49 
56 
     | 
    
         
             
            }
         
     | 
| 
       50 
57 
     | 
    
         
             
            exports.transcribe = transcribe;
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { FunctionOptions } from "../FunctionOptions.js";
         
     | 
| 
       2 
     | 
    
         
            -
            import {  
     | 
| 
      
 2 
     | 
    
         
            +
            import { ModelFunctionPromise } from "../executeCall.js";
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { TranscriptionModel, TranscriptionModelSettings } from "./TranscriptionModel.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            /**
         
     | 
| 
       5 
5 
     | 
    
         
             
             * Transcribe audio data into text.
         
     | 
| 
         @@ -15,13 +15,4 @@ import { TranscriptionModel, TranscriptionModelSettings } from "./TranscriptionM 
     | 
|
| 
       15 
15 
     | 
    
         
             
             *   }
         
     | 
| 
       16 
16 
     | 
    
         
             
             * );
         
     | 
| 
       17 
17 
     | 
    
         
             
             */
         
     | 
| 
       18 
     | 
    
         
            -
            export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options 
     | 
| 
       19 
     | 
    
         
            -
                fullResponse: true;
         
     | 
| 
       20 
     | 
    
         
            -
            }): Promise<{
         
     | 
| 
       21 
     | 
    
         
            -
                transcription: string;
         
     | 
| 
       22 
     | 
    
         
            -
                response: RESPONSE;
         
     | 
| 
       23 
     | 
    
         
            -
                metadata: CallMetadata<TranscriptionModel<DATA, RESPONSE, SETTINGS>>;
         
     | 
| 
       24 
     | 
    
         
            -
            }>;
         
     | 
| 
       25 
     | 
    
         
            -
            export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: FunctionOptions<SETTINGS> & {
         
     | 
| 
       26 
     | 
    
         
            -
                fullResponse?: false;
         
     | 
| 
       27 
     | 
    
         
            -
            }): Promise<string>;
         
     | 
| 
      
 18 
     | 
    
         
            +
            export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: FunctionOptions<SETTINGS>): ModelFunctionPromise<TranscriptionModel<DATA, RESPONSE, SETTINGS>, string, RESPONSE>;
         
     | 
| 
         @@ -1,6 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { executeCall } from "../executeCall.js";
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            /**
         
     | 
| 
      
 3 
     | 
    
         
            +
             * Transcribe audio data into text.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * @example
         
     | 
| 
      
 6 
     | 
    
         
            +
             * const data = await fs.promises.readFile("data/test.mp3");
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * const transcription = await transcribe(
         
     | 
| 
      
 9 
     | 
    
         
            +
             *   new OpenAITranscriptionModel({ model: "whisper-1" }),
         
     | 
| 
      
 10 
     | 
    
         
            +
             *   {
         
     | 
| 
      
 11 
     | 
    
         
            +
             *     type: "mp3",
         
     | 
| 
      
 12 
     | 
    
         
            +
             *     data,
         
     | 
| 
      
 13 
     | 
    
         
            +
             *   }
         
     | 
| 
      
 14 
     | 
    
         
            +
             * );
         
     | 
| 
      
 15 
     | 
    
         
            +
             */
         
     | 
| 
      
 16 
     | 
    
         
            +
            export function transcribe(model, data, options) {
         
     | 
| 
      
 17 
     | 
    
         
            +
                return executeCall({
         
     | 
| 
       4 
18 
     | 
    
         
             
                    model,
         
     | 
| 
       5 
19 
     | 
    
         
             
                    options,
         
     | 
| 
       6 
20 
     | 
    
         
             
                    generateResponse: (options) => model.generateTranscriptionResponse(data, options),
         
     | 
| 
         @@ -36,11 +50,4 @@ export async function transcribe(model, data, options) { 
     | 
|
| 
       36 
50 
     | 
    
         
             
                        transcription: output,
         
     | 
| 
       37 
51 
     | 
    
         
             
                    }),
         
     | 
| 
       38 
52 
     | 
    
         
             
                });
         
     | 
| 
       39 
     | 
    
         
            -
                return options?.fullResponse === true
         
     | 
| 
       40 
     | 
    
         
            -
                    ? {
         
     | 
| 
       41 
     | 
    
         
            -
                        transcription: result.output,
         
     | 
| 
       42 
     | 
    
         
            -
                        response: result.response,
         
     | 
| 
       43 
     | 
    
         
            -
                        metadata: result.metadata,
         
     | 
| 
       44 
     | 
    
         
            -
                    }
         
     | 
| 
       45 
     | 
    
         
            -
                    : result.output;
         
     | 
| 
       46 
53 
     | 
    
         
             
            }
         
     | 
| 
         @@ -64,13 +64,13 @@ export declare class CohereTextEmbeddingModel extends AbstractModel<CohereTextEm 
     | 
|
| 
       64 
64 
     | 
    
         
             
                callAPI(texts: Array<string>, options?: FunctionOptions<CohereTextEmbeddingModelSettings>): Promise<CohereTextEmbeddingResponse>;
         
     | 
| 
       65 
65 
     | 
    
         
             
                generateEmbeddingResponse(texts: string[], options?: FunctionOptions<CohereTextEmbeddingModelSettings>): Promise<{
         
     | 
| 
       66 
66 
     | 
    
         
             
                    texts: string[];
         
     | 
| 
       67 
     | 
    
         
            -
                    embeddings: number[][];
         
     | 
| 
       68 
67 
     | 
    
         
             
                    id: string;
         
     | 
| 
       69 
68 
     | 
    
         
             
                    meta: {
         
     | 
| 
       70 
69 
     | 
    
         
             
                        api_version: {
         
     | 
| 
       71 
70 
     | 
    
         
             
                            version: string;
         
     | 
| 
       72 
71 
     | 
    
         
             
                        };
         
     | 
| 
       73 
72 
     | 
    
         
             
                    };
         
     | 
| 
      
 73 
     | 
    
         
            +
                    embeddings: number[][];
         
     | 
| 
       74 
74 
     | 
    
         
             
                }>;
         
     | 
| 
       75 
75 
     | 
    
         
             
                extractEmbeddings(response: CohereTextEmbeddingResponse): number[][];
         
     | 
| 
       76 
76 
     | 
    
         
             
                withSettings(additionalSettings: Partial<CohereTextEmbeddingModelSettings>): this;
         
     | 
| 
         @@ -98,22 +98,22 @@ declare const cohereTextEmbeddingResponseSchema: z.ZodObject<{ 
     | 
|
| 
       98 
98 
     | 
    
         
             
                }>;
         
     | 
| 
       99 
99 
     | 
    
         
             
            }, "strip", z.ZodTypeAny, {
         
     | 
| 
       100 
100 
     | 
    
         
             
                texts: string[];
         
     | 
| 
       101 
     | 
    
         
            -
                embeddings: number[][];
         
     | 
| 
       102 
101 
     | 
    
         
             
                id: string;
         
     | 
| 
       103 
102 
     | 
    
         
             
                meta: {
         
     | 
| 
       104 
103 
     | 
    
         
             
                    api_version: {
         
     | 
| 
       105 
104 
     | 
    
         
             
                        version: string;
         
     | 
| 
       106 
105 
     | 
    
         
             
                    };
         
     | 
| 
       107 
106 
     | 
    
         
             
                };
         
     | 
| 
      
 107 
     | 
    
         
            +
                embeddings: number[][];
         
     | 
| 
       108 
108 
     | 
    
         
             
            }, {
         
     | 
| 
       109 
109 
     | 
    
         
             
                texts: string[];
         
     | 
| 
       110 
     | 
    
         
            -
                embeddings: number[][];
         
     | 
| 
       111 
110 
     | 
    
         
             
                id: string;
         
     | 
| 
       112 
111 
     | 
    
         
             
                meta: {
         
     | 
| 
       113 
112 
     | 
    
         
             
                    api_version: {
         
     | 
| 
       114 
113 
     | 
    
         
             
                        version: string;
         
     | 
| 
       115 
114 
     | 
    
         
             
                    };
         
     | 
| 
       116 
115 
     | 
    
         
             
                };
         
     | 
| 
      
 116 
     | 
    
         
            +
                embeddings: number[][];
         
     | 
| 
       117 
117 
     | 
    
         
             
            }>;
         
     | 
| 
       118 
118 
     | 
    
         
             
            export type CohereTextEmbeddingResponse = z.infer<typeof cohereTextEmbeddingResponseSchema>;
         
     | 
| 
       119 
119 
     | 
    
         
             
            export {};
         
     | 
    
        package/package.json
    CHANGED
    
    
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { ExecuteToolFinishedEvent, ExecuteToolStartedEvent } from "tool/ExecuteToolEvent.js";
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { ExecuteToolFinishedEvent, ExecuteToolStartedEvent } from "../tool/ExecuteToolEvent.js";
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { ModelCallFinishedEvent, ModelCallStartedEvent } from "../model-function/ModelCallEvent.js";
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { IdMetadata } from "./IdMetadata.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            export type RunFunctionEvent = RunFunctionStartedEvent | RunFunctionFinishedEvent;
         
     | 
    
        package/tool/executeTool.cjs
    CHANGED
    
    | 
         @@ -1,14 +1,56 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            "use strict";
         
     | 
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
     | 
    
         
            -
            exports.executeTool = void 0;
         
     | 
| 
      
 3 
     | 
    
         
            +
            exports.executeTool = exports.ExecuteToolPromise = void 0;
         
     | 
| 
       4 
4 
     | 
    
         
             
            const nanoid_1 = require("nanoid");
         
     | 
| 
       5 
5 
     | 
    
         
             
            const RunFunctionEventSource_js_1 = require("../run/RunFunctionEventSource.cjs");
         
     | 
| 
       6 
6 
     | 
    
         
             
            const DurationMeasurement_js_1 = require("../util/DurationMeasurement.cjs");
         
     | 
| 
       7 
7 
     | 
    
         
             
            const AbortError_js_1 = require("../util/api/AbortError.cjs");
         
     | 
| 
       8 
8 
     | 
    
         
             
            const runSafe_js_1 = require("../util/runSafe.cjs");
         
     | 
| 
       9 
9 
     | 
    
         
             
            const ToolExecutionError_js_1 = require("./ToolExecutionError.cjs");
         
     | 
| 
      
 10 
     | 
    
         
            +
            class ExecuteToolPromise extends Promise {
         
     | 
| 
      
 11 
     | 
    
         
            +
                constructor(fullPromise) {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    super((resolve) => {
         
     | 
| 
      
 13 
     | 
    
         
            +
                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
      
 14 
     | 
    
         
            +
                        resolve(null); // we override the resolve function
         
     | 
| 
      
 15 
     | 
    
         
            +
                    });
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Object.defineProperty(this, "fullPromise", {
         
     | 
| 
      
 17 
     | 
    
         
            +
                        enumerable: true,
         
     | 
| 
      
 18 
     | 
    
         
            +
                        configurable: true,
         
     | 
| 
      
 19 
     | 
    
         
            +
                        writable: true,
         
     | 
| 
      
 20 
     | 
    
         
            +
                        value: fullPromise
         
     | 
| 
      
 21 
     | 
    
         
            +
                    });
         
     | 
| 
      
 22 
     | 
    
         
            +
                    Object.defineProperty(this, "outputPromise", {
         
     | 
| 
      
 23 
     | 
    
         
            +
                        enumerable: true,
         
     | 
| 
      
 24 
     | 
    
         
            +
                        configurable: true,
         
     | 
| 
      
 25 
     | 
    
         
            +
                        writable: true,
         
     | 
| 
      
 26 
     | 
    
         
            +
                        value: void 0
         
     | 
| 
      
 27 
     | 
    
         
            +
                    });
         
     | 
| 
      
 28 
     | 
    
         
            +
                    this.outputPromise = fullPromise.then((result) => result.output);
         
     | 
| 
      
 29 
     | 
    
         
            +
                }
         
     | 
| 
      
 30 
     | 
    
         
            +
                asFullResponse() {
         
     | 
| 
      
 31 
     | 
    
         
            +
                    return this.fullPromise;
         
     | 
| 
      
 32 
     | 
    
         
            +
                }
         
     | 
| 
      
 33 
     | 
    
         
            +
                then(onfulfilled, onrejected) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                    return this.outputPromise.then(onfulfilled, onrejected);
         
     | 
| 
      
 35 
     | 
    
         
            +
                }
         
     | 
| 
      
 36 
     | 
    
         
            +
                catch(onrejected) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    return this.outputPromise.catch(onrejected);
         
     | 
| 
      
 38 
     | 
    
         
            +
                }
         
     | 
| 
      
 39 
     | 
    
         
            +
                finally(onfinally) {
         
     | 
| 
      
 40 
     | 
    
         
            +
                    return this.outputPromise.finally(onfinally);
         
     | 
| 
      
 41 
     | 
    
         
            +
                }
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
            exports.ExecuteToolPromise = ExecuteToolPromise;
         
     | 
| 
      
 44 
     | 
    
         
            +
            /**
         
     | 
| 
      
 45 
     | 
    
         
            +
             * `executeTool` directly executes a tool with the given parameters.
         
     | 
| 
      
 46 
     | 
    
         
            +
             */
         
     | 
| 
       10 
47 
     | 
    
         
             
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
            function executeTool(tool, input, options) {
         
     | 
| 
      
 49 
     | 
    
         
            +
                return new ExecuteToolPromise(doExecuteTool(tool, input, options));
         
     | 
| 
      
 50 
     | 
    
         
            +
            }
         
     | 
| 
      
 51 
     | 
    
         
            +
            exports.executeTool = executeTool;
         
     | 
| 
      
 52 
     | 
    
         
            +
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
      
 53 
     | 
    
         
            +
            async function doExecuteTool(tool, input, options) {
         
     | 
| 
       12 
54 
     | 
    
         
             
                const run = options?.run;
         
     | 
| 
       13 
55 
     | 
    
         
             
                const eventSource = new RunFunctionEventSource_js_1.RunFunctionEventSource({
         
     | 
| 
       14 
56 
     | 
    
         
             
                    observers: run?.observers ?? [],
         
     | 
| 
         @@ -70,11 +112,8 @@ async function executeTool(tool, input, options) { 
     | 
|
| 
       70 
112 
     | 
    
         
             
                    input,
         
     | 
| 
       71 
113 
     | 
    
         
             
                    output,
         
     | 
| 
       72 
114 
     | 
    
         
             
                });
         
     | 
| 
       73 
     | 
    
         
            -
                return  
     | 
| 
       74 
     | 
    
         
            -
                     
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                    }
         
     | 
| 
       78 
     | 
    
         
            -
                    : output;
         
     | 
| 
      
 115 
     | 
    
         
            +
                return {
         
     | 
| 
      
 116 
     | 
    
         
            +
                    output,
         
     | 
| 
      
 117 
     | 
    
         
            +
                    metadata: finishMetadata,
         
     | 
| 
      
 118 
     | 
    
         
            +
                };
         
     | 
| 
       79 
119 
     | 
    
         
             
            }
         
     | 
| 
       80 
     | 
    
         
            -
            exports.executeTool = executeTool;
         
     | 
    
        package/tool/executeTool.d.ts
    CHANGED
    
    | 
         @@ -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 
     | 
| 
       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"]>>;
         
     | 
    
        package/tool/executeTool.js
    CHANGED
    
    | 
         @@ -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 
     | 
    
         
            -
             
     | 
| 
      
 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  
     | 
| 
       71 
     | 
    
         
            -
                     
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                    }
         
     | 
| 
       75 
     | 
    
         
            -
                    : output;
         
     | 
| 
      
 110 
     | 
    
         
            +
                return {
         
     | 
| 
      
 111 
     | 
    
         
            +
                    output,
         
     | 
| 
      
 112 
     | 
    
         
            +
                    metadata: finishMetadata,
         
     | 
| 
      
 113 
     | 
    
         
            +
                };
         
     | 
| 
       76 
114 
     | 
    
         
             
            }
         
     | 
    
        package/tool/index.cjs
    CHANGED
    
    | 
         @@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { 
     | 
|
| 
       14 
14 
     | 
    
         
             
                for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
         
     | 
| 
       15 
15 
     | 
    
         
             
            };
         
     | 
| 
       16 
16 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
      
 17 
     | 
    
         
            +
            __exportStar(require("./ExecuteToolEvent.cjs"), exports);
         
     | 
| 
       17 
18 
     | 
    
         
             
            __exportStar(require("./InvalidToolNameError.cjs"), exports);
         
     | 
| 
       18 
19 
     | 
    
         
             
            __exportStar(require("./NoSuchToolError.cjs"), exports);
         
     | 
| 
       19 
20 
     | 
    
         
             
            __exportStar(require("./Tool.cjs"), exports);
         
     |