beeai-framework 0.1.21 → 0.1.23
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.cjs +1 -2
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +2 -3
- package/dist/adapters/ollama/backend/chat.d.ts +2 -3
- package/dist/adapters/ollama/backend/chat.js +1 -2
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- 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.cjs +77 -17
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- 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/chat.js +77 -17
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- 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 +32 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +6 -4
- package/dist/adapters/vercel/backend/utils.d.ts +6 -4
- package/dist/adapters/vercel/backend/utils.js +31 -1
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +7 -8
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +4 -4
- package/dist/adapters/watsonx/backend/chat.d.ts +4 -4
- package/dist/adapters/watsonx/backend/chat.js +7 -8
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- 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-BVuc9Nfn.d.cts} +5 -4
- package/dist/{agent-CHebzsQB.d.ts → agent-Cuy8Q4gw.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/runners/base.d.cts +4 -4
- package/dist/agents/react/runners/base.d.ts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
- 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/runner.d.cts +4 -4
- package/dist/agents/react/runners/granite/runner.d.ts +4 -4
- 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 +268 -0
- package/dist/agents/requirement/runner.cjs.map +1 -0
- package/dist/agents/requirement/runner.d.cts +115 -0
- package/dist/agents/requirement/runner.d.ts +115 -0
- package/dist/agents/requirement/runner.js +266 -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 +95 -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 +92 -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.cjs +4 -1
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +11 -12
- package/dist/agents/toolCalling/agent.d.ts +11 -12
- package/dist/agents/toolCalling/agent.js +5 -2
- package/dist/agents/toolCalling/agent.js.map +1 -1
- 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.cjs +122 -4
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +3 -3
- package/dist/backend/chat.d.ts +3 -3
- package/dist/backend/chat.js +123 -5
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/core.d.cts +3 -3
- package/dist/backend/core.d.ts +3 -3
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/message.cjs +20 -13
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.d.cts +7 -3
- package/dist/backend/message.d.ts +7 -3
- package/dist/backend/message.js +20 -13
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/{base-BQgDlcGa.d.ts → base-CyFx7BRL.d.ts} +5 -3
- package/dist/{base-CwcxwybB.d.cts → base-XfWeXQ-S.d.cts} +5 -3
- package/dist/{chat-CRb3vUVg.d.cts → chat-BOb9n7AJ.d.cts} +7 -8
- package/dist/{chat-C0s-o6ll.d.ts → chat-DrqwUgD8.d.ts} +7 -8
- 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 +21 -14
- 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 +21 -14
- 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-CZFbzlUi.d.ts → emitter-36-9MnvA.d.ts} +4 -3
- package/dist/{emitter-DpqUYjXH.d.cts → emitter-jN55XZZq.d.cts} +4 -3
- 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/streamToolCall.cjs +132 -0
- package/dist/middleware/streamToolCall.cjs.map +1 -0
- package/dist/middleware/streamToolCall.d.cts +94 -0
- package/dist/middleware/streamToolCall.d.ts +94 -0
- package/dist/middleware/streamToolCall.js +130 -0
- package/dist/middleware/streamToolCall.js.map +1 -0
- package/dist/middleware/trajectory.cjs +331 -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 +329 -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 +3 -3
- package/dist/tools/database/milvus.d.ts +3 -3
- 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/handoff.cjs +68 -0
- package/dist/tools/handoff.cjs.map +1 -0
- package/dist/tools/handoff.d.cts +47 -0
- package/dist/tools/handoff.d.ts +47 -0
- package/dist/tools/handoff.js +66 -0
- package/dist/tools/handoff.js.map +1 -0
- 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-CJwiMH3u.d.ts +213 -0
- package/dist/types-W0QttuP_.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 +11 -11
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Requirement, Rule } from './requirement.js';
|
|
2
|
+
import { MultiTargetType, TargetType } from './utils.js';
|
|
3
|
+
import { AnyTool } from '../../../tools/base.js';
|
|
4
|
+
import { RunContext } from '../../../context.js';
|
|
5
|
+
import { R as RequirementAgentRunState } from '../../../types-CJwiMH3u.js';
|
|
6
|
+
import '../../../emitter-36-9MnvA.js';
|
|
7
|
+
import '../../../internals/types.js';
|
|
8
|
+
import '../../../internals/helpers/guards.js';
|
|
9
|
+
import '../../../internals/serializable.js';
|
|
10
|
+
import '../../../errors.js';
|
|
11
|
+
import '../../../internals/helpers/promise.js';
|
|
12
|
+
import 'ajv';
|
|
13
|
+
import 'promise-based-task';
|
|
14
|
+
import '../../../cache/base.js';
|
|
15
|
+
import '../../../internals/helpers/schema.js';
|
|
16
|
+
import 'zod';
|
|
17
|
+
import 'zod-to-json-schema';
|
|
18
|
+
import '../../../memory/base.js';
|
|
19
|
+
import '../../../backend/message.js';
|
|
20
|
+
import 'ai';
|
|
21
|
+
import '../../../template.js';
|
|
22
|
+
import '../../../chat-DrqwUgD8.js';
|
|
23
|
+
import '../../../backend/constants.js';
|
|
24
|
+
import '../../../logger/logger.js';
|
|
25
|
+
import 'pino';
|
|
26
|
+
import '../../../base-CyFx7BRL.js';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
30
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
interface ConditionalRequirementOptions {
|
|
34
|
+
name?: string;
|
|
35
|
+
forceAtStep?: number;
|
|
36
|
+
onlyBefore?: MultiTargetType;
|
|
37
|
+
onlyAfter?: MultiTargetType;
|
|
38
|
+
forceAfter?: MultiTargetType;
|
|
39
|
+
forcePreventStop?: boolean;
|
|
40
|
+
minInvocations?: number;
|
|
41
|
+
maxInvocations?: number;
|
|
42
|
+
onlySuccessInvocations?: boolean;
|
|
43
|
+
consecutiveAllowed?: boolean;
|
|
44
|
+
priority?: number;
|
|
45
|
+
customChecks?: ((state: RequirementAgentRunState) => boolean)[];
|
|
46
|
+
enabled?: boolean;
|
|
47
|
+
reason?: string;
|
|
48
|
+
}
|
|
49
|
+
declare class ConditionalRequirement extends Requirement {
|
|
50
|
+
protected source: TargetType;
|
|
51
|
+
protected sourceTool?: AnyTool;
|
|
52
|
+
protected before: Set<TargetType>;
|
|
53
|
+
protected after: Set<TargetType>;
|
|
54
|
+
protected forceAfterSet: Set<TargetType>;
|
|
55
|
+
protected minInvocations: number;
|
|
56
|
+
protected maxInvocations: number;
|
|
57
|
+
protected forceAtStepValue?: number;
|
|
58
|
+
protected onlySuccessInvocations: boolean;
|
|
59
|
+
protected consecutiveAllowedValue: boolean;
|
|
60
|
+
protected customChecks: ((state: RequirementAgentRunState) => boolean)[];
|
|
61
|
+
protected forcePreventStop: boolean;
|
|
62
|
+
protected reason?: string;
|
|
63
|
+
constructor(target: TargetType, options?: ConditionalRequirementOptions);
|
|
64
|
+
protected checkInvariant(): void;
|
|
65
|
+
init(tools: AnyTool[], ctx: RunContext<any>): Promise<void>;
|
|
66
|
+
reset(): this;
|
|
67
|
+
_run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;
|
|
68
|
+
clone(): Promise<this>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { ConditionalRequirement, type ConditionalRequirementOptions };
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { Requirement, RequirementError } from './requirement.js';
|
|
2
|
+
import { extractTargetName, extractTargets, assertAllRulesFound, targetSeenIn } from './utils.js';
|
|
3
|
+
import { ValueError } from '../../../errors.js';
|
|
4
|
+
import { isTruthy } from 'remeda';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
class ConditionalRequirement extends Requirement {
|
|
9
|
+
static {
|
|
10
|
+
__name(this, "ConditionalRequirement");
|
|
11
|
+
}
|
|
12
|
+
source;
|
|
13
|
+
sourceTool;
|
|
14
|
+
before;
|
|
15
|
+
after;
|
|
16
|
+
forceAfterSet;
|
|
17
|
+
minInvocations;
|
|
18
|
+
maxInvocations;
|
|
19
|
+
forceAtStepValue;
|
|
20
|
+
onlySuccessInvocations;
|
|
21
|
+
consecutiveAllowedValue;
|
|
22
|
+
customChecks;
|
|
23
|
+
forcePreventStop;
|
|
24
|
+
reason;
|
|
25
|
+
constructor(target, options = {}) {
|
|
26
|
+
super(options.name || `Condition${extractTargetName(target)}`);
|
|
27
|
+
this.source = target;
|
|
28
|
+
this.enabled = options.enabled ?? true;
|
|
29
|
+
if (options.priority !== void 0) {
|
|
30
|
+
this.priority = options.priority;
|
|
31
|
+
}
|
|
32
|
+
this.before = extractTargets(options.onlyBefore);
|
|
33
|
+
this.after = extractTargets(options.onlyAfter);
|
|
34
|
+
this.forceAfterSet = extractTargets(options.forceAfter);
|
|
35
|
+
this.minInvocations = options.minInvocations ?? 0;
|
|
36
|
+
this.maxInvocations = options.maxInvocations ?? Infinity;
|
|
37
|
+
this.forceAtStepValue = options.forceAtStep;
|
|
38
|
+
this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;
|
|
39
|
+
this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;
|
|
40
|
+
this.customChecks = options.customChecks ?? [];
|
|
41
|
+
this.forcePreventStop = options.forcePreventStop ?? true;
|
|
42
|
+
this.reason = options.reason;
|
|
43
|
+
this.checkInvariant();
|
|
44
|
+
}
|
|
45
|
+
checkInvariant() {
|
|
46
|
+
if (this.minInvocations < 0) {
|
|
47
|
+
throw new ValueError("The 'minInvocations' argument must be non negative!");
|
|
48
|
+
}
|
|
49
|
+
if (this.maxInvocations < 0) {
|
|
50
|
+
throw new ValueError("The 'maxInvocations' argument must be non negative!");
|
|
51
|
+
}
|
|
52
|
+
if (this.minInvocations > this.maxInvocations) {
|
|
53
|
+
throw new ValueError("The 'minInvocations' argument must be less than or equal to 'maxInvocations'!");
|
|
54
|
+
}
|
|
55
|
+
const sourceName = extractTargetName(this.source);
|
|
56
|
+
if (this.before.has(this.source)) {
|
|
57
|
+
throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);
|
|
58
|
+
}
|
|
59
|
+
if (this.forceAfterSet.has(this.source)) {
|
|
60
|
+
throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);
|
|
61
|
+
}
|
|
62
|
+
const beforeAfterIntersection = new Set([
|
|
63
|
+
...this.before
|
|
64
|
+
].filter((x) => this.after.has(x)));
|
|
65
|
+
if (beforeAfterIntersection.size > 0) {
|
|
66
|
+
throw new ValueError(`Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(", ")}!`);
|
|
67
|
+
}
|
|
68
|
+
const beforeForceAfterIntersection = new Set([
|
|
69
|
+
...this.before
|
|
70
|
+
].filter((x) => this.forceAfterSet.has(x)));
|
|
71
|
+
if (beforeForceAfterIntersection.size > 0) {
|
|
72
|
+
throw new ValueError(`Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(", ")}!`);
|
|
73
|
+
}
|
|
74
|
+
if (this.forceAtStepValue !== void 0 && this.forceAtStepValue < 1) {
|
|
75
|
+
throw new ValueError("The 'forceAtStep' argument must be >= 1!");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async init(tools, ctx) {
|
|
79
|
+
await super.init(tools, ctx);
|
|
80
|
+
const allTargets = /* @__PURE__ */ new Set([
|
|
81
|
+
...this.before,
|
|
82
|
+
...this.after,
|
|
83
|
+
...this.forceAfterSet,
|
|
84
|
+
this.source
|
|
85
|
+
]);
|
|
86
|
+
assertAllRulesFound(allTargets, tools);
|
|
87
|
+
for (const tool of tools) {
|
|
88
|
+
if (targetSeenIn(tool, this.source)) {
|
|
89
|
+
if (this.sourceTool && this.sourceTool !== tool) {
|
|
90
|
+
throw new ValueError(`More than one occurrence of ${extractTargetName(this.source)} has been found!`);
|
|
91
|
+
}
|
|
92
|
+
this.sourceTool = tool;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!this.sourceTool) {
|
|
96
|
+
throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);
|
|
97
|
+
}
|
|
98
|
+
if (targetSeenIn(this.sourceTool, this.before)) {
|
|
99
|
+
throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);
|
|
100
|
+
}
|
|
101
|
+
if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {
|
|
102
|
+
throw new ValueError(`Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
reset() {
|
|
106
|
+
this.before.clear();
|
|
107
|
+
this.after.clear();
|
|
108
|
+
this.forceAfterSet.clear();
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
async _run(state, _) {
|
|
112
|
+
const sourceTool = this.sourceTool;
|
|
113
|
+
if (!sourceTool) {
|
|
114
|
+
throw new RequirementError("Source was not found!", this);
|
|
115
|
+
}
|
|
116
|
+
const steps = this.onlySuccessInvocations ? state.steps.filter((step) => !step.error) : state.steps;
|
|
117
|
+
const lastStepTool = steps.at(-1)?.tool;
|
|
118
|
+
const invocations = steps.filter((step) => step.tool === sourceTool).length;
|
|
119
|
+
const resolve = /* @__PURE__ */ __name((allowed) => {
|
|
120
|
+
const currentStep = steps.length + 1;
|
|
121
|
+
if (!allowed && this.forceAtStepValue === currentStep) {
|
|
122
|
+
throw new RequirementError(`Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} because it has not met all requirements.`, this);
|
|
123
|
+
}
|
|
124
|
+
const forced = allowed ? Boolean(targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep) : false;
|
|
125
|
+
return [
|
|
126
|
+
{
|
|
127
|
+
target: sourceTool.name,
|
|
128
|
+
allowed,
|
|
129
|
+
forced,
|
|
130
|
+
hidden: false,
|
|
131
|
+
preventStop: this.minInvocations > invocations || forced && this.forcePreventStop,
|
|
132
|
+
reason: !allowed ? this.reason : void 0
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
}, "resolve");
|
|
136
|
+
if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {
|
|
137
|
+
return resolve(false);
|
|
138
|
+
}
|
|
139
|
+
if (invocations >= this.maxInvocations) {
|
|
140
|
+
return resolve(false);
|
|
141
|
+
}
|
|
142
|
+
if (this.after.size > 0) {
|
|
143
|
+
const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);
|
|
144
|
+
const afterToolsRemaining = new Set(this.after);
|
|
145
|
+
for (const stepTool of stepsAsToolCalls) {
|
|
146
|
+
if (targetSeenIn(stepTool, this.forceAfterSet)) {
|
|
147
|
+
return resolve(false);
|
|
148
|
+
}
|
|
149
|
+
const matcher = targetSeenIn(stepTool, this.after);
|
|
150
|
+
if (matcher) {
|
|
151
|
+
afterToolsRemaining.delete(matcher);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (afterToolsRemaining.size > 0) {
|
|
155
|
+
return resolve(false);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (const check of this.customChecks) {
|
|
159
|
+
if (!check(state)) {
|
|
160
|
+
return resolve(false);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return resolve(true);
|
|
164
|
+
}
|
|
165
|
+
async clone() {
|
|
166
|
+
const instance = await super.clone();
|
|
167
|
+
instance.before = new Set(this.before);
|
|
168
|
+
instance.after = new Set(this.after);
|
|
169
|
+
instance.forceAfterSet = new Set(this.forceAfterSet);
|
|
170
|
+
instance.minInvocations = this.minInvocations;
|
|
171
|
+
instance.maxInvocations = this.maxInvocations;
|
|
172
|
+
instance.customChecks = [
|
|
173
|
+
...this.customChecks
|
|
174
|
+
];
|
|
175
|
+
instance.onlySuccessInvocations = this.onlySuccessInvocations;
|
|
176
|
+
instance.forceAtStepValue = this.forceAtStepValue;
|
|
177
|
+
instance.consecutiveAllowedValue = this.consecutiveAllowedValue;
|
|
178
|
+
instance.source = this.source;
|
|
179
|
+
instance.sourceTool = this.sourceTool;
|
|
180
|
+
instance.forcePreventStop = this.forcePreventStop;
|
|
181
|
+
instance.reason = this.reason;
|
|
182
|
+
return instance;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export { ConditionalRequirement };
|
|
187
|
+
//# sourceMappingURL=conditional.js.map
|
|
188
|
+
//# sourceMappingURL=conditional.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/requirements/conditional.ts"],"names":["ConditionalRequirement","Requirement","source","sourceTool","before","after","forceAfterSet","minInvocations","maxInvocations","forceAtStepValue","onlySuccessInvocations","consecutiveAllowedValue","customChecks","forcePreventStop","reason","target","options","name","extractTargetName","enabled","priority","undefined","extractTargets","onlyBefore","onlyAfter","forceAfter","Infinity","forceAtStep","consecutiveAllowed","checkInvariant","ValueError","sourceName","has","beforeAfterIntersection","Set","filter","x","size","Array","from","join","beforeForceAfterIntersection","init","tools","ctx","allTargets","assertAllRulesFound","tool","targetSeenIn","reset","clear","_run","state","_","RequirementError","steps","step","error","lastStepTool","at","invocations","length","resolve","allowed","currentStep","forced","Boolean","hidden","preventStop","stepsAsToolCalls","map","isTruthy","afterToolsRemaining","stepTool","matcher","delete","check","clone","instance"],"mappings":"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","file":"conditional.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Requirement, RequirementError, Rule } from \"./requirement.js\";\nimport {\n TargetType,\n MultiTargetType,\n extractTargets,\n extractTargetName,\n targetSeenIn,\n assertAllRulesFound,\n} from \"./utils.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { isTruthy } from \"remeda\";\n\nexport interface ConditionalRequirementOptions {\n name?: string;\n forceAtStep?: number;\n onlyBefore?: MultiTargetType;\n onlyAfter?: MultiTargetType;\n forceAfter?: MultiTargetType;\n forcePreventStop?: boolean;\n minInvocations?: number;\n maxInvocations?: number;\n onlySuccessInvocations?: boolean;\n consecutiveAllowed?: boolean;\n priority?: number;\n customChecks?: ((state: RequirementAgentRunState) => boolean)[];\n enabled?: boolean;\n reason?: string;\n}\n\nexport class ConditionalRequirement extends Requirement {\n protected source: TargetType;\n protected sourceTool?: AnyTool;\n protected before: Set<TargetType>;\n protected after: Set<TargetType>;\n protected forceAfterSet: Set<TargetType>;\n protected minInvocations: number;\n protected maxInvocations: number;\n protected forceAtStepValue?: number;\n protected onlySuccessInvocations: boolean;\n protected consecutiveAllowedValue: boolean;\n protected customChecks: ((state: RequirementAgentRunState) => boolean)[];\n protected forcePreventStop: boolean;\n protected reason?: string;\n\n constructor(target: TargetType, options: ConditionalRequirementOptions = {}) {\n super(options.name || `Condition${extractTargetName(target)}`);\n\n this.source = target;\n this.enabled = options.enabled ?? true;\n\n if (options.priority !== undefined) {\n this.priority = options.priority;\n }\n\n this.before = extractTargets(options.onlyBefore);\n this.after = extractTargets(options.onlyAfter);\n this.forceAfterSet = extractTargets(options.forceAfter);\n this.minInvocations = options.minInvocations ?? 0;\n this.maxInvocations = options.maxInvocations ?? Infinity;\n this.forceAtStepValue = options.forceAtStep;\n this.onlySuccessInvocations = options.onlySuccessInvocations ?? true;\n this.consecutiveAllowedValue = options.consecutiveAllowed ?? true;\n this.customChecks = options.customChecks ?? [];\n this.forcePreventStop = options.forcePreventStop ?? true;\n this.reason = options.reason;\n\n this.checkInvariant();\n }\n\n protected checkInvariant(): void {\n if (this.minInvocations < 0) {\n throw new ValueError(\"The 'minInvocations' argument must be non negative!\");\n }\n\n if (this.maxInvocations < 0) {\n throw new ValueError(\"The 'maxInvocations' argument must be non negative!\");\n }\n\n if (this.minInvocations > this.maxInvocations) {\n throw new ValueError(\n \"The 'minInvocations' argument must be less than or equal to 'maxInvocations'!\",\n );\n }\n\n const sourceName = extractTargetName(this.source);\n if (this.before.has(this.source)) {\n throw new ValueError(`Referencing self in 'before' is not allowed (${sourceName})!`);\n }\n\n if (this.forceAfterSet.has(this.source)) {\n throw new ValueError(`Referencing self in 'forceAfter' is not allowed (${sourceName})!`);\n }\n\n const beforeAfterIntersection = new Set([...this.before].filter((x) => this.after.has(x)));\n if (beforeAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'after' at the same time: ${Array.from(beforeAfterIntersection).join(\", \")}!`,\n );\n }\n\n const beforeForceAfterIntersection = new Set(\n [...this.before].filter((x) => this.forceAfterSet.has(x)),\n );\n if (beforeForceAfterIntersection.size > 0) {\n throw new ValueError(\n `Tool specified as 'before' and 'forceAfter' at the same time: ${Array.from(beforeForceAfterIntersection).join(\", \")}!`,\n );\n }\n\n if (this.forceAtStepValue !== undefined && this.forceAtStepValue < 1) {\n throw new ValueError(\"The 'forceAtStep' argument must be >= 1!\");\n }\n }\n\n async init(tools: AnyTool[], ctx: RunContext<any>): Promise<void> {\n await super.init(tools, ctx);\n\n const allTargets = new Set([...this.before, ...this.after, ...this.forceAfterSet, this.source]);\n assertAllRulesFound(allTargets, tools);\n\n for (const tool of tools) {\n if (targetSeenIn(tool, this.source)) {\n if (this.sourceTool && this.sourceTool !== tool) {\n throw new ValueError(\n `More than one occurrence of ${extractTargetName(this.source)} has been found!`,\n );\n }\n this.sourceTool = tool;\n }\n }\n\n if (!this.sourceTool) {\n throw new ValueError(`Source tool ${extractTargetName(this.source)} was not found!`);\n }\n\n if (targetSeenIn(this.sourceTool, this.before)) {\n throw new ValueError(`Referencing self in 'before' is not allowed: ${this.sourceTool.name}!`);\n }\n\n if (this.consecutiveAllowedValue && targetSeenIn(this.sourceTool, this.forceAfterSet)) {\n throw new ValueError(\n `Referencing self in 'forceAfter' is not allowed: ${this.sourceTool.name}. ` +\n `It would prevent an infinite loop. Consider setting 'consecutiveAllowed' to false.`,\n );\n }\n }\n\n reset(): this {\n this.before.clear();\n this.after.clear();\n this.forceAfterSet.clear();\n return this;\n }\n\n async _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]> {\n const sourceTool = this.sourceTool;\n if (!sourceTool) {\n throw new RequirementError(\"Source was not found!\", this);\n }\n\n // Get steps from state (assuming state has steps property)\n const steps = this.onlySuccessInvocations\n ? state.steps.filter((step) => !step.error)\n : state.steps;\n\n const lastStepTool = steps.at(-1)?.tool;\n\n const invocations = steps.filter((step) => step.tool === sourceTool).length;\n\n const resolve = (allowed: boolean): Rule[] => {\n const currentStep = steps.length + 1;\n if (!allowed && this.forceAtStepValue === currentStep) {\n throw new RequirementError(\n `Tool '${sourceTool.name}' cannot be executed at step ${this.forceAtStepValue} ` +\n `because it has not met all requirements.`,\n this,\n );\n }\n\n const forced = allowed\n ? Boolean(\n targetSeenIn(lastStepTool, this.forceAfterSet) || this.forceAtStepValue === currentStep,\n )\n : false;\n\n return [\n {\n target: sourceTool.name,\n allowed,\n forced,\n hidden: false,\n preventStop: this.minInvocations > invocations || (forced && this.forcePreventStop),\n reason: !allowed ? this.reason : undefined,\n },\n ];\n };\n\n // Check consecutive constraint\n if (!this.consecutiveAllowedValue && sourceTool === lastStepTool) {\n return resolve(false);\n }\n\n // Check max invocations\n if (invocations >= this.maxInvocations) {\n return resolve(false);\n }\n\n // Check after/before constraints\n if (this.after.size > 0) {\n const stepsAsToolCalls = steps.map((step) => step.tool).filter(isTruthy);\n const afterToolsRemaining = new Set(this.after);\n\n for (const stepTool of stepsAsToolCalls) {\n if (targetSeenIn(stepTool, this.forceAfterSet)) {\n return resolve(false);\n }\n\n const matcher = targetSeenIn(stepTool as any, this.after);\n if (matcher) {\n afterToolsRemaining.delete(matcher);\n }\n }\n\n if (afterToolsRemaining.size > 0) {\n return resolve(false);\n }\n }\n\n // Check custom checks\n for (const check of this.customChecks) {\n if (!check(state)) {\n return resolve(false);\n }\n }\n\n return resolve(true);\n }\n\n async clone(): Promise<this> {\n const instance = await super.clone();\n instance.before = new Set(this.before);\n instance.after = new Set(this.after);\n instance.forceAfterSet = new Set(this.forceAfterSet);\n instance.minInvocations = this.minInvocations;\n instance.maxInvocations = this.maxInvocations;\n instance.customChecks = [...this.customChecks];\n instance.onlySuccessInvocations = this.onlySuccessInvocations;\n instance.forceAtStepValue = this.forceAtStepValue;\n instance.consecutiveAllowedValue = this.consecutiveAllowedValue;\n instance.source = this.source;\n instance.sourceTool = this.sourceTool;\n instance.forcePreventStop = this.forcePreventStop;\n instance.reason = this.reason;\n return instance;\n }\n}\n"]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var context_cjs = require('../../../context.cjs');
|
|
4
|
+
var emitter_cjs = require('../../../emitter/emitter.cjs');
|
|
5
|
+
var errors_cjs = require('../../../errors.cjs');
|
|
6
|
+
var remeda = require('remeda');
|
|
7
|
+
var decoratorCache_cjs = require('../../../cache/decoratorCache.cjs');
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
12
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
}
|
|
17
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
18
|
+
function _ts_metadata(k, v) {
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
20
|
+
}
|
|
21
|
+
__name(_ts_metadata, "_ts_metadata");
|
|
22
|
+
class Requirement {
|
|
23
|
+
static {
|
|
24
|
+
__name(this, "Requirement");
|
|
25
|
+
}
|
|
26
|
+
name;
|
|
27
|
+
state = {};
|
|
28
|
+
enabled = true;
|
|
29
|
+
middlewares = [];
|
|
30
|
+
_priority = 10;
|
|
31
|
+
constructor(name) {
|
|
32
|
+
this.name = name || this.constructor.name;
|
|
33
|
+
}
|
|
34
|
+
get priority() {
|
|
35
|
+
return this._priority;
|
|
36
|
+
}
|
|
37
|
+
set priority(value) {
|
|
38
|
+
if (value <= 0) {
|
|
39
|
+
throw new errors_cjs.ValueError("Priority must be a positive integer.");
|
|
40
|
+
}
|
|
41
|
+
this._priority = value;
|
|
42
|
+
}
|
|
43
|
+
get emitter() {
|
|
44
|
+
return emitter_cjs.Emitter.root.child({
|
|
45
|
+
namespace: [
|
|
46
|
+
"requirement",
|
|
47
|
+
remeda.toCamelCase(this.name)
|
|
48
|
+
],
|
|
49
|
+
creator: this
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
run(state) {
|
|
53
|
+
return context_cjs.RunContext.enter(this, {
|
|
54
|
+
signal: void 0,
|
|
55
|
+
params: [
|
|
56
|
+
state
|
|
57
|
+
]
|
|
58
|
+
}, async (context) => {
|
|
59
|
+
return await this._run(state, context);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async init(tools, _) {
|
|
63
|
+
await this.emitter.emit("init", {
|
|
64
|
+
tools
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async clone() {
|
|
68
|
+
const instance = Object.create(Object.getPrototypeOf(this));
|
|
69
|
+
instance.name = this.name;
|
|
70
|
+
instance.priority = this.priority;
|
|
71
|
+
instance.enabled = this.enabled;
|
|
72
|
+
instance.state = {
|
|
73
|
+
...this.state
|
|
74
|
+
};
|
|
75
|
+
instance.middlewares = [
|
|
76
|
+
...this.middlewares
|
|
77
|
+
];
|
|
78
|
+
return instance;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
_ts_decorate([
|
|
82
|
+
decoratorCache_cjs.Cache({
|
|
83
|
+
enumerable: false
|
|
84
|
+
}),
|
|
85
|
+
_ts_metadata("design:type", typeof emitter_cjs.Emitter === "undefined" ? Object : emitter_cjs.Emitter),
|
|
86
|
+
_ts_metadata("design:paramtypes", [])
|
|
87
|
+
], Requirement.prototype, "emitter", null);
|
|
88
|
+
class RequirementError extends errors_cjs.FrameworkError {
|
|
89
|
+
static {
|
|
90
|
+
__name(this, "RequirementError");
|
|
91
|
+
}
|
|
92
|
+
requirement;
|
|
93
|
+
constructor(message, requirement, cause, context) {
|
|
94
|
+
super(message, cause ? [
|
|
95
|
+
cause
|
|
96
|
+
] : void 0, {
|
|
97
|
+
isFatal: true,
|
|
98
|
+
isRetryable: false,
|
|
99
|
+
context
|
|
100
|
+
}), this.requirement = requirement;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
exports.Requirement = Requirement;
|
|
105
|
+
exports.RequirementError = RequirementError;
|
|
106
|
+
//# sourceMappingURL=requirement.cjs.map
|
|
107
|
+
//# sourceMappingURL=requirement.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/requirements/requirement.ts"],"names":["Requirement","name","state","enabled","middlewares","_priority","priority","value","ValueError","emitter","Emitter","root","child","namespace","toCamelCase","creator","run","RunContext","enter","signal","undefined","params","context","_run","init","tools","_","emit","clone","instance","Object","create","getPrototypeOf","enumerable","RequirementError","FrameworkError","message","requirement","cause","isFatal","isRetryable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBO,MAAeA,WAAAA,CAAAA;AAAAA,EAAAA;;;AACbC,EAAAA,IAAAA;AACAC,EAAAA,KAAAA,GAA6B,EAAC;EAC9BC,OAAAA,GAAU,IAAA;AACVC,EAAAA,WAAAA,GAA6C,EAAA;EAE1CC,SAAAA,GAAY,EAAA;AAEtB,EAAA,WAAA,CAAYJ,IAAAA,EAAe;AACzB,IAAA,IAAA,CAAKA,IAAAA,GAAOA,IAAAA,IAAQ,IAAA,CAAK,WAAA,CAAYA,IAAAA;AACvC;AAEA,EAAA,IAAIK,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAKD,SAAAA;AACd;AAEA,EAAA,IAAIC,SAASC,KAAAA,EAAe;AAC1B,IAAA,IAAIA,SAAS,CAAA,EAAG;AACd,MAAA,MAAM,IAAIC,sBAAW,sCAAA,CAAA;AACvB;AACA,IAAA,IAAA,CAAKH,SAAAA,GAAYE,KAAAA;AACnB;AAEA,EAAA,IACIE,OAAAA,GAAyC;AAC3C,IAAA,OAAOC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;MACxBC,SAAAA,EAAW;AAAC,QAAA,aAAA;AAAeC,QAAAA,kBAAAA,CAAY,KAAKb,IAAI;;MAChDc,OAAAA,EAAS;KACX,CAAA;AACF;AAEAC,EAAAA,GAAAA,CAAId,KAAAA,EAAiC;AACnC,IAAA,OAAOe,sBAAAA,CAAWC,MAChB,IAAA,EACA;MAAEC,MAAAA,EAAQC,MAAAA;MAAWC,MAAAA,EAAQ;AAACnB,QAAAA;;AAAgB,KAAA,EAC9C,OAAOoB,OAAAA,KAAAA;AACL,MAAA,OAAO,MAAM,IAAA,CAAKC,IAAAA,CAAKrB,KAAAA,EAAOoB,OAAAA,CAAAA;KAChC,CAAA;AAEJ;EAIA,MAAME,IAAAA,CAAKC,OAAkBC,CAAAA,EAAmC;AAC9D,IAAA,MAAM,IAAA,CAAKjB,OAAAA,CAAQkB,IAAAA,CAAK,MAAA,EAAQ;AAAEF,MAAAA;KAAM,CAAA;AAC1C;AAEA,EAAA,MAAMG,KAAAA,GAAuB;AAC3B,IAAA,MAAMC,WAAWC,MAAAA,CAAOC,MAAAA,CAAOD,MAAAA,CAAOE,cAAAA,CAAe,IAAI,CAAA,CAAA;AACzDH,IAAAA,QAAAA,CAAS5B,OAAO,IAAA,CAAKA,IAAAA;AACrB4B,IAAAA,QAAAA,CAASvB,WAAW,IAAA,CAAKA,QAAAA;AACzBuB,IAAAA,QAAAA,CAAS1B,UAAU,IAAA,CAAKA,OAAAA;AACxB0B,IAAAA,QAAAA,CAAS3B,KAAAA,GAAQ;AAAE,MAAA,GAAG,IAAA,CAAKA;AAAM,KAAA;AACjC2B,IAAAA,QAAAA,CAASzB,WAAAA,GAAc;SAAI,IAAA,CAAKA;;AAChC,IAAA,OAAOyB,QAAAA;AACT;AACF;;;IAjCWI,UAAAA,EAAY;;;;;AAoChB,MAAMC,yBAAyBC,yBAAAA,CAAAA;AAAAA,EAAAA;;;;EACpC,WAAA,CACEC,OAAAA,EACgBC,WAAAA,EAChBC,KAAAA,EACAhB,OAAAA,EACA;AACA,IAAA,KAAA,CAAMc,SAASE,KAAAA,GAAQ;AAACA,MAAAA;QAASlB,MAAAA,EAAW;MAC1CmB,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa,KAAA;AACblB,MAAAA;KACF,CAAA,EAAA,KARgBe,WAAAA,GAAAA,WAAAA;AASlB;AACF","file":"requirement.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool } from \"@/tools/base.js\";\nimport { MiddlewareType, RunContext } from \"@/context.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { toCamelCase } from \"remeda\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\n// Rule definition\nexport interface Rule {\n target: string;\n allowed: boolean;\n reason?: string;\n preventStop: boolean;\n forced: boolean;\n hidden: boolean;\n}\n\n// Base Requirement class\nexport abstract class Requirement {\n public name: string;\n public state: Record<string, any> = {};\n public enabled = true;\n public middlewares: MiddlewareType<typeof this>[] = [];\n\n protected _priority = 10;\n\n constructor(name?: string) {\n this.name = name || this.constructor.name;\n }\n\n get priority(): number {\n return this._priority;\n }\n\n set priority(value: number) {\n if (value <= 0) {\n throw new ValueError(\"Priority must be a positive integer.\");\n }\n this._priority = value;\n }\n\n @Cache({ enumerable: false })\n get emitter(): Emitter<RequirementCallbacks> {\n return Emitter.root.child({\n namespace: [\"requirement\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n run(state: RequirementAgentRunState) {\n return RunContext.enter(\n this,\n { signal: undefined, params: [state] as const },\n async (context) => {\n return await this._run(state, context);\n },\n );\n }\n\n abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;\n\n async init(tools: AnyTool[], _: RunContext<any>): Promise<void> {\n await this.emitter.emit(\"init\", { tools });\n }\n\n async clone(): Promise<this> {\n const instance = Object.create(Object.getPrototypeOf(this));\n instance.name = this.name;\n instance.priority = this.priority;\n instance.enabled = this.enabled;\n instance.state = { ...this.state };\n instance.middlewares = [...this.middlewares];\n return instance;\n }\n}\n\n// Requirement error\nexport class RequirementError extends FrameworkError {\n constructor(\n message: string,\n public readonly requirement?: Requirement,\n cause?: Error,\n context?: Record<string, any>,\n ) {\n super(message, cause ? [cause] : undefined, {\n isFatal: true,\n isRetryable: false,\n context,\n });\n }\n}\n\nexport interface RequirementCallbacks {\n init: Callback<{ tools: AnyTool[] }>;\n}\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MiddlewareType, Run, RunContext } from '../../../context.cjs';
|
|
2
|
+
import { AnyTool } from '../../../tools/base.cjs';
|
|
3
|
+
import { E as Emitter, C as Callback } from '../../../emitter-jN55XZZq.cjs';
|
|
4
|
+
import { FrameworkError } from '../../../errors.cjs';
|
|
5
|
+
import { R as RequirementAgentRunState } from '../../../types-W0QttuP_.cjs';
|
|
6
|
+
import '../../../internals/serializable.cjs';
|
|
7
|
+
import '../../../internals/types.cjs';
|
|
8
|
+
import '../../../internals/helpers/guards.cjs';
|
|
9
|
+
import '../../../internals/helpers/promise.cjs';
|
|
10
|
+
import 'ajv';
|
|
11
|
+
import 'promise-based-task';
|
|
12
|
+
import '../../../cache/base.cjs';
|
|
13
|
+
import '../../../internals/helpers/schema.cjs';
|
|
14
|
+
import 'zod';
|
|
15
|
+
import 'zod-to-json-schema';
|
|
16
|
+
import '../../../memory/base.cjs';
|
|
17
|
+
import '../../../backend/message.cjs';
|
|
18
|
+
import 'ai';
|
|
19
|
+
import '../../../template.cjs';
|
|
20
|
+
import '../../../chat-BOb9n7AJ.cjs';
|
|
21
|
+
import '../../../backend/constants.cjs';
|
|
22
|
+
import '../../../logger/logger.cjs';
|
|
23
|
+
import 'pino';
|
|
24
|
+
import '../../../base-XfWeXQ-S.cjs';
|
|
25
|
+
|
|
26
|
+
interface Rule {
|
|
27
|
+
target: string;
|
|
28
|
+
allowed: boolean;
|
|
29
|
+
reason?: string;
|
|
30
|
+
preventStop: boolean;
|
|
31
|
+
forced: boolean;
|
|
32
|
+
hidden: boolean;
|
|
33
|
+
}
|
|
34
|
+
declare abstract class Requirement {
|
|
35
|
+
name: string;
|
|
36
|
+
state: Record<string, any>;
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
middlewares: MiddlewareType<typeof this>[];
|
|
39
|
+
protected _priority: number;
|
|
40
|
+
constructor(name?: string);
|
|
41
|
+
get priority(): number;
|
|
42
|
+
set priority(value: number);
|
|
43
|
+
get emitter(): Emitter<RequirementCallbacks>;
|
|
44
|
+
run(state: RequirementAgentRunState): Run<Rule[], this, readonly [RequirementAgentRunState]>;
|
|
45
|
+
abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;
|
|
46
|
+
init(tools: AnyTool[], _: RunContext<any>): Promise<void>;
|
|
47
|
+
clone(): Promise<this>;
|
|
48
|
+
}
|
|
49
|
+
declare class RequirementError extends FrameworkError {
|
|
50
|
+
readonly requirement?: Requirement | undefined;
|
|
51
|
+
constructor(message: string, requirement?: Requirement | undefined, cause?: Error, context?: Record<string, any>);
|
|
52
|
+
}
|
|
53
|
+
interface RequirementCallbacks {
|
|
54
|
+
init: Callback<{
|
|
55
|
+
tools: AnyTool[];
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { Requirement, type RequirementCallbacks, RequirementError, type Rule };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MiddlewareType, Run, RunContext } from '../../../context.js';
|
|
2
|
+
import { AnyTool } from '../../../tools/base.js';
|
|
3
|
+
import { E as Emitter, C as Callback } from '../../../emitter-36-9MnvA.js';
|
|
4
|
+
import { FrameworkError } from '../../../errors.js';
|
|
5
|
+
import { R as RequirementAgentRunState } from '../../../types-CJwiMH3u.js';
|
|
6
|
+
import '../../../internals/serializable.js';
|
|
7
|
+
import '../../../internals/types.js';
|
|
8
|
+
import '../../../internals/helpers/guards.js';
|
|
9
|
+
import '../../../internals/helpers/promise.js';
|
|
10
|
+
import 'ajv';
|
|
11
|
+
import 'promise-based-task';
|
|
12
|
+
import '../../../cache/base.js';
|
|
13
|
+
import '../../../internals/helpers/schema.js';
|
|
14
|
+
import 'zod';
|
|
15
|
+
import 'zod-to-json-schema';
|
|
16
|
+
import '../../../memory/base.js';
|
|
17
|
+
import '../../../backend/message.js';
|
|
18
|
+
import 'ai';
|
|
19
|
+
import '../../../template.js';
|
|
20
|
+
import '../../../chat-DrqwUgD8.js';
|
|
21
|
+
import '../../../backend/constants.js';
|
|
22
|
+
import '../../../logger/logger.js';
|
|
23
|
+
import 'pino';
|
|
24
|
+
import '../../../base-CyFx7BRL.js';
|
|
25
|
+
|
|
26
|
+
interface Rule {
|
|
27
|
+
target: string;
|
|
28
|
+
allowed: boolean;
|
|
29
|
+
reason?: string;
|
|
30
|
+
preventStop: boolean;
|
|
31
|
+
forced: boolean;
|
|
32
|
+
hidden: boolean;
|
|
33
|
+
}
|
|
34
|
+
declare abstract class Requirement {
|
|
35
|
+
name: string;
|
|
36
|
+
state: Record<string, any>;
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
middlewares: MiddlewareType<typeof this>[];
|
|
39
|
+
protected _priority: number;
|
|
40
|
+
constructor(name?: string);
|
|
41
|
+
get priority(): number;
|
|
42
|
+
set priority(value: number);
|
|
43
|
+
get emitter(): Emitter<RequirementCallbacks>;
|
|
44
|
+
run(state: RequirementAgentRunState): Run<Rule[], this, readonly [RequirementAgentRunState]>;
|
|
45
|
+
abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;
|
|
46
|
+
init(tools: AnyTool[], _: RunContext<any>): Promise<void>;
|
|
47
|
+
clone(): Promise<this>;
|
|
48
|
+
}
|
|
49
|
+
declare class RequirementError extends FrameworkError {
|
|
50
|
+
readonly requirement?: Requirement | undefined;
|
|
51
|
+
constructor(message: string, requirement?: Requirement | undefined, cause?: Error, context?: Record<string, any>);
|
|
52
|
+
}
|
|
53
|
+
interface RequirementCallbacks {
|
|
54
|
+
init: Callback<{
|
|
55
|
+
tools: AnyTool[];
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { Requirement, type RequirementCallbacks, RequirementError, type Rule };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { RunContext } from '../../../context.js';
|
|
2
|
+
import { Emitter } from '../../../emitter/emitter.js';
|
|
3
|
+
import { ValueError, FrameworkError } from '../../../errors.js';
|
|
4
|
+
import { toCamelCase } from 'remeda';
|
|
5
|
+
import { Cache } from '../../../cache/decoratorCache.js';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
10
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
11
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
12
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
14
|
+
}
|
|
15
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
16
|
+
function _ts_metadata(k, v) {
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
18
|
+
}
|
|
19
|
+
__name(_ts_metadata, "_ts_metadata");
|
|
20
|
+
class Requirement {
|
|
21
|
+
static {
|
|
22
|
+
__name(this, "Requirement");
|
|
23
|
+
}
|
|
24
|
+
name;
|
|
25
|
+
state = {};
|
|
26
|
+
enabled = true;
|
|
27
|
+
middlewares = [];
|
|
28
|
+
_priority = 10;
|
|
29
|
+
constructor(name) {
|
|
30
|
+
this.name = name || this.constructor.name;
|
|
31
|
+
}
|
|
32
|
+
get priority() {
|
|
33
|
+
return this._priority;
|
|
34
|
+
}
|
|
35
|
+
set priority(value) {
|
|
36
|
+
if (value <= 0) {
|
|
37
|
+
throw new ValueError("Priority must be a positive integer.");
|
|
38
|
+
}
|
|
39
|
+
this._priority = value;
|
|
40
|
+
}
|
|
41
|
+
get emitter() {
|
|
42
|
+
return Emitter.root.child({
|
|
43
|
+
namespace: [
|
|
44
|
+
"requirement",
|
|
45
|
+
toCamelCase(this.name)
|
|
46
|
+
],
|
|
47
|
+
creator: this
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
run(state) {
|
|
51
|
+
return RunContext.enter(this, {
|
|
52
|
+
signal: void 0,
|
|
53
|
+
params: [
|
|
54
|
+
state
|
|
55
|
+
]
|
|
56
|
+
}, async (context) => {
|
|
57
|
+
return await this._run(state, context);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async init(tools, _) {
|
|
61
|
+
await this.emitter.emit("init", {
|
|
62
|
+
tools
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async clone() {
|
|
66
|
+
const instance = Object.create(Object.getPrototypeOf(this));
|
|
67
|
+
instance.name = this.name;
|
|
68
|
+
instance.priority = this.priority;
|
|
69
|
+
instance.enabled = this.enabled;
|
|
70
|
+
instance.state = {
|
|
71
|
+
...this.state
|
|
72
|
+
};
|
|
73
|
+
instance.middlewares = [
|
|
74
|
+
...this.middlewares
|
|
75
|
+
];
|
|
76
|
+
return instance;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
_ts_decorate([
|
|
80
|
+
Cache({
|
|
81
|
+
enumerable: false
|
|
82
|
+
}),
|
|
83
|
+
_ts_metadata("design:type", typeof Emitter === "undefined" ? Object : Emitter),
|
|
84
|
+
_ts_metadata("design:paramtypes", [])
|
|
85
|
+
], Requirement.prototype, "emitter", null);
|
|
86
|
+
class RequirementError extends FrameworkError {
|
|
87
|
+
static {
|
|
88
|
+
__name(this, "RequirementError");
|
|
89
|
+
}
|
|
90
|
+
requirement;
|
|
91
|
+
constructor(message, requirement, cause, context) {
|
|
92
|
+
super(message, cause ? [
|
|
93
|
+
cause
|
|
94
|
+
] : void 0, {
|
|
95
|
+
isFatal: true,
|
|
96
|
+
isRetryable: false,
|
|
97
|
+
context
|
|
98
|
+
}), this.requirement = requirement;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { Requirement, RequirementError };
|
|
103
|
+
//# sourceMappingURL=requirement.js.map
|
|
104
|
+
//# sourceMappingURL=requirement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/agents/requirement/requirements/requirement.ts"],"names":["Requirement","name","state","enabled","middlewares","_priority","priority","value","ValueError","emitter","Emitter","root","child","namespace","toCamelCase","creator","run","RunContext","enter","signal","undefined","params","context","_run","init","tools","_","emit","clone","instance","Object","create","getPrototypeOf","enumerable","RequirementError","FrameworkError","message","requirement","cause","isFatal","isRetryable"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBO,MAAeA,WAAAA,CAAAA;AAAAA,EAAAA;;;AACbC,EAAAA,IAAAA;AACAC,EAAAA,KAAAA,GAA6B,EAAC;EAC9BC,OAAAA,GAAU,IAAA;AACVC,EAAAA,WAAAA,GAA6C,EAAA;EAE1CC,SAAAA,GAAY,EAAA;AAEtB,EAAA,WAAA,CAAYJ,IAAAA,EAAe;AACzB,IAAA,IAAA,CAAKA,IAAAA,GAAOA,IAAAA,IAAQ,IAAA,CAAK,WAAA,CAAYA,IAAAA;AACvC;AAEA,EAAA,IAAIK,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAKD,SAAAA;AACd;AAEA,EAAA,IAAIC,SAASC,KAAAA,EAAe;AAC1B,IAAA,IAAIA,SAAS,CAAA,EAAG;AACd,MAAA,MAAM,IAAIC,WAAW,sCAAA,CAAA;AACvB;AACA,IAAA,IAAA,CAAKH,SAAAA,GAAYE,KAAAA;AACnB;AAEA,EAAA,IACIE,OAAAA,GAAyC;AAC3C,IAAA,OAAOC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;MACxBC,SAAAA,EAAW;AAAC,QAAA,aAAA;AAAeC,QAAAA,WAAAA,CAAY,KAAKb,IAAI;;MAChDc,OAAAA,EAAS;KACX,CAAA;AACF;AAEAC,EAAAA,GAAAA,CAAId,KAAAA,EAAiC;AACnC,IAAA,OAAOe,UAAAA,CAAWC,MAChB,IAAA,EACA;MAAEC,MAAAA,EAAQC,MAAAA;MAAWC,MAAAA,EAAQ;AAACnB,QAAAA;;AAAgB,KAAA,EAC9C,OAAOoB,OAAAA,KAAAA;AACL,MAAA,OAAO,MAAM,IAAA,CAAKC,IAAAA,CAAKrB,KAAAA,EAAOoB,OAAAA,CAAAA;KAChC,CAAA;AAEJ;EAIA,MAAME,IAAAA,CAAKC,OAAkBC,CAAAA,EAAmC;AAC9D,IAAA,MAAM,IAAA,CAAKjB,OAAAA,CAAQkB,IAAAA,CAAK,MAAA,EAAQ;AAAEF,MAAAA;KAAM,CAAA;AAC1C;AAEA,EAAA,MAAMG,KAAAA,GAAuB;AAC3B,IAAA,MAAMC,WAAWC,MAAAA,CAAOC,MAAAA,CAAOD,MAAAA,CAAOE,cAAAA,CAAe,IAAI,CAAA,CAAA;AACzDH,IAAAA,QAAAA,CAAS5B,OAAO,IAAA,CAAKA,IAAAA;AACrB4B,IAAAA,QAAAA,CAASvB,WAAW,IAAA,CAAKA,QAAAA;AACzBuB,IAAAA,QAAAA,CAAS1B,UAAU,IAAA,CAAKA,OAAAA;AACxB0B,IAAAA,QAAAA,CAAS3B,KAAAA,GAAQ;AAAE,MAAA,GAAG,IAAA,CAAKA;AAAM,KAAA;AACjC2B,IAAAA,QAAAA,CAASzB,WAAAA,GAAc;SAAI,IAAA,CAAKA;;AAChC,IAAA,OAAOyB,QAAAA;AACT;AACF;;;IAjCWI,UAAAA,EAAY;;;;;AAoChB,MAAMC,yBAAyBC,cAAAA,CAAAA;AAAAA,EAAAA;;;;EACpC,WAAA,CACEC,OAAAA,EACgBC,WAAAA,EAChBC,KAAAA,EACAhB,OAAAA,EACA;AACA,IAAA,KAAA,CAAMc,SAASE,KAAAA,GAAQ;AAACA,MAAAA;QAASlB,MAAAA,EAAW;MAC1CmB,OAAAA,EAAS,IAAA;MACTC,WAAAA,EAAa,KAAA;AACblB,MAAAA;KACF,CAAA,EAAA,KARgBe,WAAAA,GAAAA,WAAAA;AASlB;AACF","file":"requirement.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool } from \"@/tools/base.js\";\nimport { MiddlewareType, RunContext } from \"@/context.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { toCamelCase } from \"remeda\";\nimport type { RequirementAgentRunState } from \"@/agents/requirement/types.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\n// Rule definition\nexport interface Rule {\n target: string;\n allowed: boolean;\n reason?: string;\n preventStop: boolean;\n forced: boolean;\n hidden: boolean;\n}\n\n// Base Requirement class\nexport abstract class Requirement {\n public name: string;\n public state: Record<string, any> = {};\n public enabled = true;\n public middlewares: MiddlewareType<typeof this>[] = [];\n\n protected _priority = 10;\n\n constructor(name?: string) {\n this.name = name || this.constructor.name;\n }\n\n get priority(): number {\n return this._priority;\n }\n\n set priority(value: number) {\n if (value <= 0) {\n throw new ValueError(\"Priority must be a positive integer.\");\n }\n this._priority = value;\n }\n\n @Cache({ enumerable: false })\n get emitter(): Emitter<RequirementCallbacks> {\n return Emitter.root.child({\n namespace: [\"requirement\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n run(state: RequirementAgentRunState) {\n return RunContext.enter(\n this,\n { signal: undefined, params: [state] as const },\n async (context) => {\n return await this._run(state, context);\n },\n );\n }\n\n abstract _run(state: RequirementAgentRunState, _: RunContext<typeof this>): Promise<Rule[]>;\n\n async init(tools: AnyTool[], _: RunContext<any>): Promise<void> {\n await this.emitter.emit(\"init\", { tools });\n }\n\n async clone(): Promise<this> {\n const instance = Object.create(Object.getPrototypeOf(this));\n instance.name = this.name;\n instance.priority = this.priority;\n instance.enabled = this.enabled;\n instance.state = { ...this.state };\n instance.middlewares = [...this.middlewares];\n return instance;\n }\n}\n\n// Requirement error\nexport class RequirementError extends FrameworkError {\n constructor(\n message: string,\n public readonly requirement?: Requirement,\n cause?: Error,\n context?: Record<string, any>,\n ) {\n super(message, cause ? [cause] : undefined, {\n isFatal: true,\n isRetryable: false,\n context,\n });\n }\n}\n\nexport interface RequirementCallbacks {\n init: Callback<{ tools: AnyTool[] }>;\n}\n"]}
|