beeai-framework 0.1.24 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/a2a/serve/agent_executor.d.cts +1 -1
- package/dist/adapters/a2a/serve/agent_executor.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
- package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
- package/dist/adapters/anthropic/backend/embedding.d.cts +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.ts +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.ts +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.ts +1 -1
- package/dist/adapters/dummy/backend/chat.d.cts +3 -1
- package/dist/adapters/dummy/backend/chat.d.ts +3 -1
- package/dist/adapters/dummy/backend/embedding.d.cts +1 -1
- package/dist/adapters/dummy/backend/embedding.d.ts +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +2 -2
- package/dist/adapters/google-vertex/backend/chat.d.ts +2 -2
- package/dist/adapters/google-vertex/backend/embedding.d.cts +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.ts +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +1 -1
- package/dist/adapters/groq/backend/chat.d.ts +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +1 -1
- package/dist/adapters/groq/backend/embedding.d.ts +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +3 -1
- package/dist/adapters/langchain/backend/chat.d.ts +3 -1
- package/dist/adapters/langchain/backend/embedding.d.cts +1 -1
- package/dist/adapters/langchain/backend/embedding.d.ts +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +1 -1
- package/dist/adapters/ollama/backend/chat.d.ts +1 -1
- package/dist/adapters/ollama/backend/embedding.d.cts +1 -1
- package/dist/adapters/ollama/backend/embedding.d.ts +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +1 -1
- package/dist/adapters/openai/backend/chat.d.ts +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +1 -1
- package/dist/adapters/openai/backend/embedding.d.ts +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +3 -1
- package/dist/adapters/vercel/backend/chat.d.ts +3 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +1 -1
- package/dist/adapters/vercel/backend/embedding.d.ts +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +1 -1
- package/dist/adapters/vercel/backend/utils.d.ts +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +11 -0
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +3 -1
- package/dist/adapters/watsonx/backend/chat.d.ts +3 -1
- package/dist/adapters/watsonx/backend/chat.js +11 -0
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.ts +1 -1
- package/dist/adapters/xai/backend/chat.d.cts +1 -1
- package/dist/adapters/xai/backend/chat.d.ts +1 -1
- package/dist/{agent-DHLEPXEA.d.ts → agent-CZGWXO-X.d.ts} +1 -1
- package/dist/{agent-Cy4QtsN8.d.cts → agent-PRlGoawI.d.cts} +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +1 -1
- package/dist/agents/experimental/replan/agent.d.ts +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +1 -1
- package/dist/agents/experimental/streamlit/agent.d.ts +1 -1
- package/dist/agents/react/agent.d.cts +2 -2
- package/dist/agents/react/agent.d.ts +2 -2
- package/dist/agents/react/prompts.d.cts +1 -1
- package/dist/agents/react/prompts.d.ts +1 -1
- package/dist/agents/react/runners/base.d.cts +2 -2
- package/dist/agents/react/runners/base.d.ts +2 -2
- package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
- package/dist/agents/react/runners/deep-think/runner.d.cts +3 -3
- package/dist/agents/react/runners/deep-think/runner.d.ts +3 -3
- package/dist/agents/react/runners/default/runner.d.cts +3 -3
- package/dist/agents/react/runners/default/runner.d.ts +3 -3
- package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
- package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +3 -3
- package/dist/agents/react/runners/granite/runner.d.ts +3 -3
- package/dist/agents/react/types.d.cts +1 -1
- package/dist/agents/react/types.d.ts +1 -1
- package/dist/agents/requirement/agent.d.cts +2 -2
- package/dist/agents/requirement/agent.d.ts +2 -2
- package/dist/agents/requirement/requirements/conditional.d.cts +2 -2
- package/dist/agents/requirement/requirements/conditional.d.ts +2 -2
- package/dist/agents/requirement/requirements/requirement.d.cts +2 -2
- package/dist/agents/requirement/requirements/requirement.d.ts +2 -2
- package/dist/agents/requirement/runner.cjs +33 -14
- package/dist/agents/requirement/runner.cjs.map +1 -1
- package/dist/agents/requirement/runner.d.cts +2 -2
- package/dist/agents/requirement/runner.d.ts +2 -2
- package/dist/agents/requirement/runner.js +33 -14
- package/dist/agents/requirement/runner.js.map +1 -1
- package/dist/agents/requirement/types.d.cts +2 -2
- package/dist/agents/requirement/types.d.ts +2 -2
- package/dist/agents/requirement/utils/llm.d.cts +2 -2
- package/dist/agents/requirement/utils/llm.d.ts +2 -2
- package/dist/agents/requirement/utils/tool.cjs +13 -2
- package/dist/agents/requirement/utils/tool.cjs.map +1 -1
- package/dist/agents/requirement/utils/tool.d.cts +2 -2
- package/dist/agents/requirement/utils/tool.d.ts +2 -2
- package/dist/agents/requirement/utils/tool.js +11 -0
- package/dist/agents/requirement/utils/tool.js.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +1 -1
- package/dist/agents/toolCalling/agent.d.ts +1 -1
- package/dist/backend/backend.d.cts +1 -1
- package/dist/backend/backend.d.ts +1 -1
- package/dist/backend/chat.cjs +124 -45
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +1 -1
- package/dist/backend/chat.d.ts +1 -1
- package/dist/backend/chat.js +127 -48
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/core.d.cts +2 -2
- package/dist/backend/core.d.ts +2 -2
- package/dist/backend/embedding.d.cts +1 -1
- package/dist/backend/embedding.d.ts +1 -1
- package/dist/backend/errors.cjs +25 -0
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.d.cts +34 -1
- package/dist/backend/errors.d.ts +34 -1
- package/dist/backend/errors.js +24 -1
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/utils.d.cts +1 -1
- package/dist/backend/utils.d.ts +1 -1
- package/dist/{chat-CC0s8z23.d.cts → chat-BFl85cqt.d.cts} +6 -0
- package/dist/{chat-D8SVtw5Q.d.ts → chat-BRuyDeKR.d.ts} +6 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/memory/summarizeMemory.d.cts +1 -1
- package/dist/memory/summarizeMemory.d.ts +1 -1
- package/dist/middleware/streamToolCall.cjs +9 -0
- package/dist/middleware/streamToolCall.cjs.map +1 -1
- package/dist/middleware/streamToolCall.d.cts +10 -2
- package/dist/middleware/streamToolCall.d.ts +10 -2
- package/dist/middleware/streamToolCall.js +9 -0
- package/dist/middleware/streamToolCall.js.map +1 -1
- package/dist/tools/custom.d.cts +1 -1
- package/dist/tools/custom.d.ts +1 -1
- package/dist/tools/llm.d.cts +1 -1
- package/dist/tools/llm.d.ts +1 -1
- package/dist/tools/python/python.d.cts +1 -1
- package/dist/tools/python/python.d.ts +1 -1
- package/dist/{types-Dyd4e1G6.d.ts → types-BQ-3LdkE.d.ts} +9 -9
- package/dist/{types-D9pn62yF.d.cts → types-CkEtV8R9.d.cts} +9 -9
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/workflows/agent.d.cts +1 -1
- package/dist/workflows/agent.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/middleware/streamToolCall.ts"],"names":["StreamToolCallMiddleware","Middleware","target","key","matchNested","forceStreaming","cleanups","output","ChatModelOutput","buffer","delta","emitter","options","Emitter","root","child","namespace","reset","isEmpty","length","bind","ctx","push","instance","match","meta","creator","ChatModel","name","handleStart","createEmitterOptions","handleNewToken","handleSuccess","unbind","fn","shift","isBlocking","process","toolName","args","parsedArgs","isString","parseBrokenJson","pair","outputStructured","parse","catch","hasProp","JSON","stringify","slice","emit","data","_meta","input","stream","streamPartialToolCalls","messages","value","callbacks","abort","merge","toolCalls","getToolCalls","toolCall","textContent","getTextContent","isPlainObject","parameters"],"mappings":"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","file":"streamToolCall.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { ChatModel, ChatModelEvents } from \"@/backend/chat.js\";\nimport { ChatModelOutput } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { hasProp } from \"@/internals/helpers/object.js\";\nimport { EmitterOptions, InferCallbackValue } from \"@/emitter/types.js\";\n\n/**\n * Event emitted when the middleware detects an update to the target tool's arguments\n */\nexport interface StreamToolCallMiddlewareUpdateEvent<T = any> {\n /** The validated and structured tool input */\n outputStructured: T | null;\n /** The current value of the target field */\n output: string;\n /** The incremental change since the last update */\n delta: string;\n}\n\n/**\n * Callbacks for StreamToolCallMiddleware events\n */\nexport interface StreamToolCallMiddlewareCallbacks<T = any> {\n update: Callback<StreamToolCallMiddlewareUpdateEvent<T>>;\n}\n\n/**\n * Options for configuring StreamToolCallMiddleware\n */\nexport interface StreamToolCallMiddlewareOptions {\n /** The tool to monitor for streaming updates */\n target: Tool<any>;\n /** The field name in the tool's input schema to stream */\n key: string;\n /** Whether to apply middleware to nested run contexts */\n matchNested?: boolean;\n /** Whether to force streaming on the ChatModel */\n forceStreaming?: boolean;\n}\n\n/**\n * Middleware for handling streaming tool calls in a ChatModel.\n *\n * This middleware observes and listens to ChatModel stream updates and parses\n * the tool calls on demand so that they can be consumed as soon as possible.\n *\n * @example\n * ```typescript\n * const middleware = new StreamToolCallMiddleware({\n * target: thinkTool,\n * key: \"thoughts\",\n * matchNested: false,\n * forceStreaming: true,\n * });\n *\n * middleware.emitter.on(\"update\", (event) => {\n * console.log(\"Delta:\", event.delta);\n * console.log(\"Structured:\", event.outputStructured);\n * });\n *\n * await llm.run(messages, { tools: [thinkTool] }).middleware(middleware);\n * ```\n */\nexport class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance> {\n private readonly target: Tool<any>;\n private readonly key: string;\n private readonly matchNested: boolean;\n private readonly forceStreaming: boolean;\n private readonly cleanups: (() => void)[] = [];\n\n private output = new ChatModelOutput([]);\n private buffer = \"\";\n private delta = \"\";\n\n public readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;\n\n constructor(options: StreamToolCallMiddlewareOptions) {\n super();\n\n this.target = options.target;\n this.key = options.key;\n this.matchNested = options.matchNested ?? false;\n this.forceStreaming = options.forceStreaming ?? false;\n\n this.emitter = Emitter.root.child<StreamToolCallMiddlewareCallbacks<T>>({\n namespace: [\"middleware\", \"streamToolCall\"],\n });\n }\n\n reset() {\n this.output = new ChatModelOutput([]);\n this.buffer = \"\";\n this.delta = \"\";\n }\n\n isEmpty() {\n return this.buffer.length === 0;\n }\n\n bind(ctx: RunContext<RunInstance>): void {\n this.reset();\n\n // Listen to ChatModel start event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"start\",\n this.handleStart.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel newToken event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"newToken\",\n this.handleNewToken.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel success event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"success\",\n this.handleSuccess.bind(this),\n this.createEmitterOptions(),\n ),\n );\n }\n\n unbind(): void {\n // Clean up previous bindings\n while (this.cleanups.length > 0) {\n const fn = this.cleanups.shift()!;\n fn();\n }\n }\n\n protected createEmitterOptions(): EmitterOptions {\n return {\n matchNested: this.matchNested,\n isBlocking: true,\n };\n }\n\n private async process(toolName: string, args: any): Promise<void> {\n if (toolName !== this.target.name) {\n return;\n }\n\n const parsedArgs = isString(args) ? parseBrokenJson(args, { pair: [\"{\", \"}\"] }) : args;\n const outputStructured = (await this.target.parse(parsedArgs).catch(() => null)) as T;\n if (!outputStructured) {\n return;\n }\n\n let output = \"\";\n if (hasProp(outputStructured, this.key as keyof T)) {\n output = (outputStructured as any)[this.key] || \"\";\n if (!isString(output)) {\n output = JSON.stringify(output);\n }\n this.delta = output.slice(this.buffer.length);\n this.buffer = output;\n\n if (!this.delta) {\n return;\n }\n }\n\n await this.emitter.emit(\"update\", {\n outputStructured,\n delta: this.delta,\n output,\n });\n }\n\n private async handleStart(\n data: InferCallbackValue<ChatModelEvents[\"start\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n if (this.forceStreaming) {\n data.input.stream = true;\n data.input.streamPartialToolCalls = true;\n }\n }\n\n private async handleSuccess(\n data: InferCallbackValue<ChatModelEvents[\"success\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n // If we haven't received any tokens yet, process the final output\n if (this.output.messages.length === 0) {\n await this.handleNewToken({ value: data.value, callbacks: { abort: () => {} } }, _meta);\n }\n }\n\n private async handleNewToken(\n data: InferCallbackValue<ChatModelEvents[\"newToken\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n await this.output.merge(data.value);\n\n const toolCalls = this.output.getToolCalls();\n if (toolCalls.length > 0) {\n for (const toolCall of toolCalls) {\n await this.process(toolCall.toolName, toolCall.input);\n }\n return;\n }\n\n // Try to parse text content as a tool call\n const textContent = this.output.getTextContent();\n const toolCall = parseBrokenJson(textContent, { pair: [\"{\", \"}\"] });\n\n if (!toolCall || !isPlainObject(toolCall)) {\n return;\n }\n\n await this.process(toolCall.name as string, toolCall.parameters as any);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/streamToolCall.ts"],"names":["StreamToolCallMiddleware","Middleware","target","key","matchNested","forceStreaming","cleanups","output","ChatModelOutput","buffer","delta","emitter","options","Emitter","root","child","namespace","reset","add","chunk","handleNewToken","value","callbacks","abort","isEmpty","length","bind","ctx","push","instance","match","meta","creator","ChatModel","name","handleStart","createEmitterOptions","handleSuccess","unbind","fn","shift","isBlocking","process","toolName","args","parsedArgs","isString","parseBrokenJson","pair","outputStructured","parse","catch","hasProp","JSON","stringify","slice","emit","data","_meta","input","stream","streamPartialToolCalls","messages","merge","toolCalls","getToolCalls","toolCall","textContent","getTextContent","isPlainObject","parameters"],"mappings":"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","file":"streamToolCall.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { ChatModel, ChatModelEvents } from \"@/backend/chat.js\";\nimport { ChatModelOutput } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { hasProp } from \"@/internals/helpers/object.js\";\nimport { EmitterOptions, InferCallbackValue } from \"@/emitter/types.js\";\n\n/**\n * Event emitted when the middleware detects an update to the target tool's arguments\n */\nexport interface StreamToolCallMiddlewareUpdateEvent<T = any> {\n /** The validated and structured tool input */\n outputStructured: T | null;\n /** The current value of the target field */\n output: string;\n /** The incremental change since the last update */\n delta: string;\n}\n\n/**\n * Callbacks for StreamToolCallMiddleware events\n */\nexport interface StreamToolCallMiddlewareCallbacks<T = any> {\n update: Callback<StreamToolCallMiddlewareUpdateEvent<T>>;\n}\n\n/**\n * Options for configuring StreamToolCallMiddleware\n */\nexport interface StreamToolCallMiddlewareOptions {\n /** The tool to monitor for streaming updates */\n target: Tool<any>;\n /** The field name in the tool's input schema to stream */\n key: string;\n /** Whether to apply middleware to nested run contexts */\n matchNested?: boolean;\n /** Whether to force streaming on the ChatModel */\n forceStreaming?: boolean;\n}\n\n/**\n * Middleware for handling streaming tool calls in a ChatModel.\n *\n * This middleware observes and listens to ChatModel stream updates and parses\n * the tool calls on demand so that they can be consumed as soon as possible.\n *\n * @example\n * ```typescript\n * const middleware = new StreamToolCallMiddleware({\n * target: thinkTool,\n * key: \"thoughts\",\n * matchNested: false,\n * forceStreaming: true,\n * });\n *\n * middleware.emitter.on(\"update\", (event) => {\n * console.log(\"Delta:\", event.delta);\n * console.log(\"Structured:\", event.outputStructured);\n * });\n *\n * await llm.run(messages, { tools: [thinkTool] }).middleware(middleware);\n * ```\n */\nexport class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance> {\n private readonly target: Tool<any>;\n private readonly key: string;\n private readonly matchNested: boolean;\n private readonly forceStreaming: boolean;\n private readonly cleanups: (() => void)[] = [];\n\n private output = new ChatModelOutput([]);\n private buffer = \"\";\n private delta = \"\";\n\n public readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;\n\n constructor(options: StreamToolCallMiddlewareOptions) {\n super();\n\n this.target = options.target;\n this.key = options.key;\n this.matchNested = options.matchNested ?? false;\n this.forceStreaming = options.forceStreaming ?? false;\n\n this.emitter = Emitter.root.child<StreamToolCallMiddlewareCallbacks<T>>({\n namespace: [\"middleware\", \"streamToolCall\"],\n });\n }\n\n reset() {\n this.output = new ChatModelOutput([]);\n this.buffer = \"\";\n this.delta = \"\";\n }\n\n async add(chunk: ChatModelOutput) {\n await this.handleNewToken(\n {\n value: chunk,\n callbacks: {\n abort: () => {},\n },\n },\n {} as EventMeta,\n );\n }\n\n isEmpty() {\n return this.buffer.length === 0;\n }\n\n bind(ctx: RunContext<RunInstance>): void {\n this.reset();\n\n // Listen to ChatModel start event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"start\",\n this.handleStart.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel newToken event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"newToken\",\n this.handleNewToken.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel success event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"success\",\n this.handleSuccess.bind(this),\n this.createEmitterOptions(),\n ),\n );\n }\n\n unbind(): void {\n // Clean up previous bindings\n while (this.cleanups.length > 0) {\n const fn = this.cleanups.shift()!;\n fn();\n }\n }\n\n protected createEmitterOptions(): EmitterOptions {\n return {\n matchNested: this.matchNested,\n isBlocking: true,\n };\n }\n\n private async process(toolName: string, args: any): Promise<void> {\n if (toolName !== this.target.name) {\n return;\n }\n\n const parsedArgs = isString(args) ? parseBrokenJson(args, { pair: [\"{\", \"}\"] }) : args;\n const outputStructured = (await this.target.parse(parsedArgs).catch(() => null)) as T;\n if (!outputStructured) {\n return;\n }\n\n let output = \"\";\n if (hasProp(outputStructured, this.key as keyof T)) {\n output = (outputStructured as any)[this.key] || \"\";\n if (!isString(output)) {\n output = JSON.stringify(output);\n }\n this.delta = output.slice(this.buffer.length);\n this.buffer = output;\n\n if (!this.delta) {\n return;\n }\n }\n\n await this.emitter.emit(\"update\", {\n outputStructured,\n delta: this.delta,\n output,\n });\n }\n\n private async handleStart(\n data: InferCallbackValue<ChatModelEvents[\"start\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n if (this.forceStreaming) {\n data.input.stream = true;\n data.input.streamPartialToolCalls = true;\n }\n }\n\n private async handleSuccess(\n data: InferCallbackValue<ChatModelEvents[\"success\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n // If we haven't received any tokens yet, process the final output\n if (this.output.messages.length === 0) {\n await this.handleNewToken({ value: data.value, callbacks: { abort: () => {} } }, _meta);\n }\n }\n\n private async handleNewToken(\n data: InferCallbackValue<ChatModelEvents[\"newToken\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n await this.output.merge(data.value);\n\n const toolCalls = this.output.getToolCalls();\n if (toolCalls.length > 0) {\n for (const toolCall of toolCalls) {\n await this.process(toolCall.toolName, toolCall.input);\n }\n return;\n }\n\n // Try to parse text content as a tool call\n const textContent = this.output.getTextContent();\n const toolCall = parseBrokenJson(textContent, { pair: [\"{\", \"}\"] });\n\n if (!toolCall || !isPlainObject(toolCall)) {\n return;\n }\n\n await this.process(toolCall.name as string, toolCall.parameters as any);\n }\n}\n"]}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { Middleware, RunInstance, RunContext } from '../context.cjs';
|
|
2
2
|
import { C as Callback, E as Emitter, a as EmitterOptions } from '../emitter-jN55XZZq.cjs';
|
|
3
|
+
import { n as ChatModelOutput } from '../chat-BFl85cqt.cjs';
|
|
3
4
|
import { Tool } from '../tools/base.cjs';
|
|
4
5
|
import '../internals/serializable.cjs';
|
|
5
6
|
import '../internals/types.cjs';
|
|
6
7
|
import '../internals/helpers/guards.cjs';
|
|
7
8
|
import '../internals/helpers/promise.cjs';
|
|
8
9
|
import '../errors.cjs';
|
|
9
|
-
import '
|
|
10
|
+
import '../backend/message.cjs';
|
|
11
|
+
import 'ai';
|
|
10
12
|
import 'promise-based-task';
|
|
11
13
|
import '../cache/base.cjs';
|
|
12
|
-
import '../
|
|
14
|
+
import '../backend/constants.cjs';
|
|
13
15
|
import 'zod';
|
|
16
|
+
import 'ajv';
|
|
17
|
+
import '../template.cjs';
|
|
18
|
+
import '../logger/logger.cjs';
|
|
19
|
+
import 'pino';
|
|
20
|
+
import '../internals/helpers/schema.cjs';
|
|
14
21
|
import 'zod-to-json-schema';
|
|
15
22
|
|
|
16
23
|
/**
|
|
@@ -83,6 +90,7 @@ declare class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance>
|
|
|
83
90
|
readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;
|
|
84
91
|
constructor(options: StreamToolCallMiddlewareOptions);
|
|
85
92
|
reset(): void;
|
|
93
|
+
add(chunk: ChatModelOutput): Promise<void>;
|
|
86
94
|
isEmpty(): boolean;
|
|
87
95
|
bind(ctx: RunContext<RunInstance>): void;
|
|
88
96
|
unbind(): void;
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { Middleware, RunInstance, RunContext } from '../context.js';
|
|
2
2
|
import { C as Callback, E as Emitter, a as EmitterOptions } from '../emitter-36-9MnvA.js';
|
|
3
|
+
import { n as ChatModelOutput } from '../chat-BRuyDeKR.js';
|
|
3
4
|
import { Tool } from '../tools/base.js';
|
|
4
5
|
import '../internals/serializable.js';
|
|
5
6
|
import '../internals/types.js';
|
|
6
7
|
import '../internals/helpers/guards.js';
|
|
7
8
|
import '../internals/helpers/promise.js';
|
|
8
9
|
import '../errors.js';
|
|
9
|
-
import '
|
|
10
|
+
import '../backend/message.js';
|
|
11
|
+
import 'ai';
|
|
10
12
|
import 'promise-based-task';
|
|
11
13
|
import '../cache/base.js';
|
|
12
|
-
import '../
|
|
14
|
+
import '../backend/constants.js';
|
|
13
15
|
import 'zod';
|
|
16
|
+
import 'ajv';
|
|
17
|
+
import '../template.js';
|
|
18
|
+
import '../logger/logger.js';
|
|
19
|
+
import 'pino';
|
|
20
|
+
import '../internals/helpers/schema.js';
|
|
14
21
|
import 'zod-to-json-schema';
|
|
15
22
|
|
|
16
23
|
/**
|
|
@@ -83,6 +90,7 @@ declare class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance>
|
|
|
83
90
|
readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;
|
|
84
91
|
constructor(options: StreamToolCallMiddlewareOptions);
|
|
85
92
|
reset(): void;
|
|
93
|
+
add(chunk: ChatModelOutput): Promise<void>;
|
|
86
94
|
isEmpty(): boolean;
|
|
87
95
|
bind(ctx: RunContext<RunInstance>): void;
|
|
88
96
|
unbind(): void;
|
|
@@ -38,6 +38,15 @@ class StreamToolCallMiddleware extends Middleware {
|
|
|
38
38
|
this.buffer = "";
|
|
39
39
|
this.delta = "";
|
|
40
40
|
}
|
|
41
|
+
async add(chunk) {
|
|
42
|
+
await this.handleNewToken({
|
|
43
|
+
value: chunk,
|
|
44
|
+
callbacks: {
|
|
45
|
+
abort: /* @__PURE__ */ __name(() => {
|
|
46
|
+
}, "abort")
|
|
47
|
+
}
|
|
48
|
+
}, {});
|
|
49
|
+
}
|
|
41
50
|
isEmpty() {
|
|
42
51
|
return this.buffer.length === 0;
|
|
43
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/middleware/streamToolCall.ts"],"names":["StreamToolCallMiddleware","Middleware","target","key","matchNested","forceStreaming","cleanups","output","ChatModelOutput","buffer","delta","emitter","options","Emitter","root","child","namespace","reset","isEmpty","length","bind","ctx","push","instance","match","meta","creator","ChatModel","name","handleStart","createEmitterOptions","handleNewToken","handleSuccess","unbind","fn","shift","isBlocking","process","toolName","args","parsedArgs","isString","parseBrokenJson","pair","outputStructured","parse","catch","hasProp","JSON","stringify","slice","emit","data","_meta","input","stream","streamPartialToolCalls","messages","value","callbacks","abort","merge","toolCalls","getToolCalls","toolCall","textContent","getTextContent","isPlainObject","parameters"],"mappings":"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","file":"streamToolCall.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { ChatModel, ChatModelEvents } from \"@/backend/chat.js\";\nimport { ChatModelOutput } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { hasProp } from \"@/internals/helpers/object.js\";\nimport { EmitterOptions, InferCallbackValue } from \"@/emitter/types.js\";\n\n/**\n * Event emitted when the middleware detects an update to the target tool's arguments\n */\nexport interface StreamToolCallMiddlewareUpdateEvent<T = any> {\n /** The validated and structured tool input */\n outputStructured: T | null;\n /** The current value of the target field */\n output: string;\n /** The incremental change since the last update */\n delta: string;\n}\n\n/**\n * Callbacks for StreamToolCallMiddleware events\n */\nexport interface StreamToolCallMiddlewareCallbacks<T = any> {\n update: Callback<StreamToolCallMiddlewareUpdateEvent<T>>;\n}\n\n/**\n * Options for configuring StreamToolCallMiddleware\n */\nexport interface StreamToolCallMiddlewareOptions {\n /** The tool to monitor for streaming updates */\n target: Tool<any>;\n /** The field name in the tool's input schema to stream */\n key: string;\n /** Whether to apply middleware to nested run contexts */\n matchNested?: boolean;\n /** Whether to force streaming on the ChatModel */\n forceStreaming?: boolean;\n}\n\n/**\n * Middleware for handling streaming tool calls in a ChatModel.\n *\n * This middleware observes and listens to ChatModel stream updates and parses\n * the tool calls on demand so that they can be consumed as soon as possible.\n *\n * @example\n * ```typescript\n * const middleware = new StreamToolCallMiddleware({\n * target: thinkTool,\n * key: \"thoughts\",\n * matchNested: false,\n * forceStreaming: true,\n * });\n *\n * middleware.emitter.on(\"update\", (event) => {\n * console.log(\"Delta:\", event.delta);\n * console.log(\"Structured:\", event.outputStructured);\n * });\n *\n * await llm.run(messages, { tools: [thinkTool] }).middleware(middleware);\n * ```\n */\nexport class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance> {\n private readonly target: Tool<any>;\n private readonly key: string;\n private readonly matchNested: boolean;\n private readonly forceStreaming: boolean;\n private readonly cleanups: (() => void)[] = [];\n\n private output = new ChatModelOutput([]);\n private buffer = \"\";\n private delta = \"\";\n\n public readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;\n\n constructor(options: StreamToolCallMiddlewareOptions) {\n super();\n\n this.target = options.target;\n this.key = options.key;\n this.matchNested = options.matchNested ?? false;\n this.forceStreaming = options.forceStreaming ?? false;\n\n this.emitter = Emitter.root.child<StreamToolCallMiddlewareCallbacks<T>>({\n namespace: [\"middleware\", \"streamToolCall\"],\n });\n }\n\n reset() {\n this.output = new ChatModelOutput([]);\n this.buffer = \"\";\n this.delta = \"\";\n }\n\n isEmpty() {\n return this.buffer.length === 0;\n }\n\n bind(ctx: RunContext<RunInstance>): void {\n this.reset();\n\n // Listen to ChatModel start event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"start\",\n this.handleStart.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel newToken event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"newToken\",\n this.handleNewToken.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel success event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"success\",\n this.handleSuccess.bind(this),\n this.createEmitterOptions(),\n ),\n );\n }\n\n unbind(): void {\n // Clean up previous bindings\n while (this.cleanups.length > 0) {\n const fn = this.cleanups.shift()!;\n fn();\n }\n }\n\n protected createEmitterOptions(): EmitterOptions {\n return {\n matchNested: this.matchNested,\n isBlocking: true,\n };\n }\n\n private async process(toolName: string, args: any): Promise<void> {\n if (toolName !== this.target.name) {\n return;\n }\n\n const parsedArgs = isString(args) ? parseBrokenJson(args, { pair: [\"{\", \"}\"] }) : args;\n const outputStructured = (await this.target.parse(parsedArgs).catch(() => null)) as T;\n if (!outputStructured) {\n return;\n }\n\n let output = \"\";\n if (hasProp(outputStructured, this.key as keyof T)) {\n output = (outputStructured as any)[this.key] || \"\";\n if (!isString(output)) {\n output = JSON.stringify(output);\n }\n this.delta = output.slice(this.buffer.length);\n this.buffer = output;\n\n if (!this.delta) {\n return;\n }\n }\n\n await this.emitter.emit(\"update\", {\n outputStructured,\n delta: this.delta,\n output,\n });\n }\n\n private async handleStart(\n data: InferCallbackValue<ChatModelEvents[\"start\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n if (this.forceStreaming) {\n data.input.stream = true;\n data.input.streamPartialToolCalls = true;\n }\n }\n\n private async handleSuccess(\n data: InferCallbackValue<ChatModelEvents[\"success\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n // If we haven't received any tokens yet, process the final output\n if (this.output.messages.length === 0) {\n await this.handleNewToken({ value: data.value, callbacks: { abort: () => {} } }, _meta);\n }\n }\n\n private async handleNewToken(\n data: InferCallbackValue<ChatModelEvents[\"newToken\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n await this.output.merge(data.value);\n\n const toolCalls = this.output.getToolCalls();\n if (toolCalls.length > 0) {\n for (const toolCall of toolCalls) {\n await this.process(toolCall.toolName, toolCall.input);\n }\n return;\n }\n\n // Try to parse text content as a tool call\n const textContent = this.output.getTextContent();\n const toolCall = parseBrokenJson(textContent, { pair: [\"{\", \"}\"] });\n\n if (!toolCall || !isPlainObject(toolCall)) {\n return;\n }\n\n await this.process(toolCall.name as string, toolCall.parameters as any);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/streamToolCall.ts"],"names":["StreamToolCallMiddleware","Middleware","target","key","matchNested","forceStreaming","cleanups","output","ChatModelOutput","buffer","delta","emitter","options","Emitter","root","child","namespace","reset","add","chunk","handleNewToken","value","callbacks","abort","isEmpty","length","bind","ctx","push","instance","match","meta","creator","ChatModel","name","handleStart","createEmitterOptions","handleSuccess","unbind","fn","shift","isBlocking","process","toolName","args","parsedArgs","isString","parseBrokenJson","pair","outputStructured","parse","catch","hasProp","JSON","stringify","slice","emit","data","_meta","input","stream","streamPartialToolCalls","messages","merge","toolCalls","getToolCalls","toolCall","textContent","getTextContent","isPlainObject","parameters"],"mappings":"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","file":"streamToolCall.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { ChatModel, ChatModelEvents } from \"@/backend/chat.js\";\nimport { ChatModelOutput } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { hasProp } from \"@/internals/helpers/object.js\";\nimport { EmitterOptions, InferCallbackValue } from \"@/emitter/types.js\";\n\n/**\n * Event emitted when the middleware detects an update to the target tool's arguments\n */\nexport interface StreamToolCallMiddlewareUpdateEvent<T = any> {\n /** The validated and structured tool input */\n outputStructured: T | null;\n /** The current value of the target field */\n output: string;\n /** The incremental change since the last update */\n delta: string;\n}\n\n/**\n * Callbacks for StreamToolCallMiddleware events\n */\nexport interface StreamToolCallMiddlewareCallbacks<T = any> {\n update: Callback<StreamToolCallMiddlewareUpdateEvent<T>>;\n}\n\n/**\n * Options for configuring StreamToolCallMiddleware\n */\nexport interface StreamToolCallMiddlewareOptions {\n /** The tool to monitor for streaming updates */\n target: Tool<any>;\n /** The field name in the tool's input schema to stream */\n key: string;\n /** Whether to apply middleware to nested run contexts */\n matchNested?: boolean;\n /** Whether to force streaming on the ChatModel */\n forceStreaming?: boolean;\n}\n\n/**\n * Middleware for handling streaming tool calls in a ChatModel.\n *\n * This middleware observes and listens to ChatModel stream updates and parses\n * the tool calls on demand so that they can be consumed as soon as possible.\n *\n * @example\n * ```typescript\n * const middleware = new StreamToolCallMiddleware({\n * target: thinkTool,\n * key: \"thoughts\",\n * matchNested: false,\n * forceStreaming: true,\n * });\n *\n * middleware.emitter.on(\"update\", (event) => {\n * console.log(\"Delta:\", event.delta);\n * console.log(\"Structured:\", event.outputStructured);\n * });\n *\n * await llm.run(messages, { tools: [thinkTool] }).middleware(middleware);\n * ```\n */\nexport class StreamToolCallMiddleware<T = any> extends Middleware<RunInstance> {\n private readonly target: Tool<any>;\n private readonly key: string;\n private readonly matchNested: boolean;\n private readonly forceStreaming: boolean;\n private readonly cleanups: (() => void)[] = [];\n\n private output = new ChatModelOutput([]);\n private buffer = \"\";\n private delta = \"\";\n\n public readonly emitter: Emitter<StreamToolCallMiddlewareCallbacks<T>>;\n\n constructor(options: StreamToolCallMiddlewareOptions) {\n super();\n\n this.target = options.target;\n this.key = options.key;\n this.matchNested = options.matchNested ?? false;\n this.forceStreaming = options.forceStreaming ?? false;\n\n this.emitter = Emitter.root.child<StreamToolCallMiddlewareCallbacks<T>>({\n namespace: [\"middleware\", \"streamToolCall\"],\n });\n }\n\n reset() {\n this.output = new ChatModelOutput([]);\n this.buffer = \"\";\n this.delta = \"\";\n }\n\n async add(chunk: ChatModelOutput) {\n await this.handleNewToken(\n {\n value: chunk,\n callbacks: {\n abort: () => {},\n },\n },\n {} as EventMeta,\n );\n }\n\n isEmpty() {\n return this.buffer.length === 0;\n }\n\n bind(ctx: RunContext<RunInstance>): void {\n this.reset();\n\n // Listen to ChatModel start event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"start\",\n this.handleStart.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel newToken event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"newToken\",\n this.handleNewToken.bind(this),\n this.createEmitterOptions(),\n ),\n );\n\n // Listen to ChatModel success event\n this.cleanups.push(\n ctx.instance.emitter.match(\n (meta) => meta.creator instanceof ChatModel && meta.name === \"success\",\n this.handleSuccess.bind(this),\n this.createEmitterOptions(),\n ),\n );\n }\n\n unbind(): void {\n // Clean up previous bindings\n while (this.cleanups.length > 0) {\n const fn = this.cleanups.shift()!;\n fn();\n }\n }\n\n protected createEmitterOptions(): EmitterOptions {\n return {\n matchNested: this.matchNested,\n isBlocking: true,\n };\n }\n\n private async process(toolName: string, args: any): Promise<void> {\n if (toolName !== this.target.name) {\n return;\n }\n\n const parsedArgs = isString(args) ? parseBrokenJson(args, { pair: [\"{\", \"}\"] }) : args;\n const outputStructured = (await this.target.parse(parsedArgs).catch(() => null)) as T;\n if (!outputStructured) {\n return;\n }\n\n let output = \"\";\n if (hasProp(outputStructured, this.key as keyof T)) {\n output = (outputStructured as any)[this.key] || \"\";\n if (!isString(output)) {\n output = JSON.stringify(output);\n }\n this.delta = output.slice(this.buffer.length);\n this.buffer = output;\n\n if (!this.delta) {\n return;\n }\n }\n\n await this.emitter.emit(\"update\", {\n outputStructured,\n delta: this.delta,\n output,\n });\n }\n\n private async handleStart(\n data: InferCallbackValue<ChatModelEvents[\"start\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n if (this.forceStreaming) {\n data.input.stream = true;\n data.input.streamPartialToolCalls = true;\n }\n }\n\n private async handleSuccess(\n data: InferCallbackValue<ChatModelEvents[\"success\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n // If we haven't received any tokens yet, process the final output\n if (this.output.messages.length === 0) {\n await this.handleNewToken({ value: data.value, callbacks: { abort: () => {} } }, _meta);\n }\n }\n\n private async handleNewToken(\n data: InferCallbackValue<ChatModelEvents[\"newToken\"]>,\n _meta: EventMeta,\n ): Promise<void> {\n await this.output.merge(data.value);\n\n const toolCalls = this.output.getToolCalls();\n if (toolCalls.length > 0) {\n for (const toolCall of toolCalls) {\n await this.process(toolCall.toolName, toolCall.input);\n }\n return;\n }\n\n // Try to parse text content as a tool call\n const textContent = this.output.getTextContent();\n const toolCall = parseBrokenJson(textContent, { pair: [\"{\", \"}\"] });\n\n if (!toolCall || !isPlainObject(toolCall)) {\n return;\n }\n\n await this.process(toolCall.name as string, toolCall.parameters as any);\n }\n}\n"]}
|
package/dist/tools/custom.d.cts
CHANGED
package/dist/tools/custom.d.ts
CHANGED
package/dist/tools/llm.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseTo
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { GetRunContext } from '../context.cjs';
|
|
4
4
|
import { PromptTemplate } from '../template.cjs';
|
|
5
|
-
import { m as ChatModel } from '../chat-
|
|
5
|
+
import { m as ChatModel } from '../chat-BFl85cqt.cjs';
|
|
6
6
|
import 'ajv';
|
|
7
7
|
import '../errors.cjs';
|
|
8
8
|
import '../internals/types.cjs';
|
package/dist/tools/llm.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseTo
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { GetRunContext } from '../context.js';
|
|
4
4
|
import { PromptTemplate } from '../template.js';
|
|
5
|
-
import { m as ChatModel } from '../chat-
|
|
5
|
+
import { m as ChatModel } from '../chat-BRuyDeKR.js';
|
|
6
6
|
import 'ajv';
|
|
7
7
|
import '../errors.js';
|
|
8
8
|
import '../internals/types.js';
|
|
@@ -8,7 +8,7 @@ import { PythonToolOutput } from './output.cjs';
|
|
|
8
8
|
import { ConnectionOptions } from 'node:tls';
|
|
9
9
|
import { RunContext } from '../../context.cjs';
|
|
10
10
|
import { E as Emitter } from '../../emitter-jN55XZZq.cjs';
|
|
11
|
-
import { m as ChatModel } from '../../chat-
|
|
11
|
+
import { m as ChatModel } from '../../chat-BFl85cqt.cjs';
|
|
12
12
|
import '../../internals/serializable.cjs';
|
|
13
13
|
import '../../internals/types.cjs';
|
|
14
14
|
import '../../internals/helpers/guards.cjs';
|
|
@@ -8,7 +8,7 @@ import { PythonToolOutput } from './output.js';
|
|
|
8
8
|
import { ConnectionOptions } from 'node:tls';
|
|
9
9
|
import { RunContext } from '../../context.js';
|
|
10
10
|
import { E as Emitter } from '../../emitter-36-9MnvA.js';
|
|
11
|
-
import { m as ChatModel } from '../../chat-
|
|
11
|
+
import { m as ChatModel } from '../../chat-BRuyDeKR.js';
|
|
12
12
|
import '../../internals/serializable.js';
|
|
13
13
|
import '../../internals/types.js';
|
|
14
14
|
import '../../internals/helpers/guards.js';
|
|
@@ -3,7 +3,7 @@ import { AssistantMessage } from './backend/message.js';
|
|
|
3
3
|
import { Tool, BaseToolRunOptions, StringToolOutput, AnyTool, ToolOutput } from './tools/base.js';
|
|
4
4
|
import { FrameworkError } from './errors.js';
|
|
5
5
|
import { PromptTemplate } from './template.js';
|
|
6
|
-
import { f as ChatModelUsage, c as ChatModelToolChoice, n as ChatModelOutput } from './chat-
|
|
6
|
+
import { f as ChatModelUsage, c as ChatModelToolChoice, n as ChatModelOutput } from './chat-BRuyDeKR.js';
|
|
7
7
|
import { B as BaseAgentRunOptions } from './base-CyFx7BRL.js';
|
|
8
8
|
import { ZodSchema, z } from 'zod';
|
|
9
9
|
import { ToolCallPart } from 'ai';
|
|
@@ -61,23 +61,23 @@ declare const RequirementAgentSystemPromptInputSchema: z.ZodObject<{
|
|
|
61
61
|
allowed: z.ZodString;
|
|
62
62
|
reason: z.ZodOptional<z.ZodString>;
|
|
63
63
|
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
inputSchema: string;
|
|
64
65
|
name: string;
|
|
65
66
|
description: string;
|
|
66
|
-
inputSchema: string;
|
|
67
67
|
allowed: string;
|
|
68
68
|
reason?: string | undefined;
|
|
69
69
|
}, {
|
|
70
|
+
inputSchema: string;
|
|
70
71
|
name: string;
|
|
71
72
|
description: string;
|
|
72
|
-
inputSchema: string;
|
|
73
73
|
allowed: string;
|
|
74
74
|
reason?: string | undefined;
|
|
75
75
|
}>, "many">;
|
|
76
76
|
}, "strip", z.ZodTypeAny, {
|
|
77
77
|
tools: {
|
|
78
|
+
inputSchema: string;
|
|
78
79
|
name: string;
|
|
79
80
|
description: string;
|
|
80
|
-
inputSchema: string;
|
|
81
81
|
allowed: string;
|
|
82
82
|
reason?: string | undefined;
|
|
83
83
|
}[];
|
|
@@ -89,9 +89,9 @@ declare const RequirementAgentSystemPromptInputSchema: z.ZodObject<{
|
|
|
89
89
|
finalAnswerInstructions?: string | undefined;
|
|
90
90
|
}, {
|
|
91
91
|
tools: {
|
|
92
|
+
inputSchema: string;
|
|
92
93
|
name: string;
|
|
93
94
|
description: string;
|
|
94
|
-
inputSchema: string;
|
|
95
95
|
allowed: string;
|
|
96
96
|
reason?: string | undefined;
|
|
97
97
|
}[];
|
|
@@ -127,21 +127,21 @@ declare const RequirementAgentToolNoResultPromptInputSchema: z.ZodObject<{
|
|
|
127
127
|
tool: z.ZodOptional<z.ZodAny>;
|
|
128
128
|
input: z.ZodUnknown;
|
|
129
129
|
}, "strip", z.ZodTypeAny, {
|
|
130
|
-
input?: unknown;
|
|
131
130
|
tool?: any;
|
|
132
|
-
}, {
|
|
133
131
|
input?: unknown;
|
|
132
|
+
}, {
|
|
134
133
|
tool?: any;
|
|
134
|
+
input?: unknown;
|
|
135
135
|
}>;
|
|
136
136
|
}, "strip", z.ZodTypeAny, {
|
|
137
137
|
toolCall: {
|
|
138
|
-
input?: unknown;
|
|
139
138
|
tool?: any;
|
|
139
|
+
input?: unknown;
|
|
140
140
|
};
|
|
141
141
|
}, {
|
|
142
142
|
toolCall: {
|
|
143
|
-
input?: unknown;
|
|
144
143
|
tool?: any;
|
|
144
|
+
input?: unknown;
|
|
145
145
|
};
|
|
146
146
|
}>;
|
|
147
147
|
interface RequirementAgentTemplates {
|
|
@@ -3,7 +3,7 @@ import { AssistantMessage } from './backend/message.cjs';
|
|
|
3
3
|
import { Tool, BaseToolRunOptions, StringToolOutput, AnyTool, ToolOutput } from './tools/base.cjs';
|
|
4
4
|
import { FrameworkError } from './errors.cjs';
|
|
5
5
|
import { PromptTemplate } from './template.cjs';
|
|
6
|
-
import { f as ChatModelUsage, c as ChatModelToolChoice, n as ChatModelOutput } from './chat-
|
|
6
|
+
import { f as ChatModelUsage, c as ChatModelToolChoice, n as ChatModelOutput } from './chat-BFl85cqt.cjs';
|
|
7
7
|
import { B as BaseAgentRunOptions } from './base-XfWeXQ-S.cjs';
|
|
8
8
|
import { ZodSchema, z } from 'zod';
|
|
9
9
|
import { ToolCallPart } from 'ai';
|
|
@@ -61,23 +61,23 @@ declare const RequirementAgentSystemPromptInputSchema: z.ZodObject<{
|
|
|
61
61
|
allowed: z.ZodString;
|
|
62
62
|
reason: z.ZodOptional<z.ZodString>;
|
|
63
63
|
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
inputSchema: string;
|
|
64
65
|
name: string;
|
|
65
66
|
description: string;
|
|
66
|
-
inputSchema: string;
|
|
67
67
|
allowed: string;
|
|
68
68
|
reason?: string | undefined;
|
|
69
69
|
}, {
|
|
70
|
+
inputSchema: string;
|
|
70
71
|
name: string;
|
|
71
72
|
description: string;
|
|
72
|
-
inputSchema: string;
|
|
73
73
|
allowed: string;
|
|
74
74
|
reason?: string | undefined;
|
|
75
75
|
}>, "many">;
|
|
76
76
|
}, "strip", z.ZodTypeAny, {
|
|
77
77
|
tools: {
|
|
78
|
+
inputSchema: string;
|
|
78
79
|
name: string;
|
|
79
80
|
description: string;
|
|
80
|
-
inputSchema: string;
|
|
81
81
|
allowed: string;
|
|
82
82
|
reason?: string | undefined;
|
|
83
83
|
}[];
|
|
@@ -89,9 +89,9 @@ declare const RequirementAgentSystemPromptInputSchema: z.ZodObject<{
|
|
|
89
89
|
finalAnswerInstructions?: string | undefined;
|
|
90
90
|
}, {
|
|
91
91
|
tools: {
|
|
92
|
+
inputSchema: string;
|
|
92
93
|
name: string;
|
|
93
94
|
description: string;
|
|
94
|
-
inputSchema: string;
|
|
95
95
|
allowed: string;
|
|
96
96
|
reason?: string | undefined;
|
|
97
97
|
}[];
|
|
@@ -127,21 +127,21 @@ declare const RequirementAgentToolNoResultPromptInputSchema: z.ZodObject<{
|
|
|
127
127
|
tool: z.ZodOptional<z.ZodAny>;
|
|
128
128
|
input: z.ZodUnknown;
|
|
129
129
|
}, "strip", z.ZodTypeAny, {
|
|
130
|
-
input?: unknown;
|
|
131
130
|
tool?: any;
|
|
132
|
-
}, {
|
|
133
131
|
input?: unknown;
|
|
132
|
+
}, {
|
|
134
133
|
tool?: any;
|
|
134
|
+
input?: unknown;
|
|
135
135
|
}>;
|
|
136
136
|
}, "strip", z.ZodTypeAny, {
|
|
137
137
|
toolCall: {
|
|
138
|
-
input?: unknown;
|
|
139
138
|
tool?: any;
|
|
139
|
+
input?: unknown;
|
|
140
140
|
};
|
|
141
141
|
}, {
|
|
142
142
|
toolCall: {
|
|
143
|
-
input?: unknown;
|
|
144
143
|
tool?: any;
|
|
144
|
+
input?: unknown;
|
|
145
145
|
};
|
|
146
146
|
}>;
|
|
147
147
|
interface RequirementAgentTemplates {
|
package/dist/version.cjs
CHANGED
package/dist/version.js
CHANGED
|
@@ -5,7 +5,7 @@ import { AnyTool } from '../tools/base.cjs';
|
|
|
5
5
|
import { ReadOnlyMemory } from '../memory/base.cjs';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { a as BaseAgent } from '../base-XfWeXQ-S.cjs';
|
|
8
|
-
import { m as ChatModel } from '../chat-
|
|
8
|
+
import { m as ChatModel } from '../chat-BFl85cqt.cjs';
|
|
9
9
|
import { ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentExecutionConfig } from '../agents/toolCalling/types.cjs';
|
|
10
10
|
import '../emitter-jN55XZZq.cjs';
|
|
11
11
|
import '../internals/types.cjs';
|
|
@@ -5,7 +5,7 @@ import { AnyTool } from '../tools/base.js';
|
|
|
5
5
|
import { ReadOnlyMemory } from '../memory/base.js';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { a as BaseAgent } from '../base-CyFx7BRL.js';
|
|
8
|
-
import { m as ChatModel } from '../chat-
|
|
8
|
+
import { m as ChatModel } from '../chat-BRuyDeKR.js';
|
|
9
9
|
import { ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentExecutionConfig } from '../agents/toolCalling/types.js';
|
|
10
10
|
import '../emitter-36-9MnvA.js';
|
|
11
11
|
import '../internals/types.js';
|