beeai-framework 0.1.21 → 0.1.22
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/agents/agent.d.cts +6 -10
- package/dist/adapters/a2a/agents/agent.d.ts +6 -10
- package/dist/adapters/a2a/agents/events.d.cts +1 -1
- package/dist/adapters/a2a/agents/events.d.ts +1 -1
- package/dist/adapters/a2a/agents/types.d.cts +2 -2
- package/dist/adapters/a2a/agents/types.d.ts +2 -2
- package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
- package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
- package/dist/adapters/a2a/serve/server.d.cts +2 -2
- package/dist/adapters/a2a/serve/server.d.ts +2 -2
- package/dist/adapters/acp/agents/agent.d.cts +6 -10
- package/dist/adapters/acp/agents/agent.d.ts +6 -10
- package/dist/adapters/acp/agents/events.d.cts +1 -1
- package/dist/adapters/acp/agents/events.d.ts +1 -1
- package/dist/adapters/agentstack/agents/agent.d.cts +8 -6
- package/dist/adapters/agentstack/agents/agent.d.ts +8 -6
- package/dist/adapters/agentstack/agents/events.d.cts +1 -1
- package/dist/adapters/agentstack/agents/events.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
- 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 +2 -2
- package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/dummy/backend/chat.d.cts +2 -2
- package/dist/adapters/dummy/backend/chat.d.ts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
- 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 +2 -2
- package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
- package/dist/adapters/groq/backend/chat.d.cts +2 -2
- package/dist/adapters/groq/backend/chat.d.ts +2 -2
- package/dist/adapters/groq/backend/embedding.d.cts +2 -2
- package/dist/adapters/groq/backend/embedding.d.ts +2 -2
- package/dist/adapters/langchain/backend/chat.d.cts +2 -2
- package/dist/adapters/langchain/backend/chat.d.ts +2 -2
- package/dist/adapters/langchain/backend/embedding.d.cts +2 -2
- package/dist/adapters/langchain/backend/embedding.d.ts +2 -2
- package/dist/adapters/langchain/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +2 -2
- package/dist/adapters/ollama/backend/chat.d.ts +2 -2
- package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
- package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
- package/dist/adapters/openai/backend/chat.d.cts +2 -2
- package/dist/adapters/openai/backend/chat.d.ts +2 -2
- package/dist/adapters/openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/vercel/backend/chat.d.cts +2 -2
- package/dist/adapters/vercel/backend/chat.d.ts +2 -2
- package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
- package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
- package/dist/adapters/vercel/backend/utils.cjs +15 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +4 -3
- package/dist/adapters/vercel/backend/utils.d.ts +4 -3
- package/dist/adapters/vercel/backend/utils.js +15 -1
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
- package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
- package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
- package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
- package/dist/adapters/xai/backend/chat.d.cts +2 -2
- package/dist/adapters/xai/backend/chat.d.ts +2 -2
- package/dist/{agent-DvvVGvLr.d.cts → agent-BMfyig7X.d.cts} +5 -4
- package/dist/{agent-CHebzsQB.d.ts → agent-Dxw8AGWb.d.ts} +5 -4
- package/dist/agents/base.cjs +5 -2
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js +5 -2
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +3 -3
- package/dist/agents/experimental/replan/agent.d.ts +3 -3
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +8 -12
- package/dist/agents/experimental/streamlit/agent.d.ts +8 -12
- package/dist/agents/react/agent.d.cts +4 -4
- package/dist/agents/react/agent.d.ts +4 -4
- 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 +4 -4
- package/dist/agents/react/runners/base.d.ts +4 -4
- 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 +5 -5
- package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
- package/dist/agents/react/runners/default/runner.d.cts +5 -5
- package/dist/agents/react/runners/default/runner.d.ts +5 -5
- 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 +5 -5
- package/dist/agents/react/runners/granite/runner.d.ts +5 -5
- package/dist/agents/react/types.d.cts +2 -2
- package/dist/agents/react/types.d.ts +2 -2
- package/dist/agents/requirement/agent.cjs +162 -0
- package/dist/agents/requirement/agent.cjs.map +1 -0
- package/dist/agents/requirement/agent.d.cts +29 -0
- package/dist/agents/requirement/agent.d.ts +29 -0
- package/dist/agents/requirement/agent.js +160 -0
- package/dist/agents/requirement/agent.js.map +1 -0
- package/dist/agents/requirement/prompts.cjs +95 -0
- package/dist/agents/requirement/prompts.cjs.map +1 -0
- package/dist/agents/requirement/prompts.d.cts +107 -0
- package/dist/agents/requirement/prompts.d.ts +107 -0
- package/dist/agents/requirement/prompts.js +90 -0
- package/dist/agents/requirement/prompts.js.map +1 -0
- package/dist/agents/requirement/requirements/conditional.cjs +190 -0
- package/dist/agents/requirement/requirements/conditional.cjs.map +1 -0
- package/dist/agents/requirement/requirements/conditional.d.cts +71 -0
- package/dist/agents/requirement/requirements/conditional.d.ts +71 -0
- package/dist/agents/requirement/requirements/conditional.js +188 -0
- package/dist/agents/requirement/requirements/conditional.js.map +1 -0
- package/dist/agents/requirement/requirements/requirement.cjs +107 -0
- package/dist/agents/requirement/requirements/requirement.cjs.map +1 -0
- package/dist/agents/requirement/requirements/requirement.d.cts +59 -0
- package/dist/agents/requirement/requirements/requirement.d.ts +59 -0
- package/dist/agents/requirement/requirements/requirement.js +104 -0
- package/dist/agents/requirement/requirements/requirement.js.map +1 -0
- package/dist/agents/requirement/requirements/utils.cjs +74 -0
- package/dist/agents/requirement/requirements/utils.cjs.map +1 -0
- package/dist/agents/requirement/requirements/utils.d.cts +40 -0
- package/dist/agents/requirement/requirements/utils.d.ts +40 -0
- package/dist/agents/requirement/requirements/utils.js +69 -0
- package/dist/agents/requirement/requirements/utils.js.map +1 -0
- package/dist/agents/requirement/runner.cjs +252 -0
- package/dist/agents/requirement/runner.cjs.map +1 -0
- package/dist/agents/requirement/runner.d.cts +117 -0
- package/dist/agents/requirement/runner.d.ts +117 -0
- package/dist/agents/requirement/runner.js +250 -0
- package/dist/agents/requirement/runner.js.map +1 -0
- package/dist/agents/requirement/types.cjs +40 -0
- package/dist/agents/requirement/types.cjs.map +1 -0
- package/dist/agents/requirement/types.d.cts +24 -0
- package/dist/agents/requirement/types.d.ts +24 -0
- package/dist/agents/requirement/types.js +35 -0
- package/dist/agents/requirement/types.js.map +1 -0
- package/dist/agents/requirement/utils/llm.cjs +202 -0
- package/dist/agents/requirement/utils/llm.cjs.map +1 -0
- package/dist/agents/requirement/utils/llm.d.cts +50 -0
- package/dist/agents/requirement/utils/llm.d.ts +50 -0
- package/dist/agents/requirement/utils/llm.js +199 -0
- package/dist/agents/requirement/utils/llm.js.map +1 -0
- package/dist/agents/requirement/utils/tool.cjs +94 -0
- package/dist/agents/requirement/utils/tool.cjs.map +1 -0
- package/dist/agents/requirement/utils/tool.d.cts +24 -0
- package/dist/agents/requirement/utils/tool.d.ts +24 -0
- package/dist/agents/requirement/utils/tool.js +91 -0
- package/dist/agents/requirement/utils/tool.js.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs +61 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.cts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.ts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.js +59 -0
- package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -0
- package/dist/agents/toolCalling/agent.d.cts +8 -12
- package/dist/agents/toolCalling/agent.d.ts +8 -12
- package/dist/agents/toolCalling/types.d.cts +1 -1
- package/dist/agents/toolCalling/types.d.ts +1 -1
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.d.cts +2 -2
- package/dist/backend/backend.d.ts +2 -2
- package/dist/backend/chat.d.cts +2 -2
- package/dist/backend/chat.d.ts +2 -2
- package/dist/backend/core.d.cts +2 -2
- package/dist/backend/core.d.ts +2 -2
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/{base-BQgDlcGa.d.ts → base-BurRTBA7.d.ts} +4 -2
- package/dist/{base-CwcxwybB.d.cts → base-v-PYIq5G.d.cts} +4 -2
- package/dist/{chat-C0s-o6ll.d.ts → chat-BbCYMAdE.d.ts} +1 -1
- package/dist/{chat-CRb3vUVg.d.cts → chat-DB_cf15S.d.cts} +1 -1
- package/dist/context.cjs +22 -5
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +19 -6
- package/dist/context.d.ts +19 -6
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs +19 -13
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js +19 -13
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/{emitter-DpqUYjXH.d.cts → emitter-CGKd_-kK.d.cts} +3 -2
- package/dist/{emitter-CZFbzlUi.d.ts → emitter-CN7I4uSV.d.ts} +3 -2
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/internals/helpers/prototype.cjs +5 -0
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.d.cts +2 -1
- package/dist/internals/helpers/prototype.d.ts +2 -1
- package/dist/internals/helpers/prototype.js +5 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.d.cts +1 -1
- package/dist/internals/types.d.ts +1 -1
- package/dist/internals/types.js.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/middleware/trajectory.cjs +322 -0
- package/dist/middleware/trajectory.cjs.map +1 -0
- package/dist/middleware/trajectory.d.cts +115 -0
- package/dist/middleware/trajectory.d.ts +115 -0
- package/dist/middleware/trajectory.js +320 -0
- package/dist/middleware/trajectory.js.map +1 -0
- package/dist/parsers/linePrefix.d.cts +1 -1
- package/dist/parsers/linePrefix.d.ts +1 -1
- package/dist/serializer/serializer.cjs +5 -4
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js +5 -4
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs +3 -0
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js +3 -0
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-CQxucveV.d.ts → serializer-53t8gGQa.d.ts} +3 -2
- package/dist/{serializer-BKn50Vnx.d.cts → serializer-c51B2z6d.d.cts} +3 -2
- package/dist/template.cjs +20 -0
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -0
- package/dist/template.d.ts +1 -0
- package/dist/template.js +20 -0
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.d.cts +1 -1
- package/dist/tools/arxiv.d.ts +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +3 -2
- package/dist/tools/base.d.ts +3 -2
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calculator.d.cts +1 -1
- package/dist/tools/calculator.d.ts +1 -1
- package/dist/tools/custom.d.cts +2 -2
- package/dist/tools/custom.d.ts +2 -2
- package/dist/tools/database/elasticsearch.d.cts +1 -1
- package/dist/tools/database/elasticsearch.d.ts +1 -1
- package/dist/tools/database/milvus.d.cts +1 -1
- package/dist/tools/database/milvus.d.ts +1 -1
- package/dist/tools/database/qdrant.d.cts +1 -1
- package/dist/tools/database/qdrant.d.ts +1 -1
- package/dist/tools/database/sql.d.cts +1 -1
- package/dist/tools/database/sql.d.ts +1 -1
- package/dist/tools/llm.d.cts +2 -2
- package/dist/tools/llm.d.ts +2 -2
- package/dist/tools/mcp.d.cts +1 -1
- package/dist/tools/mcp.d.ts +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/python/output.d.cts +1 -1
- package/dist/tools/python/output.d.ts +1 -1
- package/dist/tools/python/python.d.cts +2 -2
- package/dist/tools/python/python.d.ts +2 -2
- package/dist/tools/search/base.d.cts +1 -1
- package/dist/tools/search/base.d.ts +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.d.cts +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +1 -1
- package/dist/tools/search/searXNGSearch.d.ts +1 -1
- package/dist/tools/search/wikipedia.d.cts +1 -1
- package/dist/tools/search/wikipedia.d.ts +1 -1
- package/dist/tools/similarity.d.cts +1 -1
- package/dist/tools/similarity.d.ts +1 -1
- package/dist/tools/think.cjs +52 -0
- package/dist/tools/think.cjs.map +1 -0
- package/dist/tools/think.d.cts +47 -0
- package/dist/tools/think.d.ts +47 -0
- package/dist/tools/think.js +50 -0
- package/dist/tools/think.js.map +1 -0
- package/dist/tools/weather/openMeteo.d.cts +1 -1
- package/dist/tools/weather/openMeteo.d.ts +1 -1
- package/dist/tools/web/webCrawler.d.cts +1 -1
- package/dist/tools/web/webCrawler.d.ts +1 -1
- package/dist/types-BXkkbABd.d.ts +213 -0
- package/dist/types-Cx6f43du.d.cts +213 -0
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/workflows/agent.d.cts +3 -3
- package/dist/workflows/agent.d.ts +3 -3
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var uuid = require('uuid');
|
|
4
|
+
var base_cjs = require('../base.cjs');
|
|
5
|
+
var message_cjs = require('../../backend/message.cjs');
|
|
6
|
+
var unconstrainedMemory_cjs = require('../../memory/unconstrainedMemory.cjs');
|
|
7
|
+
var counter_cjs = require('../../internals/helpers/counter.cjs');
|
|
8
|
+
var llm_cjs = require('./utils/llm.cjs');
|
|
9
|
+
var tool_cjs = require('./utils/tool.cjs');
|
|
10
|
+
var schema_cjs = require('../../internals/helpers/schema.cjs');
|
|
11
|
+
var utils_cjs = require('../../adapters/vercel/backend/utils.cjs');
|
|
12
|
+
|
|
13
|
+
var __defProp = Object.defineProperty;
|
|
14
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
15
|
+
const TEMP_MESSAGE_KEY = "tempMessage";
|
|
16
|
+
class RequirementAgentRunner {
|
|
17
|
+
static {
|
|
18
|
+
__name(this, "RequirementAgentRunner");
|
|
19
|
+
}
|
|
20
|
+
llm;
|
|
21
|
+
runConfig;
|
|
22
|
+
requirements;
|
|
23
|
+
toolCallCycleChecker;
|
|
24
|
+
ctx;
|
|
25
|
+
forceFinalAnswerAsTool;
|
|
26
|
+
templates;
|
|
27
|
+
state;
|
|
28
|
+
reasoner;
|
|
29
|
+
iterationErrorCounter;
|
|
30
|
+
globalErrorCounter;
|
|
31
|
+
constructor(llm, runConfig, tools, requirements, expectedOutput, toolCallCycleChecker, ctx, forceFinalAnswerAsTool, templates) {
|
|
32
|
+
this.llm = llm;
|
|
33
|
+
this.runConfig = runConfig;
|
|
34
|
+
this.requirements = requirements;
|
|
35
|
+
this.toolCallCycleChecker = toolCallCycleChecker;
|
|
36
|
+
this.ctx = ctx;
|
|
37
|
+
this.forceFinalAnswerAsTool = forceFinalAnswerAsTool;
|
|
38
|
+
this.templates = templates;
|
|
39
|
+
this.state = {
|
|
40
|
+
answer: null,
|
|
41
|
+
result: null,
|
|
42
|
+
memory: new unconstrainedMemory_cjs.UnconstrainedMemory(),
|
|
43
|
+
steps: [],
|
|
44
|
+
iteration: 0,
|
|
45
|
+
usage: {
|
|
46
|
+
totalTokens: 0,
|
|
47
|
+
promptTokens: 0,
|
|
48
|
+
completionTokens: 0,
|
|
49
|
+
reasoningTokens: 0,
|
|
50
|
+
cachedPromptTokens: void 0
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
this.requirements = requirements;
|
|
54
|
+
const finalAnswer = new tool_cjs.FinalAnswerTool(expectedOutput, this.state);
|
|
55
|
+
this.reasoner = new llm_cjs.RequirementsReasoner(tools, finalAnswer, ctx);
|
|
56
|
+
const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;
|
|
57
|
+
this.iterationErrorCounter = new counter_cjs.RetryCounter(maxRetriesPerIteration, base_cjs.AgentError);
|
|
58
|
+
const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);
|
|
59
|
+
this.globalErrorCounter = new counter_cjs.RetryCounter(maxRetries, base_cjs.AgentError);
|
|
60
|
+
}
|
|
61
|
+
incrementIteration() {
|
|
62
|
+
this.state.iteration++;
|
|
63
|
+
if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {
|
|
64
|
+
throw new base_cjs.AgentError(`Agent was not able to resolve the task in ${this.state.iteration} iterations.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async runLLM(request) {
|
|
68
|
+
const { messages, options } = await this.prepareLLMRequest(request);
|
|
69
|
+
const response = await this.llm.create({
|
|
70
|
+
...options,
|
|
71
|
+
messages
|
|
72
|
+
});
|
|
73
|
+
if (response.usage) {
|
|
74
|
+
utils_cjs.mergeTokenUsage(this.state.usage, response.usage);
|
|
75
|
+
}
|
|
76
|
+
return response;
|
|
77
|
+
}
|
|
78
|
+
async prepareLLMRequest(request) {
|
|
79
|
+
const messages = [
|
|
80
|
+
await llm_cjs.createSystemMessage(this.templates.system, request),
|
|
81
|
+
...this.state.memory.messages
|
|
82
|
+
];
|
|
83
|
+
const options = {
|
|
84
|
+
maxRetries: this.runConfig.maxRetriesPerStep,
|
|
85
|
+
tools: request.allowedTools,
|
|
86
|
+
toolChoice: request.toolChoice,
|
|
87
|
+
stream: false
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
messages,
|
|
91
|
+
options
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async createFinalAnswerToolCall(fullText) {
|
|
95
|
+
const parsed = schema_cjs.parseBrokenJson(fullText, {
|
|
96
|
+
pair: [
|
|
97
|
+
"{",
|
|
98
|
+
"}"
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
if (!parsed) {
|
|
102
|
+
if (!this.reasoner.finalAnswer.customSchema) {
|
|
103
|
+
return new message_cjs.AssistantMessage([
|
|
104
|
+
{
|
|
105
|
+
type: "tool-call",
|
|
106
|
+
toolCallId: `call_${uuid.v4().substring(0, 8)}`,
|
|
107
|
+
toolName: this.reasoner.finalAnswer.name,
|
|
108
|
+
input: this.reasoner.finalAnswer.inputSchema().parse({
|
|
109
|
+
response: fullText
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return new message_cjs.AssistantMessage([
|
|
117
|
+
{
|
|
118
|
+
type: "tool-call",
|
|
119
|
+
toolCallId: `call_${uuid.v4().substring(0, 8)}`,
|
|
120
|
+
toolName: this.reasoner.finalAnswer.name,
|
|
121
|
+
input: parsed
|
|
122
|
+
}
|
|
123
|
+
]);
|
|
124
|
+
}
|
|
125
|
+
async createRequest(extraRules = []) {
|
|
126
|
+
return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);
|
|
127
|
+
}
|
|
128
|
+
async invokeToolCalls(tools, toolCalls) {
|
|
129
|
+
const toolResults = [];
|
|
130
|
+
const results = await Promise.all(toolCalls.map((msg) => tool_cjs.runTool(tools, msg, {
|
|
131
|
+
state: this.state
|
|
132
|
+
})));
|
|
133
|
+
for (const toolCall of results) {
|
|
134
|
+
this.state.steps.push({
|
|
135
|
+
id: uuid.v4(),
|
|
136
|
+
iteration: this.state.iteration,
|
|
137
|
+
input: toolCall.input,
|
|
138
|
+
output: toolCall.output,
|
|
139
|
+
tool: toolCall.tool,
|
|
140
|
+
error: toolCall.error
|
|
141
|
+
});
|
|
142
|
+
let result;
|
|
143
|
+
if (toolCall.error) {
|
|
144
|
+
result = this.templates.toolError.render({
|
|
145
|
+
reason: toolCall.error.explain()
|
|
146
|
+
});
|
|
147
|
+
} else {
|
|
148
|
+
result = !toolCall.output.isEmpty() ? toolCall.output.getTextContent() : this.templates.toolNoResult.render({
|
|
149
|
+
toolCall: {
|
|
150
|
+
tool: toolCall.tool,
|
|
151
|
+
input: toolCall.input
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
toolResults.push(new message_cjs.ToolMessage({
|
|
156
|
+
type: "tool-result",
|
|
157
|
+
toolName: toolCall.tool?.name || toolCall.msg.toolName,
|
|
158
|
+
toolCallId: toolCall.msg.toolCallId,
|
|
159
|
+
output: {
|
|
160
|
+
type: "text",
|
|
161
|
+
value: result
|
|
162
|
+
}
|
|
163
|
+
}));
|
|
164
|
+
if (toolCall.error) {
|
|
165
|
+
this.iterationErrorCounter.use(toolCall.error);
|
|
166
|
+
this.globalErrorCounter.use(toolCall.error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return toolResults;
|
|
170
|
+
}
|
|
171
|
+
async addMessages(messages) {
|
|
172
|
+
await this.state.memory.addMany(messages);
|
|
173
|
+
}
|
|
174
|
+
async run() {
|
|
175
|
+
if (this.state.answer) {
|
|
176
|
+
return this.state;
|
|
177
|
+
}
|
|
178
|
+
await this.reasoner.update(this.requirements);
|
|
179
|
+
while (!this.state.answer) {
|
|
180
|
+
this.incrementIteration();
|
|
181
|
+
const request = await this.createRequest();
|
|
182
|
+
await this.ctx.emitter.emit("start", {
|
|
183
|
+
state: this.state,
|
|
184
|
+
request
|
|
185
|
+
});
|
|
186
|
+
const response = await this.runIteration(request);
|
|
187
|
+
await this.ctx.emitter.emit("success", {
|
|
188
|
+
state: this.state,
|
|
189
|
+
response
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return this.state;
|
|
193
|
+
}
|
|
194
|
+
async runIteration(request) {
|
|
195
|
+
const response = await this.runLLM(request);
|
|
196
|
+
const toolCalls = response.getToolCalls();
|
|
197
|
+
if (toolCalls.length === 0) {
|
|
198
|
+
const textMessages = response.getTextMessages();
|
|
199
|
+
const text = textMessages.map((m) => m.text).join("\n");
|
|
200
|
+
if (!text || request.canStop) {
|
|
201
|
+
throw new base_cjs.AgentError("Model produced an empty response.");
|
|
202
|
+
}
|
|
203
|
+
const finalAnswerToolCall = await this.createFinalAnswerToolCall(text);
|
|
204
|
+
if (!finalAnswerToolCall) {
|
|
205
|
+
const err = new base_cjs.AgentError("Model produced an invalid final answer tool call.");
|
|
206
|
+
this.iterationErrorCounter.use(err);
|
|
207
|
+
this.globalErrorCounter.use(err);
|
|
208
|
+
await this.reasoner.update([]);
|
|
209
|
+
const updatedRequest = await this.createRequest([
|
|
210
|
+
{
|
|
211
|
+
target: this.reasoner.finalAnswer.name,
|
|
212
|
+
allowed: true,
|
|
213
|
+
hidden: false,
|
|
214
|
+
forced: false,
|
|
215
|
+
preventStop: false
|
|
216
|
+
}
|
|
217
|
+
]);
|
|
218
|
+
this.forceFinalAnswerAsTool = true;
|
|
219
|
+
return await this.runIteration(updatedRequest);
|
|
220
|
+
}
|
|
221
|
+
await this.state.memory.add(finalAnswerToolCall);
|
|
222
|
+
toolCalls.push(...finalAnswerToolCall.getToolCalls());
|
|
223
|
+
} else {
|
|
224
|
+
await this.state.memory.addMany(response.messages);
|
|
225
|
+
}
|
|
226
|
+
for (const toolCallMsg of toolCalls) {
|
|
227
|
+
this.toolCallCycleChecker.register(toolCallMsg);
|
|
228
|
+
if (this.toolCallCycleChecker.cycleFound) {
|
|
229
|
+
this.toolCallCycleChecker.reset();
|
|
230
|
+
const updatedRequest = await this.createRequest([
|
|
231
|
+
{
|
|
232
|
+
target: toolCallMsg.toolName,
|
|
233
|
+
allowed: false,
|
|
234
|
+
hidden: false,
|
|
235
|
+
forced: true,
|
|
236
|
+
preventStop: false
|
|
237
|
+
}
|
|
238
|
+
]);
|
|
239
|
+
return await this.runIteration(updatedRequest);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);
|
|
243
|
+
await this.state.memory.addMany(toolResults);
|
|
244
|
+
const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);
|
|
245
|
+
await this.state.memory.deleteMany(tempMessages);
|
|
246
|
+
return response;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
exports.RequirementAgentRunner = RequirementAgentRunner;
|
|
251
|
+
//# sourceMappingURL=runner.cjs.map
|
|
252
|
+
//# sourceMappingURL=runner.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/agents/requirement/runner.ts"],"names":["TEMP_MESSAGE_KEY","RequirementAgentRunner","state","reasoner","iterationErrorCounter","globalErrorCounter","llm","runConfig","tools","requirements","expectedOutput","toolCallCycleChecker","ctx","forceFinalAnswerAsTool","templates","answer","result","memory","UnconstrainedMemory","steps","iteration","usage","totalTokens","promptTokens","completionTokens","reasoningTokens","cachedPromptTokens","undefined","finalAnswer","FinalAnswerTool","RequirementsReasoner","maxRetriesPerIteration","maxRetriesPerStep","RetryCounter","AgentError","maxRetries","Math","max","totalMaxRetries","incrementIteration","maxIterations","runLLM","request","messages","options","prepareLLMRequest","response","create","mergeTokenUsage","createSystemMessage","system","allowedTools","toolChoice","stream","createFinalAnswerToolCall","fullText","parsed","parseBrokenJson","pair","customSchema","AssistantMessage","type","toolCallId","uuidv4","substring","toolName","name","input","inputSchema","parse","createRequest","extraRules","invokeToolCalls","toolCalls","toolResults","results","Promise","all","map","msg","runTool","toolCall","push","id","output","tool","error","toolError","render","reason","explain","isEmpty","getTextContent","toolNoResult","ToolMessage","value","use","addMessages","addMany","run","update","emitter","emit","runIteration","getToolCalls","length","textMessages","getTextMessages","text","m","join","canStop","finalAnswerToolCall","err","updatedRequest","target","allowed","hidden","forced","preventStop","add","toolCallMsg","register","cycleFound","reset","tempMessages","filter","meta","deleteMany"],"mappings":"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","file":"runner.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { ChatModel, ChatModelOutput } from \"@/backend/chat.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n RequirementAgentExecutionConfig,\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentTemplates,\n} from \"./types.js\";\nimport { Requirement, Rule } from \"./requirements/requirement.js\";\nimport { RequirementsReasoner, createSystemMessage } from \"./utils/llm.js\";\nimport { FinalAnswerTool, runTool } from \"./utils/tool.js\";\nimport { ToolCallChecker } from \"./utils/toolCallChecker.js\";\nimport { z } from \"zod\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { RequirementAgent } from \"@/agents/requirement/agent.js\";\nimport { mergeTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nconst TEMP_MESSAGE_KEY = \"tempMessage\";\n\n/**\n * Runner for RequirementAgent execution\n */\nexport class RequirementAgentRunner {\n protected readonly state: RequirementAgentRunState;\n protected readonly reasoner: RequirementsReasoner;\n protected readonly iterationErrorCounter: RetryCounter;\n protected readonly globalErrorCounter: RetryCounter;\n\n constructor(\n protected readonly llm: ChatModel,\n protected readonly runConfig: RequirementAgentExecutionConfig,\n tools: AnyTool[],\n protected readonly requirements: Requirement[],\n expectedOutput: string | z.ZodSchema | null,\n protected readonly toolCallCycleChecker: ToolCallChecker,\n protected readonly ctx: RunContext<RequirementAgent>,\n protected forceFinalAnswerAsTool: boolean,\n protected readonly templates: RequirementAgentTemplates,\n ) {\n this.state = {\n answer: null,\n result: null,\n memory: new UnconstrainedMemory(),\n steps: [],\n iteration: 0,\n usage: {\n totalTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n reasoningTokens: 0,\n cachedPromptTokens: undefined,\n },\n };\n\n this.requirements = requirements;\n const finalAnswer = new FinalAnswerTool(expectedOutput, this.state);\n this.reasoner = new RequirementsReasoner(tools, finalAnswer, ctx);\n\n const maxRetriesPerIteration = runConfig.maxRetriesPerStep ?? 0;\n this.iterationErrorCounter = new RetryCounter(maxRetriesPerIteration, AgentError);\n\n const maxRetries = Math.max(maxRetriesPerIteration, runConfig.totalMaxRetries ?? 0);\n this.globalErrorCounter = new RetryCounter(maxRetries, AgentError);\n }\n\n protected incrementIteration(): void {\n this.state.iteration++;\n\n if (this.runConfig.maxIterations && this.state.iteration > this.runConfig.maxIterations) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${this.state.iteration} iterations.`,\n );\n }\n }\n\n protected async runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const { messages, options } = await this.prepareLLMRequest(request);\n const response = await this.llm.create({ ...options, messages });\n\n if (response.usage) {\n mergeTokenUsage(this.state.usage, response.usage);\n }\n\n return response;\n }\n\n protected async prepareLLMRequest(request: RequirementAgentRequest) {\n const messages: Message[] = [\n await createSystemMessage(this.templates.system, request),\n ...this.state.memory.messages,\n ];\n\n const options = {\n maxRetries: this.runConfig.maxRetriesPerStep,\n tools: request.allowedTools,\n toolChoice: request.toolChoice,\n stream: false,\n };\n\n return { messages, options };\n }\n\n protected async createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null> {\n // Try to extract JSON from text\n const parsed = parseBrokenJson(fullText, { pair: [\"{\", \"}\"] });\n if (!parsed) {\n // If no JSON and no custom schema, wrap in default schema\n if (!this.reasoner.finalAnswer.customSchema) {\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: this.reasoner.finalAnswer.inputSchema().parse({ response: fullText }),\n },\n ]);\n }\n return null;\n }\n\n return new AssistantMessage([\n {\n type: \"tool-call\",\n toolCallId: `call_${uuidv4().substring(0, 8)}`,\n toolName: this.reasoner.finalAnswer.name,\n input: parsed,\n },\n ]);\n }\n\n protected async createRequest(extraRules: Rule[] = []): Promise<RequirementAgentRequest> {\n return await this.reasoner.createRequest(this.state, this.forceFinalAnswerAsTool, extraRules);\n }\n\n protected async invokeToolCalls(\n tools: AnyTool[],\n toolCalls: ToolCallPart[],\n ): Promise<ToolMessage[]> {\n const toolResults: ToolMessage[] = [];\n\n const results = await Promise.all(\n toolCalls.map((msg) => runTool(tools, msg, { state: this.state })),\n );\n\n for (const toolCall of results) {\n this.state.steps.push({\n id: uuidv4(),\n iteration: this.state.iteration,\n input: toolCall.input,\n output: toolCall.output,\n tool: toolCall.tool,\n error: toolCall.error,\n });\n\n let result: string;\n if (toolCall.error) {\n result = this.templates.toolError.render({\n reason: toolCall.error.explain(),\n });\n } else {\n result = !toolCall.output.isEmpty()\n ? toolCall.output.getTextContent()\n : this.templates.toolNoResult.render({\n toolCall: { tool: toolCall.tool, input: toolCall.input },\n });\n }\n\n toolResults.push(\n new ToolMessage({\n type: \"tool-result\",\n toolName: toolCall.tool?.name || toolCall.msg.toolName,\n toolCallId: toolCall.msg.toolCallId,\n output: { type: \"text\", value: result },\n }),\n );\n\n if (toolCall.error) {\n this.iterationErrorCounter.use(toolCall.error);\n this.globalErrorCounter.use(toolCall.error);\n }\n }\n\n return toolResults;\n }\n\n async addMessages(messages: Message[]): Promise<void> {\n await this.state.memory.addMany(messages);\n }\n\n async run(): Promise<RequirementAgentRunState> {\n if (this.state.answer) {\n return this.state;\n }\n\n // Initialize requirements\n await this.reasoner.update(this.requirements);\n\n while (!this.state.answer) {\n this.incrementIteration();\n\n const request = await this.createRequest();\n await this.ctx.emitter.emit(\"start\", { state: this.state, request });\n const response = await this.runIteration(request);\n await this.ctx.emitter.emit(\"success\", { state: this.state, response });\n }\n\n return this.state;\n }\n\n protected async runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput> {\n const response = await this.runLLM(request);\n\n // Try to cast text message to final answer tool call if allowed\n const toolCalls = response.getToolCalls();\n if (toolCalls.length === 0) {\n const textMessages = response.getTextMessages();\n const text = textMessages.map((m) => m.text).join(\"\\n\");\n\n if (!text || request.canStop) {\n throw new AgentError(\"Model produced an empty response.\");\n }\n\n const finalAnswerToolCall = await this.createFinalAnswerToolCall(text);\n if (!finalAnswerToolCall) {\n const err = new AgentError(\"Model produced an invalid final answer tool call.\");\n this.iterationErrorCounter.use(err);\n this.globalErrorCounter.use(err);\n\n await this.reasoner.update([]);\n const updatedRequest = await this.createRequest([\n {\n target: this.reasoner.finalAnswer.name,\n allowed: true,\n hidden: false,\n forced: false,\n preventStop: false,\n },\n ]);\n this.forceFinalAnswerAsTool = true;\n return await this.runIteration(updatedRequest);\n }\n\n await this.state.memory.add(finalAnswerToolCall);\n toolCalls.push(...finalAnswerToolCall.getToolCalls());\n } else {\n await this.state.memory.addMany(response.messages);\n }\n\n // Check for cycles\n for (const toolCallMsg of toolCalls) {\n this.toolCallCycleChecker.register(toolCallMsg);\n if (this.toolCallCycleChecker.cycleFound) {\n this.toolCallCycleChecker.reset();\n const updatedRequest = await this.createRequest([\n {\n target: toolCallMsg.toolName,\n allowed: false,\n hidden: false,\n forced: true,\n preventStop: false,\n },\n ]);\n return await this.runIteration(updatedRequest);\n }\n }\n\n const toolResults = await this.invokeToolCalls(request.allowedTools, toolCalls);\n await this.state.memory.addMany(toolResults);\n\n // Delete temporary messages\n const tempMessages = this.state.memory.messages.filter((msg) => msg.meta[TEMP_MESSAGE_KEY]);\n await this.state.memory.deleteMany(tempMessages);\n\n return response;\n }\n}\n"]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { RunContext, MiddlewareType, GetRunContext } from '../../context.cjs';
|
|
2
|
+
import * as zod from 'zod';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { a as BaseAgent, b as AgentMeta } from '../../base-v-PYIq5G.cjs';
|
|
5
|
+
import { AnyTool } from '../../tools/base.cjs';
|
|
6
|
+
import { BaseMemory } from '../../memory/base.cjs';
|
|
7
|
+
import { E as Emitter } from '../../emitter-CGKd_-kK.cjs';
|
|
8
|
+
import { m as ChatModel, n as ChatModelOutput, c as ChatModelToolChoice } from '../../chat-DB_cf15S.cjs';
|
|
9
|
+
import { Message, MessageContentPart, AssistantMessage, ToolMessage } from '../../backend/message.cjs';
|
|
10
|
+
import { c as RequirementAgentExecutionConfig, d as RequirementAgentTemplates, R as RequirementAgentRunState, a as RequirementAgentRequest, e as RequirementAgentRunInput, f as RequirementAgentOutput, g as RequirementAgentRunOptions, h as RequirementAgentCallbacks } from '../../types-Cx6f43du.cjs';
|
|
11
|
+
import { Requirement, Rule } from './requirements/requirement.cjs';
|
|
12
|
+
import { ToolCallPart } from 'ai';
|
|
13
|
+
import { RetryCounter } from '../../internals/helpers/counter.cjs';
|
|
14
|
+
import { RequirementsReasoner } from './utils/llm.cjs';
|
|
15
|
+
import { ToolCallChecker, ToolCallCheckerConfig } from './utils/toolCallChecker.cjs';
|
|
16
|
+
import { RequiredExcept } from '../../internals/types.cjs';
|
|
17
|
+
import '../../internals/serializable.cjs';
|
|
18
|
+
import '../../internals/helpers/guards.cjs';
|
|
19
|
+
import '../../internals/helpers/promise.cjs';
|
|
20
|
+
import '../../errors.cjs';
|
|
21
|
+
import 'ajv';
|
|
22
|
+
import 'promise-based-task';
|
|
23
|
+
import '../../cache/base.cjs';
|
|
24
|
+
import '../../internals/helpers/schema.cjs';
|
|
25
|
+
import 'zod-to-json-schema';
|
|
26
|
+
import '../../backend/constants.cjs';
|
|
27
|
+
import '../../template.cjs';
|
|
28
|
+
import '../../logger/logger.cjs';
|
|
29
|
+
import 'pino';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Runner for RequirementAgent execution
|
|
33
|
+
*/
|
|
34
|
+
declare class RequirementAgentRunner {
|
|
35
|
+
protected readonly llm: ChatModel;
|
|
36
|
+
protected readonly runConfig: RequirementAgentExecutionConfig;
|
|
37
|
+
protected readonly requirements: Requirement[];
|
|
38
|
+
protected readonly toolCallCycleChecker: ToolCallChecker;
|
|
39
|
+
protected readonly ctx: RunContext<RequirementAgent>;
|
|
40
|
+
protected forceFinalAnswerAsTool: boolean;
|
|
41
|
+
protected readonly templates: RequirementAgentTemplates;
|
|
42
|
+
protected readonly state: RequirementAgentRunState;
|
|
43
|
+
protected readonly reasoner: RequirementsReasoner;
|
|
44
|
+
protected readonly iterationErrorCounter: RetryCounter;
|
|
45
|
+
protected readonly globalErrorCounter: RetryCounter;
|
|
46
|
+
constructor(llm: ChatModel, runConfig: RequirementAgentExecutionConfig, tools: AnyTool[], requirements: Requirement[], expectedOutput: string | z.ZodSchema | null, toolCallCycleChecker: ToolCallChecker, ctx: RunContext<RequirementAgent>, forceFinalAnswerAsTool: boolean, templates: RequirementAgentTemplates);
|
|
47
|
+
protected incrementIteration(): void;
|
|
48
|
+
protected runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput>;
|
|
49
|
+
protected prepareLLMRequest(request: RequirementAgentRequest): Promise<{
|
|
50
|
+
messages: Message<MessageContentPart, string>[];
|
|
51
|
+
options: {
|
|
52
|
+
maxRetries: number | undefined;
|
|
53
|
+
tools: AnyTool[];
|
|
54
|
+
toolChoice: ChatModelToolChoice;
|
|
55
|
+
stream: boolean;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
protected createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null>;
|
|
59
|
+
protected createRequest(extraRules?: Rule[]): Promise<RequirementAgentRequest>;
|
|
60
|
+
protected invokeToolCalls(tools: AnyTool[], toolCalls: ToolCallPart[]): Promise<ToolMessage[]>;
|
|
61
|
+
addMessages(messages: Message[]): Promise<void>;
|
|
62
|
+
run(): Promise<RequirementAgentRunState>;
|
|
63
|
+
protected runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (template: RequirementAgentTemplates[K]) => RequirementAgentTemplates[K];
|
|
67
|
+
interface RequirementAgentInput {
|
|
68
|
+
llm: ChatModel;
|
|
69
|
+
memory?: BaseMemory;
|
|
70
|
+
tools?: AnyTool[];
|
|
71
|
+
requirements?: Requirement[];
|
|
72
|
+
name?: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
role?: string;
|
|
75
|
+
instructions?: string | string[];
|
|
76
|
+
notes?: string | string[];
|
|
77
|
+
toolCallChecker?: boolean | ToolCallCheckerConfig;
|
|
78
|
+
finalAnswerAsTool?: boolean;
|
|
79
|
+
saveIntermediateSteps?: boolean;
|
|
80
|
+
execution?: RequirementAgentExecutionConfig;
|
|
81
|
+
templates?: Partial<{
|
|
82
|
+
[K in keyof RequirementAgentTemplates]: RequirementAgentTemplates[K] | RequirementAgentTemplateFactory<K>;
|
|
83
|
+
}>;
|
|
84
|
+
middlewares?: MiddlewareType<RequirementAgent>[];
|
|
85
|
+
}
|
|
86
|
+
type InternalRequirementAgentInput = RequiredExcept<RequirementAgentInput, "role" | "instructions" | "name" | "description" | "templates" | "notes" | "execution" | "middlewares">;
|
|
87
|
+
/**
|
|
88
|
+
* RequirementAgent - A declarative AI agent with rule-based constraints
|
|
89
|
+
*
|
|
90
|
+
* The RequirementAgent provides predictable, controlled execution behavior across
|
|
91
|
+
* different language models through rule-based constraints (Requirements).
|
|
92
|
+
* Requirements can be configured as strict or flexible as necessary, adapting to
|
|
93
|
+
* task requirements while ensuring consistent execution regardless of the underlying
|
|
94
|
+
* model's reasoning or tool-calling capabilities.
|
|
95
|
+
*/
|
|
96
|
+
declare class RequirementAgent extends BaseAgent<RequirementAgentRunInput, RequirementAgentOutput, RequirementAgentRunOptions> {
|
|
97
|
+
readonly emitter: Emitter<RequirementAgentCallbacks>;
|
|
98
|
+
protected readonly input: InternalRequirementAgentInput;
|
|
99
|
+
protected runner: new (...args: ConstructorParameters<typeof RequirementAgentRunner>) => RequirementAgentRunner;
|
|
100
|
+
constructor(input: RequirementAgentInput);
|
|
101
|
+
protected _run(input: RequirementAgentRunInput, options: RequirementAgentRunOptions | undefined, run: GetRunContext<typeof this>): Promise<RequirementAgentOutput>;
|
|
102
|
+
protected processInput(input: RequirementAgentRunInput): Message[];
|
|
103
|
+
protected createToolCallChecker(): ToolCallChecker;
|
|
104
|
+
get meta(): AgentMeta;
|
|
105
|
+
protected get templates(): RequirementAgentTemplates;
|
|
106
|
+
createSnapshot(): {
|
|
107
|
+
input: InternalRequirementAgentInput;
|
|
108
|
+
emitter: Emitter<RequirementAgentCallbacks>;
|
|
109
|
+
runnerClass: new (llm: ChatModel, runConfig: RequirementAgentExecutionConfig, tools: AnyTool[], requirements: Requirement[], expectedOutput: string | zod.ZodType<any, zod.ZodTypeDef, any> | null, toolCallCycleChecker: ToolCallChecker, ctx: RunContext<RequirementAgent, any>, forceFinalAnswerAsTool: boolean, templates: RequirementAgentTemplates) => RequirementAgentRunner;
|
|
110
|
+
isRunning: boolean;
|
|
111
|
+
middlewares: MiddlewareType<any>[];
|
|
112
|
+
};
|
|
113
|
+
set memory(memory: BaseMemory);
|
|
114
|
+
get memory(): BaseMemory;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { type RequirementAgentTemplateFactory as R, RequirementAgentRunner, type RequirementAgentInput as a, RequirementAgent as b };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { RunContext, MiddlewareType, GetRunContext } from '../../context.js';
|
|
2
|
+
import * as zod from 'zod';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { a as BaseAgent, b as AgentMeta } from '../../base-BurRTBA7.js';
|
|
5
|
+
import { AnyTool } from '../../tools/base.js';
|
|
6
|
+
import { BaseMemory } from '../../memory/base.js';
|
|
7
|
+
import { E as Emitter } from '../../emitter-CN7I4uSV.js';
|
|
8
|
+
import { m as ChatModel, n as ChatModelOutput, c as ChatModelToolChoice } from '../../chat-BbCYMAdE.js';
|
|
9
|
+
import { Message, MessageContentPart, AssistantMessage, ToolMessage } from '../../backend/message.js';
|
|
10
|
+
import { c as RequirementAgentExecutionConfig, d as RequirementAgentTemplates, R as RequirementAgentRunState, a as RequirementAgentRequest, e as RequirementAgentRunInput, f as RequirementAgentOutput, g as RequirementAgentRunOptions, h as RequirementAgentCallbacks } from '../../types-BXkkbABd.js';
|
|
11
|
+
import { Requirement, Rule } from './requirements/requirement.js';
|
|
12
|
+
import { ToolCallPart } from 'ai';
|
|
13
|
+
import { RetryCounter } from '../../internals/helpers/counter.js';
|
|
14
|
+
import { RequirementsReasoner } from './utils/llm.js';
|
|
15
|
+
import { ToolCallChecker, ToolCallCheckerConfig } from './utils/toolCallChecker.js';
|
|
16
|
+
import { RequiredExcept } from '../../internals/types.js';
|
|
17
|
+
import '../../internals/serializable.js';
|
|
18
|
+
import '../../internals/helpers/guards.js';
|
|
19
|
+
import '../../internals/helpers/promise.js';
|
|
20
|
+
import '../../errors.js';
|
|
21
|
+
import 'ajv';
|
|
22
|
+
import 'promise-based-task';
|
|
23
|
+
import '../../cache/base.js';
|
|
24
|
+
import '../../internals/helpers/schema.js';
|
|
25
|
+
import 'zod-to-json-schema';
|
|
26
|
+
import '../../backend/constants.js';
|
|
27
|
+
import '../../template.js';
|
|
28
|
+
import '../../logger/logger.js';
|
|
29
|
+
import 'pino';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Runner for RequirementAgent execution
|
|
33
|
+
*/
|
|
34
|
+
declare class RequirementAgentRunner {
|
|
35
|
+
protected readonly llm: ChatModel;
|
|
36
|
+
protected readonly runConfig: RequirementAgentExecutionConfig;
|
|
37
|
+
protected readonly requirements: Requirement[];
|
|
38
|
+
protected readonly toolCallCycleChecker: ToolCallChecker;
|
|
39
|
+
protected readonly ctx: RunContext<RequirementAgent>;
|
|
40
|
+
protected forceFinalAnswerAsTool: boolean;
|
|
41
|
+
protected readonly templates: RequirementAgentTemplates;
|
|
42
|
+
protected readonly state: RequirementAgentRunState;
|
|
43
|
+
protected readonly reasoner: RequirementsReasoner;
|
|
44
|
+
protected readonly iterationErrorCounter: RetryCounter;
|
|
45
|
+
protected readonly globalErrorCounter: RetryCounter;
|
|
46
|
+
constructor(llm: ChatModel, runConfig: RequirementAgentExecutionConfig, tools: AnyTool[], requirements: Requirement[], expectedOutput: string | z.ZodSchema | null, toolCallCycleChecker: ToolCallChecker, ctx: RunContext<RequirementAgent>, forceFinalAnswerAsTool: boolean, templates: RequirementAgentTemplates);
|
|
47
|
+
protected incrementIteration(): void;
|
|
48
|
+
protected runLLM(request: RequirementAgentRequest): Promise<ChatModelOutput>;
|
|
49
|
+
protected prepareLLMRequest(request: RequirementAgentRequest): Promise<{
|
|
50
|
+
messages: Message<MessageContentPart, string>[];
|
|
51
|
+
options: {
|
|
52
|
+
maxRetries: number | undefined;
|
|
53
|
+
tools: AnyTool[];
|
|
54
|
+
toolChoice: ChatModelToolChoice;
|
|
55
|
+
stream: boolean;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
protected createFinalAnswerToolCall(fullText: string): Promise<AssistantMessage | null>;
|
|
59
|
+
protected createRequest(extraRules?: Rule[]): Promise<RequirementAgentRequest>;
|
|
60
|
+
protected invokeToolCalls(tools: AnyTool[], toolCalls: ToolCallPart[]): Promise<ToolMessage[]>;
|
|
61
|
+
addMessages(messages: Message[]): Promise<void>;
|
|
62
|
+
run(): Promise<RequirementAgentRunState>;
|
|
63
|
+
protected runIteration(request: RequirementAgentRequest): Promise<ChatModelOutput>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
type RequirementAgentTemplateFactory<K extends keyof RequirementAgentTemplates> = (template: RequirementAgentTemplates[K]) => RequirementAgentTemplates[K];
|
|
67
|
+
interface RequirementAgentInput {
|
|
68
|
+
llm: ChatModel;
|
|
69
|
+
memory?: BaseMemory;
|
|
70
|
+
tools?: AnyTool[];
|
|
71
|
+
requirements?: Requirement[];
|
|
72
|
+
name?: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
role?: string;
|
|
75
|
+
instructions?: string | string[];
|
|
76
|
+
notes?: string | string[];
|
|
77
|
+
toolCallChecker?: boolean | ToolCallCheckerConfig;
|
|
78
|
+
finalAnswerAsTool?: boolean;
|
|
79
|
+
saveIntermediateSteps?: boolean;
|
|
80
|
+
execution?: RequirementAgentExecutionConfig;
|
|
81
|
+
templates?: Partial<{
|
|
82
|
+
[K in keyof RequirementAgentTemplates]: RequirementAgentTemplates[K] | RequirementAgentTemplateFactory<K>;
|
|
83
|
+
}>;
|
|
84
|
+
middlewares?: MiddlewareType<RequirementAgent>[];
|
|
85
|
+
}
|
|
86
|
+
type InternalRequirementAgentInput = RequiredExcept<RequirementAgentInput, "role" | "instructions" | "name" | "description" | "templates" | "notes" | "execution" | "middlewares">;
|
|
87
|
+
/**
|
|
88
|
+
* RequirementAgent - A declarative AI agent with rule-based constraints
|
|
89
|
+
*
|
|
90
|
+
* The RequirementAgent provides predictable, controlled execution behavior across
|
|
91
|
+
* different language models through rule-based constraints (Requirements).
|
|
92
|
+
* Requirements can be configured as strict or flexible as necessary, adapting to
|
|
93
|
+
* task requirements while ensuring consistent execution regardless of the underlying
|
|
94
|
+
* model's reasoning or tool-calling capabilities.
|
|
95
|
+
*/
|
|
96
|
+
declare class RequirementAgent extends BaseAgent<RequirementAgentRunInput, RequirementAgentOutput, RequirementAgentRunOptions> {
|
|
97
|
+
readonly emitter: Emitter<RequirementAgentCallbacks>;
|
|
98
|
+
protected readonly input: InternalRequirementAgentInput;
|
|
99
|
+
protected runner: new (...args: ConstructorParameters<typeof RequirementAgentRunner>) => RequirementAgentRunner;
|
|
100
|
+
constructor(input: RequirementAgentInput);
|
|
101
|
+
protected _run(input: RequirementAgentRunInput, options: RequirementAgentRunOptions | undefined, run: GetRunContext<typeof this>): Promise<RequirementAgentOutput>;
|
|
102
|
+
protected processInput(input: RequirementAgentRunInput): Message[];
|
|
103
|
+
protected createToolCallChecker(): ToolCallChecker;
|
|
104
|
+
get meta(): AgentMeta;
|
|
105
|
+
protected get templates(): RequirementAgentTemplates;
|
|
106
|
+
createSnapshot(): {
|
|
107
|
+
input: InternalRequirementAgentInput;
|
|
108
|
+
emitter: Emitter<RequirementAgentCallbacks>;
|
|
109
|
+
runnerClass: new (llm: ChatModel, runConfig: RequirementAgentExecutionConfig, tools: AnyTool[], requirements: Requirement[], expectedOutput: string | zod.ZodType<any, zod.ZodTypeDef, any> | null, toolCallCycleChecker: ToolCallChecker, ctx: RunContext<RequirementAgent, any>, forceFinalAnswerAsTool: boolean, templates: RequirementAgentTemplates) => RequirementAgentRunner;
|
|
110
|
+
isRunning: boolean;
|
|
111
|
+
middlewares: MiddlewareType<any>[];
|
|
112
|
+
};
|
|
113
|
+
set memory(memory: BaseMemory);
|
|
114
|
+
get memory(): BaseMemory;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { type RequirementAgentTemplateFactory as R, RequirementAgentRunner, type RequirementAgentInput as a, RequirementAgent as b };
|