beeai-framework 0.1.4 → 0.1.5

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 (46) hide show
  1. package/README.md +1 -1
  2. package/dist/{agent-CxoSeic0.d.ts → agent-DNfflu8t.d.ts} +1 -1
  3. package/dist/{agent-CtPtFtGb.d.cts → agent-wkCuP7e1.d.cts} +1 -1
  4. package/dist/agents/base.cjs +1 -1
  5. package/dist/agents/base.cjs.map +1 -1
  6. package/dist/agents/base.js +1 -1
  7. package/dist/agents/base.js.map +1 -1
  8. package/dist/agents/bee/agent.d.cts +1 -1
  9. package/dist/agents/bee/agent.d.ts +1 -1
  10. package/dist/agents/bee/runners/base.d.cts +1 -1
  11. package/dist/agents/bee/runners/base.d.ts +1 -1
  12. package/dist/agents/bee/runners/deep-think/runner.d.cts +1 -1
  13. package/dist/agents/bee/runners/deep-think/runner.d.ts +1 -1
  14. package/dist/agents/bee/runners/default/runner.d.cts +1 -1
  15. package/dist/agents/bee/runners/default/runner.d.ts +1 -1
  16. package/dist/agents/bee/runners/granite/runner.d.cts +1 -1
  17. package/dist/agents/bee/runners/granite/runner.d.ts +1 -1
  18. package/dist/backend/chat.cjs +1 -1
  19. package/dist/backend/chat.cjs.map +1 -1
  20. package/dist/backend/chat.js +1 -1
  21. package/dist/backend/chat.js.map +1 -1
  22. package/dist/backend/embedding.cjs +1 -1
  23. package/dist/backend/embedding.cjs.map +1 -1
  24. package/dist/backend/embedding.js +1 -1
  25. package/dist/backend/embedding.js.map +1 -1
  26. package/dist/backend/utils.cjs +2 -1
  27. package/dist/backend/utils.cjs.map +1 -1
  28. package/dist/backend/utils.js +2 -1
  29. package/dist/backend/utils.js.map +1 -1
  30. package/dist/errors.cjs +4 -4
  31. package/dist/errors.cjs.map +1 -1
  32. package/dist/errors.js +4 -4
  33. package/dist/errors.js.map +1 -1
  34. package/dist/instrumentation/create-telemetry-middleware.cjs +1 -1
  35. package/dist/instrumentation/create-telemetry-middleware.cjs.map +1 -1
  36. package/dist/instrumentation/create-telemetry-middleware.js +1 -1
  37. package/dist/instrumentation/create-telemetry-middleware.js.map +1 -1
  38. package/dist/internals/env.cjs +2 -2
  39. package/dist/internals/env.cjs.map +1 -1
  40. package/dist/internals/env.js +2 -2
  41. package/dist/internals/env.js.map +1 -1
  42. package/dist/version.cjs +1 -1
  43. package/dist/version.js +1 -1
  44. package/dist/workflows/agent.d.cts +8 -8
  45. package/dist/workflows/agent.d.ts +8 -8
  46. package/package.json +9 -1
package/README.md CHANGED
@@ -120,7 +120,7 @@ npm run start [project_name].ts
120
120
 
121
121
  The BeeAI Framework is an open-source project and we ❤️ contributions.<br>
122
122
 
123
- If you'd like to help build BeeAI, take a look at our [contribution guidelines](/typescript/docs/CONTRIBUTING.md).
123
+ If you'd like to help build BeeAI, take a look at our [contribution guidelines](/typescript/CONTRIBUTING.md).
124
124
 
125
125
  ## Bugs
126
126
 
@@ -81,4 +81,4 @@ declare class BeeAgent extends BaseAgent<BeeRunInput, BeeRunOutput, BeeRunOption
81
81
  };
82
82
  }
83
83
 
84
- export { type BeeInput as B, BeeAgent as a, BaseRunner as b, type BeeRunnerLLMInput as c, type BeeRunnerToolInput as d, type BeeTemplateFactory as e };
84
+ export { BaseRunner as B, type BeeRunnerLLMInput as a, type BeeRunnerToolInput as b, type BeeInput as c, BeeAgent as d, type BeeTemplateFactory as e };
@@ -81,4 +81,4 @@ declare class BeeAgent extends BaseAgent<BeeRunInput, BeeRunOutput, BeeRunOption
81
81
  };
82
82
  }
83
83
 
84
- export { type BeeInput as B, BeeAgent as a, BaseRunner as b, type BeeRunnerLLMInput as c, type BeeRunnerToolInput as d, type BeeTemplateFactory as e };
84
+ export { BaseRunner as B, type BeeRunnerLLMInput as a, type BeeRunnerToolInput as b, type BeeInput as c, BeeAgent as d, type BeeTemplateFactory as e };
@@ -37,7 +37,7 @@ class BaseAgent extends serializable_cjs.Serializable {
37
37
  if (e instanceof AgentError) {
38
38
  throw e;
39
39
  } else {
40
- throw new AgentError(`Error has occurred!`, [
40
+ throw new AgentError(`The Agent has encountered an error.`, [
41
41
  e
42
42
  ]);
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["AgentError","FrameworkError","BaseAgent","Serializable","isRunning","run","input","options","RunContext","enter","signal","params","context","_run","e","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","destroy","emitter","meta","name","constructor","description","tools","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;;;AA0BO,MAAMA,mBAAmBC,yBAAAA,CAAAA;EA1BhC;;;AA0BgD;AAMzC,MAAeC,kBAIZC,6BAAAA,CAAAA;EApCV;;;EAqCYC,SAAY,GAAA,KAAA;EAIfC,GACF,CAAA,GAAA,CAACC,KAAOC,EAAAA,OAAAA,CAGX,EAAA;AACA,IAAA,IAAI,KAAKH,SAAW,EAAA;AAClB,MAAM,MAAA,IAAIJ,WAAW,2BAAA,CAAA;AACvB;AAEA,IAAOQ,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQH,OAASG,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,OAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAA,IAAA,CAAKR,SAAY,GAAA,IAAA;AAEjB,QAAA,OAAO,MAAM,IAAA,CAAKS,IAAKP,CAAAA,KAAAA,EAAOC,SAASK,OAAAA,CAAAA;AACzC,OAAA,CAAA,OAASE,CAAG,EAAA;AACV,QAAA,IAAIA,aAAad,UAAY,EAAA;AAC3B,UAAMc,MAAAA,CAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAId,WAAW,CAAuB,mBAAA,CAAA,EAAA;AAACc,YAAAA;AAAE,WAAA,CAAA;AACjD;OACF,SAAA;AACE,QAAA,IAAA,CAAKV,SAAY,GAAA,KAAA;AACnB;AACF,KAAA,EACAW,UAAWC,CAAAA,kCAAAA,GAA0BC,uDAAAA,EAAAA,GAA8BC,kBAAAA,CAAAA;AACvE;EAQAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAKC,QAAQD,OAAO,EAAA;AACtB;AAKA,EAAA,IAAWE,IAAkB,GAAA;AAC3B,IAAO,OAAA;MACLC,IAAM,EAAA,IAAA,CAAKC,YAAYD,IAAQ,IAAA,WAAA;MAC/BE,WAAa,EAAA,EAAA;AACbC,MAAAA,KAAAA,EAAO;AACT,KAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;MAAEtB,SAAW,EAAA,KAAA;AAAOgB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACnD;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { doNothing } from \"remeda\";\nimport { BaseMemory } from \"@/memory/base.js\";\n\nexport class AgentError extends FrameworkError {}\n\nexport interface BaseAgentRunOptions {\n signal?: AbortSignal;\n}\n\nexport abstract class BaseAgent<\n TInput,\n TOutput,\n TOptions extends BaseAgentRunOptions = BaseAgentRunOptions,\n> extends Serializable {\n protected isRunning = false;\n\n public abstract readonly emitter: Emitter<unknown>;\n\n public run(\n ...[input, options]: Partial<TOptions> extends TOptions\n ? [input: TInput, options?: TOptions]\n : [input: TInput, options: TOptions]\n ) {\n if (this.isRunning) {\n throw new AgentError(\"Agent is already running!\");\n }\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (context) => {\n try {\n this.isRunning = true;\n // @ts-expect-error\n return await this._run(input, options, context);\n } catch (e) {\n if (e instanceof AgentError) {\n throw e;\n } else {\n throw new AgentError(`Error has occurred!`, [e]);\n }\n } finally {\n this.isRunning = false;\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected abstract _run(\n input: TInput,\n options: TOptions,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n destroy() {\n this.emitter.destroy();\n }\n\n public abstract set memory(memory: BaseMemory);\n public abstract get memory(): BaseMemory;\n\n public get meta(): AgentMeta {\n return {\n name: this.constructor.name ?? \"BaseAgent\",\n description: \"\",\n tools: [],\n };\n }\n\n createSnapshot() {\n return { isRunning: false, emitter: this.emitter };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["base.ts"],"names":["AgentError","FrameworkError","BaseAgent","Serializable","isRunning","run","input","options","RunContext","enter","signal","params","context","_run","e","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","destroy","emitter","meta","name","constructor","description","tools","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;;;AA0BO,MAAMA,mBAAmBC,yBAAAA,CAAAA;EA1BhC;;;AA0BgD;AAMzC,MAAeC,kBAIZC,6BAAAA,CAAAA;EApCV;;;EAqCYC,SAAY,GAAA,KAAA;EAIfC,GACF,CAAA,GAAA,CAACC,KAAOC,EAAAA,OAAAA,CAGX,EAAA;AACA,IAAA,IAAI,KAAKH,SAAW,EAAA;AAClB,MAAM,MAAA,IAAIJ,WAAW,2BAAA,CAAA;AACvB;AAEA,IAAOQ,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQH,OAASG,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,OAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAA,IAAA,CAAKR,SAAY,GAAA,IAAA;AAEjB,QAAA,OAAO,MAAM,IAAA,CAAKS,IAAKP,CAAAA,KAAAA,EAAOC,SAASK,OAAAA,CAAAA;AACzC,OAAA,CAAA,OAASE,CAAG,EAAA;AACV,QAAA,IAAIA,aAAad,UAAY,EAAA;AAC3B,UAAMc,MAAAA,CAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAId,WAAW,CAAuC,mCAAA,CAAA,EAAA;AAACc,YAAAA;AAAE,WAAA,CAAA;AACjE;OACF,SAAA;AACE,QAAA,IAAA,CAAKV,SAAY,GAAA,KAAA;AACnB;AACF,KAAA,EACAW,UAAWC,CAAAA,kCAAAA,GAA0BC,uDAAAA,EAAAA,GAA8BC,kBAAAA,CAAAA;AACvE;EAQAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAKC,QAAQD,OAAO,EAAA;AACtB;AAKA,EAAA,IAAWE,IAAkB,GAAA;AAC3B,IAAO,OAAA;MACLC,IAAM,EAAA,IAAA,CAAKC,YAAYD,IAAQ,IAAA,WAAA;MAC/BE,WAAa,EAAA,EAAA;AACbC,MAAAA,KAAAA,EAAO;AACT,KAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;MAAEtB,SAAW,EAAA,KAAA;AAAOgB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACnD;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { doNothing } from \"remeda\";\nimport { BaseMemory } from \"@/memory/base.js\";\n\nexport class AgentError extends FrameworkError {}\n\nexport interface BaseAgentRunOptions {\n signal?: AbortSignal;\n}\n\nexport abstract class BaseAgent<\n TInput,\n TOutput,\n TOptions extends BaseAgentRunOptions = BaseAgentRunOptions,\n> extends Serializable {\n protected isRunning = false;\n\n public abstract readonly emitter: Emitter<unknown>;\n\n public run(\n ...[input, options]: Partial<TOptions> extends TOptions\n ? [input: TInput, options?: TOptions]\n : [input: TInput, options: TOptions]\n ) {\n if (this.isRunning) {\n throw new AgentError(\"Agent is already running!\");\n }\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (context) => {\n try {\n this.isRunning = true;\n // @ts-expect-error\n return await this._run(input, options, context);\n } catch (e) {\n if (e instanceof AgentError) {\n throw e;\n } else {\n throw new AgentError(`The Agent has encountered an error.`, [e]);\n }\n } finally {\n this.isRunning = false;\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected abstract _run(\n input: TInput,\n options: TOptions,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n destroy() {\n this.emitter.destroy();\n }\n\n public abstract set memory(memory: BaseMemory);\n public abstract get memory(): BaseMemory;\n\n public get meta(): AgentMeta {\n return {\n name: this.constructor.name ?? \"BaseAgent\",\n description: \"\",\n tools: [],\n };\n }\n\n createSnapshot() {\n return { isRunning: false, emitter: this.emitter };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -35,7 +35,7 @@ class BaseAgent extends Serializable {
35
35
  if (e instanceof AgentError) {
36
36
  throw e;
37
37
  } else {
38
- throw new AgentError(`Error has occurred!`, [
38
+ throw new AgentError(`The Agent has encountered an error.`, [
39
39
  e
40
40
  ]);
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["AgentError","FrameworkError","BaseAgent","Serializable","isRunning","run","input","options","RunContext","enter","signal","params","context","_run","e","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","destroy","emitter","meta","name","constructor","description","tools","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;AA0BO,MAAMA,mBAAmBC,cAAAA,CAAAA;EA1BhC;;;AA0BgD;AAMzC,MAAeC,kBAIZC,YAAAA,CAAAA;EApCV;;;EAqCYC,SAAY,GAAA,KAAA;EAIfC,GACF,CAAA,GAAA,CAACC,KAAOC,EAAAA,OAAAA,CAGX,EAAA;AACA,IAAA,IAAI,KAAKH,SAAW,EAAA;AAClB,MAAM,MAAA,IAAIJ,WAAW,2BAAA,CAAA;AACvB;AAEA,IAAOQ,OAAAA,UAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQH,OAASG,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,OAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAA,IAAA,CAAKR,SAAY,GAAA,IAAA;AAEjB,QAAA,OAAO,MAAM,IAAA,CAAKS,IAAKP,CAAAA,KAAAA,EAAOC,SAASK,OAAAA,CAAAA;AACzC,OAAA,CAAA,OAASE,CAAG,EAAA;AACV,QAAA,IAAIA,aAAad,UAAY,EAAA;AAC3B,UAAMc,MAAAA,CAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAId,WAAW,CAAuB,mBAAA,CAAA,EAAA;AAACc,YAAAA;AAAE,WAAA,CAAA;AACjD;OACF,SAAA;AACE,QAAA,IAAA,CAAKV,SAAY,GAAA,KAAA;AACnB;AACF,KAAA,EACAW,UAAWC,CAAAA,uBAAAA,GAA0BC,yBAAAA,EAAAA,GAA8BC,WAAAA,CAAAA;AACvE;EAQAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAKC,QAAQD,OAAO,EAAA;AACtB;AAKA,EAAA,IAAWE,IAAkB,GAAA;AAC3B,IAAO,OAAA;MACLC,IAAM,EAAA,IAAA,CAAKC,YAAYD,IAAQ,IAAA,WAAA;MAC/BE,WAAa,EAAA,EAAA;AACbC,MAAAA,KAAAA,EAAO;AACT,KAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;MAAEtB,SAAW,EAAA,KAAA;AAAOgB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACnD;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"base.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { doNothing } from \"remeda\";\nimport { BaseMemory } from \"@/memory/base.js\";\n\nexport class AgentError extends FrameworkError {}\n\nexport interface BaseAgentRunOptions {\n signal?: AbortSignal;\n}\n\nexport abstract class BaseAgent<\n TInput,\n TOutput,\n TOptions extends BaseAgentRunOptions = BaseAgentRunOptions,\n> extends Serializable {\n protected isRunning = false;\n\n public abstract readonly emitter: Emitter<unknown>;\n\n public run(\n ...[input, options]: Partial<TOptions> extends TOptions\n ? [input: TInput, options?: TOptions]\n : [input: TInput, options: TOptions]\n ) {\n if (this.isRunning) {\n throw new AgentError(\"Agent is already running!\");\n }\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (context) => {\n try {\n this.isRunning = true;\n // @ts-expect-error\n return await this._run(input, options, context);\n } catch (e) {\n if (e instanceof AgentError) {\n throw e;\n } else {\n throw new AgentError(`Error has occurred!`, [e]);\n }\n } finally {\n this.isRunning = false;\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected abstract _run(\n input: TInput,\n options: TOptions,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n destroy() {\n this.emitter.destroy();\n }\n\n public abstract set memory(memory: BaseMemory);\n public abstract get memory(): BaseMemory;\n\n public get meta(): AgentMeta {\n return {\n name: this.constructor.name ?? \"BaseAgent\",\n description: \"\",\n tools: [],\n };\n }\n\n createSnapshot() {\n return { isRunning: false, emitter: this.emitter };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["base.ts"],"names":["AgentError","FrameworkError","BaseAgent","Serializable","isRunning","run","input","options","RunContext","enter","signal","params","context","_run","e","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","destroy","emitter","meta","name","constructor","description","tools","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;AA0BO,MAAMA,mBAAmBC,cAAAA,CAAAA;EA1BhC;;;AA0BgD;AAMzC,MAAeC,kBAIZC,YAAAA,CAAAA;EApCV;;;EAqCYC,SAAY,GAAA,KAAA;EAIfC,GACF,CAAA,GAAA,CAACC,KAAOC,EAAAA,OAAAA,CAGX,EAAA;AACA,IAAA,IAAI,KAAKH,SAAW,EAAA;AAClB,MAAM,MAAA,IAAIJ,WAAW,2BAAA,CAAA;AACvB;AAEA,IAAOQ,OAAAA,UAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQH,OAASG,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,OAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAA,IAAA,CAAKR,SAAY,GAAA,IAAA;AAEjB,QAAA,OAAO,MAAM,IAAA,CAAKS,IAAKP,CAAAA,KAAAA,EAAOC,SAASK,OAAAA,CAAAA;AACzC,OAAA,CAAA,OAASE,CAAG,EAAA;AACV,QAAA,IAAIA,aAAad,UAAY,EAAA;AAC3B,UAAMc,MAAAA,CAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAId,WAAW,CAAuC,mCAAA,CAAA,EAAA;AAACc,YAAAA;AAAE,WAAA,CAAA;AACjE;OACF,SAAA;AACE,QAAA,IAAA,CAAKV,SAAY,GAAA,KAAA;AACnB;AACF,KAAA,EACAW,UAAWC,CAAAA,uBAAAA,GAA0BC,yBAAAA,EAAAA,GAA8BC,WAAAA,CAAAA;AACvE;EAQAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAKC,QAAQD,OAAO,EAAA;AACtB;AAKA,EAAA,IAAWE,IAAkB,GAAA;AAC3B,IAAO,OAAA;MACLC,IAAM,EAAA,IAAA,CAAKC,YAAYD,IAAQ,IAAA,WAAA;MAC/BE,WAAa,EAAA,EAAA;AACbC,MAAAA,KAAAA,EAAO;AACT,KAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;MAAEtB,SAAW,EAAA,KAAA;AAAOgB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACnD;AAEAO,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"base.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { doNothing } from \"remeda\";\nimport { BaseMemory } from \"@/memory/base.js\";\n\nexport class AgentError extends FrameworkError {}\n\nexport interface BaseAgentRunOptions {\n signal?: AbortSignal;\n}\n\nexport abstract class BaseAgent<\n TInput,\n TOutput,\n TOptions extends BaseAgentRunOptions = BaseAgentRunOptions,\n> extends Serializable {\n protected isRunning = false;\n\n public abstract readonly emitter: Emitter<unknown>;\n\n public run(\n ...[input, options]: Partial<TOptions> extends TOptions\n ? [input: TInput, options?: TOptions]\n : [input: TInput, options: TOptions]\n ) {\n if (this.isRunning) {\n throw new AgentError(\"Agent is already running!\");\n }\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (context) => {\n try {\n this.isRunning = true;\n // @ts-expect-error\n return await this._run(input, options, context);\n } catch (e) {\n if (e instanceof AgentError) {\n throw e;\n } else {\n throw new AgentError(`The Agent has encountered an error.`, [e]);\n }\n } finally {\n this.isRunning = false;\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected abstract _run(\n input: TInput,\n options: TOptions,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n destroy() {\n this.emitter.destroy();\n }\n\n public abstract set memory(memory: BaseMemory);\n public abstract get memory(): BaseMemory;\n\n public get meta(): AgentMeta {\n return {\n name: this.constructor.name ?? \"BaseAgent\",\n description: \"\",\n tools: [],\n };\n }\n\n createSnapshot() {\n return { isRunning: false, emitter: this.emitter };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -4,7 +4,7 @@ import '../../tools/base.cjs';
4
4
  import '../../memory/base.cjs';
5
5
  import '../../emitter-BWtGHYn0.cjs';
6
6
  import './types.cjs';
7
- export { a as BeeAgent, B as BeeInput, e as BeeTemplateFactory } from '../../agent-CtPtFtGb.cjs';
7
+ export { d as BeeAgent, c as BeeInput, e as BeeTemplateFactory } from '../../agent-wkCuP7e1.cjs';
8
8
  import '../../backend/chat.cjs';
9
9
  import '../../internals/serializable.cjs';
10
10
  import '../../internals/types.cjs';
@@ -4,7 +4,7 @@ import '../../tools/base.js';
4
4
  import '../../memory/base.js';
5
5
  import '../../emitter-l0W9gC1A.js';
6
6
  import './types.js';
7
- export { a as BeeAgent, B as BeeInput, e as BeeTemplateFactory } from '../../agent-CxoSeic0.js';
7
+ export { d as BeeAgent, c as BeeInput, e as BeeTemplateFactory } from '../../agent-DNfflu8t.js';
8
8
  import '../../backend/chat.js';
9
9
  import '../../internals/serializable.js';
10
10
  import '../../internals/types.js';
@@ -1,7 +1,7 @@
1
1
  import '../../../parsers/linePrefix.cjs';
2
2
  import '../types.cjs';
3
3
  import '../../../internals/serializable.cjs';
4
- export { b as BaseRunner, c as BeeRunnerLLMInput, d as BeeRunnerToolInput } from '../../../agent-CtPtFtGb.cjs';
4
+ export { B as BaseRunner, a as BeeRunnerLLMInput, b as BeeRunnerToolInput } from '../../../agent-wkCuP7e1.cjs';
5
5
  import '../../../internals/helpers/counter.cjs';
6
6
  import '../../../memory/base.cjs';
7
7
  import '../../../context.cjs';
@@ -1,7 +1,7 @@
1
1
  import '../../../parsers/linePrefix.js';
2
2
  import '../types.js';
3
3
  import '../../../internals/serializable.js';
4
- export { b as BaseRunner, c as BeeRunnerLLMInput, d as BeeRunnerToolInput } from '../../../agent-CxoSeic0.js';
4
+ export { B as BaseRunner, a as BeeRunnerLLMInput, b as BeeRunnerToolInput } from '../../../agent-DNfflu8t.js';
5
5
  import '../../../internals/helpers/counter.js';
6
6
  import '../../../memory/base.js';
7
7
  import '../../../context.js';
@@ -4,7 +4,7 @@ import { PromptTemplate } from '../../../../template.cjs';
4
4
  import { AnyTool } from '../../../../tools/base.cjs';
5
5
  import { DefaultRunner } from '../default/runner.cjs';
6
6
  import { z } from 'zod';
7
- import { B as BeeInput, a as BeeAgent } from '../../../../agent-CtPtFtGb.cjs';
7
+ import { c as BeeInput, d as BeeAgent } from '../../../../agent-wkCuP7e1.cjs';
8
8
  import { GetRunContext } from '../../../../context.cjs';
9
9
  import '../../../../emitter-BWtGHYn0.cjs';
10
10
  import '../../../../internals/types.cjs';
@@ -4,7 +4,7 @@ import { PromptTemplate } from '../../../../template.js';
4
4
  import { AnyTool } from '../../../../tools/base.js';
5
5
  import { DefaultRunner } from '../default/runner.js';
6
6
  import { z } from 'zod';
7
- import { B as BeeInput, a as BeeAgent } from '../../../../agent-CxoSeic0.js';
7
+ import { c as BeeInput, d as BeeAgent } from '../../../../agent-DNfflu8t.js';
8
8
  import { GetRunContext } from '../../../../context.js';
9
9
  import '../../../../emitter-l0W9gC1A.js';
10
10
  import '../../../../internals/types.js';
@@ -1,5 +1,5 @@
1
1
  import { PromptTemplate } from '../../../../template.cjs';
2
- import { b as BaseRunner, c as BeeRunnerLLMInput, d as BeeRunnerToolInput } from '../../../../agent-CtPtFtGb.cjs';
2
+ import { B as BaseRunner, a as BeeRunnerLLMInput, b as BeeRunnerToolInput } from '../../../../agent-wkCuP7e1.cjs';
3
3
  import { BeeAgentRunIteration, BeeRunInput, BeeParserInput } from '../../types.cjs';
4
4
  import { AnyTool } from '../../../../tools/base.cjs';
5
5
  import { LinePrefixParser } from '../../../../parsers/linePrefix.cjs';
@@ -1,5 +1,5 @@
1
1
  import { PromptTemplate } from '../../../../template.js';
2
- import { b as BaseRunner, c as BeeRunnerLLMInput, d as BeeRunnerToolInput } from '../../../../agent-CxoSeic0.js';
2
+ import { B as BaseRunner, a as BeeRunnerLLMInput, b as BeeRunnerToolInput } from '../../../../agent-DNfflu8t.js';
3
3
  import { BeeAgentRunIteration, BeeRunInput, BeeParserInput } from '../../types.js';
4
4
  import { AnyTool } from '../../../../tools/base.js';
5
5
  import { LinePrefixParser } from '../../../../parsers/linePrefix.js';
@@ -4,7 +4,7 @@ import * as zod from 'zod';
4
4
  import { AnyTool } from '../../../../tools/base.cjs';
5
5
  import { DefaultRunner } from '../default/runner.cjs';
6
6
  import { BeeRunOptions, BeeParserInput } from '../../types.cjs';
7
- import { B as BeeInput, a as BeeAgent } from '../../../../agent-CtPtFtGb.cjs';
7
+ import { c as BeeInput, d as BeeAgent } from '../../../../agent-wkCuP7e1.cjs';
8
8
  import { GetRunContext } from '../../../../context.cjs';
9
9
  import '../../../../emitter-BWtGHYn0.cjs';
10
10
  import '../../../../internals/types.cjs';
@@ -4,7 +4,7 @@ import * as zod from 'zod';
4
4
  import { AnyTool } from '../../../../tools/base.js';
5
5
  import { DefaultRunner } from '../default/runner.js';
6
6
  import { BeeRunOptions, BeeParserInput } from '../../types.js';
7
- import { B as BeeInput, a as BeeAgent } from '../../../../agent-CxoSeic0.js';
7
+ import { c as BeeInput, d as BeeAgent } from '../../../../agent-DNfflu8t.js';
8
8
  import { GetRunContext } from '../../../../context.js';
9
9
  import '../../../../emitter-l0W9gC1A.js';
10
10
  import '../../../../internals/types.js';
@@ -72,7 +72,7 @@ class ChatModel extends serializable_cjs.Serializable {
72
72
  if (error instanceof errors_cjs.ChatModelError) {
73
73
  throw error;
74
74
  } else {
75
- throw new errors_cjs.ChatModelError(`LLM has occurred an error.`, [
75
+ throw new errors_cjs.ChatModelError(`The Chat Model has encountered an error.`, [
76
76
  error
77
77
  ]);
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","error","reject","ChatModelError","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","createStructure","_createStructure","config","isFunction","fromName","name","options","providerId","modelId","parseModel","Target","loadModel","undefined","schema","jsonSchema","toJsonSchema","systemTemplate","PromptTemplate","z","object","string","min","template","messages","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","responseFormat","type","textResponse","getTextContent","parseBrokenJson","pair","validator","createSchemaValidator","success","context","UserMessage","maxRetries","get","createSnapshot","destroy","_","tools","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","constructor","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","getToolCalls","filter","r","AssistantMessage","flatMap","Boolean","text","join","toString","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, isFunction } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport {\n JSONSchema7,\n LanguageModelV1FunctionTool,\n LanguageModelV1ProviderDefinedTool,\n LanguageModelV1ToolChoice,\n} from \"@ai-sdk/provider\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport type { ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n}\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?:\n | {\n type: \"regular\";\n tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];\n toolChoice?: LanguageModelV1ToolChoice;\n }\n | {\n type: \"object-json\";\n schema?: JSONSchema7;\n name?: string;\n description?: string;\n }\n | {\n type: \"object-tool\";\n tool: LanguageModelV1FunctionTool;\n };\n toolChoice?: never; // TODO\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`LLM has occurred an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate = new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return { object };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return { cache: this.cache, emitter: this.emitter, parameters: shallowCopy(this.parameters) };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","error","reject","ChatModelError","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","createStructure","_createStructure","config","isFunction","fromName","name","options","providerId","modelId","parseModel","Target","loadModel","undefined","schema","jsonSchema","toJsonSchema","systemTemplate","PromptTemplate","z","object","string","min","template","messages","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","responseFormat","type","textResponse","getTextContent","parseBrokenJson","pair","validator","createSchemaValidator","success","context","UserMessage","maxRetries","get","createSnapshot","destroy","_","tools","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","constructor","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","getToolCalls","filter","r","AssistantMessage","flatMap","Boolean","text","join","toString","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, isFunction } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport {\n JSONSchema7,\n LanguageModelV1FunctionTool,\n LanguageModelV1ProviderDefinedTool,\n LanguageModelV1ToolChoice,\n} from \"@ai-sdk/provider\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport type { ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n}\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?:\n | {\n type: \"regular\";\n tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];\n toolChoice?: LanguageModelV1ToolChoice;\n }\n | {\n type: \"object-json\";\n schema?: JSONSchema7;\n name?: string;\n description?: string;\n }\n | {\n type: \"object-tool\";\n tool: LanguageModelV1FunctionTool;\n };\n toolChoice?: never; // TODO\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate = new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return { object };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return { cache: this.cache, emitter: this.emitter, parameters: shallowCopy(this.parameters) };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -70,7 +70,7 @@ class ChatModel extends Serializable {
70
70
  if (error instanceof ChatModelError) {
71
71
  throw error;
72
72
  } else {
73
- throw new ChatModelError(`LLM has occurred an error.`, [
73
+ throw new ChatModelError(`The Chat Model has encountered an error.`, [
74
74
  error
75
75
  ]);
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","error","reject","ChatModelError","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","createStructure","_createStructure","config","isFunction","fromName","name","options","providerId","modelId","parseModel","Target","loadModel","undefined","schema","jsonSchema","toJsonSchema","systemTemplate","PromptTemplate","z","object","string","min","template","messages","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","responseFormat","type","textResponse","getTextContent","parseBrokenJson","pair","validator","createSchemaValidator","success","context","UserMessage","maxRetries","get","createSnapshot","destroy","_","tools","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","constructor","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","getToolCalls","filter","r","AssistantMessage","flatMap","Boolean","text","join","toString","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, isFunction } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport {\n JSONSchema7,\n LanguageModelV1FunctionTool,\n LanguageModelV1ProviderDefinedTool,\n LanguageModelV1ToolChoice,\n} from \"@ai-sdk/provider\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport type { ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n}\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?:\n | {\n type: \"regular\";\n tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];\n toolChoice?: LanguageModelV1ToolChoice;\n }\n | {\n type: \"object-json\";\n schema?: JSONSchema7;\n name?: string;\n description?: string;\n }\n | {\n type: \"object-tool\";\n tool: LanguageModelV1FunctionTool;\n };\n toolChoice?: never; // TODO\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`LLM has occurred an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate = new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return { object };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return { cache: this.cache, emitter: this.emitter, parameters: shallowCopy(this.parameters) };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","error","reject","ChatModelError","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","createStructure","_createStructure","config","isFunction","fromName","name","options","providerId","modelId","parseModel","Target","loadModel","undefined","schema","jsonSchema","toJsonSchema","systemTemplate","PromptTemplate","z","object","string","min","template","messages","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","responseFormat","type","textResponse","getTextContent","parseBrokenJson","pair","validator","createSchemaValidator","success","context","UserMessage","maxRetries","get","createSnapshot","destroy","_","tools","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","constructor","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","getToolCalls","filter","r","AssistantMessage","flatMap","Boolean","text","join","toString","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, isFunction } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport {\n JSONSchema7,\n LanguageModelV1FunctionTool,\n LanguageModelV1ProviderDefinedTool,\n LanguageModelV1ToolChoice,\n} from \"@ai-sdk/provider\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport type { ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n}\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?:\n | {\n type: \"regular\";\n tools?: (LanguageModelV1FunctionTool | LanguageModelV1ProviderDefinedTool)[];\n toolChoice?: LanguageModelV1ToolChoice;\n }\n | {\n type: \"object-json\";\n schema?: JSONSchema7;\n name?: string;\n description?: string;\n }\n | {\n type: \"object-tool\";\n tool: LanguageModelV1FunctionTool;\n };\n toolChoice?: never; // TODO\n messages: Message[];\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n return new Target(modelId || undefined, options);\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate = new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return { object };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return { cache: this.cache, emitter: this.emitter, parameters: shallowCopy(this.parameters) };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -41,7 +41,7 @@ class EmbeddingModel extends serializable_cjs.Serializable {
41
41
  if (error instanceof errors_cjs.EmbeddingModelError) {
42
42
  throw error;
43
43
  } else {
44
- throw new errors_cjs.EmbeddingModelError(`LLM has occurred an error.`, [
44
+ throw new errors_cjs.EmbeddingModelError(`The Embedding Model has encountered an error.`, [
45
45
  error
46
46
  ]);
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["embedding.ts"],"names":["EmbeddingModel","Serializable","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","emitter","emit","result","pRetry","_create","retries","maxRetries","value","error","EmbeddingModelError","fromName","name","providerId","modelId","parseModel","Target","loadModel","createSnapshot","destroy"],"mappings":";;;;;;;;;;;AAkDO,MAAeA,uBAAuBC,6BAAAA,CAAAA;EAlD7C;;;AAwDEC,EAAAA,MAAAA,CAAOC,KAA4B,EAAA;AACjCA,IAAAA,KAAAA,GAAQC,sBAAYD,KAAAA,CAAAA;AAEpB,IAAOE,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;MAAEC,MAAQ,EAAA;AAACJ,QAAAA;;AAAiBK,MAAAA,MAAAA,EAAQL,KAAOM,EAAAA;AAAY,KAAA,EACvD,OAAOC,GAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAMA,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA;SAAM,CAAA;AACxC,QAAMU,MAAAA,MAAAA,GAA+B,MAAMC,gBAAO,CAAA,MAAM,KAAKC,OAAQZ,CAAAA,KAAAA,EAAOO,GAAAA,CAAM,EAAA;AAChFM,UAAAA,OAAAA,EAASb,MAAMc,UAAc,IAAA,CAAA;AAC7BT,UAAAA,MAAAA,EAAQE,GAAIF,CAAAA;SACd,CAAA;AACA,QAAME,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,SAAW,EAAA;UAAEM,KAAOL,EAAAA;SAAO,CAAA;AAClD,QAAOA,OAAAA,MAAAA;AACT,OAAA,CAAA,OAASM,KAAO,EAAA;AACd,QAAMT,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA,KAAAA;AAAOgB,UAAAA;SAAM,CAAA;AAC/C,QAAA,IAAIA,iBAAiBC,8BAAqB,EAAA;AACxC,UAAMD,MAAAA,KAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAIC,+BAAoB,CAA8B,0BAAA,CAAA,EAAA;AAACD,YAAAA;AAAM,WAAA,CAAA;AACrE;OACF,SAAA;AACE,QAAA,MAAMT,GAAIC,CAAAA,OAAAA,CAAQC,IAAK,CAAA,QAAA,EAAU,IAAA,CAAA;AACnC;KACF,CAAA;AAEJ;AAEA,EAAA,aAAaS,SAASC,IAAoC,EAAA;AACxD,IAAA,MAAM,EAAEC,UAAYC,EAAAA,OAAAA,GAAU,EAAE,EAAA,GAAKC,uBAAWH,IAAAA,CAAAA;AAChD,IAAA,MAAMI,MAAS,GAAA,MAAMC,qBAA0BJ,CAAAA,UAAAA,EAAY,WAAA,CAAA;AAC3D,IAAO,OAAA,IAAIG,OAAOF,OAAAA,CAAAA;AACpB;EAOAI,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEjB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACjC;EAEAkB,OAAU,GAAA;AACR,IAAA,IAAA,CAAKlB,QAAQkB,OAAO,EAAA;AACtB;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { EmbeddingModelError } from \"@/backend/errors.js\";\n\nexport interface EmbeddingModelInput {\n values: string[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface EmbeddingModelOutput {\n values: string[];\n embeddings: number[][];\n usage: { tokens?: number };\n}\n\nexport interface EmbeddingModelEvents {\n success?: Callback<{ value: EmbeddingModelOutput }>;\n start?: Callback<{ input: EmbeddingModelInput }>;\n error?: Callback<{ input: EmbeddingModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type EmbeddingModelEmitter<A = Record<never, never>> = Emitter<\n EmbeddingModelEvents & Omit<A, keyof EmbeddingModelEvents>\n>;\n\nexport abstract class EmbeddingModel extends Serializable {\n public abstract readonly emitter: Emitter<EmbeddingModelEvents>;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: EmbeddingModelInput) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n try {\n await run.emitter.emit(\"start\", { input });\n const result: EmbeddingModelOutput = await pRetry(() => this._create(input, run), {\n retries: input.maxRetries || 0,\n signal: run.signal,\n });\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n if (error instanceof EmbeddingModelError) {\n throw error;\n } else {\n throw new EmbeddingModelError(`LLM has occurred an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n static async fromName(name: FullModelName | ProviderName) {\n const { providerId, modelId = \"\" } = parseModel(name);\n const Target = await loadModel<EmbeddingModel>(providerId, \"embedding\");\n return new Target(modelId);\n }\n\n protected abstract _create(\n input: EmbeddingModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<EmbeddingModelOutput>;\n\n createSnapshot() {\n return { emitter: this.emitter };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n}\n"]}
1
+ {"version":3,"sources":["embedding.ts"],"names":["EmbeddingModel","Serializable","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","emitter","emit","result","pRetry","_create","retries","maxRetries","value","error","EmbeddingModelError","fromName","name","providerId","modelId","parseModel","Target","loadModel","createSnapshot","destroy"],"mappings":";;;;;;;;;;;AAkDO,MAAeA,uBAAuBC,6BAAAA,CAAAA;EAlD7C;;;AAwDEC,EAAAA,MAAAA,CAAOC,KAA4B,EAAA;AACjCA,IAAAA,KAAAA,GAAQC,sBAAYD,KAAAA,CAAAA;AAEpB,IAAOE,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;MAAEC,MAAQ,EAAA;AAACJ,QAAAA;;AAAiBK,MAAAA,MAAAA,EAAQL,KAAOM,EAAAA;AAAY,KAAA,EACvD,OAAOC,GAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAMA,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA;SAAM,CAAA;AACxC,QAAMU,MAAAA,MAAAA,GAA+B,MAAMC,gBAAO,CAAA,MAAM,KAAKC,OAAQZ,CAAAA,KAAAA,EAAOO,GAAAA,CAAM,EAAA;AAChFM,UAAAA,OAAAA,EAASb,MAAMc,UAAc,IAAA,CAAA;AAC7BT,UAAAA,MAAAA,EAAQE,GAAIF,CAAAA;SACd,CAAA;AACA,QAAME,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,SAAW,EAAA;UAAEM,KAAOL,EAAAA;SAAO,CAAA;AAClD,QAAOA,OAAAA,MAAAA;AACT,OAAA,CAAA,OAASM,KAAO,EAAA;AACd,QAAMT,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA,KAAAA;AAAOgB,UAAAA;SAAM,CAAA;AAC/C,QAAA,IAAIA,iBAAiBC,8BAAqB,EAAA;AACxC,UAAMD,MAAAA,KAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAIC,+BAAoB,CAAiD,6CAAA,CAAA,EAAA;AAACD,YAAAA;AAAM,WAAA,CAAA;AACxF;OACF,SAAA;AACE,QAAA,MAAMT,GAAIC,CAAAA,OAAAA,CAAQC,IAAK,CAAA,QAAA,EAAU,IAAA,CAAA;AACnC;KACF,CAAA;AAEJ;AAEA,EAAA,aAAaS,SAASC,IAAoC,EAAA;AACxD,IAAA,MAAM,EAAEC,UAAYC,EAAAA,OAAAA,GAAU,EAAE,EAAA,GAAKC,uBAAWH,IAAAA,CAAAA;AAChD,IAAA,MAAMI,MAAS,GAAA,MAAMC,qBAA0BJ,CAAAA,UAAAA,EAAY,WAAA,CAAA;AAC3D,IAAO,OAAA,IAAIG,OAAOF,OAAAA,CAAAA;AACpB;EAOAI,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEjB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACjC;EAEAkB,OAAU,GAAA;AACR,IAAA,IAAA,CAAKlB,QAAQkB,OAAO,EAAA;AACtB;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { EmbeddingModelError } from \"@/backend/errors.js\";\n\nexport interface EmbeddingModelInput {\n values: string[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface EmbeddingModelOutput {\n values: string[];\n embeddings: number[][];\n usage: { tokens?: number };\n}\n\nexport interface EmbeddingModelEvents {\n success?: Callback<{ value: EmbeddingModelOutput }>;\n start?: Callback<{ input: EmbeddingModelInput }>;\n error?: Callback<{ input: EmbeddingModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type EmbeddingModelEmitter<A = Record<never, never>> = Emitter<\n EmbeddingModelEvents & Omit<A, keyof EmbeddingModelEvents>\n>;\n\nexport abstract class EmbeddingModel extends Serializable {\n public abstract readonly emitter: Emitter<EmbeddingModelEvents>;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: EmbeddingModelInput) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n try {\n await run.emitter.emit(\"start\", { input });\n const result: EmbeddingModelOutput = await pRetry(() => this._create(input, run), {\n retries: input.maxRetries || 0,\n signal: run.signal,\n });\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n if (error instanceof EmbeddingModelError) {\n throw error;\n } else {\n throw new EmbeddingModelError(`The Embedding Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n static async fromName(name: FullModelName | ProviderName) {\n const { providerId, modelId = \"\" } = parseModel(name);\n const Target = await loadModel<EmbeddingModel>(providerId, \"embedding\");\n return new Target(modelId);\n }\n\n protected abstract _create(\n input: EmbeddingModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<EmbeddingModelOutput>;\n\n createSnapshot() {\n return { emitter: this.emitter };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n}\n"]}
@@ -39,7 +39,7 @@ class EmbeddingModel extends Serializable {
39
39
  if (error instanceof EmbeddingModelError) {
40
40
  throw error;
41
41
  } else {
42
- throw new EmbeddingModelError(`LLM has occurred an error.`, [
42
+ throw new EmbeddingModelError(`The Embedding Model has encountered an error.`, [
43
43
  error
44
44
  ]);
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["embedding.ts"],"names":["EmbeddingModel","Serializable","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","emitter","emit","result","pRetry","_create","retries","maxRetries","value","error","EmbeddingModelError","fromName","name","providerId","modelId","parseModel","Target","loadModel","createSnapshot","destroy"],"mappings":";;;;;;;;;AAkDO,MAAeA,uBAAuBC,YAAAA,CAAAA;EAlD7C;;;AAwDEC,EAAAA,MAAAA,CAAOC,KAA4B,EAAA;AACjCA,IAAAA,KAAAA,GAAQC,YAAYD,KAAAA,CAAAA;AAEpB,IAAOE,OAAAA,UAAAA,CAAWC,MAChB,IACA,EAAA;MAAEC,MAAQ,EAAA;AAACJ,QAAAA;;AAAiBK,MAAAA,MAAAA,EAAQL,KAAOM,EAAAA;AAAY,KAAA,EACvD,OAAOC,GAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAMA,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA;SAAM,CAAA;AACxC,QAAMU,MAAAA,MAAAA,GAA+B,MAAMC,MAAO,CAAA,MAAM,KAAKC,OAAQZ,CAAAA,KAAAA,EAAOO,GAAAA,CAAM,EAAA;AAChFM,UAAAA,OAAAA,EAASb,MAAMc,UAAc,IAAA,CAAA;AAC7BT,UAAAA,MAAAA,EAAQE,GAAIF,CAAAA;SACd,CAAA;AACA,QAAME,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,SAAW,EAAA;UAAEM,KAAOL,EAAAA;SAAO,CAAA;AAClD,QAAOA,OAAAA,MAAAA;AACT,OAAA,CAAA,OAASM,KAAO,EAAA;AACd,QAAMT,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA,KAAAA;AAAOgB,UAAAA;SAAM,CAAA;AAC/C,QAAA,IAAIA,iBAAiBC,mBAAqB,EAAA;AACxC,UAAMD,MAAAA,KAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAIC,oBAAoB,CAA8B,0BAAA,CAAA,EAAA;AAACD,YAAAA;AAAM,WAAA,CAAA;AACrE;OACF,SAAA;AACE,QAAA,MAAMT,GAAIC,CAAAA,OAAAA,CAAQC,IAAK,CAAA,QAAA,EAAU,IAAA,CAAA;AACnC;KACF,CAAA;AAEJ;AAEA,EAAA,aAAaS,SAASC,IAAoC,EAAA;AACxD,IAAA,MAAM,EAAEC,UAAYC,EAAAA,OAAAA,GAAU,EAAE,EAAA,GAAKC,WAAWH,IAAAA,CAAAA;AAChD,IAAA,MAAMI,MAAS,GAAA,MAAMC,SAA0BJ,CAAAA,UAAAA,EAAY,WAAA,CAAA;AAC3D,IAAO,OAAA,IAAIG,OAAOF,OAAAA,CAAAA;AACpB;EAOAI,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEjB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACjC;EAEAkB,OAAU,GAAA;AACR,IAAA,IAAA,CAAKlB,QAAQkB,OAAO,EAAA;AACtB;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { EmbeddingModelError } from \"@/backend/errors.js\";\n\nexport interface EmbeddingModelInput {\n values: string[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface EmbeddingModelOutput {\n values: string[];\n embeddings: number[][];\n usage: { tokens?: number };\n}\n\nexport interface EmbeddingModelEvents {\n success?: Callback<{ value: EmbeddingModelOutput }>;\n start?: Callback<{ input: EmbeddingModelInput }>;\n error?: Callback<{ input: EmbeddingModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type EmbeddingModelEmitter<A = Record<never, never>> = Emitter<\n EmbeddingModelEvents & Omit<A, keyof EmbeddingModelEvents>\n>;\n\nexport abstract class EmbeddingModel extends Serializable {\n public abstract readonly emitter: Emitter<EmbeddingModelEvents>;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: EmbeddingModelInput) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n try {\n await run.emitter.emit(\"start\", { input });\n const result: EmbeddingModelOutput = await pRetry(() => this._create(input, run), {\n retries: input.maxRetries || 0,\n signal: run.signal,\n });\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n if (error instanceof EmbeddingModelError) {\n throw error;\n } else {\n throw new EmbeddingModelError(`LLM has occurred an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n static async fromName(name: FullModelName | ProviderName) {\n const { providerId, modelId = \"\" } = parseModel(name);\n const Target = await loadModel<EmbeddingModel>(providerId, \"embedding\");\n return new Target(modelId);\n }\n\n protected abstract _create(\n input: EmbeddingModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<EmbeddingModelOutput>;\n\n createSnapshot() {\n return { emitter: this.emitter };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n}\n"]}
1
+ {"version":3,"sources":["embedding.ts"],"names":["EmbeddingModel","Serializable","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","emitter","emit","result","pRetry","_create","retries","maxRetries","value","error","EmbeddingModelError","fromName","name","providerId","modelId","parseModel","Target","loadModel","createSnapshot","destroy"],"mappings":";;;;;;;;;AAkDO,MAAeA,uBAAuBC,YAAAA,CAAAA;EAlD7C;;;AAwDEC,EAAAA,MAAAA,CAAOC,KAA4B,EAAA;AACjCA,IAAAA,KAAAA,GAAQC,YAAYD,KAAAA,CAAAA;AAEpB,IAAOE,OAAAA,UAAAA,CAAWC,MAChB,IACA,EAAA;MAAEC,MAAQ,EAAA;AAACJ,QAAAA;;AAAiBK,MAAAA,MAAAA,EAAQL,KAAOM,EAAAA;AAAY,KAAA,EACvD,OAAOC,GAAAA,KAAAA;AACL,MAAI,IAAA;AACF,QAAMA,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA;SAAM,CAAA;AACxC,QAAMU,MAAAA,MAAAA,GAA+B,MAAMC,MAAO,CAAA,MAAM,KAAKC,OAAQZ,CAAAA,KAAAA,EAAOO,GAAAA,CAAM,EAAA;AAChFM,UAAAA,OAAAA,EAASb,MAAMc,UAAc,IAAA,CAAA;AAC7BT,UAAAA,MAAAA,EAAQE,GAAIF,CAAAA;SACd,CAAA;AACA,QAAME,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,SAAW,EAAA;UAAEM,KAAOL,EAAAA;SAAO,CAAA;AAClD,QAAOA,OAAAA,MAAAA;AACT,OAAA,CAAA,OAASM,KAAO,EAAA;AACd,QAAMT,MAAAA,GAAAA,CAAIC,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAET,UAAAA,KAAAA;AAAOgB,UAAAA;SAAM,CAAA;AAC/C,QAAA,IAAIA,iBAAiBC,mBAAqB,EAAA;AACxC,UAAMD,MAAAA,KAAAA;SACD,MAAA;AACL,UAAM,MAAA,IAAIC,oBAAoB,CAAiD,6CAAA,CAAA,EAAA;AAACD,YAAAA;AAAM,WAAA,CAAA;AACxF;OACF,SAAA;AACE,QAAA,MAAMT,GAAIC,CAAAA,OAAAA,CAAQC,IAAK,CAAA,QAAA,EAAU,IAAA,CAAA;AACnC;KACF,CAAA;AAEJ;AAEA,EAAA,aAAaS,SAASC,IAAoC,EAAA;AACxD,IAAA,MAAM,EAAEC,UAAYC,EAAAA,OAAAA,GAAU,EAAE,EAAA,GAAKC,WAAWH,IAAAA,CAAAA;AAChD,IAAA,MAAMI,MAAS,GAAA,MAAMC,SAA0BJ,CAAAA,UAAAA,EAAY,WAAA,CAAA;AAC3D,IAAO,OAAA,IAAIG,OAAOF,OAAAA,CAAAA;AACpB;EAOAI,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEjB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAAQ,KAAA;AACjC;EAEAkB,OAAU,GAAA;AACR,IAAA,IAAA,CAAKlB,QAAQkB,OAAO,EAAA;AACtB;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { EmbeddingModelError } from \"@/backend/errors.js\";\n\nexport interface EmbeddingModelInput {\n values: string[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface EmbeddingModelOutput {\n values: string[];\n embeddings: number[][];\n usage: { tokens?: number };\n}\n\nexport interface EmbeddingModelEvents {\n success?: Callback<{ value: EmbeddingModelOutput }>;\n start?: Callback<{ input: EmbeddingModelInput }>;\n error?: Callback<{ input: EmbeddingModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type EmbeddingModelEmitter<A = Record<never, never>> = Emitter<\n EmbeddingModelEvents & Omit<A, keyof EmbeddingModelEvents>\n>;\n\nexport abstract class EmbeddingModel extends Serializable {\n public abstract readonly emitter: Emitter<EmbeddingModelEvents>;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: EmbeddingModelInput) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n try {\n await run.emitter.emit(\"start\", { input });\n const result: EmbeddingModelOutput = await pRetry(() => this._create(input, run), {\n retries: input.maxRetries || 0,\n signal: run.signal,\n });\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n if (error instanceof EmbeddingModelError) {\n throw error;\n } else {\n throw new EmbeddingModelError(`The Embedding Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n static async fromName(name: FullModelName | ProviderName) {\n const { providerId, modelId = \"\" } = parseModel(name);\n const Target = await loadModel<EmbeddingModel>(providerId, \"embedding\");\n return new Target(modelId);\n }\n\n protected abstract _create(\n input: EmbeddingModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<EmbeddingModelOutput>;\n\n createSnapshot() {\n return { emitter: this.emitter };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n}\n"]}
@@ -14,7 +14,8 @@ function parseModel(name) {
14
14
  if (!name) {
15
15
  throw new errors_cjs.ValueError("Neither 'provider' nor 'provider:model' was specified.");
16
16
  }
17
- const [providerId, modelId] = name.split(":");
17
+ const [providerId, ...rest] = name.split(":");
18
+ const modelId = rest.join(":");
18
19
  const providerDef = findProviderDef(providerId);
19
20
  if (!providerDef) {
20
21
  throw new errors_cjs.ValueError("Model does not contain provider name!");
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["findProviderDef","value","Object","values","BackendProviders","find","p","name","module","aliases","includes","parseModel","ValueError","providerId","modelId","split","providerDef","loadModel","type","capitalize"],"mappings":";;;;;;;;AAuBA,SAASA,gBAAgBC,KAAa,EAAA;AACpC,EAAA,OACEC,OAAOC,MAAOC,CAAAA,8BAAAA,EAAkBC,IAC9B,CAAA,CAACC,MAAMA,CAAEC,CAAAA,IAAAA,KAASN,KAASK,IAAAA,CAAAA,CAAEE,WAAWP,KAASK,IAAAA,CAAAA,CAAEG,QAAQC,QAAST,CAAAA,KAAAA,CAAAA,CACjE,IAAA,IAAA;AAET;AANSD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAQF,SAASW,WAAWJ,IAAY,EAAA;AACrC,EAAA,IAAI,CAACA,IAAM,EAAA;AACT,IAAM,MAAA,IAAIK,sBAAW,wDAAA,CAAA;AACvB;AACA,EAAA,MAAM,CAACC,UAAYC,EAAAA,OAAAA,CAAWP,GAAAA,IAAAA,CAAKQ,MAAM,GAAA,CAAA;AACzC,EAAMC,MAAAA,WAAAA,GAAchB,gBAAgBa,UAAAA,CAAAA;AACpC,EAAA,IAAI,CAACG,WAAa,EAAA;AAChB,IAAM,MAAA,IAAIJ,sBAAW,uCAAA,CAAA;AACvB;AACA,EAAO,OAAA;AAAEC,IAAAA,UAAAA;AAAYC,IAAAA,OAAAA;AAASE,IAAAA;AAAY,GAAA;AAC5C;AAVgBL,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAYhB,eAAsBM,SAAAA,CACpBV,MACAW,IAA0B,EAAA;AAE1B,EAAA,MAAM,EAAEF,WAAAA,EAAgBL,GAAAA,UAAAA,CAAWJ,IAAAA,CAAAA;AACnC,EAAA,MAAMC,SAAS,MAAM,OAAO,4BAA4BQ,WAAYR,CAAAA,MAAM,YAAYU,IAAAA,CAAAA,CAAAA,CAAAA;AACtF,EAAOV,OAAAA,MAAAA,CAAO,GAAGQ,WAAYT,CAAAA,IAAI,GAAGY,iBAAWD,CAAAA,IAAAA,CAAAA,CAAY,KAAA,CAAA,CAAA;AAC7D;AAPsBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValueError } from \"@/errors.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { BackendProviders, ProviderDef, ProviderName } from \"@/backend/constants.js\";\nimport { capitalize } from \"remeda\";\n\nexport type FullModelName = `${ProviderName}:${string}`;\n\nfunction findProviderDef(value: string): ProviderDef | null {\n return (\n Object.values(BackendProviders).find(\n (p) => p.name === value || p.module === value || p.aliases.includes(value),\n ) ?? null\n );\n}\n\nexport function parseModel(name: string) {\n if (!name) {\n throw new ValueError(\"Neither 'provider' nor 'provider:model' was specified.\");\n }\n const [providerId, modelId] = name.split(\":\") as [ProviderName, string];\n const providerDef = findProviderDef(providerId);\n if (!providerDef) {\n throw new ValueError(\"Model does not contain provider name!\");\n }\n return { providerId, modelId, providerDef };\n}\n\nexport async function loadModel<T>(\n name: ProviderName | FullModelName,\n type: \"embedding\" | \"chat\",\n): Promise<ClassConstructor<T>> {\n const { providerDef } = parseModel(name);\n const module = await import(`beeai-framework/adapters/${providerDef.module}/backend/${type}`);\n return module[`${providerDef.name}${capitalize(type)}Model`];\n}\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["findProviderDef","value","Object","values","BackendProviders","find","p","name","module","aliases","includes","parseModel","ValueError","providerId","rest","split","modelId","join","providerDef","loadModel","type","capitalize"],"mappings":";;;;;;;;AAuBA,SAASA,gBAAgBC,KAAa,EAAA;AACpC,EAAA,OACEC,OAAOC,MAAOC,CAAAA,8BAAAA,EAAkBC,IAC9B,CAAA,CAACC,MAAMA,CAAEC,CAAAA,IAAAA,KAASN,KAASK,IAAAA,CAAAA,CAAEE,WAAWP,KAASK,IAAAA,CAAAA,CAAEG,QAAQC,QAAST,CAAAA,KAAAA,CAAAA,CACjE,IAAA,IAAA;AAET;AANSD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAQF,SAASW,WAAWJ,IAAY,EAAA;AACrC,EAAA,IAAI,CAACA,IAAM,EAAA;AACT,IAAM,MAAA,IAAIK,sBAAW,wDAAA,CAAA;AACvB;AACA,EAAA,MAAM,CAACC,UAAY,EAAA,GAAGC,IAAAA,CAAQP,GAAAA,IAAAA,CAAKQ,MAAM,GAAA,CAAA;AACzC,EAAMC,MAAAA,OAAAA,GAAUF,IAAKG,CAAAA,IAAAA,CAAK,GAAA,CAAA;AAE1B,EAAMC,MAAAA,WAAAA,GAAclB,gBAAgBa,UAAAA,CAAAA;AACpC,EAAA,IAAI,CAACK,WAAa,EAAA;AAChB,IAAM,MAAA,IAAIN,sBAAW,uCAAA,CAAA;AACvB;AACA,EAAO,OAAA;AAAEC,IAAAA,UAAAA;AAAYG,IAAAA,OAAAA;AAASE,IAAAA;AAAY,GAAA;AAC5C;AAZgBP,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAchB,eAAsBQ,SAAAA,CACpBZ,MACAa,IAA0B,EAAA;AAE1B,EAAA,MAAM,EAAEF,WAAAA,EAAgBP,GAAAA,UAAAA,CAAWJ,IAAAA,CAAAA;AACnC,EAAA,MAAMC,SAAS,MAAM,OAAO,4BAA4BU,WAAYV,CAAAA,MAAM,YAAYY,IAAAA,CAAAA,CAAAA,CAAAA;AACtF,EAAOZ,OAAAA,MAAAA,CAAO,GAAGU,WAAYX,CAAAA,IAAI,GAAGc,iBAAWD,CAAAA,IAAAA,CAAAA,CAAY,KAAA,CAAA,CAAA;AAC7D;AAPsBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValueError } from \"@/errors.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { BackendProviders, ProviderDef, ProviderName } from \"@/backend/constants.js\";\nimport { capitalize } from \"remeda\";\n\nexport type FullModelName = `${ProviderName}:${string}`;\n\nfunction findProviderDef(value: string): ProviderDef | null {\n return (\n Object.values(BackendProviders).find(\n (p) => p.name === value || p.module === value || p.aliases.includes(value),\n ) ?? null\n );\n}\n\nexport function parseModel(name: string) {\n if (!name) {\n throw new ValueError(\"Neither 'provider' nor 'provider:model' was specified.\");\n }\n const [providerId, ...rest] = name.split(\":\") as [ProviderName, ...string[]];\n const modelId = rest.join(\":\");\n\n const providerDef = findProviderDef(providerId);\n if (!providerDef) {\n throw new ValueError(\"Model does not contain provider name!\");\n }\n return { providerId, modelId, providerDef };\n}\n\nexport async function loadModel<T>(\n name: ProviderName | FullModelName,\n type: \"embedding\" | \"chat\",\n): Promise<ClassConstructor<T>> {\n const { providerDef } = parseModel(name);\n const module = await import(`beeai-framework/adapters/${providerDef.module}/backend/${type}`);\n return module[`${providerDef.name}${capitalize(type)}Model`];\n}\n"]}
@@ -12,7 +12,8 @@ function parseModel(name) {
12
12
  if (!name) {
13
13
  throw new ValueError("Neither 'provider' nor 'provider:model' was specified.");
14
14
  }
15
- const [providerId, modelId] = name.split(":");
15
+ const [providerId, ...rest] = name.split(":");
16
+ const modelId = rest.join(":");
16
17
  const providerDef = findProviderDef(providerId);
17
18
  if (!providerDef) {
18
19
  throw new ValueError("Model does not contain provider name!");