@illuma-ai/agents 1.0.81
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/README.md +485 -0
- package/dist/cjs/agents/AgentContext.cjs +734 -0
- package/dist/cjs/agents/AgentContext.cjs.map +1 -0
- package/dist/cjs/common/enum.cjs +190 -0
- package/dist/cjs/common/enum.cjs.map +1 -0
- package/dist/cjs/events.cjs +172 -0
- package/dist/cjs/events.cjs.map +1 -0
- package/dist/cjs/graphs/Graph.cjs +1615 -0
- package/dist/cjs/graphs/Graph.cjs.map +1 -0
- package/dist/cjs/graphs/MultiAgentGraph.cjs +890 -0
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -0
- package/dist/cjs/instrumentation.cjs +21 -0
- package/dist/cjs/instrumentation.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/index.cjs +292 -0
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/types.cjs +50 -0
- package/dist/cjs/llm/anthropic/types.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +630 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +218 -0
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs +29 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -0
- package/dist/cjs/llm/bedrock/index.cjs +282 -0
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -0
- package/dist/cjs/llm/fake.cjs +97 -0
- package/dist/cjs/llm/fake.cjs.map +1 -0
- package/dist/cjs/llm/google/index.cjs +216 -0
- package/dist/cjs/llm/google/index.cjs.map +1 -0
- package/dist/cjs/llm/google/utils/common.cjs +647 -0
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -0
- package/dist/cjs/llm/openai/index.cjs +1028 -0
- package/dist/cjs/llm/openai/index.cjs.map +1 -0
- package/dist/cjs/llm/openai/utils/index.cjs +765 -0
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -0
- package/dist/cjs/llm/openrouter/index.cjs +212 -0
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -0
- package/dist/cjs/llm/providers.cjs +43 -0
- package/dist/cjs/llm/providers.cjs.map +1 -0
- package/dist/cjs/llm/text.cjs +69 -0
- package/dist/cjs/llm/text.cjs.map +1 -0
- package/dist/cjs/llm/vertexai/index.cjs +329 -0
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -0
- package/dist/cjs/main.cjs +240 -0
- package/dist/cjs/main.cjs.map +1 -0
- package/dist/cjs/messages/cache.cjs +387 -0
- package/dist/cjs/messages/cache.cjs.map +1 -0
- package/dist/cjs/messages/content.cjs +53 -0
- package/dist/cjs/messages/content.cjs.map +1 -0
- package/dist/cjs/messages/core.cjs +367 -0
- package/dist/cjs/messages/core.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +761 -0
- package/dist/cjs/messages/format.cjs.map +1 -0
- package/dist/cjs/messages/ids.cjs +23 -0
- package/dist/cjs/messages/ids.cjs.map +1 -0
- package/dist/cjs/messages/prune.cjs +398 -0
- package/dist/cjs/messages/prune.cjs.map +1 -0
- package/dist/cjs/messages/tools.cjs +96 -0
- package/dist/cjs/messages/tools.cjs.map +1 -0
- package/dist/cjs/run.cjs +328 -0
- package/dist/cjs/run.cjs.map +1 -0
- package/dist/cjs/schemas/validate.cjs +324 -0
- package/dist/cjs/schemas/validate.cjs.map +1 -0
- package/dist/cjs/splitStream.cjs +210 -0
- package/dist/cjs/splitStream.cjs.map +1 -0
- package/dist/cjs/stream.cjs +620 -0
- package/dist/cjs/stream.cjs.map +1 -0
- package/dist/cjs/tools/BrowserTools.cjs +248 -0
- package/dist/cjs/tools/BrowserTools.cjs.map +1 -0
- package/dist/cjs/tools/Calculator.cjs +66 -0
- package/dist/cjs/tools/Calculator.cjs.map +1 -0
- package/dist/cjs/tools/CodeExecutor.cjs +234 -0
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -0
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +636 -0
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +548 -0
- package/dist/cjs/tools/ToolNode.cjs.map +1 -0
- package/dist/cjs/tools/ToolSearch.cjs +909 -0
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -0
- package/dist/cjs/tools/handlers.cjs +255 -0
- package/dist/cjs/tools/handlers.cjs.map +1 -0
- package/dist/cjs/tools/schema.cjs +31 -0
- package/dist/cjs/tools/schema.cjs.map +1 -0
- package/dist/cjs/tools/search/anthropic.cjs +40 -0
- package/dist/cjs/tools/search/anthropic.cjs.map +1 -0
- package/dist/cjs/tools/search/content.cjs +140 -0
- package/dist/cjs/tools/search/content.cjs.map +1 -0
- package/dist/cjs/tools/search/firecrawl.cjs +179 -0
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -0
- package/dist/cjs/tools/search/format.cjs +203 -0
- package/dist/cjs/tools/search/format.cjs.map +1 -0
- package/dist/cjs/tools/search/highlights.cjs +245 -0
- package/dist/cjs/tools/search/highlights.cjs.map +1 -0
- package/dist/cjs/tools/search/rerankers.cjs +174 -0
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -0
- package/dist/cjs/tools/search/schema.cjs +117 -0
- package/dist/cjs/tools/search/schema.cjs.map +1 -0
- package/dist/cjs/tools/search/search.cjs +566 -0
- package/dist/cjs/tools/search/search.cjs.map +1 -0
- package/dist/cjs/tools/search/serper-scraper.cjs +132 -0
- package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -0
- package/dist/cjs/tools/search/tool.cjs +456 -0
- package/dist/cjs/tools/search/tool.cjs.map +1 -0
- package/dist/cjs/tools/search/utils.cjs +66 -0
- package/dist/cjs/tools/search/utils.cjs.map +1 -0
- package/dist/cjs/types/graph.cjs +29 -0
- package/dist/cjs/types/graph.cjs.map +1 -0
- package/dist/cjs/utils/contextAnalytics.cjs +66 -0
- package/dist/cjs/utils/contextAnalytics.cjs.map +1 -0
- package/dist/cjs/utils/events.cjs +31 -0
- package/dist/cjs/utils/events.cjs.map +1 -0
- package/dist/cjs/utils/graph.cjs +16 -0
- package/dist/cjs/utils/graph.cjs.map +1 -0
- package/dist/cjs/utils/handlers.cjs +70 -0
- package/dist/cjs/utils/handlers.cjs.map +1 -0
- package/dist/cjs/utils/llm.cjs +27 -0
- package/dist/cjs/utils/llm.cjs.map +1 -0
- package/dist/cjs/utils/misc.cjs +56 -0
- package/dist/cjs/utils/misc.cjs.map +1 -0
- package/dist/cjs/utils/run.cjs +73 -0
- package/dist/cjs/utils/run.cjs.map +1 -0
- package/dist/cjs/utils/schema.cjs +27 -0
- package/dist/cjs/utils/schema.cjs.map +1 -0
- package/dist/cjs/utils/title.cjs +125 -0
- package/dist/cjs/utils/title.cjs.map +1 -0
- package/dist/cjs/utils/tokens.cjs +125 -0
- package/dist/cjs/utils/tokens.cjs.map +1 -0
- package/dist/cjs/utils/toonFormat.cjs +388 -0
- package/dist/cjs/utils/toonFormat.cjs.map +1 -0
- package/dist/esm/agents/AgentContext.mjs +732 -0
- package/dist/esm/agents/AgentContext.mjs.map +1 -0
- package/dist/esm/common/enum.mjs +190 -0
- package/dist/esm/common/enum.mjs.map +1 -0
- package/dist/esm/events.mjs +164 -0
- package/dist/esm/events.mjs.map +1 -0
- package/dist/esm/graphs/Graph.mjs +1612 -0
- package/dist/esm/graphs/Graph.mjs.map +1 -0
- package/dist/esm/graphs/MultiAgentGraph.mjs +888 -0
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -0
- package/dist/esm/instrumentation.mjs +19 -0
- package/dist/esm/instrumentation.mjs.map +1 -0
- package/dist/esm/llm/anthropic/index.mjs +290 -0
- package/dist/esm/llm/anthropic/index.mjs.map +1 -0
- package/dist/esm/llm/anthropic/types.mjs +48 -0
- package/dist/esm/llm/anthropic/types.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +627 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +216 -0
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs +27 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -0
- package/dist/esm/llm/bedrock/index.mjs +280 -0
- package/dist/esm/llm/bedrock/index.mjs.map +1 -0
- package/dist/esm/llm/fake.mjs +94 -0
- package/dist/esm/llm/fake.mjs.map +1 -0
- package/dist/esm/llm/google/index.mjs +214 -0
- package/dist/esm/llm/google/index.mjs.map +1 -0
- package/dist/esm/llm/google/utils/common.mjs +638 -0
- package/dist/esm/llm/google/utils/common.mjs.map +1 -0
- package/dist/esm/llm/openai/index.mjs +1018 -0
- package/dist/esm/llm/openai/index.mjs.map +1 -0
- package/dist/esm/llm/openai/utils/index.mjs +759 -0
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -0
- package/dist/esm/llm/openrouter/index.mjs +210 -0
- package/dist/esm/llm/openrouter/index.mjs.map +1 -0
- package/dist/esm/llm/providers.mjs +39 -0
- package/dist/esm/llm/providers.mjs.map +1 -0
- package/dist/esm/llm/text.mjs +67 -0
- package/dist/esm/llm/text.mjs.map +1 -0
- package/dist/esm/llm/vertexai/index.mjs +327 -0
- package/dist/esm/llm/vertexai/index.mjs.map +1 -0
- package/dist/esm/main.mjs +37 -0
- package/dist/esm/main.mjs.map +1 -0
- package/dist/esm/messages/cache.mjs +382 -0
- package/dist/esm/messages/cache.mjs.map +1 -0
- package/dist/esm/messages/content.mjs +51 -0
- package/dist/esm/messages/content.mjs.map +1 -0
- package/dist/esm/messages/core.mjs +359 -0
- package/dist/esm/messages/core.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +752 -0
- package/dist/esm/messages/format.mjs.map +1 -0
- package/dist/esm/messages/ids.mjs +21 -0
- package/dist/esm/messages/ids.mjs.map +1 -0
- package/dist/esm/messages/prune.mjs +393 -0
- package/dist/esm/messages/prune.mjs.map +1 -0
- package/dist/esm/messages/tools.mjs +93 -0
- package/dist/esm/messages/tools.mjs.map +1 -0
- package/dist/esm/run.mjs +325 -0
- package/dist/esm/run.mjs.map +1 -0
- package/dist/esm/schemas/validate.mjs +317 -0
- package/dist/esm/schemas/validate.mjs.map +1 -0
- package/dist/esm/splitStream.mjs +207 -0
- package/dist/esm/splitStream.mjs.map +1 -0
- package/dist/esm/stream.mjs +616 -0
- package/dist/esm/stream.mjs.map +1 -0
- package/dist/esm/tools/BrowserTools.mjs +244 -0
- package/dist/esm/tools/BrowserTools.mjs.map +1 -0
- package/dist/esm/tools/Calculator.mjs +41 -0
- package/dist/esm/tools/Calculator.mjs.map +1 -0
- package/dist/esm/tools/CodeExecutor.mjs +226 -0
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -0
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +622 -0
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +545 -0
- package/dist/esm/tools/ToolNode.mjs.map +1 -0
- package/dist/esm/tools/ToolSearch.mjs +870 -0
- package/dist/esm/tools/ToolSearch.mjs.map +1 -0
- package/dist/esm/tools/handlers.mjs +250 -0
- package/dist/esm/tools/handlers.mjs.map +1 -0
- package/dist/esm/tools/schema.mjs +28 -0
- package/dist/esm/tools/schema.mjs.map +1 -0
- package/dist/esm/tools/search/anthropic.mjs +37 -0
- package/dist/esm/tools/search/anthropic.mjs.map +1 -0
- package/dist/esm/tools/search/content.mjs +119 -0
- package/dist/esm/tools/search/content.mjs.map +1 -0
- package/dist/esm/tools/search/firecrawl.mjs +176 -0
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -0
- package/dist/esm/tools/search/format.mjs +201 -0
- package/dist/esm/tools/search/format.mjs.map +1 -0
- package/dist/esm/tools/search/highlights.mjs +243 -0
- package/dist/esm/tools/search/highlights.mjs.map +1 -0
- package/dist/esm/tools/search/rerankers.mjs +168 -0
- package/dist/esm/tools/search/rerankers.mjs.map +1 -0
- package/dist/esm/tools/search/schema.mjs +104 -0
- package/dist/esm/tools/search/schema.mjs.map +1 -0
- package/dist/esm/tools/search/search.mjs +563 -0
- package/dist/esm/tools/search/search.mjs.map +1 -0
- package/dist/esm/tools/search/serper-scraper.mjs +129 -0
- package/dist/esm/tools/search/serper-scraper.mjs.map +1 -0
- package/dist/esm/tools/search/tool.mjs +454 -0
- package/dist/esm/tools/search/tool.mjs.map +1 -0
- package/dist/esm/tools/search/utils.mjs +61 -0
- package/dist/esm/tools/search/utils.mjs.map +1 -0
- package/dist/esm/types/graph.mjs +26 -0
- package/dist/esm/types/graph.mjs.map +1 -0
- package/dist/esm/utils/contextAnalytics.mjs +64 -0
- package/dist/esm/utils/contextAnalytics.mjs.map +1 -0
- package/dist/esm/utils/events.mjs +29 -0
- package/dist/esm/utils/events.mjs.map +1 -0
- package/dist/esm/utils/graph.mjs +13 -0
- package/dist/esm/utils/graph.mjs.map +1 -0
- package/dist/esm/utils/handlers.mjs +68 -0
- package/dist/esm/utils/handlers.mjs.map +1 -0
- package/dist/esm/utils/llm.mjs +24 -0
- package/dist/esm/utils/llm.mjs.map +1 -0
- package/dist/esm/utils/misc.mjs +53 -0
- package/dist/esm/utils/misc.mjs.map +1 -0
- package/dist/esm/utils/run.mjs +70 -0
- package/dist/esm/utils/run.mjs.map +1 -0
- package/dist/esm/utils/schema.mjs +24 -0
- package/dist/esm/utils/schema.mjs.map +1 -0
- package/dist/esm/utils/title.mjs +122 -0
- package/dist/esm/utils/title.mjs.map +1 -0
- package/dist/esm/utils/tokens.mjs +121 -0
- package/dist/esm/utils/tokens.mjs.map +1 -0
- package/dist/esm/utils/toonFormat.mjs +381 -0
- package/dist/esm/utils/toonFormat.mjs.map +1 -0
- package/dist/types/agents/AgentContext.d.ts +293 -0
- package/dist/types/common/enum.d.ts +155 -0
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/events.d.ts +31 -0
- package/dist/types/graphs/Graph.d.ts +216 -0
- package/dist/types/graphs/MultiAgentGraph.d.ts +104 -0
- package/dist/types/graphs/index.d.ts +2 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/instrumentation.d.ts +1 -0
- package/dist/types/llm/anthropic/index.d.ts +39 -0
- package/dist/types/llm/anthropic/types.d.ts +37 -0
- package/dist/types/llm/anthropic/utils/message_inputs.d.ts +14 -0
- package/dist/types/llm/anthropic/utils/message_outputs.d.ts +14 -0
- package/dist/types/llm/anthropic/utils/output_parsers.d.ts +22 -0
- package/dist/types/llm/anthropic/utils/tools.d.ts +3 -0
- package/dist/types/llm/bedrock/index.d.ts +141 -0
- package/dist/types/llm/bedrock/types.d.ts +27 -0
- package/dist/types/llm/bedrock/utils/index.d.ts +5 -0
- package/dist/types/llm/bedrock/utils/message_inputs.d.ts +31 -0
- package/dist/types/llm/bedrock/utils/message_outputs.d.ts +33 -0
- package/dist/types/llm/fake.d.ts +31 -0
- package/dist/types/llm/google/index.d.ts +24 -0
- package/dist/types/llm/google/types.d.ts +42 -0
- package/dist/types/llm/google/utils/common.d.ts +34 -0
- package/dist/types/llm/google/utils/tools.d.ts +10 -0
- package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +14 -0
- package/dist/types/llm/openai/index.d.ts +127 -0
- package/dist/types/llm/openai/types.d.ts +10 -0
- package/dist/types/llm/openai/utils/index.d.ts +29 -0
- package/dist/types/llm/openrouter/index.d.ts +15 -0
- package/dist/types/llm/providers.d.ts +5 -0
- package/dist/types/llm/text.d.ts +21 -0
- package/dist/types/llm/vertexai/index.d.ts +293 -0
- package/dist/types/messages/cache.d.ts +54 -0
- package/dist/types/messages/content.d.ts +7 -0
- package/dist/types/messages/core.d.ts +14 -0
- package/dist/types/messages/format.d.ts +137 -0
- package/dist/types/messages/ids.d.ts +3 -0
- package/dist/types/messages/index.d.ts +7 -0
- package/dist/types/messages/prune.d.ts +52 -0
- package/dist/types/messages/reducer.d.ts +9 -0
- package/dist/types/messages/tools.d.ts +17 -0
- package/dist/types/mockStream.d.ts +32 -0
- package/dist/types/prompts/collab.d.ts +1 -0
- package/dist/types/prompts/index.d.ts +2 -0
- package/dist/types/prompts/taskmanager.d.ts +41 -0
- package/dist/types/run.d.ts +41 -0
- package/dist/types/schemas/index.d.ts +1 -0
- package/dist/types/schemas/validate.d.ts +59 -0
- package/dist/types/splitStream.d.ts +37 -0
- package/dist/types/stream.d.ts +15 -0
- package/dist/types/test/mockTools.d.ts +28 -0
- package/dist/types/tools/BrowserTools.d.ts +87 -0
- package/dist/types/tools/Calculator.d.ts +34 -0
- package/dist/types/tools/CodeExecutor.d.ts +57 -0
- package/dist/types/tools/ProgrammaticToolCalling.d.ts +138 -0
- package/dist/types/tools/ToolNode.d.ts +51 -0
- package/dist/types/tools/ToolSearch.d.ts +219 -0
- package/dist/types/tools/handlers.d.ts +22 -0
- package/dist/types/tools/schema.d.ts +12 -0
- package/dist/types/tools/search/anthropic.d.ts +16 -0
- package/dist/types/tools/search/content.d.ts +4 -0
- package/dist/types/tools/search/firecrawl.d.ts +54 -0
- package/dist/types/tools/search/format.d.ts +5 -0
- package/dist/types/tools/search/highlights.d.ts +13 -0
- package/dist/types/tools/search/index.d.ts +3 -0
- package/dist/types/tools/search/rerankers.d.ts +38 -0
- package/dist/types/tools/search/schema.d.ts +103 -0
- package/dist/types/tools/search/search.d.ts +8 -0
- package/dist/types/tools/search/serper-scraper.d.ts +59 -0
- package/dist/types/tools/search/test.d.ts +1 -0
- package/dist/types/tools/search/tool.d.ts +3 -0
- package/dist/types/tools/search/types.d.ts +575 -0
- package/dist/types/tools/search/utils.d.ts +10 -0
- package/dist/types/types/graph.d.ts +399 -0
- package/dist/types/types/index.d.ts +5 -0
- package/dist/types/types/llm.d.ts +105 -0
- package/dist/types/types/messages.d.ts +4 -0
- package/dist/types/types/run.d.ts +112 -0
- package/dist/types/types/stream.d.ts +308 -0
- package/dist/types/types/tools.d.ts +296 -0
- package/dist/types/utils/contextAnalytics.d.ts +37 -0
- package/dist/types/utils/events.d.ts +6 -0
- package/dist/types/utils/graph.d.ts +2 -0
- package/dist/types/utils/handlers.d.ts +34 -0
- package/dist/types/utils/index.d.ts +9 -0
- package/dist/types/utils/llm.d.ts +3 -0
- package/dist/types/utils/llmConfig.d.ts +3 -0
- package/dist/types/utils/logging.d.ts +1 -0
- package/dist/types/utils/misc.d.ts +7 -0
- package/dist/types/utils/run.d.ts +27 -0
- package/dist/types/utils/schema.d.ts +8 -0
- package/dist/types/utils/title.d.ts +4 -0
- package/dist/types/utils/tokens.d.ts +28 -0
- package/dist/types/utils/toonFormat.d.ts +111 -0
- package/package.json +190 -0
- package/src/agents/AgentContext.test.ts +458 -0
- package/src/agents/AgentContext.ts +972 -0
- package/src/agents/__tests__/AgentContext.test.ts +805 -0
- package/src/agents/__tests__/resolveStructuredOutputMode.test.ts +137 -0
- package/src/common/enum.ts +203 -0
- package/src/common/index.ts +2 -0
- package/src/events.ts +223 -0
- package/src/graphs/Graph.ts +2228 -0
- package/src/graphs/MultiAgentGraph.ts +1063 -0
- package/src/graphs/__tests__/structured-output.integration.test.ts +809 -0
- package/src/graphs/__tests__/structured-output.test.ts +183 -0
- package/src/graphs/index.ts +2 -0
- package/src/index.ts +34 -0
- package/src/instrumentation.ts +22 -0
- package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
- package/src/llm/anthropic/index.ts +413 -0
- package/src/llm/anthropic/llm.spec.ts +1442 -0
- package/src/llm/anthropic/types.ts +140 -0
- package/src/llm/anthropic/utils/message_inputs.ts +757 -0
- package/src/llm/anthropic/utils/message_outputs.ts +289 -0
- package/src/llm/anthropic/utils/output_parsers.ts +133 -0
- package/src/llm/anthropic/utils/tools.ts +29 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +495 -0
- package/src/llm/bedrock/index.ts +411 -0
- package/src/llm/bedrock/llm.spec.ts +616 -0
- package/src/llm/bedrock/types.ts +51 -0
- package/src/llm/bedrock/utils/index.ts +18 -0
- package/src/llm/bedrock/utils/message_inputs.ts +563 -0
- package/src/llm/bedrock/utils/message_outputs.ts +310 -0
- package/src/llm/fake.ts +133 -0
- package/src/llm/google/data/gettysburg10.wav +0 -0
- package/src/llm/google/data/hotdog.jpg +0 -0
- package/src/llm/google/index.ts +337 -0
- package/src/llm/google/llm.spec.ts +934 -0
- package/src/llm/google/types.ts +56 -0
- package/src/llm/google/utils/common.ts +873 -0
- package/src/llm/google/utils/tools.ts +160 -0
- package/src/llm/google/utils/zod_to_genai_parameters.ts +86 -0
- package/src/llm/openai/index.ts +1366 -0
- package/src/llm/openai/types.ts +24 -0
- package/src/llm/openai/utils/index.ts +1035 -0
- package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
- package/src/llm/openrouter/index.ts +291 -0
- package/src/llm/providers.ts +52 -0
- package/src/llm/text.ts +94 -0
- package/src/llm/vertexai/index.ts +359 -0
- package/src/messages/__tests__/tools.test.ts +473 -0
- package/src/messages/cache.test.ts +1261 -0
- package/src/messages/cache.ts +518 -0
- package/src/messages/content.test.ts +362 -0
- package/src/messages/content.ts +63 -0
- package/src/messages/core.ts +473 -0
- package/src/messages/ensureThinkingBlock.test.ts +468 -0
- package/src/messages/format.ts +1029 -0
- package/src/messages/formatAgentMessages.test.ts +1513 -0
- package/src/messages/formatAgentMessages.tools.test.ts +419 -0
- package/src/messages/formatMessage.test.ts +693 -0
- package/src/messages/ids.ts +26 -0
- package/src/messages/index.ts +7 -0
- package/src/messages/labelContentByAgent.test.ts +887 -0
- package/src/messages/prune.ts +568 -0
- package/src/messages/reducer.ts +80 -0
- package/src/messages/shiftIndexTokenCountMap.test.ts +81 -0
- package/src/messages/tools.ts +108 -0
- package/src/mockStream.ts +99 -0
- package/src/prompts/collab.ts +6 -0
- package/src/prompts/index.ts +2 -0
- package/src/prompts/taskmanager.ts +61 -0
- package/src/run.ts +467 -0
- package/src/schemas/index.ts +2 -0
- package/src/schemas/schema-preparation.test.ts +500 -0
- package/src/schemas/validate.test.ts +358 -0
- package/src/schemas/validate.ts +454 -0
- package/src/scripts/abort.ts +157 -0
- package/src/scripts/ant_web_search.ts +158 -0
- package/src/scripts/ant_web_search_edge_case.ts +162 -0
- package/src/scripts/ant_web_search_error_edge_case.ts +148 -0
- package/src/scripts/args.ts +48 -0
- package/src/scripts/caching.ts +132 -0
- package/src/scripts/cli.ts +172 -0
- package/src/scripts/cli2.ts +133 -0
- package/src/scripts/cli3.ts +184 -0
- package/src/scripts/cli4.ts +191 -0
- package/src/scripts/cli5.ts +191 -0
- package/src/scripts/code_exec.ts +213 -0
- package/src/scripts/code_exec_files.ts +236 -0
- package/src/scripts/code_exec_multi_session.ts +241 -0
- package/src/scripts/code_exec_ptc.ts +334 -0
- package/src/scripts/code_exec_session.ts +282 -0
- package/src/scripts/code_exec_simple.ts +147 -0
- package/src/scripts/content.ts +138 -0
- package/src/scripts/empty_input.ts +137 -0
- package/src/scripts/handoff-test.ts +135 -0
- package/src/scripts/image.ts +178 -0
- package/src/scripts/memory.ts +97 -0
- package/src/scripts/multi-agent-chain.ts +331 -0
- package/src/scripts/multi-agent-conditional.ts +221 -0
- package/src/scripts/multi-agent-document-review-chain.ts +197 -0
- package/src/scripts/multi-agent-hybrid-flow.ts +310 -0
- package/src/scripts/multi-agent-parallel-start.ts +265 -0
- package/src/scripts/multi-agent-parallel.ts +394 -0
- package/src/scripts/multi-agent-sequence.ts +217 -0
- package/src/scripts/multi-agent-supervisor.ts +365 -0
- package/src/scripts/multi-agent-test.ts +186 -0
- package/src/scripts/parallel-asymmetric-tools-test.ts +274 -0
- package/src/scripts/parallel-full-metadata-test.ts +240 -0
- package/src/scripts/parallel-tools-test.ts +340 -0
- package/src/scripts/programmatic_exec.ts +396 -0
- package/src/scripts/programmatic_exec_agent.ts +231 -0
- package/src/scripts/search.ts +146 -0
- package/src/scripts/sequential-full-metadata-test.ts +197 -0
- package/src/scripts/simple.ts +225 -0
- package/src/scripts/single-agent-metadata-test.ts +198 -0
- package/src/scripts/stream.ts +140 -0
- package/src/scripts/test-custom-prompt-key.ts +145 -0
- package/src/scripts/test-handoff-input.ts +170 -0
- package/src/scripts/test-handoff-preamble.ts +277 -0
- package/src/scripts/test-multi-agent-list-handoff.ts +417 -0
- package/src/scripts/test-parallel-agent-labeling.ts +325 -0
- package/src/scripts/test-parallel-handoffs.ts +291 -0
- package/src/scripts/test-thinking-handoff-bedrock.ts +153 -0
- package/src/scripts/test-thinking-handoff.ts +155 -0
- package/src/scripts/test-tools-before-handoff.ts +226 -0
- package/src/scripts/test_code_api.ts +361 -0
- package/src/scripts/thinking-bedrock.ts +159 -0
- package/src/scripts/thinking.ts +171 -0
- package/src/scripts/tool_search.ts +162 -0
- package/src/scripts/tools.ts +177 -0
- package/src/specs/agent-handoffs.test.ts +888 -0
- package/src/specs/anthropic.simple.test.ts +387 -0
- package/src/specs/azure.simple.test.ts +364 -0
- package/src/specs/cache.simple.test.ts +396 -0
- package/src/specs/deepseek.simple.test.ts +283 -0
- package/src/specs/emergency-prune.test.ts +407 -0
- package/src/specs/moonshot.simple.test.ts +358 -0
- package/src/specs/openai.simple.test.ts +311 -0
- package/src/specs/openrouter.simple.test.ts +107 -0
- package/src/specs/prune.test.ts +901 -0
- package/src/specs/reasoning.test.ts +201 -0
- package/src/specs/spec.utils.ts +3 -0
- package/src/specs/thinking-handoff.test.ts +620 -0
- package/src/specs/thinking-prune.test.ts +703 -0
- package/src/specs/token-distribution-edge-case.test.ts +316 -0
- package/src/specs/token-memoization.test.ts +32 -0
- package/src/specs/tool-error.test.ts +198 -0
- package/src/splitStream.test.ts +691 -0
- package/src/splitStream.ts +234 -0
- package/src/stream.test.ts +94 -0
- package/src/stream.ts +801 -0
- package/src/test/mockTools.ts +386 -0
- package/src/tools/BrowserTools.ts +393 -0
- package/src/tools/Calculator.test.ts +278 -0
- package/src/tools/Calculator.ts +46 -0
- package/src/tools/CodeExecutor.ts +270 -0
- package/src/tools/ProgrammaticToolCalling.ts +785 -0
- package/src/tools/ToolNode.ts +674 -0
- package/src/tools/ToolSearch.ts +1095 -0
- package/src/tools/__tests__/BrowserTools.test.ts +265 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +319 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +1006 -0
- package/src/tools/__tests__/ToolSearch.integration.test.ts +162 -0
- package/src/tools/__tests__/ToolSearch.test.ts +1003 -0
- package/src/tools/handlers.ts +363 -0
- package/src/tools/schema.ts +37 -0
- package/src/tools/search/anthropic.ts +51 -0
- package/src/tools/search/content.test.ts +173 -0
- package/src/tools/search/content.ts +147 -0
- package/src/tools/search/firecrawl.ts +210 -0
- package/src/tools/search/format.ts +250 -0
- package/src/tools/search/highlights.ts +320 -0
- package/src/tools/search/index.ts +3 -0
- package/src/tools/search/jina-reranker.test.ts +130 -0
- package/src/tools/search/output.md +2775 -0
- package/src/tools/search/rerankers.ts +242 -0
- package/src/tools/search/schema.ts +113 -0
- package/src/tools/search/search.ts +768 -0
- package/src/tools/search/serper-scraper.ts +155 -0
- package/src/tools/search/test.html +884 -0
- package/src/tools/search/test.md +643 -0
- package/src/tools/search/test.ts +159 -0
- package/src/tools/search/tool.ts +657 -0
- package/src/tools/search/types.ts +665 -0
- package/src/tools/search/utils.ts +79 -0
- package/src/types/graph.test.ts +218 -0
- package/src/types/graph.ts +533 -0
- package/src/types/index.ts +6 -0
- package/src/types/llm.ts +140 -0
- package/src/types/messages.ts +4 -0
- package/src/types/run.ts +128 -0
- package/src/types/stream.ts +417 -0
- package/src/types/tools.ts +355 -0
- package/src/utils/contextAnalytics.ts +103 -0
- package/src/utils/events.ts +32 -0
- package/src/utils/graph.ts +11 -0
- package/src/utils/handlers.ts +107 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/llm.ts +26 -0
- package/src/utils/llmConfig.ts +208 -0
- package/src/utils/logging.ts +48 -0
- package/src/utils/misc.ts +57 -0
- package/src/utils/run.ts +106 -0
- package/src/utils/schema.ts +35 -0
- package/src/utils/title.ts +177 -0
- package/src/utils/tokens.ts +142 -0
- package/src/utils/toonFormat.ts +475 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
// src/types/tools.ts
|
|
2
|
+
import type { StructuredToolInterface } from '@langchain/core/tools';
|
|
3
|
+
import type { RunnableToolLike } from '@langchain/core/runnables';
|
|
4
|
+
import type { ToolCall } from '@langchain/core/messages/tool';
|
|
5
|
+
import type { ToolErrorData } from './stream';
|
|
6
|
+
import { EnvVar } from '@/common';
|
|
7
|
+
|
|
8
|
+
/** Replacement type for `import type { ToolCall } from '@langchain/core/messages/tool'` in order to have stringified args typed */
|
|
9
|
+
export type CustomToolCall = {
|
|
10
|
+
name: string;
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
args: string | Record<string, any>;
|
|
13
|
+
id?: string;
|
|
14
|
+
type?: 'tool_call';
|
|
15
|
+
output?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export type GenericTool = (StructuredToolInterface | RunnableToolLike) & {
|
|
19
|
+
mcp?: boolean;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type ToolMap = Map<string, GenericTool>;
|
|
23
|
+
export type ToolRefs = {
|
|
24
|
+
tools: GenericTool[];
|
|
25
|
+
toolMap?: ToolMap;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type ToolRefGenerator = (tool_calls: ToolCall[]) => ToolRefs;
|
|
29
|
+
|
|
30
|
+
export type ToolNodeOptions = {
|
|
31
|
+
name?: string;
|
|
32
|
+
tags?: string[];
|
|
33
|
+
handleToolErrors?: boolean;
|
|
34
|
+
loadRuntimeTools?: ToolRefGenerator;
|
|
35
|
+
toolCallStepIds?: Map<string, string>;
|
|
36
|
+
errorHandler?: (
|
|
37
|
+
data: ToolErrorData,
|
|
38
|
+
metadata?: Record<string, unknown>
|
|
39
|
+
) => Promise<void>;
|
|
40
|
+
/** Tool registry for lazy computation of programmatic tools and tool search */
|
|
41
|
+
toolRegistry?: LCToolRegistry;
|
|
42
|
+
/** Reference to Graph's sessions map for automatic session injection */
|
|
43
|
+
sessions?: ToolSessionMap;
|
|
44
|
+
/** When true, dispatches ON_TOOL_EXECUTE events instead of invoking tools directly */
|
|
45
|
+
eventDrivenMode?: boolean;
|
|
46
|
+
/** Tool definitions for event-driven mode (used for context, not invocation) */
|
|
47
|
+
toolDefinitions?: Map<string, LCTool>;
|
|
48
|
+
/** Agent ID for event-driven mode (used to identify which agent's context to use) */
|
|
49
|
+
agentId?: string;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type ToolNodeConstructorParams = ToolRefs & ToolNodeOptions;
|
|
53
|
+
|
|
54
|
+
export type ToolEndEvent = {
|
|
55
|
+
/** The Step Id of the Tool Call */
|
|
56
|
+
id: string;
|
|
57
|
+
/** The Completed Tool Call */
|
|
58
|
+
tool_call: ToolCall;
|
|
59
|
+
/** The content index of the tool call */
|
|
60
|
+
index: number;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export type CodeEnvFile = {
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
session_id: string;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export type CodeExecutionToolParams =
|
|
70
|
+
| undefined
|
|
71
|
+
| {
|
|
72
|
+
session_id?: string;
|
|
73
|
+
user_id?: string;
|
|
74
|
+
apiKey?: string;
|
|
75
|
+
files?: CodeEnvFile[];
|
|
76
|
+
[EnvVar.CODE_API_KEY]?: string;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export type FileRef = {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
path?: string;
|
|
83
|
+
/** Session ID this file belongs to (for multi-session file tracking) */
|
|
84
|
+
session_id?: string;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export type FileRefs = FileRef[];
|
|
88
|
+
|
|
89
|
+
export type ExecuteResult = {
|
|
90
|
+
session_id: string;
|
|
91
|
+
stdout: string;
|
|
92
|
+
stderr: string;
|
|
93
|
+
files?: FileRefs;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** JSON Schema type definition for tool parameters */
|
|
97
|
+
export type JsonSchemaType = {
|
|
98
|
+
type:
|
|
99
|
+
| 'string'
|
|
100
|
+
| 'number'
|
|
101
|
+
| 'integer'
|
|
102
|
+
| 'float'
|
|
103
|
+
| 'boolean'
|
|
104
|
+
| 'array'
|
|
105
|
+
| 'object';
|
|
106
|
+
enum?: string[];
|
|
107
|
+
items?: JsonSchemaType;
|
|
108
|
+
properties?: Record<string, JsonSchemaType>;
|
|
109
|
+
required?: string[];
|
|
110
|
+
description?: string;
|
|
111
|
+
additionalProperties?: boolean | JsonSchemaType;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Specifies which contexts can invoke a tool (inspired by Anthropic's allowed_callers)
|
|
116
|
+
* - 'direct': Only callable directly by the LLM (default if omitted)
|
|
117
|
+
* - 'code_execution': Only callable from within programmatic code execution
|
|
118
|
+
*/
|
|
119
|
+
export type AllowedCaller = 'direct' | 'code_execution';
|
|
120
|
+
|
|
121
|
+
/** Tool definition with optional deferred loading and caller restrictions */
|
|
122
|
+
export type LCTool = {
|
|
123
|
+
name: string;
|
|
124
|
+
description?: string;
|
|
125
|
+
parameters?: JsonSchemaType;
|
|
126
|
+
/** When true, tool is not loaded into context initially (for tool search) */
|
|
127
|
+
defer_loading?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Which contexts can invoke this tool.
|
|
130
|
+
* Default: ['direct'] (only callable directly by LLM)
|
|
131
|
+
* Options: 'direct', 'code_execution'
|
|
132
|
+
*/
|
|
133
|
+
allowed_callers?: AllowedCaller[];
|
|
134
|
+
/** Response format for the tool output */
|
|
135
|
+
responseFormat?: 'content' | 'content_and_artifact';
|
|
136
|
+
/** Server name for MCP tools */
|
|
137
|
+
serverName?: string;
|
|
138
|
+
/** Tool type classification */
|
|
139
|
+
toolType?: 'builtin' | 'mcp' | 'action';
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** Single tool call within a batch request for event-driven execution */
|
|
143
|
+
export type ToolCallRequest = {
|
|
144
|
+
/** Tool call ID from the LLM */
|
|
145
|
+
id: string;
|
|
146
|
+
/** Tool name */
|
|
147
|
+
name: string;
|
|
148
|
+
/** Tool arguments */
|
|
149
|
+
args: Record<string, unknown>;
|
|
150
|
+
/** Step ID for tracking */
|
|
151
|
+
stepId?: string;
|
|
152
|
+
/** Usage turn count for this tool */
|
|
153
|
+
turn?: number;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
/** Batch request containing ALL tool calls for a graph step */
|
|
157
|
+
export type ToolExecuteBatchRequest = {
|
|
158
|
+
/** All tool calls from the AIMessage */
|
|
159
|
+
toolCalls: ToolCallRequest[];
|
|
160
|
+
/** User ID for context */
|
|
161
|
+
userId?: string;
|
|
162
|
+
/** Agent ID for context */
|
|
163
|
+
agentId?: string;
|
|
164
|
+
/** Runtime configurable from RunnableConfig (includes user, userMCPAuthMap, etc.) */
|
|
165
|
+
configurable?: Record<string, unknown>;
|
|
166
|
+
/** Runtime metadata from RunnableConfig (includes thread_id, run_id, provider, etc.) */
|
|
167
|
+
metadata?: Record<string, unknown>;
|
|
168
|
+
/** Promise resolver - handler calls this with ALL results */
|
|
169
|
+
resolve: (results: ToolExecuteResult[]) => void;
|
|
170
|
+
/** Promise rejector - handler calls this on fatal error */
|
|
171
|
+
reject: (error: Error) => void;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/** Result for a single tool call in event-driven execution */
|
|
175
|
+
export type ToolExecuteResult = {
|
|
176
|
+
/** Matches ToolCallRequest.id */
|
|
177
|
+
toolCallId: string;
|
|
178
|
+
/** Tool output content */
|
|
179
|
+
content: string | unknown[];
|
|
180
|
+
/** Optional artifact (for content_and_artifact format) */
|
|
181
|
+
artifact?: unknown;
|
|
182
|
+
/** Execution status */
|
|
183
|
+
status: 'success' | 'error';
|
|
184
|
+
/** Error message if status is 'error' */
|
|
185
|
+
errorMessage?: string;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
/** Map of tool names to tool definitions */
|
|
189
|
+
export type LCToolRegistry = Map<string, LCTool>;
|
|
190
|
+
|
|
191
|
+
export type ProgrammaticCache = { toolMap: ToolMap; toolDefs: LCTool[] };
|
|
192
|
+
|
|
193
|
+
/** Search mode: code_interpreter uses external sandbox, local uses safe substring matching */
|
|
194
|
+
export type ToolSearchMode = 'code_interpreter' | 'local';
|
|
195
|
+
|
|
196
|
+
/** Parameters for creating a Tool Search tool */
|
|
197
|
+
export type ToolSearchParams = {
|
|
198
|
+
apiKey?: string;
|
|
199
|
+
toolRegistry?: LCToolRegistry;
|
|
200
|
+
onlyDeferred?: boolean;
|
|
201
|
+
baseUrl?: string;
|
|
202
|
+
/** Search mode: 'code_interpreter' (default) uses sandbox for regex, 'local' uses safe substring matching */
|
|
203
|
+
mode?: ToolSearchMode;
|
|
204
|
+
/** Filter tools to only those from specific MCP server(s). Can be a single name or array of names. */
|
|
205
|
+
mcpServer?: string | string[];
|
|
206
|
+
[key: string]: unknown;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/** Simplified tool metadata for search purposes */
|
|
210
|
+
export type ToolMetadata = {
|
|
211
|
+
name: string;
|
|
212
|
+
description: string;
|
|
213
|
+
parameters?: JsonSchemaType;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/** Individual search result for a matching tool */
|
|
217
|
+
export type ToolSearchResult = {
|
|
218
|
+
tool_name: string;
|
|
219
|
+
match_score: number;
|
|
220
|
+
matched_field: string;
|
|
221
|
+
snippet: string;
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/** Response from the tool search operation */
|
|
225
|
+
export type ToolSearchResponse = {
|
|
226
|
+
tool_references: ToolSearchResult[];
|
|
227
|
+
total_tools_searched: number;
|
|
228
|
+
pattern_used: string;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/** Artifact returned alongside the formatted search results */
|
|
232
|
+
export type ToolSearchArtifact = {
|
|
233
|
+
tool_references: ToolSearchResult[];
|
|
234
|
+
metadata: {
|
|
235
|
+
total_searched: number;
|
|
236
|
+
pattern: string;
|
|
237
|
+
error?: string;
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Programmatic Tool Calling Types
|
|
243
|
+
// ============================================================================
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Tool call requested by the Code API during programmatic execution
|
|
247
|
+
*/
|
|
248
|
+
export type PTCToolCall = {
|
|
249
|
+
/** Unique ID like "call_001" */
|
|
250
|
+
id: string;
|
|
251
|
+
/** Tool name */
|
|
252
|
+
name: string;
|
|
253
|
+
/** Input parameters */
|
|
254
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
255
|
+
input: Record<string, any>;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Tool result sent back to the Code API
|
|
260
|
+
*/
|
|
261
|
+
export type PTCToolResult = {
|
|
262
|
+
/** Matches PTCToolCall.id */
|
|
263
|
+
call_id: string;
|
|
264
|
+
/** Tool execution result (any JSON-serializable value) */
|
|
265
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
266
|
+
result: any;
|
|
267
|
+
/** Whether tool execution failed */
|
|
268
|
+
is_error: boolean;
|
|
269
|
+
/** Error details if is_error=true */
|
|
270
|
+
error_message?: string;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Response from the Code API for programmatic execution
|
|
275
|
+
*/
|
|
276
|
+
export type ProgrammaticExecutionResponse = {
|
|
277
|
+
status: 'tool_call_required' | 'completed' | 'error' | unknown;
|
|
278
|
+
session_id?: string;
|
|
279
|
+
|
|
280
|
+
/** Present when status='tool_call_required' */
|
|
281
|
+
continuation_token?: string;
|
|
282
|
+
tool_calls?: PTCToolCall[];
|
|
283
|
+
|
|
284
|
+
/** Present when status='completed' */
|
|
285
|
+
stdout?: string;
|
|
286
|
+
stderr?: string;
|
|
287
|
+
files?: FileRefs;
|
|
288
|
+
|
|
289
|
+
/** Present when status='error' */
|
|
290
|
+
error?: string;
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Artifact returned by the PTC tool
|
|
295
|
+
*/
|
|
296
|
+
export type ProgrammaticExecutionArtifact = {
|
|
297
|
+
session_id?: string;
|
|
298
|
+
files?: FileRefs;
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Initialization parameters for the PTC tool
|
|
303
|
+
*/
|
|
304
|
+
export type ProgrammaticToolCallingParams = {
|
|
305
|
+
/** Code API key (or use CODE_API_KEY env var) */
|
|
306
|
+
apiKey?: string;
|
|
307
|
+
/** Code API base URL (or use CODE_BASEURL env var) */
|
|
308
|
+
baseUrl?: string;
|
|
309
|
+
/** Safety limit for round-trips (default: 20) */
|
|
310
|
+
maxRoundTrips?: number;
|
|
311
|
+
/** HTTP proxy URL */
|
|
312
|
+
proxy?: string;
|
|
313
|
+
/** Enable debug logging (or set PTC_DEBUG=true env var) */
|
|
314
|
+
debug?: boolean;
|
|
315
|
+
/** Environment variable key for API key */
|
|
316
|
+
[key: string]: unknown;
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
// ============================================================================
|
|
320
|
+
// Tool Session Context Types
|
|
321
|
+
// ============================================================================
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Tracks code execution session state for automatic file persistence.
|
|
325
|
+
* Stored in Graph.sessions and injected into subsequent tool invocations.
|
|
326
|
+
*/
|
|
327
|
+
export type CodeSessionContext = {
|
|
328
|
+
/** Session ID from the code execution environment */
|
|
329
|
+
session_id: string;
|
|
330
|
+
/** Files generated in this session (for context/tracking) */
|
|
331
|
+
files: FileRefs;
|
|
332
|
+
/** Timestamp of last update */
|
|
333
|
+
lastUpdated: number;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Artifact structure returned by code execution tools (CodeExecutor, PTC).
|
|
338
|
+
* Used to extract session context after tool completion.
|
|
339
|
+
*/
|
|
340
|
+
export type CodeExecutionArtifact = {
|
|
341
|
+
session_id?: string;
|
|
342
|
+
files?: FileRefs;
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Generic session context union type for different tool types.
|
|
347
|
+
* Extend this as new tool session types are added.
|
|
348
|
+
*/
|
|
349
|
+
export type ToolSessionContext = CodeSessionContext;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Map of tool names to their session contexts.
|
|
353
|
+
* Keys are tool constants (e.g., Constants.EXECUTE_CODE, Constants.PROGRAMMATIC_TOOL_CALLING).
|
|
354
|
+
*/
|
|
355
|
+
export type ToolSessionMap = Map<string, ToolSessionContext>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Analytics Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides context analytics data for observability/traces.
|
|
5
|
+
* No console logging - just data structures for event emission.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
9
|
+
import type { TokenCounter } from '@/types/run';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Context analytics data for traces
|
|
13
|
+
*/
|
|
14
|
+
export interface ContextAnalytics {
|
|
15
|
+
/** Total messages in context */
|
|
16
|
+
messageCount: number;
|
|
17
|
+
/** Total tokens in context */
|
|
18
|
+
totalTokens: number;
|
|
19
|
+
/** Maximum allowed context tokens */
|
|
20
|
+
maxContextTokens?: number;
|
|
21
|
+
/** Instruction/system tokens */
|
|
22
|
+
instructionTokens?: number;
|
|
23
|
+
/** Context utilization percentage (0-100) */
|
|
24
|
+
utilizationPercent?: number;
|
|
25
|
+
/** Breakdown by message type */
|
|
26
|
+
breakdown?: Record<string, { tokens: number; percent: number }>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Build context analytics for traces (no logging)
|
|
31
|
+
*/
|
|
32
|
+
export function buildContextAnalytics(
|
|
33
|
+
messages: BaseMessage[],
|
|
34
|
+
options: {
|
|
35
|
+
tokenCounter?: TokenCounter;
|
|
36
|
+
maxContextTokens?: number;
|
|
37
|
+
instructionTokens?: number;
|
|
38
|
+
indexTokenCountMap?: Record<string, number | undefined>;
|
|
39
|
+
}
|
|
40
|
+
): ContextAnalytics {
|
|
41
|
+
const {
|
|
42
|
+
tokenCounter,
|
|
43
|
+
maxContextTokens,
|
|
44
|
+
instructionTokens,
|
|
45
|
+
indexTokenCountMap,
|
|
46
|
+
} = options;
|
|
47
|
+
|
|
48
|
+
// Calculate total tokens
|
|
49
|
+
let totalTokens = 0;
|
|
50
|
+
const breakdown: Record<string, { tokens: number; percent: number }> = {};
|
|
51
|
+
|
|
52
|
+
for (let i = 0; i < messages.length; i++) {
|
|
53
|
+
const msg = messages[i];
|
|
54
|
+
const type = msg.getType();
|
|
55
|
+
|
|
56
|
+
let tokens = 0;
|
|
57
|
+
if (indexTokenCountMap && indexTokenCountMap[i] != null) {
|
|
58
|
+
tokens = indexTokenCountMap[i]!;
|
|
59
|
+
} else if (tokenCounter) {
|
|
60
|
+
try {
|
|
61
|
+
tokens = tokenCounter(msg);
|
|
62
|
+
} catch {
|
|
63
|
+
// Estimate from content length
|
|
64
|
+
const content =
|
|
65
|
+
typeof msg.content === 'string'
|
|
66
|
+
? msg.content
|
|
67
|
+
: JSON.stringify(msg.content);
|
|
68
|
+
tokens = Math.ceil(content.length / 4);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
totalTokens += tokens;
|
|
73
|
+
|
|
74
|
+
if (!breakdown[type]) {
|
|
75
|
+
breakdown[type] = { tokens: 0, percent: 0 };
|
|
76
|
+
}
|
|
77
|
+
breakdown[type].tokens += tokens;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Calculate percentages
|
|
81
|
+
for (const type of Object.keys(breakdown)) {
|
|
82
|
+
breakdown[type].percent =
|
|
83
|
+
totalTokens > 0
|
|
84
|
+
? Math.round((breakdown[type].tokens / totalTokens) * 1000) / 10
|
|
85
|
+
: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Calculate utilization
|
|
89
|
+
let utilizationPercent: number | undefined;
|
|
90
|
+
if (maxContextTokens && maxContextTokens > 0) {
|
|
91
|
+
utilizationPercent =
|
|
92
|
+
Math.round((totalTokens / maxContextTokens) * 1000) / 10;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
messageCount: messages.length,
|
|
97
|
+
totalTokens,
|
|
98
|
+
maxContextTokens,
|
|
99
|
+
instructionTokens,
|
|
100
|
+
utilizationPercent,
|
|
101
|
+
breakdown,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
// src/utils/events.ts
|
|
3
|
+
import { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';
|
|
4
|
+
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Safely dispatches a custom event and properly awaits it to avoid
|
|
8
|
+
* race conditions where events are dispatched after run cleanup.
|
|
9
|
+
*/
|
|
10
|
+
export async function safeDispatchCustomEvent(
|
|
11
|
+
event: string,
|
|
12
|
+
payload: unknown,
|
|
13
|
+
config?: RunnableConfig
|
|
14
|
+
): Promise<void> {
|
|
15
|
+
try {
|
|
16
|
+
await dispatchCustomEvent(event, payload, config);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
// Check if this is the known EventStreamCallbackHandler error
|
|
19
|
+
if (
|
|
20
|
+
e instanceof Error &&
|
|
21
|
+
e.message.includes('handleCustomEvent: Run ID') &&
|
|
22
|
+
e.message.includes('not found in run map')
|
|
23
|
+
) {
|
|
24
|
+
// Suppress this specific error - it's expected during parallel execution
|
|
25
|
+
// when EventStreamCallbackHandler loses track of run IDs
|
|
26
|
+
// console.debug('Suppressed error dispatching custom event:', e);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Log other errors
|
|
30
|
+
console.error('Error dispatching custom event:', e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const resetIfNotEmpty = <T>(value: T, resetValue: T): T => {
|
|
2
|
+
if (Array.isArray(value)) {
|
|
3
|
+
return value.length > 0 ? resetValue : value;
|
|
4
|
+
}
|
|
5
|
+
if (value instanceof Set || value instanceof Map) {
|
|
6
|
+
return value.size > 0 ? resetValue : value;
|
|
7
|
+
}
|
|
8
|
+
return value !== undefined ? resetValue : value;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const joinKeys = (args: (string | number | undefined)[]): string => args.join('_');
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Handler Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides a simple helper to create handlers with content aggregation for multi-agent scripts.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const { contentParts, aggregateContent, handlers } = createHandlers();
|
|
9
|
+
*
|
|
10
|
+
* // With callbacks
|
|
11
|
+
* const { contentParts, aggregateContent, handlers } = createHandlers({
|
|
12
|
+
* onRunStep: (event, data) => console.log('Step:', data),
|
|
13
|
+
* onRunStepCompleted: (event, data) => console.log('Completed:', data)
|
|
14
|
+
* });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { GraphEvents } from '@/common';
|
|
19
|
+
import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
|
|
20
|
+
import { ToolEndHandler, ModelEndHandler } from '@/events';
|
|
21
|
+
import type * as t from '@/types';
|
|
22
|
+
|
|
23
|
+
interface HandlerCallbacks {
|
|
24
|
+
onRunStep?: (event: GraphEvents.ON_RUN_STEP, data: t.StreamEventData) => void;
|
|
25
|
+
onRunStepCompleted?: (
|
|
26
|
+
event: GraphEvents.ON_RUN_STEP_COMPLETED,
|
|
27
|
+
data: t.StreamEventData
|
|
28
|
+
) => void;
|
|
29
|
+
onRunStepDelta?: (
|
|
30
|
+
event: GraphEvents.ON_RUN_STEP_DELTA,
|
|
31
|
+
data: t.StreamEventData
|
|
32
|
+
) => void;
|
|
33
|
+
onMessageDelta?: (
|
|
34
|
+
event: GraphEvents.ON_MESSAGE_DELTA,
|
|
35
|
+
data: t.StreamEventData
|
|
36
|
+
) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates handlers with content aggregation for multi-agent scripts
|
|
41
|
+
*/
|
|
42
|
+
export function createHandlers(callbacks?: HandlerCallbacks): {
|
|
43
|
+
contentParts: Array<t.MessageContentComplex | undefined>;
|
|
44
|
+
aggregateContent: ReturnType<
|
|
45
|
+
typeof createContentAggregator
|
|
46
|
+
>['aggregateContent'];
|
|
47
|
+
handlers: Record<string, t.EventHandler>;
|
|
48
|
+
} {
|
|
49
|
+
// Set up content aggregator
|
|
50
|
+
const { contentParts, aggregateContent } = createContentAggregator();
|
|
51
|
+
|
|
52
|
+
// Create the handlers object
|
|
53
|
+
const handlers = {
|
|
54
|
+
[GraphEvents.TOOL_END]: new ToolEndHandler(),
|
|
55
|
+
[GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
|
|
56
|
+
[GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
|
|
57
|
+
|
|
58
|
+
[GraphEvents.ON_RUN_STEP]: {
|
|
59
|
+
handle: (
|
|
60
|
+
event: GraphEvents.ON_RUN_STEP,
|
|
61
|
+
data: t.StreamEventData
|
|
62
|
+
): void => {
|
|
63
|
+
aggregateContent({ event, data: data as t.RunStep });
|
|
64
|
+
callbacks?.onRunStep?.(event, data);
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
[GraphEvents.ON_RUN_STEP_COMPLETED]: {
|
|
69
|
+
handle: (
|
|
70
|
+
event: GraphEvents.ON_RUN_STEP_COMPLETED,
|
|
71
|
+
data: t.StreamEventData
|
|
72
|
+
): void => {
|
|
73
|
+
aggregateContent({
|
|
74
|
+
event,
|
|
75
|
+
data: data as unknown as { result: t.ToolEndEvent },
|
|
76
|
+
});
|
|
77
|
+
callbacks?.onRunStepCompleted?.(event, data);
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
[GraphEvents.ON_RUN_STEP_DELTA]: {
|
|
82
|
+
handle: (
|
|
83
|
+
event: GraphEvents.ON_RUN_STEP_DELTA,
|
|
84
|
+
data: t.StreamEventData
|
|
85
|
+
): void => {
|
|
86
|
+
aggregateContent({ event, data: data as t.RunStepDeltaEvent });
|
|
87
|
+
callbacks?.onRunStepDelta?.(event, data);
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
[GraphEvents.ON_MESSAGE_DELTA]: {
|
|
92
|
+
handle: (
|
|
93
|
+
event: GraphEvents.ON_MESSAGE_DELTA,
|
|
94
|
+
data: t.StreamEventData
|
|
95
|
+
): void => {
|
|
96
|
+
aggregateContent({ event, data: data as t.MessageDeltaEvent });
|
|
97
|
+
callbacks?.onMessageDelta?.(event, data);
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
return {
|
|
103
|
+
contentParts,
|
|
104
|
+
aggregateContent,
|
|
105
|
+
handlers,
|
|
106
|
+
};
|
|
107
|
+
}
|
package/src/utils/llm.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// src/utils/llm.ts
|
|
2
|
+
import { Providers } from '@/common';
|
|
3
|
+
|
|
4
|
+
export function isOpenAILike(provider?: string | Providers): boolean {
|
|
5
|
+
if (provider == null) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return (
|
|
9
|
+
[
|
|
10
|
+
Providers.OPENAI,
|
|
11
|
+
Providers.AZURE,
|
|
12
|
+
Providers.OPENROUTER,
|
|
13
|
+
Providers.XAI,
|
|
14
|
+
Providers.DEEPSEEK,
|
|
15
|
+
] as string[]
|
|
16
|
+
).includes(provider);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function isGoogleLike(provider?: string | Providers): boolean {
|
|
20
|
+
if (provider == null) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return ([Providers.GOOGLE, Providers.VERTEXAI] as string[]).includes(
|
|
24
|
+
provider
|
|
25
|
+
);
|
|
26
|
+
}
|