@workglow/ai-provider 0.0.108 → 0.0.109

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 (82) hide show
  1. package/README.md +1 -1
  2. package/dist/{HFT_JobRunFns-c40ex37f.js → HFT_JobRunFns-n802m09b.js} +5 -3
  3. package/dist/{HFT_JobRunFns-c40ex37f.js.map → HFT_JobRunFns-n802m09b.js.map} +1 -1
  4. package/dist/anthropic/AnthropicProvider.d.ts +3 -1
  5. package/dist/anthropic/AnthropicProvider.d.ts.map +1 -1
  6. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts +2 -1
  7. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
  8. package/dist/anthropic/index.js +16 -2
  9. package/dist/anthropic/index.js.map +3 -3
  10. package/dist/google-gemini/GoogleGeminiProvider.d.ts +3 -1
  11. package/dist/google-gemini/GoogleGeminiProvider.d.ts.map +1 -1
  12. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts +2 -1
  13. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
  14. package/dist/google-gemini/index.js +16 -2
  15. package/dist/google-gemini/index.js.map +3 -3
  16. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts +5 -3
  17. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
  18. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +80 -1
  19. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  20. package/dist/hf-transformers/index.js +9 -7
  21. package/dist/hf-transformers/index.js.map +2 -2
  22. package/dist/{index-5qjdc78z.js → index-60ev6k93.js} +4 -1
  23. package/dist/{index-5qjdc78z.js.map → index-60ev6k93.js.map} +3 -3
  24. package/dist/{index-5hjgs1z7.js → index-8651nz8y.js} +4 -1
  25. package/dist/{index-5hjgs1z7.js.map → index-8651nz8y.js.map} +3 -3
  26. package/dist/index-m0r2hvfz.js +57 -0
  27. package/dist/index-m0r2hvfz.js.map +10 -0
  28. package/dist/{index-drcnh4z5.js → index-q2t627d5.js} +4 -1
  29. package/dist/{index-drcnh4z5.js.map → index-q2t627d5.js.map} +3 -3
  30. package/dist/{index-14pbwsc9.js → index-tp5s7355.js} +4 -1
  31. package/dist/{index-14pbwsc9.js.map → index-tp5s7355.js.map} +3 -3
  32. package/dist/{index-aef54vq3.js → index-v72vr07f.js} +4 -1
  33. package/dist/{index-aef54vq3.js.map → index-v72vr07f.js.map} +3 -3
  34. package/dist/{index-xc6m9mcp.js → index-wr57rwyx.js} +4 -1
  35. package/dist/{index-xc6m9mcp.js.map → index-wr57rwyx.js.map} +3 -3
  36. package/dist/{index-4fr8p4gy.js → index-y0yn7yrm.js} +66 -18
  37. package/dist/index-y0yn7yrm.js.map +10 -0
  38. package/dist/{index-zqq3kw0n.js → index-zjd89edn.js} +58 -55
  39. package/dist/index-zjd89edn.js.map +11 -0
  40. package/dist/index.js +15 -12
  41. package/dist/index.js.map +3 -3
  42. package/dist/provider-hf-inference/HfInferenceProvider.d.ts +3 -1
  43. package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
  44. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts +2 -1
  45. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
  46. package/dist/provider-hf-inference/index.js +17 -3
  47. package/dist/provider-hf-inference/index.js.map +3 -3
  48. package/dist/provider-llamacpp/LlamaCppProvider.d.ts +3 -1
  49. package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
  50. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts +2 -1
  51. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
  52. package/dist/provider-llamacpp/index.js +32 -2
  53. package/dist/provider-llamacpp/index.js.map +3 -3
  54. package/dist/provider-ollama/OllamaProvider.d.ts +3 -1
  55. package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
  56. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +2 -1
  57. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
  58. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +2 -1
  59. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
  60. package/dist/provider-ollama/index.browser.js +35 -1
  61. package/dist/provider-ollama/index.browser.js.map +4 -4
  62. package/dist/provider-ollama/index.js +33 -2
  63. package/dist/provider-ollama/index.js.map +3 -3
  64. package/dist/provider-openai/OpenAiProvider.d.ts +3 -1
  65. package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
  66. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +2 -1
  67. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
  68. package/dist/provider-openai/index.js +16 -2
  69. package/dist/provider-openai/index.js.map +3 -3
  70. package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts +3 -1
  71. package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts.map +1 -1
  72. package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts +56 -1
  73. package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
  74. package/dist/tf-mediapipe/index.js +20 -1
  75. package/dist/tf-mediapipe/index.js.map +4 -4
  76. package/package.json +18 -19
  77. package/dist/hf-transformers/common/HFT_CallbackStatus.d.ts +0 -36
  78. package/dist/hf-transformers/common/HFT_CallbackStatus.d.ts.map +0 -1
  79. package/dist/index-4fr8p4gy.js.map +0 -10
  80. package/dist/index-cejxxqcz.js +0 -55
  81. package/dist/index-cejxxqcz.js.map +0 -10
  82. package/dist/index-zqq3kw0n.js.map +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../src/provider-ollama/OllamaProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IAEvB,QAAQ,CAAC,SAAS,iHAMP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
1
+ {"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../src/provider-ollama/OllamaProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IACvB,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,kIAOP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
6
+ import type { AiProviderRunFn, AiProviderStreamFn, ModelInfoTaskInput, ModelInfoTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
7
7
  import type { OllamaModelConfig } from "./Ollama_ModelSchema";
8
8
  export declare const Ollama_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
9
9
  export declare const Ollama_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OllamaModelConfig>;
@@ -14,6 +14,7 @@ export declare const Ollama_TextRewriter_Stream: AiProviderStreamFn<TextRewriter
14
14
  export declare const Ollama_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, OllamaModelConfig>;
15
15
  export declare const Ollama_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
16
16
  export declare const Ollama_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
17
+ export declare const Ollama_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, OllamaModelConfig>;
17
18
  export declare const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>;
18
19
  export declare const OLLAMA_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>;
19
20
  //# sourceMappingURL=Ollama_JobRunFns.browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ollama_JobRunFns.browser.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}
1
+ {"version":3,"file":"Ollama_JobRunFns.browser.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAqClB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAOrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
6
+ import type { AiProviderRunFn, AiProviderStreamFn, ModelInfoTaskInput, ModelInfoTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
7
7
  import type { OllamaModelConfig } from "./Ollama_ModelSchema";
8
8
  export declare const Ollama_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
9
9
  export declare const Ollama_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OllamaModelConfig>;
@@ -14,6 +14,7 @@ export declare const Ollama_TextRewriter_Stream: AiProviderStreamFn<TextRewriter
14
14
  export declare const Ollama_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, OllamaModelConfig>;
15
15
  export declare const Ollama_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
16
16
  export declare const Ollama_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
17
+ export declare const Ollama_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, OllamaModelConfig>;
17
18
  export declare const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>;
18
19
  export declare const OLLAMA_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>;
19
20
  //# sourceMappingURL=Ollama_JobRunFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ollama_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}
1
+ {"version":3,"file":"Ollama_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAqClB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAOrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}
@@ -284,7 +284,37 @@ var Ollama_ToolCalling_Stream = async function* (input, model, signal) {
284
284
  signal.removeEventListener("abort", onAbort);
285
285
  }
286
286
  };
287
+ var Ollama_ModelInfo = async (input, model) => {
288
+ const client = await getClient(model);
289
+ const modelName = getModelName(model);
290
+ let is_cached = false;
291
+ let is_loaded = false;
292
+ let file_sizes = null;
293
+ try {
294
+ const showResponse = await client.show({ model: modelName });
295
+ is_cached = true;
296
+ const size = showResponse.size;
297
+ if (size != null) {
298
+ file_sizes = { model: size };
299
+ }
300
+ } catch {}
301
+ try {
302
+ const psResponse = await client.ps();
303
+ is_loaded = psResponse.models.some((m) => m.name === modelName);
304
+ } catch {}
305
+ return {
306
+ model: input.model,
307
+ is_local: true,
308
+ is_remote: false,
309
+ supports_browser: true,
310
+ supports_node: true,
311
+ is_cached,
312
+ is_loaded,
313
+ file_sizes
314
+ };
315
+ };
287
316
  var OLLAMA_TASKS = {
317
+ ModelInfoTask: Ollama_ModelInfo,
288
318
  TextGenerationTask: Ollama_TextGeneration,
289
319
  TextEmbeddingTask: Ollama_TextEmbedding,
290
320
  TextRewriterTask: Ollama_TextRewriter,
@@ -354,7 +384,10 @@ import {
354
384
  } from "@workglow/ai";
355
385
  class OllamaProvider extends AiProvider {
356
386
  name = OLLAMA;
387
+ isLocal = true;
388
+ supportsBrowser = true;
357
389
  taskTypes = [
390
+ "ModelInfoTask",
358
391
  "TextGenerationTask",
359
392
  "TextEmbeddingTask",
360
393
  "TextRewriterTask",
@@ -383,6 +416,7 @@ export {
383
416
  Ollama_TextGeneration_Stream,
384
417
  Ollama_TextGeneration,
385
418
  Ollama_TextEmbedding,
419
+ Ollama_ModelInfo,
386
420
  OllamaProvider,
387
421
  OllamaModelSchema,
388
422
  OllamaModelRecordSchema,
@@ -394,4 +428,4 @@ export {
394
428
  OLLAMA
395
429
  };
396
430
 
397
- //# debugId=1CE9CA5421CE8F4464756E2164756E21
431
+ //# debugId=DA94586CBAE601CD64756E2164756E21
@@ -3,12 +3,12 @@
3
3
  "sources": ["../src/provider-ollama/common/Ollama_Constants.ts", "../src/provider-ollama/common/Ollama_JobRunFns.browser.ts", "../src/provider-ollama/common/Ollama_ModelSchema.ts", "../src/provider-ollama/Ollama_Worker.browser.ts", "../src/provider-ollama/OllamaProvider.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const OLLAMA = \"OLLAMA\";\nexport const OLLAMA_DEFAULT_BASE_URL = \"http://localhost:11434\";\n",
6
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { parsePartialJson } from \"@workglow/util\";\nimport { OLLAMA_DEFAULT_BASE_URL } from \"./Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./Ollama_ModelSchema\";\n\nlet _sdk: typeof import(\"ollama/browser\") | undefined;\nasync function loadOllamaSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"ollama/browser\");\n } catch {\n throw new Error(\"ollama is required for Ollama tasks. Install it with: bun add ollama\");\n }\n }\n return _sdk.Ollama;\n}\n\nasync function getClient(model: OllamaModelConfig | undefined) {\n const Ollama = await loadOllamaSDK();\n const host = model?.provider_config?.base_url || OLLAMA_DEFAULT_BASE_URL;\n return new Ollama({ host });\n}\n\nfunction getModelName(model: OllamaModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const Ollama_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n });\n\n update_progress(100, \"Completed Ollama text generation\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n\n const response = await client.embed({\n model: modelName,\n input: texts,\n });\n\n update_progress(100, \"Completed Ollama text embedding\");\n\n if (Array.isArray(input.text)) {\n return {\n vector: response.embeddings.map((e) => new Float32Array(e)),\n };\n }\n return { vector: new Float32Array(response.embeddings[0]) };\n};\n\nexport const Ollama_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text rewriting\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text summarization\");\n return { text: response.message.content };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Ollama_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapOllamaTools(tools: ReadonlyArray<ToolDefinition>) {\n return tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n}\n\nexport const Ollama_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const response = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n });\n\n const text = response.message.content ?? \"\";\n const toolCalls: Record<string, unknown> = {};\n (response.message.tool_calls ?? []).forEach((tc: any, index: number) => {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${index}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n });\n\n update_progress(100, \"Completed Ollama tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Ollama_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const stream = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n\n let accumulatedText = \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n accumulatedText += delta;\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n\n const chunkToolCalls = (chunk.message as any).tool_calls;\n if (Array.isArray(chunkToolCalls) && chunkToolCalls.length > 0) {\n for (const tc of chunkToolCalls) {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${callIndex++}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n }\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...toolCalls } };\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>> = {\n TextGenerationTask: Ollama_TextGeneration,\n TextEmbeddingTask: Ollama_TextEmbedding,\n TextRewriterTask: Ollama_TextRewriter,\n TextSummaryTask: Ollama_TextSummary,\n ToolCallingTask: Ollama_ToolCalling,\n};\n\nexport const OLLAMA_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, OllamaModelConfig>\n> = {\n TextGenerationTask: Ollama_TextGeneration_Stream,\n TextRewriterTask: Ollama_TextRewriter_Stream,\n TextSummaryTask: Ollama_TextSummary_Stream,\n ToolCallingTask: Ollama_ToolCalling_Stream,\n};\n",
6
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { parsePartialJson } from \"@workglow/util\";\nimport { OLLAMA_DEFAULT_BASE_URL } from \"./Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./Ollama_ModelSchema\";\n\nlet _sdk: typeof import(\"ollama/browser\") | undefined;\nasync function loadOllamaSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"ollama/browser\");\n } catch {\n throw new Error(\"ollama is required for Ollama tasks. Install it with: bun add ollama\");\n }\n }\n return _sdk.Ollama;\n}\n\nasync function getClient(model: OllamaModelConfig | undefined) {\n const Ollama = await loadOllamaSDK();\n const host = model?.provider_config?.base_url || OLLAMA_DEFAULT_BASE_URL;\n return new Ollama({ host });\n}\n\nfunction getModelName(model: OllamaModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const Ollama_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n });\n\n update_progress(100, \"Completed Ollama text generation\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n\n const response = await client.embed({\n model: modelName,\n input: texts,\n });\n\n update_progress(100, \"Completed Ollama text embedding\");\n\n if (Array.isArray(input.text)) {\n return {\n vector: response.embeddings.map((e) => new Float32Array(e)),\n };\n }\n return { vector: new Float32Array(response.embeddings[0]) };\n};\n\nexport const Ollama_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text rewriting\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text summarization\");\n return { text: response.message.content };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Ollama_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapOllamaTools(tools: ReadonlyArray<ToolDefinition>) {\n return tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n}\n\nexport const Ollama_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const response = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n });\n\n const text = response.message.content ?? \"\";\n const toolCalls: Record<string, unknown> = {};\n (response.message.tool_calls ?? []).forEach((tc: any, index: number) => {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${index}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n });\n\n update_progress(100, \"Completed Ollama tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Ollama_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const stream = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n\n let accumulatedText = \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n accumulatedText += delta;\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n\n const chunkToolCalls = (chunk.message as any).tool_calls;\n if (Array.isArray(chunkToolCalls) && chunkToolCalls.length > 0) {\n for (const tc of chunkToolCalls) {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${callIndex++}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n }\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...toolCalls } };\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Model info\n// ========================================================================\n\nexport const Ollama_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n OllamaModelConfig\n> = async (input, model) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n let is_cached = false;\n let is_loaded = false;\n let file_sizes: Record<string, number> | null = null;\n\n try {\n const showResponse = await client.show({ model: modelName });\n is_cached = true;\n const size = (showResponse as any).size as number | undefined;\n if (size != null) {\n file_sizes = { model: size };\n }\n } catch {\n // Model not available on server\n }\n\n try {\n const psResponse = await client.ps();\n is_loaded = psResponse.models.some((m: any) => m.name === modelName);\n } catch {\n // ps() not available or failed\n }\n\n return {\n model: input.model,\n is_local: true,\n is_remote: false,\n supports_browser: true,\n supports_node: true,\n is_cached,\n is_loaded,\n file_sizes,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>> = {\n ModelInfoTask: Ollama_ModelInfo,\n TextGenerationTask: Ollama_TextGeneration,\n TextEmbeddingTask: Ollama_TextEmbedding,\n TextRewriterTask: Ollama_TextRewriter,\n TextSummaryTask: Ollama_TextSummary,\n ToolCallingTask: Ollama_ToolCalling,\n};\n\nexport const OLLAMA_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, OllamaModelConfig>\n> = {\n TextGenerationTask: Ollama_TextGeneration_Stream,\n TextRewriterTask: Ollama_TextRewriter_Stream,\n TextSummaryTask: Ollama_TextSummary_Stream,\n ToolCallingTask: Ollama_ToolCalling_Stream,\n};\n",
7
7
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { OLLAMA, OLLAMA_DEFAULT_BASE_URL } from \"./Ollama_Constants\";\n\nexport const OllamaModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: OLLAMA,\n description: \"Discriminator: Ollama local LLM server.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Ollama-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description: \"The Ollama model identifier (e.g., 'llama3.2', 'nomic-embed-text').\",\n },\n base_url: {\n type: \"string\",\n description: \"Base URL for the Ollama server.\",\n default: OLLAMA_DEFAULT_BASE_URL,\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const OllamaModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...OllamaModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...OllamaModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type OllamaModelRecord = FromSchema<typeof OllamaModelRecordSchema>;\n\nexport const OllamaModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...OllamaModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...OllamaModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type OllamaModelConfig = FromSchema<typeof OllamaModelConfigSchema>;\n",
8
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { OLLAMA_STREAM_TASKS, OLLAMA_TASKS } from \"./common/Ollama_JobRunFns.browser\";\nimport { OllamaProvider } from \"./OllamaProvider\";\n\nexport function OLLAMA_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new OllamaProvider(OLLAMA_TASKS, OLLAMA_STREAM_TASKS).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n console.log(\"OLLAMA_WORKER_JOBRUN registered\");\n}\n",
9
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { OLLAMA } from \"./common/Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./common/Ollama_ModelSchema\";\n\n/**\n * AI provider for Ollama local LLM server.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Ollama API using the `ollama` SDK.\n *\n * Ollama runs locally and does not require an API key -- only a `base_url`\n * (defaults to `http://localhost:11434`).\n *\n * Task run functions are injected via the constructor so that the `ollama` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new OllamaProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_ollama.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { OLLAMA_TASKS } from \"@workglow/ai-provider/ollama\";\n * await new OllamaProvider(OLLAMA_TASKS).register({ mode: \"inline\" });\n * ```\n */\nexport class OllamaProvider extends AiProvider<OllamaModelConfig> {\n readonly name = OLLAMA;\n\n readonly taskTypes = [\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, OllamaModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
9
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { OLLAMA } from \"./common/Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./common/Ollama_ModelSchema\";\n\n/**\n * AI provider for Ollama local LLM server.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Ollama API using the `ollama` SDK.\n *\n * Ollama runs locally and does not require an API key -- only a `base_url`\n * (defaults to `http://localhost:11434`).\n *\n * Task run functions are injected via the constructor so that the `ollama` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new OllamaProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_ollama.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { OLLAMA_TASKS } from \"@workglow/ai-provider/ollama\";\n * await new OllamaProvider(OLLAMA_TASKS).register({ mode: \"inline\" });\n * ```\n */\nexport class OllamaProvider extends AiProvider<OllamaModelConfig> {\n readonly name = OLLAMA;\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, OllamaModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
10
10
  ],
11
- "mappings": "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",
12
- "debugId": "1CE9CA5421CE8F4464756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "DA94586CBAE601CD64756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -5,7 +5,7 @@ import {
5
5
  OllamaModelRecordSchema,
6
6
  OllamaModelSchema,
7
7
  OllamaProvider
8
- } from "../index-14pbwsc9.js";
8
+ } from "../index-tp5s7355.js";
9
9
  import {
10
10
  __require
11
11
  } from "../index-6j5pq722.js";
@@ -288,7 +288,37 @@ var Ollama_ToolCalling_Stream = async function* (input, model, signal) {
288
288
  signal.removeEventListener("abort", onAbort);
289
289
  }
290
290
  };
291
+ var Ollama_ModelInfo = async (input, model) => {
292
+ const client = await getClient(model);
293
+ const modelName = getModelName(model);
294
+ let is_cached = false;
295
+ let is_loaded = false;
296
+ let file_sizes = null;
297
+ try {
298
+ const showResponse = await client.show({ model: modelName });
299
+ is_cached = true;
300
+ const size = showResponse.size;
301
+ if (size != null) {
302
+ file_sizes = { model: size };
303
+ }
304
+ } catch {}
305
+ try {
306
+ const psResponse = await client.ps();
307
+ is_loaded = psResponse.models.some((m) => m.name === modelName);
308
+ } catch {}
309
+ return {
310
+ model: input.model,
311
+ is_local: true,
312
+ is_remote: false,
313
+ supports_browser: true,
314
+ supports_node: true,
315
+ is_cached,
316
+ is_loaded,
317
+ file_sizes
318
+ };
319
+ };
291
320
  var OLLAMA_TASKS = {
321
+ ModelInfoTask: Ollama_ModelInfo,
292
322
  TextGenerationTask: Ollama_TextGeneration,
293
323
  TextEmbeddingTask: Ollama_TextEmbedding,
294
324
  TextRewriterTask: Ollama_TextRewriter,
@@ -319,6 +349,7 @@ export {
319
349
  Ollama_TextGeneration_Stream,
320
350
  Ollama_TextGeneration,
321
351
  Ollama_TextEmbedding,
352
+ Ollama_ModelInfo,
322
353
  OllamaProvider,
323
354
  OllamaModelSchema,
324
355
  OllamaModelRecordSchema,
@@ -330,4 +361,4 @@ export {
330
361
  OLLAMA
331
362
  };
332
363
 
333
- //# debugId=84E58DFA1D8C596764756E2164756E21
364
+ //# debugId=5E71804F710E42F364756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/provider-ollama/common/Ollama_JobRunFns.ts", "../src/provider-ollama/Ollama_Worker.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { parsePartialJson } from \"@workglow/util\";\nimport { OLLAMA_DEFAULT_BASE_URL } from \"./Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./Ollama_ModelSchema\";\n\nlet _sdk: typeof import(\"ollama\") | undefined;\nasync function loadOllamaSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"ollama\");\n } catch {\n throw new Error(\"ollama is required for Ollama tasks. Install it with: bun add ollama\");\n }\n }\n return _sdk.Ollama;\n}\n\nasync function getClient(model: OllamaModelConfig | undefined) {\n const Ollama = await loadOllamaSDK();\n const host = model?.provider_config?.base_url || OLLAMA_DEFAULT_BASE_URL;\n return new Ollama({ host });\n}\n\nfunction getModelName(model: OllamaModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const Ollama_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n });\n\n update_progress(100, \"Completed Ollama text generation\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n\n const response = await client.embed({\n model: modelName,\n input: texts,\n });\n\n update_progress(100, \"Completed Ollama text embedding\");\n\n if (Array.isArray(input.text)) {\n return {\n vector: response.embeddings.map((e) => new Float32Array(e)),\n };\n }\n return { vector: new Float32Array(response.embeddings[0]) };\n};\n\nexport const Ollama_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text rewriting\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text summarization\");\n return { text: response.message.content };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Ollama_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapOllamaTools(tools: ReadonlyArray<ToolDefinition>) {\n return tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n}\n\nexport const Ollama_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const response = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n });\n\n const text = response.message.content ?? \"\";\n const toolCalls: Record<string, unknown> = {};\n (response.message.tool_calls ?? []).forEach((tc: any, index: number) => {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${index}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n });\n\n update_progress(100, \"Completed Ollama tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Ollama_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const stream = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n\n let accumulatedText = \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n accumulatedText += delta;\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n\n const chunkToolCalls = (chunk.message as any).tool_calls;\n if (Array.isArray(chunkToolCalls) && chunkToolCalls.length > 0) {\n for (const tc of chunkToolCalls) {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${callIndex++}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n }\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...toolCalls } };\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>> = {\n TextGenerationTask: Ollama_TextGeneration,\n TextEmbeddingTask: Ollama_TextEmbedding,\n TextRewriterTask: Ollama_TextRewriter,\n TextSummaryTask: Ollama_TextSummary,\n ToolCallingTask: Ollama_ToolCalling,\n};\n\nexport const OLLAMA_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, OllamaModelConfig>\n> = {\n TextGenerationTask: Ollama_TextGeneration_Stream,\n TextRewriterTask: Ollama_TextRewriter_Stream,\n TextSummaryTask: Ollama_TextSummary_Stream,\n ToolCallingTask: Ollama_ToolCalling_Stream,\n};\n",
5
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { parsePartialJson } from \"@workglow/util\";\nimport { OLLAMA_DEFAULT_BASE_URL } from \"./Ollama_Constants\";\nimport type { OllamaModelConfig } from \"./Ollama_ModelSchema\";\n\nlet _sdk: typeof import(\"ollama\") | undefined;\nasync function loadOllamaSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"ollama\");\n } catch {\n throw new Error(\"ollama is required for Ollama tasks. Install it with: bun add ollama\");\n }\n }\n return _sdk.Ollama;\n}\n\nasync function getClient(model: OllamaModelConfig | undefined) {\n const Ollama = await loadOllamaSDK();\n const host = model?.provider_config?.base_url || OLLAMA_DEFAULT_BASE_URL;\n return new Ollama({ host });\n}\n\nfunction getModelName(model: OllamaModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const Ollama_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n });\n\n update_progress(100, \"Completed Ollama text generation\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n\n const response = await client.embed({\n model: modelName,\n input: texts,\n });\n\n update_progress(100, \"Completed Ollama text embedding\");\n\n if (Array.isArray(input.text)) {\n return {\n vector: response.embeddings.map((e) => new Float32Array(e)),\n };\n }\n return { vector: new Float32Array(response.embeddings[0]) };\n};\n\nexport const Ollama_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text rewriting\");\n return { text: response.message.content };\n};\n\nexport const Ollama_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n });\n\n update_progress(100, \"Completed Ollama text summarization\");\n return { text: response.message.content };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Ollama_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n options: {\n temperature: input.temperature,\n top_p: input.topP,\n num_predict: input.maxTokens,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\nexport const Ollama_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat({\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapOllamaTools(tools: ReadonlyArray<ToolDefinition>) {\n return tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n}\n\nexport const Ollama_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting Ollama tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const response = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n });\n\n const text = response.message.content ?? \"\";\n const toolCalls: Record<string, unknown> = {};\n (response.message.tool_calls ?? []).forEach((tc: any, index: number) => {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${index}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n });\n\n update_progress(100, \"Completed Ollama tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Ollama_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OllamaModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const messages: Array<{ role: string; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const tools = input.toolChoice === \"none\" ? undefined : mapOllamaTools(input.tools);\n\n const stream = await client.chat({\n model: modelName,\n messages,\n tools,\n options: {\n temperature: input.temperature,\n num_predict: input.maxTokens,\n },\n stream: true,\n });\n\n const onAbort = () => stream.abort();\n signal.addEventListener(\"abort\", onAbort, { once: true });\n\n let accumulatedText = \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n try {\n for await (const chunk of stream) {\n const delta = chunk.message.content;\n if (delta) {\n accumulatedText += delta;\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n\n const chunkToolCalls = (chunk.message as any).tool_calls;\n if (Array.isArray(chunkToolCalls) && chunkToolCalls.length > 0) {\n for (const tc of chunkToolCalls) {\n let parsedInput: Record<string, unknown> = {};\n const fnArgs = tc.function.arguments;\n if (typeof fnArgs === \"string\") {\n try {\n parsedInput = JSON.parse(fnArgs);\n } catch {\n const partial = parsePartialJson(fnArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (fnArgs != null) {\n parsedInput = fnArgs as Record<string, unknown>;\n }\n const id = `call_${callIndex++}`;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n }\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...toolCalls } };\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n};\n\n// ========================================================================\n// Model info\n// ========================================================================\n\nexport const Ollama_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n OllamaModelConfig\n> = async (input, model) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n let is_cached = false;\n let is_loaded = false;\n let file_sizes: Record<string, number> | null = null;\n\n try {\n const showResponse = await client.show({ model: modelName });\n is_cached = true;\n const size = (showResponse as any).size as number | undefined;\n if (size != null) {\n file_sizes = { model: size };\n }\n } catch {\n // Model not available on server\n }\n\n try {\n const psResponse = await client.ps();\n is_loaded = psResponse.models.some((m: any) => m.name === modelName);\n } catch {\n // ps() not available or failed\n }\n\n return {\n model: input.model,\n is_local: true,\n is_remote: false,\n supports_browser: true,\n supports_node: true,\n is_cached,\n is_loaded,\n file_sizes,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>> = {\n ModelInfoTask: Ollama_ModelInfo,\n TextGenerationTask: Ollama_TextGeneration,\n TextEmbeddingTask: Ollama_TextEmbedding,\n TextRewriterTask: Ollama_TextRewriter,\n TextSummaryTask: Ollama_TextSummary,\n ToolCallingTask: Ollama_ToolCalling,\n};\n\nexport const OLLAMA_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, OllamaModelConfig>\n> = {\n TextGenerationTask: Ollama_TextGeneration_Stream,\n TextRewriterTask: Ollama_TextRewriter_Stream,\n TextSummaryTask: Ollama_TextSummary_Stream,\n ToolCallingTask: Ollama_ToolCalling_Stream,\n};\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger, globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { OLLAMA_STREAM_TASKS, OLLAMA_TASKS } from \"./common/Ollama_JobRunFns\";\nimport { OllamaProvider } from \"./OllamaProvider\";\n\nexport function OLLAMA_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new OllamaProvider(OLLAMA_TASKS, OLLAMA_STREAM_TASKS).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"OLLAMA_WORKER_JOBRUN registered\");\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "84E58DFA1D8C596764756E2164756E21",
8
+ "mappings": ";;;;;;;;;;;;AAuBA;AAEA;AAIA,IAAI;AACJ,eAAe,aAAa,GAAG;AAAA,EAC7B,IAAI,CAAC,MAAM;AAAA,IACT,IAAI;AAAA,MACF,OAAO,MAAa;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,IAAI,MAAM,sEAAsE;AAAA;AAAA,EAE1F;AAAA,EACA,OAAO,KAAK;AAAA;AAGd,eAAe,SAAS,CAAC,OAAsC;AAAA,EAC7D,MAAM,SAAS,MAAM,cAAc;AAAA,EACnC,MAAM,OAAO,OAAO,iBAAiB,YAAY;AAAA,EACjD,OAAO,IAAI,OAAO,EAAE,KAAK,CAAC;AAAA;AAG5B,SAAS,YAAY,CAAC,OAA8C;AAAA,EAClE,MAAM,OAAO,OAAO,iBAAiB;AAAA,EACrC,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,wBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,gBAAgB,GAAG,iCAAiC;AAAA,EACpD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,WAAW,MAAM,OAAO,KAAK;AAAA,IACjC,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAO,CAAC;AAAA,IAClD,SAAS;AAAA,MACP,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,MACb,aAAa,MAAM;AAAA,MACnB,mBAAmB,MAAM;AAAA,MACzB,kBAAkB,MAAM;AAAA,IAC1B;AAAA,EACF,CAAC;AAAA,EAED,gBAAgB,KAAK,kCAAkC;AAAA,EACvD,OAAO,EAAE,MAAM,SAAS,QAAQ,QAAQ;AAAA;AAGnC,IAAM,uBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,gBAAgB,GAAG,gCAAgC;AAAA,EACnD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAAA,EAElE,MAAM,WAAW,MAAM,OAAO,MAAM;AAAA,IAClC,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AAAA,EAED,gBAAgB,KAAK,iCAAiC;AAAA,EAEtD,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,OAAO;AAAA,MACL,QAAQ,SAAS,WAAW,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,OAAO,EAAE,QAAQ,IAAI,aAAa,SAAS,WAAW,EAAE,EAAE;AAAA;AAGrD,IAAM,sBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,gBAAgB,GAAG,gCAAgC;AAAA,EACnD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,WAAW,MAAM,OAAO,KAAK;AAAA,IACjC,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAO;AAAA,MACxC,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,IACtC;AAAA,EACF,CAAC;AAAA,EAED,gBAAgB,KAAK,iCAAiC;AAAA,EACtD,OAAO,EAAE,MAAM,SAAS,QAAQ,QAAQ;AAAA;AAGnC,IAAM,qBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,gBAAgB,GAAG,oCAAoC;AAAA,EACvD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,WAAW,MAAM,OAAO,KAAK;AAAA,IACjC,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,IACtC;AAAA,EACF,CAAC;AAAA,EAED,gBAAgB,KAAK,qCAAqC;AAAA,EAC1D,OAAO,EAAE,MAAM,SAAS,QAAQ,QAAQ;AAAA;AAOnC,IAAM,+BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA8D;AAAA,EAC/F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAO,CAAC;AAAA,IAClD,SAAS;AAAA,MACP,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,MACb,aAAa,MAAM;AAAA,MACnB,mBAAmB,MAAM;AAAA,MACzB,kBAAkB,MAAM;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,MAAM,UAAU,MAAM,OAAO,MAAM;AAAA,EACnC,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EACxD,IAAI;AAAA,IACF,iBAAiB,SAAS,QAAQ;AAAA,MAChC,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA8B;AAAA,YAC7D;AAAA,IACA,OAAO,oBAAoB,SAAS,OAAO;AAAA;AAAA;AAIxC,IAAM,6BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA4D;AAAA,EAC7F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAO;AAAA,MACxC,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,MAAM,UAAU,MAAM,OAAO,MAAM;AAAA,EACnC,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EACxD,IAAI;AAAA,IACF,iBAAiB,SAAS,QAAQ;AAAA,MAChC,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA4B;AAAA,YAC3D;AAAA,IACA,OAAO,oBAAoB,SAAS,OAAO;AAAA;AAAA;AAIxC,IAAM,4BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,MAAM,UAAU,MAAM,OAAO,MAAM;AAAA,EACnC,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EACxD,IAAI;AAAA,IACF,iBAAiB,SAAS,QAAQ;AAAA,MAChC,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA2B;AAAA,YAC1D;AAAA,IACA,OAAO,oBAAoB,SAAS,OAAO;AAAA;AAAA;AAQ/C,SAAS,cAAc,CAAC,OAAsC;AAAA,EAC5D,OAAO,MAAM,IAAI,CAAC,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,EAAE;AAAA,MACR,aAAa,qBAAqB,CAAC;AAAA,MACnC,YAAY,EAAE;AAAA,IAChB;AAAA,EACF,EAAE;AAAA;AAGG,IAAM,qBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,gBAAgB,GAAG,8BAA8B;AAAA,EACjD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,WAAqD,CAAC;AAAA,EAC5D,IAAI,MAAM,cAAc;AAAA,IACtB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,MAAM,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAO,CAAC;AAAA,EAErD,MAAM,QAAQ,MAAM,eAAe,SAAS,YAAY,eAAe,MAAM,KAAK;AAAA,EAElF,MAAM,WAAW,MAAM,OAAO,KAAK;AAAA,IACjC,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,aAAa,MAAM;AAAA,MACnB,aAAa,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AAAA,EAED,MAAM,OAAO,SAAS,QAAQ,WAAW;AAAA,EACzC,MAAM,YAAqC,CAAC;AAAA,GAC3C,SAAS,QAAQ,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAS,UAAkB;AAAA,IACtE,IAAI,cAAuC,CAAC;AAAA,IAC5C,MAAM,SAAS,GAAG,SAAS;AAAA,IAC3B,IAAI,OAAO,WAAW,UAAU;AAAA,MAC9B,IAAI;AAAA,QACF,cAAc,KAAK,MAAM,MAAM;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,UAAU,iBAAiB,MAAM;AAAA,QACvC,cAAe,WAAuC,CAAC;AAAA;AAAA,IAE3D,EAAO,SAAI,UAAU,MAAM;AAAA,MACzB,cAAc;AAAA,IAChB;AAAA,IACA,MAAM,KAAK,QAAQ;AAAA,IACnB,UAAU,MAAM,EAAE,IAAI,MAAM,GAAG,SAAS,MAAgB,OAAO,YAAY;AAAA,GAC5E;AAAA,EAED,gBAAgB,KAAK,+BAA+B;AAAA,EACpD,OAAO,EAAE,MAAM,WAAW,qBAAqB,WAAW,MAAM,KAAK,EAAE;AAAA;AAGlE,IAAM,4BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,MAAM,WAAqD,CAAC;AAAA,EAC5D,IAAI,MAAM,cAAc;AAAA,IACtB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,MAAM,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAO,CAAC;AAAA,EAErD,MAAM,QAAQ,MAAM,eAAe,SAAS,YAAY,eAAe,MAAM,KAAK;AAAA,EAElF,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,IAC/B,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,aAAa,MAAM;AAAA,MACnB,aAAa,MAAM;AAAA,IACrB;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,MAAM,UAAU,MAAM,OAAO,MAAM;AAAA,EACnC,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EAExD,IAAI,kBAAkB;AAAA,EACtB,MAAM,YAAqC,CAAC;AAAA,EAC5C,IAAI,YAAY;AAAA,EAEhB,IAAI;AAAA,IACF,iBAAiB,SAAS,QAAQ;AAAA,MAChC,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,mBAAmB;AAAA,QACnB,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7D;AAAA,MAEA,MAAM,iBAAkB,MAAM,QAAgB;AAAA,MAC9C,IAAI,MAAM,QAAQ,cAAc,KAAK,eAAe,SAAS,GAAG;AAAA,QAC9D,WAAW,MAAM,gBAAgB;AAAA,UAC/B,IAAI,cAAuC,CAAC;AAAA,UAC5C,MAAM,SAAS,GAAG,SAAS;AAAA,UAC3B,IAAI,OAAO,WAAW,UAAU;AAAA,YAC9B,IAAI;AAAA,cACF,cAAc,KAAK,MAAM,MAAM;AAAA,cAC/B,MAAM;AAAA,cACN,MAAM,UAAU,iBAAiB,MAAM;AAAA,cACvC,cAAe,WAAuC,CAAC;AAAA;AAAA,UAE3D,EAAO,SAAI,UAAU,MAAM;AAAA,YACzB,cAAc;AAAA,UAChB;AAAA,UACA,MAAM,KAAK,QAAQ;AAAA,UACnB,UAAU,MAAM,EAAE,IAAI,MAAM,GAAG,SAAS,MAAgB,OAAO,YAAY;AAAA,QAC7E;AAAA,QACA,MAAM,EAAE,MAAM,gBAAgB,MAAM,aAAa,aAAa,KAAK,UAAU,EAAE;AAAA,MACjF;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,qBAAqB,WAAW,MAAM,KAAK;AAAA,IAClE,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM,EAAE,MAAM,iBAAiB,WAAW,eAAe;AAAA,IAC3D;AAAA,YACA;AAAA,IACA,OAAO,oBAAoB,SAAS,OAAO;AAAA;AAAA;AAQxC,IAAM,mBAIT,OAAO,OAAO,UAAU;AAAA,EAC1B,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,IAAI,YAAY;AAAA,EAChB,IAAI,YAAY;AAAA,EAChB,IAAI,aAA4C;AAAA,EAEhD,IAAI;AAAA,IACF,MAAM,eAAe,MAAM,OAAO,KAAK,EAAE,OAAO,UAAU,CAAC;AAAA,IAC3D,YAAY;AAAA,IACZ,MAAM,OAAQ,aAAqB;AAAA,IACnC,IAAI,QAAQ,MAAM;AAAA,MAChB,aAAa,EAAE,OAAO,KAAK;AAAA,IAC7B;AAAA,IACA,MAAM;AAAA,EAIR,IAAI;AAAA,IACF,MAAM,aAAa,MAAM,OAAO,GAAG;AAAA,IACnC,YAAY,WAAW,OAAO,KAAK,CAAC,MAAW,EAAE,SAAS,SAAS;AAAA,IACnE,MAAM;AAAA,EAIR,OAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAOK,IAAM,eAA6E;AAAA,EACxF,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;AAEO,IAAM,sBAGT;AAAA,EACF,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;ACpcA;AAIO,SAAS,6BAA6B,GAAG;AAAA,EAC9C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,eAAe,cAAc,mBAAmB,EAAE,uBAAuB,YAAY;AAAA,EACzF,aAAa,UAAU;AAAA,EACvB,UAAU,EAAE,KAAK,iCAAiC;AAAA;",
9
+ "debugId": "5E71804F710E42F364756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -34,7 +34,9 @@ import type { OpenAiModelConfig } from "./common/OpenAI_ModelSchema";
34
34
  */
35
35
  export declare class OpenAiProvider extends AiProvider<OpenAiModelConfig> {
36
36
  readonly name = "OPENAI";
37
- readonly taskTypes: readonly ["TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "CountTokensTask", "StructuredGenerationTask", "ToolCallingTask"];
37
+ readonly isLocal = false;
38
+ readonly supportsBrowser = true;
39
+ readonly taskTypes: readonly ["TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "CountTokensTask", "ModelInfoTask", "StructuredGenerationTask", "ToolCallingTask"];
38
40
  constructor(tasks?: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, OpenAiModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, OpenAiModelConfig>>);
39
41
  }
40
42
  //# sourceMappingURL=OpenAiProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiProvider.d.ts","sourceRoot":"","sources":["../../src/provider-openai/OpenAiProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IAEvB,QAAQ,CAAC,SAAS,gKAQP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
1
+ {"version":3,"file":"OpenAiProvider.d.ts","sourceRoot":"","sources":["../../src/provider-openai/OpenAiProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IACvB,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,iLASP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { AiProviderReactiveRunFn, AiProviderRunFn, AiProviderStreamFn, CountTokensTaskInput, CountTokensTaskOutput, StructuredGenerationTaskInput, StructuredGenerationTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
6
+ import type { AiProviderReactiveRunFn, AiProviderRunFn, AiProviderStreamFn, CountTokensTaskInput, CountTokensTaskOutput, ModelInfoTaskInput, ModelInfoTaskOutput, StructuredGenerationTaskInput, StructuredGenerationTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
7
7
  import type { OpenAiModelConfig } from "./OpenAI_ModelSchema";
8
8
  export declare const OpenAI_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OpenAiModelConfig>;
9
9
  export declare const OpenAI_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OpenAiModelConfig>;
@@ -24,6 +24,7 @@ export declare const OpenAI_StructuredGeneration: AiProviderRunFn<StructuredGene
24
24
  export declare const OpenAI_StructuredGeneration_Stream: AiProviderStreamFn<StructuredGenerationTaskInput, StructuredGenerationTaskOutput, OpenAiModelConfig>;
25
25
  export declare const OpenAI_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, OpenAiModelConfig>;
26
26
  export declare const OpenAI_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, OpenAiModelConfig>;
27
+ export declare const OpenAI_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, OpenAiModelConfig>;
27
28
  export declare const OPENAI_TASKS: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>>;
28
29
  export declare const OPENAI_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OpenAiModelConfig>>;
29
30
  export declare const OPENAI_REACTIVE_TASKS: Record<string, AiProviderReactiveRunFn<any, any, OpenAiModelConfig>>;
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-openai/common/OpenAI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAkD9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CA6BlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAmBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAmBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAwBlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAwBlB,CAAC;AAuBF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,CAGvF;AAsBD,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAKlB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,uBAAuB,CAC/D,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAGlB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,eAAe,CACvD,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CA6BlB,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,kBAAkB,CACjE,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CAkDlB,CAAC;AAeF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAiElB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAsGlB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAQrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAOhD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,MAAM,EACN,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAGrD,CAAC"}
1
+ {"version":3,"file":"OpenAI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-openai/common/OpenAI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAkD9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CA6BlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAmBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAmBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAwBlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAwBlB,CAAC;AAuBF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,CAGvF;AAsBD,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAKlB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,uBAAuB,CAC/D,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAGlB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,eAAe,CACvD,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CA6BlB,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,kBAAkB,CACjE,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CAkDlB,CAAC;AAeF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAiElB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAsGlB,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAYlB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CASrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAOhD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,MAAM,EACN,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAGrD,CAAC"}
@@ -4,7 +4,7 @@ import {
4
4
  OpenAiModelRecordSchema,
5
5
  OpenAiModelSchema,
6
6
  OpenAiProvider
7
- } from "../index-drcnh4z5.js";
7
+ } from "../index-q2t627d5.js";
8
8
  import {
9
9
  __require
10
10
  } from "../index-6j5pq722.js";
@@ -423,8 +423,21 @@ var OpenAI_ToolCalling_Stream = async function* (input, model, signal) {
423
423
  data: { text: accumulatedText, toolCalls: validToolCalls }
424
424
  };
425
425
  };
426
+ var OpenAI_ModelInfo = async (input) => {
427
+ return {
428
+ model: input.model,
429
+ is_local: false,
430
+ is_remote: true,
431
+ supports_browser: true,
432
+ supports_node: true,
433
+ is_cached: false,
434
+ is_loaded: false,
435
+ file_sizes: null
436
+ };
437
+ };
426
438
  var OPENAI_TASKS = {
427
439
  TextGenerationTask: OpenAI_TextGeneration,
440
+ ModelInfoTask: OpenAI_ModelInfo,
428
441
  TextEmbeddingTask: OpenAI_TextEmbedding,
429
442
  TextRewriterTask: OpenAI_TextRewriter,
430
443
  TextSummaryTask: OpenAI_TextSummary,
@@ -467,6 +480,7 @@ export {
467
480
  OpenAI_TextEmbedding,
468
481
  OpenAI_StructuredGeneration_Stream,
469
482
  OpenAI_StructuredGeneration,
483
+ OpenAI_ModelInfo,
470
484
  OpenAI_CountTokens_Reactive,
471
485
  OpenAI_CountTokens,
472
486
  OPENAI_WORKER_JOBRUN_REGISTER,
@@ -476,4 +490,4 @@ export {
476
490
  OPENAI
477
491
  };
478
492
 
479
- //# debugId=96B60AB8E75A6C2364756E2164756E21
493
+ //# debugId=75E07818D0A3D0B964756E2164756E21