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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":";;;;;;;;;AAiCO,MAAMA,oBAAAA,CAAAA;EAjCb;;;AAkCYC,EAAAA,KAAAA;AACAC,EAAAA,OAAAA,GAAyB,EAAA;AACzBC,EAAAA,OAAAA;AACMC,EAAAA,WAAAA;EAEhB,WAAA,CAAYH,KAAAA,EAAkBG,aAA8BD,OAAAA,EAA0B;AACpF,IAAA,IAAA,CAAKF,KAAAA,GAAQ;AAAIA,MAAAA,GAAAA,KAAAA;AAAOG,MAAAA;;AACxB,IAAA,IAAA,CAAKA,WAAAA,GAAcA,WAAAA;AACnB,IAAA,IAAA,CAAKD,OAAAA,GAAUA,OAAAA;AACjB;AAEA,EAAA,MAAME,OAAOC,YAAAA,EAA4C;AACvD,IAAA,IAAA,CAAKJ,UAAU,EAAA;AAEf,IAAA,KAAA,MAAWK,eAAeD,YAAAA,EAAc;AACtC,MAAA,IAAA,CAAKJ,OAAAA,CAAQM,KAAKD,WAAAA,CAAAA;AACpB;AAEA,IAAA,KAAA,MAAWE,KAAAA,IAAS,KAAKP,OAAAA,EAAS;AAChC,MAAA,MAAMQ,OAAAA,GAAU,IAAA,CAAKP,OAAAA,CAAQO,OAAAA,CAAQC,KAAAA,CAA4B;QAC/DC,OAAAA,EAASC,kBAAAA,CAAYJ,MAAMK,IAAI,CAAA;QAC/BC,OAAAA,EAASN;OACX,CAAA;AACAC,MAAAA,OAAAA,CAAQM,SAAAA,CAAUR,KAAK,aAAA,CAAA;AAEvB,MAAA,MAAMP,KAAAA,GAAQ;WAAI,IAAA,CAAKA;;AACvB,MAAA,MAAMS,OAAAA,CAAQO,KAAK,MAAA,EAAQ;AAAEhB,QAAAA;OAAM,CAAA;AACnC,MAAA,MAAMQ,KAAAA,CAAMS,IAAAA,CAAKjB,KAAAA,EAAO,IAAA,CAAKE,OAAO,CAAA;AACtC;AACF;AAEUgB,EAAAA,cAAAA,CAAeL,IAAAA,EAAuB;AAC9C,IAAA,MAAMM,IAAAA,GAAO,KAAKnB,KAAAA,CAAMoB,IAAAA,CAAK,CAACC,CAAAA,KAAMA,CAAAA,CAAER,SAASA,IAAAA,CAAAA;AAC/C,IAAA,IAAI,CAACM,IAAAA,EAAM;AACT,MAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAAST,IAAAA,CAAAA,gBAAAA,EAAuB,KAAKb,KAAAA,CAAMuB,GAAAA,CAAI,CAACF,CAAAA,KAAMA,EAAER,IAAI,CAAA,CAAEW,IAAAA,CAAK,IAAA,CAAA,CAAA,EAAA,CAAS,CAAA;AAC9F;AACA,IAAA,OAAOL,IAAAA;AACT;AAEA,EAAA,MAAMM,aAAAA,CACJC,KAAAA,EACAC,SAAAA,EACAC,UAAAA,GAAqB,EAAA,EACa;AAClC,IAAA,MAAMC,SAAoB,EAAA;AAC1B,IAAA,MAAMC,UAAqB,EAAA;AAC3B,IAAA,MAAMC,QAAAA,GAAsB;SAAI,IAAA,CAAK/B;;AACrC,IAAA,MAAMgC,YAAAA,uBAAmBC,OAAAA,EAAAA;AAEzB,IAAA,IAAIC,WAAAA,GAAc,KAAA;AAClB,IAAA,MAAMC,kBAA+B,EAAA;AAErC,IAAA,IAAIC,MAAAA,GAAyB,IAAA;AAC7B,IAAA,IAAIC,WAAAA,GAAc,CAAA;AAClB,IAAA,MAAMC,WAAAA,uBAAkBC,GAAAA,EAAAA;AAGxB,IAAA,KAAA,MAAWpB,IAAAA,IAAQ,KAAKnB,KAAAA,EAAO;AAC7BsC,MAAAA,WAAAA,CAAYE,GAAAA,CAAIrB,IAAAA,CAAKN,IAAAA,EAAM,EAAE,CAAA;AAC/B;AAGA,IAAA,KAAA,MAAWP,WAAAA,IAAe,KAAKL,OAAAA,CAAQwC,MAAAA,CAAO,CAACC,CAAAA,KAAMA,CAAAA,CAAEC,OAAO,CAAA,EAAG;AAC/D,MAAA,MAAMC,cAAAA,GAAiB,MAAMtC,WAAAA,CAAYuC,GAAAA,CAAInB,KAAAA,CAAAA;AAC7C,MAAA,KAAA,MAAWoB,QAAQF,cAAAA,EAAgB;AACjC,QAAA,MAAMzB,IAAAA,GAAO,IAAA,CAAKD,cAAAA,CAAe4B,IAAAA,CAAKC,MAAM,CAAA;AAC5C,QAAA,MAAMC,QAAQV,WAAAA,CAAYW,GAAAA,CAAI9B,IAAAA,CAAKN,IAAI,KAAK,EAAA;AAC5CmC,QAAAA,KAAAA,CAAMzC,IAAAA,CAAK;AACT2C,UAAAA,QAAAA,EAAU5C,WAAAA,CAAY4C,QAAAA;AACtBJ,UAAAA,IAAAA;AACAxC,UAAAA;SACF,CAAA;AACAgC,QAAAA,WAAAA,CAAYE,GAAAA,CAAIrB,IAAAA,CAAKN,IAAAA,EAAMmC,KAAAA,CAAAA;AAC7B;AACF;AAGA,IAAA,KAAA,MAAWF,QAAQlB,UAAAA,EAAY;AAC7B,MAAA,IAAI,CAACU,WAAAA,CAAYa,GAAAA,CAAIL,IAAAA,CAAKC,MAAM,CAAA,EAAG;AACjC,QAAA,MAAM,IAAIzB,KAAAA,CAAM,CAAA,MAAA,EAASwB,IAAAA,CAAKC,MAAM,CAAA,YAAA,CAAc,CAAA;AACpD;AAEA,MAAA,MAAMC,KAAAA,GAAQV,WAAAA,CAAYW,GAAAA,CAAIH,IAAAA,CAAKC,MAAM,CAAA;AACzC,MAAA,MAAMG,QAAAA,GAAWF,KAAAA,CAAMI,MAAAA,GAAS,CAAA,GAAIC,KAAKC,GAAAA,CAAG,GAAIN,KAAAA,CAAMzB,GAAAA,CAAI,CAACgC,CAAAA,KAAMA,CAAAA,CAAEL,QAAQ,CAAA,IAAK,CAAA,GAAI,CAAA;AACpFF,MAAAA,KAAAA,CAAMzC,IAAAA,CAAK;AACT2C,QAAAA,QAAAA;AACAJ,QAAAA,IAAAA;QACAxC,WAAAA,EAAa;OACf,CAAA;AACF;AAGA,IAAA,KAAA,MAAW,CAACkD,QAAAA,EAAUR,KAAAA,CAAAA,IAAUV,WAAAA,CAAYrC,SAAO,EAAI;AACrD,MAAA,MAAMkB,IAAAA,GAAO,IAAA,CAAKD,cAAAA,CAAesC,QAAAA,CAAAA;AACjCR,MAAAA,KAAAA,CAAMS,KAAK,CAACC,CAAAA,EAAGC,MAAMA,CAAAA,CAAET,QAAAA,GAAWQ,EAAER,QAAQ,CAAA;AAE5C,MAAA,MAAMU,cAAcZ,KAAAA,CAAMI,MAAAA,GAAS,IAAIJ,KAAAA,CAAM,CAAA,EAAGE,QAAAA,GAAW,CAAA;AAC3D,MAAA,IAAIW,SAAAA,GAAY,IAAA;AAChB,MAAA,IAAIC,QAAAA,GAAW,KAAA;AACf,MAAA,IAAIC,QAAAA,GAAW,KAAA;AACf,MAAA,IAAIC,aAAAA,GAAgB,KAAA;AAEpB,MAAA,KAAA,MAAWC,aAAajB,KAAAA,EAAO;AAC7B,QAAA,MAAMF,OAAOmB,SAAAA,CAAUnB,IAAAA;AACvB,QAAA,IAAI,CAACA,KAAKhB,OAAAA,EAAS;AACjB+B,UAAAA,SAAAA,GAAY,KAAA;AACd;AACA,QAAA,IAAIf,KAAKjB,MAAAA,EAAQ;AACfkC,UAAAA,QAAAA,GAAW,IAAA;AACb;AACA,QAAA,IAAIjB,KAAKV,MAAAA,EAAQ;AACf0B,UAAAA,QAAAA,GAAW,IAAA;AACb;AACA,QAAA,IAAIhB,KAAKZ,WAAAA,EAAa;AACpB8B,UAAAA,aAAAA,GAAgB,IAAA;AAChB7B,UAAAA,eAAAA,CAAgB5B,KAAK0D,SAAAA,CAAAA;AACvB;AACA,QAAA,IAAInB,KAAKoB,MAAAA,EAAQ;AACflC,UAAAA,YAAAA,CAAaQ,GAAAA,CAAIrB,IAAAA,EAAM2B,IAAAA,CAAKoB,MAAM,CAAA;AACpC;AACF;AAEA,MAAA,IAAIL,aAAaE,QAAAA,EAAU;AACzBF,QAAAA,SAAAA,GAAY,KAAA;AACd;AAEA,MAAA,IAAIA,SAAAA,EAAW;AACb,QAAA,IAAI,CAAC/B,OAAAA,CAAQqC,QAAAA,CAAShD,IAAAA,CAAAA,EAAO;AAC3BW,UAAAA,OAAAA,CAAQvB,KAAKY,IAAAA,CAAAA;AACf;AACA,QAAA,IAAI2C,QAAAA,KAAa,CAAC1B,MAAAA,IAAUC,WAAAA,GAAcuB,WAAAA,CAAAA,EAAc;AACtDxB,UAAAA,MAAAA,GAASjB,IAAAA;AACTkB,UAAAA,WAAAA,GAAcuB,WAAAA;AAChB;AACF;AACA,MAAA,IAAIG,QAAAA,EAAU;AACZ,QAAA,IAAI,CAAClC,MAAAA,CAAOsC,QAAAA,CAAShD,IAAAA,CAAAA,EAAO;AAC1BU,UAAAA,MAAAA,CAAOtB,KAAKY,IAAAA,CAAAA;AACd;AACF;AACA,MAAA,IAAI6C,aAAAA,EAAe;AACjB9B,QAAAA,WAAAA,GAAc,IAAA;AAChB;AACF;AAGA,IAAA,IAAIE,MAAAA,EAAQ;AACVN,MAAAA,OAAAA,CAAQsB,MAAAA,GAAS,CAAA;AACjB,MAAA,IAAI,CAACtB,OAAAA,CAAQqC,QAAAA,CAAS/B,MAAAA,CAAAA,EAAS;AAC7BN,QAAAA,OAAAA,CAAQvB,KAAK6B,MAAAA,CAAAA;AACf;AACA,MAAA,IAAI,CAACN,OAAAA,CAAQqC,QAAAA,CAAS,IAAA,CAAKhE,WAAW,CAAA,EAAU;AAC9C2B,QAAAA,OAAAA,CAAQvB,IAAAA,CAAK,KAAKJ,WAAW,CAAA;AAC/B;AACF;AAGA,IAAA,IAAI+B,WAAAA,IAAeE,MAAAA,KAAW,IAAA,CAAKjC,WAAAA,EAAa;AAC9C,MAAA,MAAMiE,gBAAAA,GAAmBtC,OAAAA,CAAQuC,OAAAA,CAAQ,IAAA,CAAKlE,WAAW,CAAA;AACzD,MAAA,IAAIiE,qBAAqB,EAAA,EAAI;AAC3BtC,QAAAA,OAAAA,CAAQwC,MAAAA,CAAOF,kBAAkB,CAAA,CAAA;AACnC;AACF;AAEA,IAAA,IAAItC,OAAAA,CAAQsB,WAAW,CAAA,EAAG;AACxB,MAAA,MAAM,IAAImB,oBACR,0PAAA,GAGEC,IAAAA,CAAKC,UAAUtC,eAAAA,EAAiB,IAAA,EAAM,CAAA,CAAA,CAAA;AAE5C;AAEA,IAAA,IAAIuC,aAAkCtC,MAAAA,IAAU,UAAA;AAChD,IAAA,IAAIN,OAAAA,CAAQsB,WAAW,CAAA,EAAG;AACxBsB,MAAAA,UAAAA,GAAa5C,QAAQ,CAAA,CAAA;AACvB;AAGA,IAAA,IAAI,EAAE4C,UAAAA,YAAsBC,eAAAA,CAAAA,IAAS,CAAChD,SAAAA,IAAa,CAACO,WAAAA,EAAa;AAC/DwC,MAAAA,UAAAA,GAAa,MAAA;AACf;AAEA,IAAA,OAAO;MACL1E,KAAAA,EAAO+B,QAAAA;MACP6C,YAAAA,EAAc9C,OAAAA;AACdE,MAAAA,YAAAA;AACA0C,MAAAA,UAAAA;AACAvE,MAAAA,WAAAA,EAAa,IAAA,CAAKA,WAAAA;MAClB0E,WAAAA,EAAahD,MAAAA;AACbiD,MAAAA,OAAAA,EAAS,CAAC5C;AACZ,KAAA;AACF;AACF;AAKA,eAAsB6C,mBAAAA,CACpBC,UACAC,OAAAA,EAAgC;AAEhC,EAAA,OAAO,IAAIC,yBAAAA,CACTF,QAAAA,CAASG,MAAAA,CAAO;AACdnF,IAAAA,KAAAA,EAAO,MAAMoF,OAAAA,CAAQC,GAAAA,CACnBJ,OAAAA,CAAQjF,KAAAA,CACLyC,OAAO,CAACtB,IAAAA,KAAS,CAAC8D,OAAAA,CAAQJ,YAAYV,QAAAA,CAAShD,IAAAA,CAAAA,CAAAA,CAC/CI,GAAAA,CAAI,OAAOJ,IAAAA,MAAU;AACpBN,MAAAA,IAAAA,EAAMM,IAAAA,CAAKN,IAAAA;AACXyE,MAAAA,WAAAA,EAAanE,IAAAA,CAAKmE,WAAAA;AAClBC,MAAAA,WAAAA,EAAaf,KAAKC,SAAAA,CAAU,MAAMtD,KAAKoE,WAAAA,EAAW,EAAI,MAAM,CAAA,CAAA;AAC5DzD,MAAAA,OAAAA,EAAS0D,MAAAA,CAAOP,OAAAA,CAAQL,YAAAA,CAAaT,QAAAA,CAAShD,IAAAA,CAAAA,CAAAA;MAC9C+C,MAAAA,EAAQe,OAAAA,CAAQjD,YAAAA,CAAaiB,GAAAA,CAAI9B,IAAAA;AACnC,KAAA,CAAA,CAAA,CAAA;AAEJsE,IAAAA,eAAAA,EAAiBR,QAAQ9E,WAAAA,CAAYU,IAAAA;IACrC6E,iBAAAA,EAAmBT,OAAAA,CAAQ9E,WAAAA,CAAYwF,YAAAA,GACnCnB,IAAAA,CAAKC,SAAAA,CAAUQ,QAAQ9E,WAAAA,CAAYoF,WAAAA,EAAa,IAAA,EAAM,CAAA,CAAA,GACtDK,MAAAA;AACJC,IAAAA,uBAAAA,EAAyBZ,QAAQ9E,WAAAA,CAAY2F,YAAAA;;IAC7CC,IAAAA,EAAMH,MAAAA;;IACNE,YAAAA,EAAcF,MAAAA;;IACdI,KAAAA,EAAOJ;AACT,GAAA,CAAA,CAAA;AAEJ;AA3BsBb,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AnyTool } from '../../../tools/base.cjs';
|
|
2
|
+
import { RunContext } from '../../../context.cjs';
|
|
3
|
+
import { SystemMessage } from '../../../backend/message.cjs';
|
|
4
|
+
import { PromptTemplate } from '../../../template.cjs';
|
|
5
|
+
import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-Cx6f43du.cjs';
|
|
6
|
+
import { Requirement, Rule } from '../requirements/requirement.cjs';
|
|
7
|
+
import 'ajv';
|
|
8
|
+
import '../../../errors.cjs';
|
|
9
|
+
import '../../../internals/types.cjs';
|
|
10
|
+
import '../../../internals/helpers/guards.cjs';
|
|
11
|
+
import '../../../internals/serializable.cjs';
|
|
12
|
+
import 'promise-based-task';
|
|
13
|
+
import '../../../cache/base.cjs';
|
|
14
|
+
import '../../../internals/helpers/schema.cjs';
|
|
15
|
+
import 'zod';
|
|
16
|
+
import 'zod-to-json-schema';
|
|
17
|
+
import '../../../emitter-CGKd_-kK.cjs';
|
|
18
|
+
import '../../../internals/helpers/promise.cjs';
|
|
19
|
+
import 'ai';
|
|
20
|
+
import '../../../memory/base.cjs';
|
|
21
|
+
import '../../../chat-DB_cf15S.cjs';
|
|
22
|
+
import '../../../backend/constants.cjs';
|
|
23
|
+
import '../../../logger/logger.cjs';
|
|
24
|
+
import 'pino';
|
|
25
|
+
import '../../../base-v-PYIq5G.cjs';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Manages requirements and generates requests for the agent
|
|
34
|
+
*/
|
|
35
|
+
declare class RequirementsReasoner {
|
|
36
|
+
protected tools: AnyTool[];
|
|
37
|
+
protected entries: Requirement[];
|
|
38
|
+
protected context: RunContext<any>;
|
|
39
|
+
readonly finalAnswer: FinalAnswerTool;
|
|
40
|
+
constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>);
|
|
41
|
+
update(requirements: Requirement[]): Promise<void>;
|
|
42
|
+
protected findToolByName(name: string): AnyTool;
|
|
43
|
+
createRequest(state: RequirementAgentRunState, forceTool: boolean, extraRules?: Rule[]): Promise<RequirementAgentRequest>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create system message from template and request
|
|
47
|
+
*/
|
|
48
|
+
declare function createSystemMessage(template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>, request: RequirementAgentRequest): Promise<SystemMessage>;
|
|
49
|
+
|
|
50
|
+
export { RequirementsReasoner, createSystemMessage };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AnyTool } from '../../../tools/base.js';
|
|
2
|
+
import { RunContext } from '../../../context.js';
|
|
3
|
+
import { SystemMessage } from '../../../backend/message.js';
|
|
4
|
+
import { PromptTemplate } from '../../../template.js';
|
|
5
|
+
import { F as FinalAnswerTool, R as RequirementAgentRunState, a as RequirementAgentRequest, b as RequirementAgentSystemPromptInputSchema } from '../../../types-BXkkbABd.js';
|
|
6
|
+
import { Requirement, Rule } from '../requirements/requirement.js';
|
|
7
|
+
import 'ajv';
|
|
8
|
+
import '../../../errors.js';
|
|
9
|
+
import '../../../internals/types.js';
|
|
10
|
+
import '../../../internals/helpers/guards.js';
|
|
11
|
+
import '../../../internals/serializable.js';
|
|
12
|
+
import 'promise-based-task';
|
|
13
|
+
import '../../../cache/base.js';
|
|
14
|
+
import '../../../internals/helpers/schema.js';
|
|
15
|
+
import 'zod';
|
|
16
|
+
import 'zod-to-json-schema';
|
|
17
|
+
import '../../../emitter-CN7I4uSV.js';
|
|
18
|
+
import '../../../internals/helpers/promise.js';
|
|
19
|
+
import 'ai';
|
|
20
|
+
import '../../../memory/base.js';
|
|
21
|
+
import '../../../chat-BbCYMAdE.js';
|
|
22
|
+
import '../../../backend/constants.js';
|
|
23
|
+
import '../../../logger/logger.js';
|
|
24
|
+
import 'pino';
|
|
25
|
+
import '../../../base-BurRTBA7.js';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Manages requirements and generates requests for the agent
|
|
34
|
+
*/
|
|
35
|
+
declare class RequirementsReasoner {
|
|
36
|
+
protected tools: AnyTool[];
|
|
37
|
+
protected entries: Requirement[];
|
|
38
|
+
protected context: RunContext<any>;
|
|
39
|
+
readonly finalAnswer: FinalAnswerTool;
|
|
40
|
+
constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>);
|
|
41
|
+
update(requirements: Requirement[]): Promise<void>;
|
|
42
|
+
protected findToolByName(name: string): AnyTool;
|
|
43
|
+
createRequest(state: RequirementAgentRunState, forceTool: boolean, extraRules?: Rule[]): Promise<RequirementAgentRequest>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create system message from template and request
|
|
47
|
+
*/
|
|
48
|
+
declare function createSystemMessage(template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>, request: RequirementAgentRequest): Promise<SystemMessage>;
|
|
49
|
+
|
|
50
|
+
export { RequirementsReasoner, createSystemMessage };
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { Tool } from '../../../tools/base.js';
|
|
2
|
+
import { AgentError } from '../../base.js';
|
|
3
|
+
import { SystemMessage } from '../../../backend/message.js';
|
|
4
|
+
import { toCamelCase } from 'remeda';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
class RequirementsReasoner {
|
|
9
|
+
static {
|
|
10
|
+
__name(this, "RequirementsReasoner");
|
|
11
|
+
}
|
|
12
|
+
tools;
|
|
13
|
+
entries = [];
|
|
14
|
+
context;
|
|
15
|
+
finalAnswer;
|
|
16
|
+
constructor(tools, finalAnswer, context) {
|
|
17
|
+
this.tools = [
|
|
18
|
+
...tools,
|
|
19
|
+
finalAnswer
|
|
20
|
+
];
|
|
21
|
+
this.finalAnswer = finalAnswer;
|
|
22
|
+
this.context = context;
|
|
23
|
+
}
|
|
24
|
+
async update(requirements) {
|
|
25
|
+
this.entries = [];
|
|
26
|
+
for (const requirement of requirements) {
|
|
27
|
+
this.entries.push(requirement);
|
|
28
|
+
}
|
|
29
|
+
for (const entry of this.entries) {
|
|
30
|
+
const emitter = this.context.emitter.child({
|
|
31
|
+
groupId: toCamelCase(entry.name),
|
|
32
|
+
creator: entry
|
|
33
|
+
});
|
|
34
|
+
emitter.namespace.push("requirement");
|
|
35
|
+
const tools = [
|
|
36
|
+
...this.tools
|
|
37
|
+
];
|
|
38
|
+
await emitter.emit("init", {
|
|
39
|
+
tools
|
|
40
|
+
});
|
|
41
|
+
await entry.init(tools, this.context);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
findToolByName(name) {
|
|
45
|
+
const tool = this.tools.find((t) => t.name === name);
|
|
46
|
+
if (!tool) {
|
|
47
|
+
throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(", ")}).`);
|
|
48
|
+
}
|
|
49
|
+
return tool;
|
|
50
|
+
}
|
|
51
|
+
async createRequest(state, forceTool, extraRules = []) {
|
|
52
|
+
const hidden = [];
|
|
53
|
+
const allowed = [];
|
|
54
|
+
const allTools = [
|
|
55
|
+
...this.tools
|
|
56
|
+
];
|
|
57
|
+
const reasonByTool = /* @__PURE__ */ new WeakMap();
|
|
58
|
+
let preventStop = false;
|
|
59
|
+
const preventStepRefs = [];
|
|
60
|
+
let forced = null;
|
|
61
|
+
let forcedLevel = 0;
|
|
62
|
+
const rulesByTool = /* @__PURE__ */ new Map();
|
|
63
|
+
for (const tool of this.tools) {
|
|
64
|
+
rulesByTool.set(tool.name, []);
|
|
65
|
+
}
|
|
66
|
+
for (const requirement of this.entries.filter((e) => e.enabled)) {
|
|
67
|
+
const generatedRules = await requirement.run(state);
|
|
68
|
+
for (const rule of generatedRules) {
|
|
69
|
+
const tool = this.findToolByName(rule.target);
|
|
70
|
+
const rules = rulesByTool.get(tool.name) || [];
|
|
71
|
+
rules.push({
|
|
72
|
+
priority: requirement.priority,
|
|
73
|
+
rule,
|
|
74
|
+
requirement
|
|
75
|
+
});
|
|
76
|
+
rulesByTool.set(tool.name, rules);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const rule of extraRules) {
|
|
80
|
+
if (!rulesByTool.has(rule.target)) {
|
|
81
|
+
throw new Error(`Tool '${rule.target}' not found.`);
|
|
82
|
+
}
|
|
83
|
+
const rules = rulesByTool.get(rule.target);
|
|
84
|
+
const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;
|
|
85
|
+
rules.push({
|
|
86
|
+
priority,
|
|
87
|
+
rule,
|
|
88
|
+
requirement: null
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
for (const [toolName, rules] of rulesByTool.entries()) {
|
|
92
|
+
const tool = this.findToolByName(toolName);
|
|
93
|
+
rules.sort((a, b) => b.priority - a.priority);
|
|
94
|
+
const maxPriority = rules.length > 0 ? rules[0].priority : 1;
|
|
95
|
+
let isAllowed = true;
|
|
96
|
+
let isForced = false;
|
|
97
|
+
let isHidden = false;
|
|
98
|
+
let isPreventStop = false;
|
|
99
|
+
for (const ruleEntry of rules) {
|
|
100
|
+
const rule = ruleEntry.rule;
|
|
101
|
+
if (!rule.allowed) {
|
|
102
|
+
isAllowed = false;
|
|
103
|
+
}
|
|
104
|
+
if (rule.hidden) {
|
|
105
|
+
isHidden = true;
|
|
106
|
+
}
|
|
107
|
+
if (rule.forced) {
|
|
108
|
+
isForced = true;
|
|
109
|
+
}
|
|
110
|
+
if (rule.preventStop) {
|
|
111
|
+
isPreventStop = true;
|
|
112
|
+
preventStepRefs.push(ruleEntry);
|
|
113
|
+
}
|
|
114
|
+
if (rule.reason) {
|
|
115
|
+
reasonByTool.set(tool, rule.reason);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (isAllowed && isHidden) {
|
|
119
|
+
isAllowed = false;
|
|
120
|
+
}
|
|
121
|
+
if (isAllowed) {
|
|
122
|
+
if (!allowed.includes(tool)) {
|
|
123
|
+
allowed.push(tool);
|
|
124
|
+
}
|
|
125
|
+
if (isForced && (!forced || forcedLevel < maxPriority)) {
|
|
126
|
+
forced = tool;
|
|
127
|
+
forcedLevel = maxPriority;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (isHidden) {
|
|
131
|
+
if (!hidden.includes(tool)) {
|
|
132
|
+
hidden.push(tool);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (isPreventStop) {
|
|
136
|
+
preventStop = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (forced) {
|
|
140
|
+
allowed.length = 0;
|
|
141
|
+
if (!allowed.includes(forced)) {
|
|
142
|
+
allowed.push(forced);
|
|
143
|
+
}
|
|
144
|
+
if (!allowed.includes(this.finalAnswer)) {
|
|
145
|
+
allowed.push(this.finalAnswer);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (preventStop && forced !== this.finalAnswer) {
|
|
149
|
+
const finalAnswerIndex = allowed.indexOf(this.finalAnswer);
|
|
150
|
+
if (finalAnswerIndex !== -1) {
|
|
151
|
+
allowed.splice(finalAnswerIndex, 1);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (allowed.length === 0) {
|
|
155
|
+
throw new AgentError("One of the generated rules is preventing the agent from continuing. This indicates that the provided requirements may conflict with each other. See the following rules and their attached requirements that are preventing the agent from continuing.\n" + JSON.stringify(preventStepRefs, null, 2));
|
|
156
|
+
}
|
|
157
|
+
let toolChoice = forced || "required";
|
|
158
|
+
if (allowed.length === 1) {
|
|
159
|
+
toolChoice = allowed[0];
|
|
160
|
+
}
|
|
161
|
+
if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {
|
|
162
|
+
toolChoice = "auto";
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
tools: allTools,
|
|
166
|
+
allowedTools: allowed,
|
|
167
|
+
reasonByTool,
|
|
168
|
+
toolChoice,
|
|
169
|
+
finalAnswer: this.finalAnswer,
|
|
170
|
+
hiddenTools: hidden,
|
|
171
|
+
canStop: !preventStop
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function createSystemMessage(template, request) {
|
|
176
|
+
return new SystemMessage(template.render({
|
|
177
|
+
tools: await Promise.all(request.tools.filter((tool) => !request.hiddenTools.includes(tool)).map(async (tool) => ({
|
|
178
|
+
name: tool.name,
|
|
179
|
+
description: tool.description,
|
|
180
|
+
inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),
|
|
181
|
+
allowed: String(request.allowedTools.includes(tool)),
|
|
182
|
+
reason: request.reasonByTool.get(tool)
|
|
183
|
+
}))),
|
|
184
|
+
finalAnswerName: request.finalAnswer.name,
|
|
185
|
+
finalAnswerSchema: request.finalAnswer.customSchema ? JSON.stringify(request.finalAnswer.inputSchema, null, 2) : void 0,
|
|
186
|
+
finalAnswerInstructions: request.finalAnswer.instructions,
|
|
187
|
+
// default
|
|
188
|
+
role: void 0,
|
|
189
|
+
// default
|
|
190
|
+
instructions: void 0,
|
|
191
|
+
// default
|
|
192
|
+
notes: void 0
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
__name(createSystemMessage, "createSystemMessage");
|
|
196
|
+
|
|
197
|
+
export { RequirementsReasoner, createSystemMessage };
|
|
198
|
+
//# sourceMappingURL=llm.js.map
|
|
199
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/utils/llm.ts"],"names":["RequirementsReasoner","tools","entries","context","finalAnswer","update","requirements","requirement","push","entry","emitter","child","groupId","toCamelCase","name","creator","namespace","emit","init","findToolByName","tool","find","t","Error","map","join","createRequest","state","forceTool","extraRules","hidden","allowed","allTools","reasonByTool","WeakMap","preventStop","preventStepRefs","forced","forcedLevel","rulesByTool","Map","set","filter","e","enabled","generatedRules","run","rule","target","rules","get","priority","has","length","Math","max","r","toolName","sort","a","b","maxPriority","isAllowed","isForced","isHidden","isPreventStop","ruleEntry","reason","includes","finalAnswerIndex","indexOf","splice","AgentError","JSON","stringify","toolChoice","Tool","allowedTools","hiddenTools","canStop","createSystemMessage","template","request","SystemMessage","render","Promise","all","description","inputSchema","String","finalAnswerName","finalAnswerSchema","customSchema","undefined","finalAnswerInstructions","instructions","role","notes"],"mappings":";;;;;;;AAiCO,MAAMA,oBAAAA,CAAAA;EAjCb;;;AAkCYC,EAAAA,KAAAA;AACAC,EAAAA,OAAAA,GAAyB,EAAA;AACzBC,EAAAA,OAAAA;AACMC,EAAAA,WAAAA;EAEhB,WAAA,CAAYH,KAAAA,EAAkBG,aAA8BD,OAAAA,EAA0B;AACpF,IAAA,IAAA,CAAKF,KAAAA,GAAQ;AAAIA,MAAAA,GAAAA,KAAAA;AAAOG,MAAAA;;AACxB,IAAA,IAAA,CAAKA,WAAAA,GAAcA,WAAAA;AACnB,IAAA,IAAA,CAAKD,OAAAA,GAAUA,OAAAA;AACjB;AAEA,EAAA,MAAME,OAAOC,YAAAA,EAA4C;AACvD,IAAA,IAAA,CAAKJ,UAAU,EAAA;AAEf,IAAA,KAAA,MAAWK,eAAeD,YAAAA,EAAc;AACtC,MAAA,IAAA,CAAKJ,OAAAA,CAAQM,KAAKD,WAAAA,CAAAA;AACpB;AAEA,IAAA,KAAA,MAAWE,KAAAA,IAAS,KAAKP,OAAAA,EAAS;AAChC,MAAA,MAAMQ,OAAAA,GAAU,IAAA,CAAKP,OAAAA,CAAQO,OAAAA,CAAQC,KAAAA,CAA4B;QAC/DC,OAAAA,EAASC,WAAAA,CAAYJ,MAAMK,IAAI,CAAA;QAC/BC,OAAAA,EAASN;OACX,CAAA;AACAC,MAAAA,OAAAA,CAAQM,SAAAA,CAAUR,KAAK,aAAA,CAAA;AAEvB,MAAA,MAAMP,KAAAA,GAAQ;WAAI,IAAA,CAAKA;;AACvB,MAAA,MAAMS,OAAAA,CAAQO,KAAK,MAAA,EAAQ;AAAEhB,QAAAA;OAAM,CAAA;AACnC,MAAA,MAAMQ,KAAAA,CAAMS,IAAAA,CAAKjB,KAAAA,EAAO,IAAA,CAAKE,OAAO,CAAA;AACtC;AACF;AAEUgB,EAAAA,cAAAA,CAAeL,IAAAA,EAAuB;AAC9C,IAAA,MAAMM,IAAAA,GAAO,KAAKnB,KAAAA,CAAMoB,IAAAA,CAAK,CAACC,CAAAA,KAAMA,CAAAA,CAAER,SAASA,IAAAA,CAAAA;AAC/C,IAAA,IAAI,CAACM,IAAAA,EAAM;AACT,MAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAAST,IAAAA,CAAAA,gBAAAA,EAAuB,KAAKb,KAAAA,CAAMuB,GAAAA,CAAI,CAACF,CAAAA,KAAMA,EAAER,IAAI,CAAA,CAAEW,IAAAA,CAAK,IAAA,CAAA,CAAA,EAAA,CAAS,CAAA;AAC9F;AACA,IAAA,OAAOL,IAAAA;AACT;AAEA,EAAA,MAAMM,aAAAA,CACJC,KAAAA,EACAC,SAAAA,EACAC,UAAAA,GAAqB,EAAA,EACa;AAClC,IAAA,MAAMC,SAAoB,EAAA;AAC1B,IAAA,MAAMC,UAAqB,EAAA;AAC3B,IAAA,MAAMC,QAAAA,GAAsB;SAAI,IAAA,CAAK/B;;AACrC,IAAA,MAAMgC,YAAAA,uBAAmBC,OAAAA,EAAAA;AAEzB,IAAA,IAAIC,WAAAA,GAAc,KAAA;AAClB,IAAA,MAAMC,kBAA+B,EAAA;AAErC,IAAA,IAAIC,MAAAA,GAAyB,IAAA;AAC7B,IAAA,IAAIC,WAAAA,GAAc,CAAA;AAClB,IAAA,MAAMC,WAAAA,uBAAkBC,GAAAA,EAAAA;AAGxB,IAAA,KAAA,MAAWpB,IAAAA,IAAQ,KAAKnB,KAAAA,EAAO;AAC7BsC,MAAAA,WAAAA,CAAYE,GAAAA,CAAIrB,IAAAA,CAAKN,IAAAA,EAAM,EAAE,CAAA;AAC/B;AAGA,IAAA,KAAA,MAAWP,WAAAA,IAAe,KAAKL,OAAAA,CAAQwC,MAAAA,CAAO,CAACC,CAAAA,KAAMA,CAAAA,CAAEC,OAAO,CAAA,EAAG;AAC/D,MAAA,MAAMC,cAAAA,GAAiB,MAAMtC,WAAAA,CAAYuC,GAAAA,CAAInB,KAAAA,CAAAA;AAC7C,MAAA,KAAA,MAAWoB,QAAQF,cAAAA,EAAgB;AACjC,QAAA,MAAMzB,IAAAA,GAAO,IAAA,CAAKD,cAAAA,CAAe4B,IAAAA,CAAKC,MAAM,CAAA;AAC5C,QAAA,MAAMC,QAAQV,WAAAA,CAAYW,GAAAA,CAAI9B,IAAAA,CAAKN,IAAI,KAAK,EAAA;AAC5CmC,QAAAA,KAAAA,CAAMzC,IAAAA,CAAK;AACT2C,UAAAA,QAAAA,EAAU5C,WAAAA,CAAY4C,QAAAA;AACtBJ,UAAAA,IAAAA;AACAxC,UAAAA;SACF,CAAA;AACAgC,QAAAA,WAAAA,CAAYE,GAAAA,CAAIrB,IAAAA,CAAKN,IAAAA,EAAMmC,KAAAA,CAAAA;AAC7B;AACF;AAGA,IAAA,KAAA,MAAWF,QAAQlB,UAAAA,EAAY;AAC7B,MAAA,IAAI,CAACU,WAAAA,CAAYa,GAAAA,CAAIL,IAAAA,CAAKC,MAAM,CAAA,EAAG;AACjC,QAAA,MAAM,IAAIzB,KAAAA,CAAM,CAAA,MAAA,EAASwB,IAAAA,CAAKC,MAAM,CAAA,YAAA,CAAc,CAAA;AACpD;AAEA,MAAA,MAAMC,KAAAA,GAAQV,WAAAA,CAAYW,GAAAA,CAAIH,IAAAA,CAAKC,MAAM,CAAA;AACzC,MAAA,MAAMG,QAAAA,GAAWF,KAAAA,CAAMI,MAAAA,GAAS,CAAA,GAAIC,KAAKC,GAAAA,CAAG,GAAIN,KAAAA,CAAMzB,GAAAA,CAAI,CAACgC,CAAAA,KAAMA,CAAAA,CAAEL,QAAQ,CAAA,IAAK,CAAA,GAAI,CAAA;AACpFF,MAAAA,KAAAA,CAAMzC,IAAAA,CAAK;AACT2C,QAAAA,QAAAA;AACAJ,QAAAA,IAAAA;QACAxC,WAAAA,EAAa;OACf,CAAA;AACF;AAGA,IAAA,KAAA,MAAW,CAACkD,QAAAA,EAAUR,KAAAA,CAAAA,IAAUV,WAAAA,CAAYrC,SAAO,EAAI;AACrD,MAAA,MAAMkB,IAAAA,GAAO,IAAA,CAAKD,cAAAA,CAAesC,QAAAA,CAAAA;AACjCR,MAAAA,KAAAA,CAAMS,KAAK,CAACC,CAAAA,EAAGC,MAAMA,CAAAA,CAAET,QAAAA,GAAWQ,EAAER,QAAQ,CAAA;AAE5C,MAAA,MAAMU,cAAcZ,KAAAA,CAAMI,MAAAA,GAAS,IAAIJ,KAAAA,CAAM,CAAA,EAAGE,QAAAA,GAAW,CAAA;AAC3D,MAAA,IAAIW,SAAAA,GAAY,IAAA;AAChB,MAAA,IAAIC,QAAAA,GAAW,KAAA;AACf,MAAA,IAAIC,QAAAA,GAAW,KAAA;AACf,MAAA,IAAIC,aAAAA,GAAgB,KAAA;AAEpB,MAAA,KAAA,MAAWC,aAAajB,KAAAA,EAAO;AAC7B,QAAA,MAAMF,OAAOmB,SAAAA,CAAUnB,IAAAA;AACvB,QAAA,IAAI,CAACA,KAAKhB,OAAAA,EAAS;AACjB+B,UAAAA,SAAAA,GAAY,KAAA;AACd;AACA,QAAA,IAAIf,KAAKjB,MAAAA,EAAQ;AACfkC,UAAAA,QAAAA,GAAW,IAAA;AACb;AACA,QAAA,IAAIjB,KAAKV,MAAAA,EAAQ;AACf0B,UAAAA,QAAAA,GAAW,IAAA;AACb;AACA,QAAA,IAAIhB,KAAKZ,WAAAA,EAAa;AACpB8B,UAAAA,aAAAA,GAAgB,IAAA;AAChB7B,UAAAA,eAAAA,CAAgB5B,KAAK0D,SAAAA,CAAAA;AACvB;AACA,QAAA,IAAInB,KAAKoB,MAAAA,EAAQ;AACflC,UAAAA,YAAAA,CAAaQ,GAAAA,CAAIrB,IAAAA,EAAM2B,IAAAA,CAAKoB,MAAM,CAAA;AACpC;AACF;AAEA,MAAA,IAAIL,aAAaE,QAAAA,EAAU;AACzBF,QAAAA,SAAAA,GAAY,KAAA;AACd;AAEA,MAAA,IAAIA,SAAAA,EAAW;AACb,QAAA,IAAI,CAAC/B,OAAAA,CAAQqC,QAAAA,CAAShD,IAAAA,CAAAA,EAAO;AAC3BW,UAAAA,OAAAA,CAAQvB,KAAKY,IAAAA,CAAAA;AACf;AACA,QAAA,IAAI2C,QAAAA,KAAa,CAAC1B,MAAAA,IAAUC,WAAAA,GAAcuB,WAAAA,CAAAA,EAAc;AACtDxB,UAAAA,MAAAA,GAASjB,IAAAA;AACTkB,UAAAA,WAAAA,GAAcuB,WAAAA;AAChB;AACF;AACA,MAAA,IAAIG,QAAAA,EAAU;AACZ,QAAA,IAAI,CAAClC,MAAAA,CAAOsC,QAAAA,CAAShD,IAAAA,CAAAA,EAAO;AAC1BU,UAAAA,MAAAA,CAAOtB,KAAKY,IAAAA,CAAAA;AACd;AACF;AACA,MAAA,IAAI6C,aAAAA,EAAe;AACjB9B,QAAAA,WAAAA,GAAc,IAAA;AAChB;AACF;AAGA,IAAA,IAAIE,MAAAA,EAAQ;AACVN,MAAAA,OAAAA,CAAQsB,MAAAA,GAAS,CAAA;AACjB,MAAA,IAAI,CAACtB,OAAAA,CAAQqC,QAAAA,CAAS/B,MAAAA,CAAAA,EAAS;AAC7BN,QAAAA,OAAAA,CAAQvB,KAAK6B,MAAAA,CAAAA;AACf;AACA,MAAA,IAAI,CAACN,OAAAA,CAAQqC,QAAAA,CAAS,IAAA,CAAKhE,WAAW,CAAA,EAAU;AAC9C2B,QAAAA,OAAAA,CAAQvB,IAAAA,CAAK,KAAKJ,WAAW,CAAA;AAC/B;AACF;AAGA,IAAA,IAAI+B,WAAAA,IAAeE,MAAAA,KAAW,IAAA,CAAKjC,WAAAA,EAAa;AAC9C,MAAA,MAAMiE,gBAAAA,GAAmBtC,OAAAA,CAAQuC,OAAAA,CAAQ,IAAA,CAAKlE,WAAW,CAAA;AACzD,MAAA,IAAIiE,qBAAqB,EAAA,EAAI;AAC3BtC,QAAAA,OAAAA,CAAQwC,MAAAA,CAAOF,kBAAkB,CAAA,CAAA;AACnC;AACF;AAEA,IAAA,IAAItC,OAAAA,CAAQsB,WAAW,CAAA,EAAG;AACxB,MAAA,MAAM,IAAImB,WACR,0PAAA,GAGEC,IAAAA,CAAKC,UAAUtC,eAAAA,EAAiB,IAAA,EAAM,CAAA,CAAA,CAAA;AAE5C;AAEA,IAAA,IAAIuC,aAAkCtC,MAAAA,IAAU,UAAA;AAChD,IAAA,IAAIN,OAAAA,CAAQsB,WAAW,CAAA,EAAG;AACxBsB,MAAAA,UAAAA,GAAa5C,QAAQ,CAAA,CAAA;AACvB;AAGA,IAAA,IAAI,EAAE4C,UAAAA,YAAsBC,IAAAA,CAAAA,IAAS,CAAChD,SAAAA,IAAa,CAACO,WAAAA,EAAa;AAC/DwC,MAAAA,UAAAA,GAAa,MAAA;AACf;AAEA,IAAA,OAAO;MACL1E,KAAAA,EAAO+B,QAAAA;MACP6C,YAAAA,EAAc9C,OAAAA;AACdE,MAAAA,YAAAA;AACA0C,MAAAA,UAAAA;AACAvE,MAAAA,WAAAA,EAAa,IAAA,CAAKA,WAAAA;MAClB0E,WAAAA,EAAahD,MAAAA;AACbiD,MAAAA,OAAAA,EAAS,CAAC5C;AACZ,KAAA;AACF;AACF;AAKA,eAAsB6C,mBAAAA,CACpBC,UACAC,OAAAA,EAAgC;AAEhC,EAAA,OAAO,IAAIC,aAAAA,CACTF,QAAAA,CAASG,MAAAA,CAAO;AACdnF,IAAAA,KAAAA,EAAO,MAAMoF,OAAAA,CAAQC,GAAAA,CACnBJ,OAAAA,CAAQjF,KAAAA,CACLyC,OAAO,CAACtB,IAAAA,KAAS,CAAC8D,OAAAA,CAAQJ,YAAYV,QAAAA,CAAShD,IAAAA,CAAAA,CAAAA,CAC/CI,GAAAA,CAAI,OAAOJ,IAAAA,MAAU;AACpBN,MAAAA,IAAAA,EAAMM,IAAAA,CAAKN,IAAAA;AACXyE,MAAAA,WAAAA,EAAanE,IAAAA,CAAKmE,WAAAA;AAClBC,MAAAA,WAAAA,EAAaf,KAAKC,SAAAA,CAAU,MAAMtD,KAAKoE,WAAAA,EAAW,EAAI,MAAM,CAAA,CAAA;AAC5DzD,MAAAA,OAAAA,EAAS0D,MAAAA,CAAOP,OAAAA,CAAQL,YAAAA,CAAaT,QAAAA,CAAShD,IAAAA,CAAAA,CAAAA;MAC9C+C,MAAAA,EAAQe,OAAAA,CAAQjD,YAAAA,CAAaiB,GAAAA,CAAI9B,IAAAA;AACnC,KAAA,CAAA,CAAA,CAAA;AAEJsE,IAAAA,eAAAA,EAAiBR,QAAQ9E,WAAAA,CAAYU,IAAAA;IACrC6E,iBAAAA,EAAmBT,OAAAA,CAAQ9E,WAAAA,CAAYwF,YAAAA,GACnCnB,IAAAA,CAAKC,SAAAA,CAAUQ,QAAQ9E,WAAAA,CAAYoF,WAAAA,EAAa,IAAA,EAAM,CAAA,CAAA,GACtDK,MAAAA;AACJC,IAAAA,uBAAAA,EAAyBZ,QAAQ9E,WAAAA,CAAY2F,YAAAA;;IAC7CC,IAAAA,EAAMH,MAAAA;;IACNE,YAAAA,EAAcF,MAAAA;;IACdI,KAAAA,EAAOJ;AACT,GAAA,CAAA,CAAA;AAEJ;AA3BsBb,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA","file":"llm.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport { SystemMessage } from \"@/backend/message.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n RequirementAgentRequest,\n RequirementAgentRunState,\n RequirementAgentSystemPromptInputSchema,\n} from \"@/agents/requirement/types.js\";\nimport {\n Requirement,\n RequirementCallbacks,\n Rule,\n} from \"@/agents/requirement/requirements/requirement.js\";\nimport { FinalAnswerTool } from \"./tool.js\";\nimport { ChatModelToolChoice } from \"@/backend/chat.js\";\nimport { toCamelCase } from \"remeda\";\n\ninterface RuleEntry {\n rule: Rule;\n requirement: Requirement | null;\n priority: number;\n}\n\n/**\n * Manages requirements and generates requests for the agent\n */\nexport class RequirementsReasoner {\n protected tools: AnyTool[];\n protected entries: Requirement[] = [];\n protected context: RunContext<any>;\n public readonly finalAnswer: FinalAnswerTool;\n\n constructor(tools: AnyTool[], finalAnswer: FinalAnswerTool, context: RunContext<any>) {\n this.tools = [...tools, finalAnswer];\n this.finalAnswer = finalAnswer;\n this.context = context;\n }\n\n async update(requirements: Requirement[]): Promise<void> {\n this.entries = [];\n\n for (const requirement of requirements) {\n this.entries.push(requirement);\n }\n\n for (const entry of this.entries) {\n const emitter = this.context.emitter.child<RequirementCallbacks>({\n groupId: toCamelCase(entry.name),\n creator: entry,\n });\n emitter.namespace.push(\"requirement\");\n\n const tools = [...this.tools];\n await emitter.emit(\"init\", { tools });\n await entry.init(tools, this.context);\n }\n }\n\n protected findToolByName(name: string): AnyTool {\n const tool = this.tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool '${name}' not found in (${this.tools.map((t) => t.name).join(\", \")}).`);\n }\n return tool;\n }\n\n async createRequest(\n state: RequirementAgentRunState,\n forceTool: boolean,\n extraRules: Rule[] = [],\n ): Promise<RequirementAgentRequest> {\n const hidden: AnyTool[] = [];\n const allowed: AnyTool[] = [];\n const allTools: AnyTool[] = [...this.tools];\n const reasonByTool = new WeakMap<AnyTool, string | undefined>();\n\n let preventStop = false;\n const preventStepRefs: RuleEntry[] = [];\n\n let forced: AnyTool | null = null;\n let forcedLevel = 0;\n const rulesByTool = new Map<string, RuleEntry[]>();\n\n // Initialize rules map\n for (const tool of this.tools) {\n rulesByTool.set(tool.name, []);\n }\n\n // Group rules from requirements\n for (const requirement of this.entries.filter((e) => e.enabled)) {\n const generatedRules = await requirement.run(state);\n for (const rule of generatedRules) {\n const tool = this.findToolByName(rule.target);\n const rules = rulesByTool.get(tool.name) || [];\n rules.push({\n priority: requirement.priority,\n rule,\n requirement,\n });\n rulesByTool.set(tool.name, rules);\n }\n }\n\n // Add extra rules\n for (const rule of extraRules) {\n if (!rulesByTool.has(rule.target)) {\n throw new Error(`Tool '${rule.target}' not found.`);\n }\n\n const rules = rulesByTool.get(rule.target)!;\n const priority = rules.length > 0 ? Math.max(...rules.map((r) => r.priority)) + 1 : 1;\n rules.push({\n priority,\n rule,\n requirement: null,\n });\n }\n\n // Aggregate rules and infer required tool\n for (const [toolName, rules] of rulesByTool.entries()) {\n const tool = this.findToolByName(toolName);\n rules.sort((a, b) => b.priority - a.priority); // DESC\n\n const maxPriority = rules.length > 0 ? rules[0].priority : 1;\n let isAllowed = true;\n let isForced = false;\n let isHidden = false;\n let isPreventStop = false;\n\n for (const ruleEntry of rules) {\n const rule = ruleEntry.rule;\n if (!rule.allowed) {\n isAllowed = false;\n }\n if (rule.hidden) {\n isHidden = true;\n }\n if (rule.forced) {\n isForced = true;\n }\n if (rule.preventStop) {\n isPreventStop = true;\n preventStepRefs.push(ruleEntry);\n }\n if (rule.reason) {\n reasonByTool.set(tool, rule.reason);\n }\n }\n\n if (isAllowed && isHidden) {\n isAllowed = false;\n }\n\n if (isAllowed) {\n if (!allowed.includes(tool)) {\n allowed.push(tool);\n }\n if (isForced && (!forced || forcedLevel < maxPriority)) {\n forced = tool;\n forcedLevel = maxPriority;\n }\n }\n if (isHidden) {\n if (!hidden.includes(tool)) {\n hidden.push(tool);\n }\n }\n if (isPreventStop) {\n preventStop = true;\n }\n }\n\n // If forced tool is set, only allow it and final answer\n if (forced) {\n allowed.length = 0;\n if (!allowed.includes(forced)) {\n allowed.push(forced);\n }\n if (!allowed.includes(this.finalAnswer as any)) {\n allowed.push(this.finalAnswer as any);\n }\n }\n\n // If prevent stop is set and forced is not final answer, remove final answer\n if (preventStop && forced !== this.finalAnswer) {\n const finalAnswerIndex = allowed.indexOf(this.finalAnswer);\n if (finalAnswerIndex !== -1) {\n allowed.splice(finalAnswerIndex, 1);\n }\n }\n\n if (allowed.length === 0) {\n throw new AgentError(\n \"One of the generated rules is preventing the agent from continuing. \" +\n \"This indicates that the provided requirements may conflict with each other. \" +\n \"See the following rules and their attached requirements that are preventing the agent from continuing.\\n\" +\n JSON.stringify(preventStepRefs, null, 2),\n );\n }\n\n let toolChoice: ChatModelToolChoice = forced || \"required\";\n if (allowed.length === 1) {\n toolChoice = allowed[0];\n }\n\n // Override to auto if not forcing and not preventing stop\n if (!(toolChoice instanceof Tool) && !forceTool && !preventStop) {\n toolChoice = \"auto\";\n }\n\n return {\n tools: allTools,\n allowedTools: allowed,\n reasonByTool,\n toolChoice,\n finalAnswer: this.finalAnswer,\n hiddenTools: hidden,\n canStop: !preventStop,\n };\n }\n}\n\n/**\n * Create system message from template and request\n */\nexport async function createSystemMessage(\n template: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>,\n request: RequirementAgentRequest,\n): Promise<SystemMessage> {\n return new SystemMessage(\n template.render({\n tools: await Promise.all(\n request.tools\n .filter((tool) => !request.hiddenTools.includes(tool))\n .map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: JSON.stringify(await tool.inputSchema(), null, 2),\n allowed: String(request.allowedTools.includes(tool)),\n reason: request.reasonByTool.get(tool),\n })),\n ),\n finalAnswerName: request.finalAnswer.name,\n finalAnswerSchema: request.finalAnswer.customSchema\n ? JSON.stringify(request.finalAnswer.inputSchema, null, 2)\n : undefined,\n finalAnswerInstructions: request.finalAnswer.instructions, // default\n role: undefined, // default\n instructions: undefined, // default\n notes: undefined, // default\n }),\n );\n}\n"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base_cjs = require('../../../tools/base.cjs');
|
|
4
|
+
var errors_cjs = require('../../../errors.cjs');
|
|
5
|
+
var emitter_cjs = require('../../../emitter/emitter.cjs');
|
|
6
|
+
var zod = require('zod');
|
|
7
|
+
var message_cjs = require('../../../backend/message.cjs');
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
async function runTool(tools, msg, context) {
|
|
12
|
+
const result = {
|
|
13
|
+
msg,
|
|
14
|
+
tool: null,
|
|
15
|
+
input: msg.input,
|
|
16
|
+
output: new base_cjs.StringToolOutput(""),
|
|
17
|
+
error: null
|
|
18
|
+
};
|
|
19
|
+
try {
|
|
20
|
+
result.tool = tools.find((tool) => tool.name === msg.toolName) || null;
|
|
21
|
+
if (!result.tool) {
|
|
22
|
+
throw new base_cjs.ToolError(`Tool '${msg.toolName}' does not exist!`);
|
|
23
|
+
}
|
|
24
|
+
result.output = await result.tool.run(result.input).context({
|
|
25
|
+
...context,
|
|
26
|
+
toolCallMsg: msg
|
|
27
|
+
});
|
|
28
|
+
} catch (e) {
|
|
29
|
+
if (e instanceof base_cjs.ToolError) {
|
|
30
|
+
result.error = errors_cjs.FrameworkError.ensure(e);
|
|
31
|
+
} else {
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
__name(runTool, "runTool");
|
|
38
|
+
const FinalAnswerToolSchema = zod.z.object({
|
|
39
|
+
response: zod.z.string().describe("The final answer to the user")
|
|
40
|
+
});
|
|
41
|
+
class FinalAnswerTool extends base_cjs.Tool {
|
|
42
|
+
static {
|
|
43
|
+
__name(this, "FinalAnswerTool");
|
|
44
|
+
}
|
|
45
|
+
name = "final_answer";
|
|
46
|
+
description = "Sends the final answer to the user";
|
|
47
|
+
instructions;
|
|
48
|
+
customSchema;
|
|
49
|
+
emitter;
|
|
50
|
+
expectedOutput;
|
|
51
|
+
state;
|
|
52
|
+
constructor(expectedOutput, state) {
|
|
53
|
+
super();
|
|
54
|
+
this.expectedOutput = expectedOutput;
|
|
55
|
+
this.state = state;
|
|
56
|
+
this.instructions = typeof expectedOutput === "string" ? expectedOutput : void 0;
|
|
57
|
+
this.customSchema = expectedOutput instanceof zod.ZodSchema;
|
|
58
|
+
this.emitter = emitter_cjs.Emitter.root.child({
|
|
59
|
+
namespace: [
|
|
60
|
+
"tool",
|
|
61
|
+
"final_answer"
|
|
62
|
+
],
|
|
63
|
+
creator: this
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
inputSchema() {
|
|
67
|
+
const expectedOutput = this.expectedOutput;
|
|
68
|
+
if (!expectedOutput) {
|
|
69
|
+
return FinalAnswerToolSchema;
|
|
70
|
+
} else if (expectedOutput instanceof zod.ZodSchema) {
|
|
71
|
+
return expectedOutput;
|
|
72
|
+
} else if (typeof expectedOutput === "string") {
|
|
73
|
+
return zod.z.object({
|
|
74
|
+
response: zod.z.string().describe(expectedOutput)
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
return FinalAnswerToolSchema;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async _run(input, _options, _ctx) {
|
|
81
|
+
this.state.result = input;
|
|
82
|
+
if (this.expectedOutput instanceof zod.ZodSchema) {
|
|
83
|
+
this.state.answer = new message_cjs.AssistantMessage(JSON.stringify(input));
|
|
84
|
+
} else {
|
|
85
|
+
this.state.answer = new message_cjs.AssistantMessage(input.response);
|
|
86
|
+
}
|
|
87
|
+
return new base_cjs.StringToolOutput("Message has been sent");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
exports.FinalAnswerTool = FinalAnswerTool;
|
|
92
|
+
exports.runTool = runTool;
|
|
93
|
+
//# sourceMappingURL=tool.cjs.map
|
|
94
|
+
//# sourceMappingURL=tool.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","Tool","description","instructions","customSchema","emitter","expectedOutput","state","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import '../../../tools/base.cjs';
|
|
2
|
+
import 'ai';
|
|
3
|
+
import '../../../errors.cjs';
|
|
4
|
+
import '../../../emitter-CGKd_-kK.cjs';
|
|
5
|
+
import 'zod';
|
|
6
|
+
export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-Cx6f43du.cjs';
|
|
7
|
+
import '../../../context.cjs';
|
|
8
|
+
import 'ajv';
|
|
9
|
+
import '../../../internals/serializable.cjs';
|
|
10
|
+
import '../../../internals/types.cjs';
|
|
11
|
+
import '../../../internals/helpers/guards.cjs';
|
|
12
|
+
import 'promise-based-task';
|
|
13
|
+
import '../../../cache/base.cjs';
|
|
14
|
+
import '../../../internals/helpers/schema.cjs';
|
|
15
|
+
import 'zod-to-json-schema';
|
|
16
|
+
import '../../../internals/helpers/promise.cjs';
|
|
17
|
+
import '../../../memory/base.cjs';
|
|
18
|
+
import '../../../backend/message.cjs';
|
|
19
|
+
import '../../../template.cjs';
|
|
20
|
+
import '../../../chat-DB_cf15S.cjs';
|
|
21
|
+
import '../../../backend/constants.cjs';
|
|
22
|
+
import '../../../logger/logger.cjs';
|
|
23
|
+
import 'pino';
|
|
24
|
+
import '../../../base-v-PYIq5G.cjs';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import '../../../tools/base.js';
|
|
2
|
+
import 'ai';
|
|
3
|
+
import '../../../errors.js';
|
|
4
|
+
import '../../../emitter-CN7I4uSV.js';
|
|
5
|
+
import 'zod';
|
|
6
|
+
export { F as FinalAnswerTool, T as ToolInvocationResult, r as runTool } from '../../../types-BXkkbABd.js';
|
|
7
|
+
import '../../../context.js';
|
|
8
|
+
import 'ajv';
|
|
9
|
+
import '../../../internals/serializable.js';
|
|
10
|
+
import '../../../internals/types.js';
|
|
11
|
+
import '../../../internals/helpers/guards.js';
|
|
12
|
+
import 'promise-based-task';
|
|
13
|
+
import '../../../cache/base.js';
|
|
14
|
+
import '../../../internals/helpers/schema.js';
|
|
15
|
+
import 'zod-to-json-schema';
|
|
16
|
+
import '../../../internals/helpers/promise.js';
|
|
17
|
+
import '../../../memory/base.js';
|
|
18
|
+
import '../../../backend/message.js';
|
|
19
|
+
import '../../../template.js';
|
|
20
|
+
import '../../../chat-BbCYMAdE.js';
|
|
21
|
+
import '../../../backend/constants.js';
|
|
22
|
+
import '../../../logger/logger.js';
|
|
23
|
+
import 'pino';
|
|
24
|
+
import '../../../base-BurRTBA7.js';
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Tool, StringToolOutput, ToolError } from '../../../tools/base.js';
|
|
2
|
+
import { FrameworkError } from '../../../errors.js';
|
|
3
|
+
import { Emitter } from '../../../emitter/emitter.js';
|
|
4
|
+
import { z, ZodSchema } from 'zod';
|
|
5
|
+
import { AssistantMessage } from '../../../backend/message.js';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
async function runTool(tools, msg, context) {
|
|
10
|
+
const result = {
|
|
11
|
+
msg,
|
|
12
|
+
tool: null,
|
|
13
|
+
input: msg.input,
|
|
14
|
+
output: new StringToolOutput(""),
|
|
15
|
+
error: null
|
|
16
|
+
};
|
|
17
|
+
try {
|
|
18
|
+
result.tool = tools.find((tool) => tool.name === msg.toolName) || null;
|
|
19
|
+
if (!result.tool) {
|
|
20
|
+
throw new ToolError(`Tool '${msg.toolName}' does not exist!`);
|
|
21
|
+
}
|
|
22
|
+
result.output = await result.tool.run(result.input).context({
|
|
23
|
+
...context,
|
|
24
|
+
toolCallMsg: msg
|
|
25
|
+
});
|
|
26
|
+
} catch (e) {
|
|
27
|
+
if (e instanceof ToolError) {
|
|
28
|
+
result.error = FrameworkError.ensure(e);
|
|
29
|
+
} else {
|
|
30
|
+
throw e;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
__name(runTool, "runTool");
|
|
36
|
+
const FinalAnswerToolSchema = z.object({
|
|
37
|
+
response: z.string().describe("The final answer to the user")
|
|
38
|
+
});
|
|
39
|
+
class FinalAnswerTool extends Tool {
|
|
40
|
+
static {
|
|
41
|
+
__name(this, "FinalAnswerTool");
|
|
42
|
+
}
|
|
43
|
+
name = "final_answer";
|
|
44
|
+
description = "Sends the final answer to the user";
|
|
45
|
+
instructions;
|
|
46
|
+
customSchema;
|
|
47
|
+
emitter;
|
|
48
|
+
expectedOutput;
|
|
49
|
+
state;
|
|
50
|
+
constructor(expectedOutput, state) {
|
|
51
|
+
super();
|
|
52
|
+
this.expectedOutput = expectedOutput;
|
|
53
|
+
this.state = state;
|
|
54
|
+
this.instructions = typeof expectedOutput === "string" ? expectedOutput : void 0;
|
|
55
|
+
this.customSchema = expectedOutput instanceof ZodSchema;
|
|
56
|
+
this.emitter = Emitter.root.child({
|
|
57
|
+
namespace: [
|
|
58
|
+
"tool",
|
|
59
|
+
"final_answer"
|
|
60
|
+
],
|
|
61
|
+
creator: this
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
inputSchema() {
|
|
65
|
+
const expectedOutput = this.expectedOutput;
|
|
66
|
+
if (!expectedOutput) {
|
|
67
|
+
return FinalAnswerToolSchema;
|
|
68
|
+
} else if (expectedOutput instanceof ZodSchema) {
|
|
69
|
+
return expectedOutput;
|
|
70
|
+
} else if (typeof expectedOutput === "string") {
|
|
71
|
+
return z.object({
|
|
72
|
+
response: z.string().describe(expectedOutput)
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
return FinalAnswerToolSchema;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async _run(input, _options, _ctx) {
|
|
79
|
+
this.state.result = input;
|
|
80
|
+
if (this.expectedOutput instanceof ZodSchema) {
|
|
81
|
+
this.state.answer = new AssistantMessage(JSON.stringify(input));
|
|
82
|
+
} else {
|
|
83
|
+
this.state.answer = new AssistantMessage(input.response);
|
|
84
|
+
}
|
|
85
|
+
return new StringToolOutput("Message has been sent");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { FinalAnswerTool, runTool };
|
|
90
|
+
//# sourceMappingURL=tool.js.map
|
|
91
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/utils/tool.ts"],"names":["runTool","tools","msg","context","result","tool","input","output","StringToolOutput","error","find","name","toolName","ToolError","run","toolCallMsg","e","FrameworkError","ensure","FinalAnswerToolSchema","z","object","response","string","describe","FinalAnswerTool","Tool","description","instructions","customSchema","emitter","expectedOutput","state","undefined","ZodSchema","Emitter","root","child","namespace","creator","inputSchema","_run","_options","_ctx","answer","AssistantMessage","JSON","stringify"],"mappings":"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","file":"tool.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AnyTool,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolError,\n ToolOutput,\n} from \"@/tools/base.js\";\nimport { ToolCallPart } from \"ai\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { AssistantMessage } from \"@/backend/message.js\";\nimport { RunContext } from \"@/context.js\";\n\n// Tool invocation result\nexport interface ToolInvocationResult {\n msg: ToolCallPart;\n tool: AnyTool | null;\n input: unknown;\n output: ToolOutput;\n error: FrameworkError | null;\n}\n\n/**\n * Run a single tool with error handling\n */\nexport async function runTool(\n tools: AnyTool[],\n msg: ToolCallPart,\n context: Record<string, any>,\n): Promise<ToolInvocationResult> {\n const result: ToolInvocationResult = {\n msg,\n tool: null,\n input: msg.input,\n output: new StringToolOutput(\"\"),\n error: null,\n };\n\n try {\n result.tool = tools.find((tool) => tool.name === msg.toolName) || null;\n if (!result.tool) {\n throw new ToolError(`Tool '${msg.toolName}' does not exist!`);\n }\n\n result.output = await result.tool.run(result.input).context({\n ...context,\n toolCallMsg: msg,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n result.error = FrameworkError.ensure(e);\n } else {\n throw e;\n }\n }\n\n return result;\n}\n\n// Final answer tool schema\nconst FinalAnswerToolSchema = z.object({\n response: z.string().describe(\"The final answer to the user\"),\n});\n\n/**\n * Special tool for capturing final answers\n */\nexport class FinalAnswerTool extends Tool {\n public readonly name = \"final_answer\";\n public readonly description = \"Sends the final answer to the user\";\n public instructions?: string;\n public customSchema: boolean;\n public readonly emitter: Emitter<any>;\n\n protected expectedOutput: string | ZodSchema | null;\n protected state: RequirementAgentRunState;\n\n constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState) {\n super();\n this.expectedOutput = expectedOutput;\n this.state = state;\n this.instructions = typeof expectedOutput === \"string\" ? expectedOutput : undefined;\n this.customSchema = expectedOutput instanceof ZodSchema;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"final_answer\"],\n creator: this,\n });\n }\n\n inputSchema(): ZodSchema {\n const expectedOutput = this.expectedOutput;\n\n if (!expectedOutput) {\n return FinalAnswerToolSchema;\n } else if (expectedOutput instanceof ZodSchema) {\n return expectedOutput;\n } else if (typeof expectedOutput === \"string\") {\n return z.object({\n response: z.string().describe(expectedOutput),\n });\n } else {\n return FinalAnswerToolSchema;\n }\n }\n\n async _run(\n input: any,\n _options: BaseToolRunOptions,\n _ctx: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n this.state.result = input;\n\n if (this.expectedOutput instanceof ZodSchema) {\n // For custom schemas, serialize the entire input\n this.state.answer = new AssistantMessage(JSON.stringify(input));\n } else {\n // For string schemas, use the response field\n this.state.answer = new AssistantMessage(input.response);\n }\n\n return new StringToolOutput(\"Message has been sent\");\n }\n}\n"]}
|