@illuma-ai/agents 1.5.1 → 2.1.1
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 +0 -62
- package/dist/cjs/agents/AgentContext.cjs +160 -259
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +12 -12
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +30 -13
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
- package/dist/cjs/hooks/matchers.cjs +2 -2
- package/dist/cjs/hooks/matchers.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs +1 -1
- package/dist/cjs/hooks/types.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -5
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +33 -61
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +1 -1
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +10 -27
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +3 -84
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/memory/citations.cjs +4 -4
- package/dist/cjs/memory/citations.cjs.map +1 -1
- package/dist/cjs/memory/constants.cjs +17 -17
- package/dist/cjs/memory/constants.cjs.map +1 -1
- package/dist/cjs/memory/mmr.cjs +1 -1
- package/dist/cjs/memory/mmr.cjs.map +1 -1
- package/dist/cjs/memory/paths.cjs +1 -1
- package/dist/cjs/memory/paths.cjs.map +1 -1
- package/dist/cjs/memory/recallTracking.cjs +3 -3
- package/dist/cjs/memory/recallTracking.cjs.map +1 -1
- package/dist/cjs/memory/temporalDecay.cjs +2 -2
- package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +0 -89
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +13 -71
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +11 -21
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +13 -41
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +11 -16
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +78 -13
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
- package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
- package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/shared.cjs +1 -1
- package/dist/cjs/tools/memory/shared.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +3 -11
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +4 -28
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +3 -10
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +48 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/types/graph.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +160 -259
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +12 -12
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +30 -13
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +1 -1
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
- package/dist/esm/hooks/matchers.mjs +2 -2
- package/dist/esm/hooks/matchers.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs +1 -1
- package/dist/esm/hooks/types.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -5
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +34 -61
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +1 -1
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +10 -27
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/main.mjs +1 -5
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/memory/citations.mjs +4 -4
- package/dist/esm/memory/citations.mjs.map +1 -1
- package/dist/esm/memory/constants.mjs +17 -17
- package/dist/esm/memory/constants.mjs.map +1 -1
- package/dist/esm/memory/mmr.mjs +1 -1
- package/dist/esm/memory/mmr.mjs.map +1 -1
- package/dist/esm/memory/paths.mjs +1 -1
- package/dist/esm/memory/paths.mjs.map +1 -1
- package/dist/esm/memory/recallTracking.mjs +3 -3
- package/dist/esm/memory/recallTracking.mjs.map +1 -1
- package/dist/esm/memory/temporalDecay.mjs +2 -2
- package/dist/esm/memory/temporalDecay.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +0 -89
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +13 -71
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +12 -22
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +14 -41
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +12 -17
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +78 -13
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
- package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
- package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
- package/dist/esm/tools/memory/shared.mjs +1 -1
- package/dist/esm/tools/memory/shared.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +3 -11
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +4 -28
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +3 -10
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +48 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/types/graph.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +25 -95
- package/dist/types/common/enum.d.ts +12 -12
- package/dist/types/graphs/Graph.d.ts +2 -2
- package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
- package/dist/types/hooks/HookRegistry.d.ts +1 -1
- package/dist/types/hooks/matchers.d.ts +2 -2
- package/dist/types/hooks/types.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/llm/bedrock/index.d.ts +1 -54
- package/dist/types/llm/openai/index.d.ts +1 -1
- package/dist/types/memory/citations.d.ts +4 -4
- package/dist/types/memory/constants.d.ts +17 -17
- package/dist/types/memory/mmr.d.ts +3 -3
- package/dist/types/memory/paths.d.ts +1 -1
- package/dist/types/memory/temporalDecay.d.ts +2 -2
- package/dist/types/memory/types.d.ts +3 -3
- package/dist/types/messages/format.d.ts +2 -5
- package/dist/types/tools/CodeExecutor.d.ts +0 -6
- package/dist/types/tools/ToolNode.d.ts +3 -3
- package/dist/types/tools/memory/shared.d.ts +1 -1
- package/dist/types/tools/search/test.d.ts +1 -0
- package/dist/types/tools/search/types.d.ts +5 -99
- package/dist/types/tools/search/utils.d.ts +2 -2
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +29 -0
- package/dist/types/types/graph.d.ts +30 -34
- package/dist/types/types/index.d.ts +0 -1
- package/dist/types/types/messages.d.ts +1 -1
- package/dist/types/types/run.d.ts +1 -3
- package/dist/types/types/tools.d.ts +5 -14
- package/package.json +1 -61
- package/src/agents/AgentContext.test.ts +176 -0
- package/src/agents/AgentContext.ts +179 -305
- package/src/agents/__tests__/AgentContext.test.ts +0 -632
- package/src/common/__tests__/enum.test.ts +1 -1
- package/src/common/enum.ts +12 -12
- package/src/graphs/Graph.ts +32 -13
- package/src/graphs/MultiAgentGraph.ts +1 -1
- package/src/graphs/gapFeatures.test.ts +1 -1
- package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
- package/src/graphs/phases/memoryFlushPhase.ts +2 -2
- package/src/hooks/HookRegistry.ts +1 -1
- package/src/hooks/index.ts +1 -1
- package/src/hooks/matchers.ts +2 -2
- package/src/hooks/types.ts +1 -1
- package/src/index.ts +0 -6
- package/src/llm/anthropic/utils/message_inputs.ts +1 -10
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +18 -166
- package/src/llm/bedrock/index.ts +41 -116
- package/src/llm/openai/index.ts +2 -2
- package/src/llm/openai/utils/index.ts +14 -31
- package/src/memory/citations.ts +4 -4
- package/src/memory/constants.ts +17 -17
- package/src/memory/mmr.ts +3 -3
- package/src/memory/paths.ts +1 -1
- package/src/memory/recallTracking.ts +3 -3
- package/src/memory/temporalDecay.ts +2 -2
- package/src/memory/types.ts +3 -3
- package/src/messages/cache.test.ts +24 -62
- package/src/messages/cache.ts +0 -112
- package/src/messages/ensureThinkingBlock.test.ts +1 -1
- package/src/messages/format.ts +13 -92
- package/src/messages/formatAgentMessages.test.ts +1 -1
- package/src/scripts/subagent-configurable-inheritance.ts +263 -0
- package/src/scripts/subagent-event-driven-debug.ts +2 -2
- package/src/specs/anthropic.simple.test.ts +0 -61
- package/src/specs/prune.orphans.test.ts +1 -1
- package/src/tools/BashExecutor.ts +13 -37
- package/src/tools/CodeExecutor.ts +14 -59
- package/src/tools/ProgrammaticToolCalling.ts +14 -29
- package/src/tools/ToolNode.ts +75 -14
- package/src/tools/__tests__/CodeExecutor.test.ts +3 -3
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -60
- package/src/tools/__tests__/SubagentExecutor.test.ts +157 -0
- package/src/tools/memory/memoryAppendTool.ts +1 -1
- package/src/tools/memory/memoryGetTool.ts +2 -2
- package/src/tools/memory/memorySearchTool.ts +3 -3
- package/src/tools/memory/shared.ts +1 -1
- package/src/tools/search/output.md +2775 -0
- package/src/tools/search/search.ts +2 -12
- 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 +2 -36
- package/src/tools/search/types.ts +8 -133
- package/src/tools/search/utils.ts +5 -13
- package/src/tools/subagent/SubagentExecutor.ts +78 -0
- package/src/types/graph.ts +27 -34
- package/src/types/index.ts +0 -1
- package/src/types/messages.ts +1 -1
- package/src/types/run.ts +1 -3
- package/src/types/tools.ts +5 -14
- package/dist/cjs/langchain/google-common.cjs +0 -3
- package/dist/cjs/langchain/google-common.cjs.map +0 -1
- package/dist/cjs/langchain/index.cjs +0 -86
- package/dist/cjs/langchain/index.cjs.map +0 -1
- package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
- package/dist/cjs/langchain/messages/tool.cjs +0 -3
- package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
- package/dist/cjs/langchain/messages.cjs +0 -51
- package/dist/cjs/langchain/messages.cjs.map +0 -1
- package/dist/cjs/langchain/openai.cjs +0 -3
- package/dist/cjs/langchain/openai.cjs.map +0 -1
- package/dist/cjs/langchain/prompts.cjs +0 -11
- package/dist/cjs/langchain/prompts.cjs.map +0 -1
- package/dist/cjs/langchain/runnables.cjs +0 -19
- package/dist/cjs/langchain/runnables.cjs.map +0 -1
- package/dist/cjs/langchain/tools.cjs +0 -23
- package/dist/cjs/langchain/tools.cjs.map +0 -1
- package/dist/cjs/langchain/utils/env.cjs +0 -11
- package/dist/cjs/langchain/utils/env.cjs.map +0 -1
- package/dist/cjs/llm/bedrock/cacheSupport.cjs +0 -55
- package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +0 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +0 -189
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +0 -1
- package/dist/cjs/tools/search/tavily-search.cjs +0 -372
- package/dist/cjs/tools/search/tavily-search.cjs.map +0 -1
- package/dist/cjs/types/agent-cache.cjs +0 -54
- package/dist/cjs/types/agent-cache.cjs.map +0 -1
- package/dist/esm/langchain/google-common.mjs +0 -2
- package/dist/esm/langchain/google-common.mjs.map +0 -1
- package/dist/esm/langchain/index.mjs +0 -5
- package/dist/esm/langchain/index.mjs.map +0 -1
- package/dist/esm/langchain/language_models/chat_models.mjs +0 -2
- package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
- package/dist/esm/langchain/messages/tool.mjs +0 -2
- package/dist/esm/langchain/messages/tool.mjs.map +0 -1
- package/dist/esm/langchain/messages.mjs +0 -2
- package/dist/esm/langchain/messages.mjs.map +0 -1
- package/dist/esm/langchain/openai.mjs +0 -2
- package/dist/esm/langchain/openai.mjs.map +0 -1
- package/dist/esm/langchain/prompts.mjs +0 -2
- package/dist/esm/langchain/prompts.mjs.map +0 -1
- package/dist/esm/langchain/runnables.mjs +0 -2
- package/dist/esm/langchain/runnables.mjs.map +0 -1
- package/dist/esm/langchain/tools.mjs +0 -2
- package/dist/esm/langchain/tools.mjs.map +0 -1
- package/dist/esm/langchain/utils/env.mjs +0 -2
- package/dist/esm/langchain/utils/env.mjs.map +0 -1
- package/dist/esm/llm/bedrock/cacheSupport.mjs +0 -52
- package/dist/esm/llm/bedrock/cacheSupport.mjs.map +0 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +0 -186
- package/dist/esm/tools/search/tavily-scraper.mjs.map +0 -1
- package/dist/esm/tools/search/tavily-search.mjs +0 -370
- package/dist/esm/tools/search/tavily-search.mjs.map +0 -1
- package/dist/esm/types/agent-cache.mjs +0 -52
- package/dist/esm/types/agent-cache.mjs.map +0 -1
- package/dist/types/langchain/google-common.d.ts +0 -1
- package/dist/types/langchain/index.d.ts +0 -8
- package/dist/types/langchain/language_models/chat_models.d.ts +0 -1
- package/dist/types/langchain/messages/tool.d.ts +0 -1
- package/dist/types/langchain/messages.d.ts +0 -2
- package/dist/types/langchain/openai.d.ts +0 -1
- package/dist/types/langchain/prompts.d.ts +0 -1
- package/dist/types/langchain/runnables.d.ts +0 -2
- package/dist/types/langchain/tools.d.ts +0 -2
- package/dist/types/langchain/utils/env.d.ts +0 -1
- package/dist/types/llm/bedrock/cacheSupport.d.ts +0 -35
- package/dist/types/tools/search/tavily-scraper.d.ts +0 -19
- package/dist/types/tools/search/tavily-search.d.ts +0 -4
- package/dist/types/tools/subagent/types.d.ts +0 -84
- package/dist/types/types/agent-cache.d.ts +0 -71
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +0 -259
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +0 -266
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +0 -342
- package/src/langchain/google-common.ts +0 -1
- package/src/langchain/index.ts +0 -8
- package/src/langchain/language_models/chat_models.ts +0 -1
- package/src/langchain/messages/tool.ts +0 -5
- package/src/langchain/messages.ts +0 -21
- package/src/langchain/openai.ts +0 -1
- package/src/langchain/prompts.ts +0 -1
- package/src/langchain/runnables.ts +0 -7
- package/src/langchain/tools.ts +0 -8
- package/src/langchain/utils/env.ts +0 -1
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -436
- package/src/llm/bedrock/cacheSupport.test.ts +0 -99
- package/src/llm/bedrock/cacheSupport.ts +0 -53
- package/src/tools/search/tavily-scraper.ts +0 -235
- package/src/tools/search/tavily-search.ts +0 -424
- package/src/tools/search/tavily.test.ts +0 -965
- package/src/tools/subagent/types.test.ts +0 -70
- package/src/tools/subagent/types.ts +0 -115
- package/src/types/agent-cache.ts +0 -74
|
@@ -546,6 +546,163 @@ describe('SubagentExecutor', () => {
|
|
|
546
546
|
expect(observedChildInputs!.maxSubagentDepth).toBeUndefined();
|
|
547
547
|
});
|
|
548
548
|
|
|
549
|
+
describe('parentConfigurable inheritance', () => {
|
|
550
|
+
/**
|
|
551
|
+
* Build a stub factory that captures the second argument to
|
|
552
|
+
* `workflow.invoke()` (the runnable config) so tests can assert on
|
|
553
|
+
* the `configurable` we forwarded to the child graph.
|
|
554
|
+
*/
|
|
555
|
+
function makeCapturingGraphFactory(): {
|
|
556
|
+
factory: () => StandardGraph;
|
|
557
|
+
getInvokeConfig: () => Record<string, unknown> | undefined;
|
|
558
|
+
} {
|
|
559
|
+
let capturedConfig: Record<string, unknown> | undefined;
|
|
560
|
+
const factory = (): StandardGraph =>
|
|
561
|
+
({
|
|
562
|
+
createWorkflow: (): { invoke: jest.Mock } => ({
|
|
563
|
+
invoke: jest
|
|
564
|
+
.fn()
|
|
565
|
+
.mockImplementation(
|
|
566
|
+
async (
|
|
567
|
+
_input: unknown,
|
|
568
|
+
config: Record<string, unknown>
|
|
569
|
+
): Promise<{ messages: BaseMessage[] }> => {
|
|
570
|
+
capturedConfig = config;
|
|
571
|
+
return { messages: [new AIMessage('done')] };
|
|
572
|
+
}
|
|
573
|
+
),
|
|
574
|
+
}),
|
|
575
|
+
clearHeavyState: jest.fn(),
|
|
576
|
+
}) as unknown as StandardGraph;
|
|
577
|
+
return { factory, getInvokeConfig: () => capturedConfig };
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
it('forwards parentConfigurable into the child workflow.invoke configurable', async () => {
|
|
581
|
+
const { factory, getInvokeConfig } = makeCapturingGraphFactory();
|
|
582
|
+
const executor = createExecutor({ createChildGraph: factory });
|
|
583
|
+
|
|
584
|
+
await executor.execute({
|
|
585
|
+
description: 'task',
|
|
586
|
+
subagentType: 'researcher',
|
|
587
|
+
parentConfigurable: {
|
|
588
|
+
requestBody: { messageId: 'msg-123', conversationId: 'conv-456' },
|
|
589
|
+
user: { id: 'user_abc' },
|
|
590
|
+
user_id: 'user_abc',
|
|
591
|
+
userMCPAuthMap: { 'mcp-github': { token: 'abc' } },
|
|
592
|
+
},
|
|
593
|
+
});
|
|
594
|
+
|
|
595
|
+
const invokeConfig = getInvokeConfig();
|
|
596
|
+
expect(invokeConfig).toBeDefined();
|
|
597
|
+
const configurable = invokeConfig!.configurable as Record<
|
|
598
|
+
string,
|
|
599
|
+
unknown
|
|
600
|
+
>;
|
|
601
|
+
expect(configurable.requestBody).toEqual({
|
|
602
|
+
messageId: 'msg-123',
|
|
603
|
+
conversationId: 'conv-456',
|
|
604
|
+
});
|
|
605
|
+
expect(configurable.user).toEqual({ id: 'user_abc' });
|
|
606
|
+
expect(configurable.user_id).toBe('user_abc');
|
|
607
|
+
expect(configurable.userMCPAuthMap).toEqual({
|
|
608
|
+
'mcp-github': { token: 'abc' },
|
|
609
|
+
});
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
it('inherits parent thread_id when supplied (subagent is part of same conversation)', async () => {
|
|
613
|
+
const { factory, getInvokeConfig } = makeCapturingGraphFactory();
|
|
614
|
+
const executor = createExecutor({
|
|
615
|
+
createChildGraph: factory,
|
|
616
|
+
parentRunId: 'parent-run-xyz',
|
|
617
|
+
});
|
|
618
|
+
|
|
619
|
+
await executor.execute({
|
|
620
|
+
description: 'task',
|
|
621
|
+
subagentType: 'researcher',
|
|
622
|
+
parentConfigurable: { thread_id: 'parent-thread-conv-abc' },
|
|
623
|
+
});
|
|
624
|
+
|
|
625
|
+
const configurable = getInvokeConfig()!.configurable as Record<
|
|
626
|
+
string,
|
|
627
|
+
unknown
|
|
628
|
+
>;
|
|
629
|
+
expect(configurable.thread_id).toBe('parent-thread-conv-abc');
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
it('falls back to childRunId for thread_id when parent did not supply one', async () => {
|
|
633
|
+
const { factory, getInvokeConfig } = makeCapturingGraphFactory();
|
|
634
|
+
const executor = createExecutor({
|
|
635
|
+
createChildGraph: factory,
|
|
636
|
+
parentRunId: 'parent-run-xyz',
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
await executor.execute({
|
|
640
|
+
description: 'task',
|
|
641
|
+
subagentType: 'researcher',
|
|
642
|
+
parentConfigurable: { user_id: 'user_abc' },
|
|
643
|
+
});
|
|
644
|
+
|
|
645
|
+
const configurable = getInvokeConfig()!.configurable as Record<
|
|
646
|
+
string,
|
|
647
|
+
unknown
|
|
648
|
+
>;
|
|
649
|
+
expect(configurable.thread_id as string).toMatch(/^parent-run-xyz_sub_/);
|
|
650
|
+
expect(configurable.user_id).toBe('user_abc');
|
|
651
|
+
});
|
|
652
|
+
|
|
653
|
+
it('forwards run-identity fields verbatim into the child invoke configurable', async () => {
|
|
654
|
+
const { factory, getInvokeConfig } = makeCapturingGraphFactory();
|
|
655
|
+
const executor = createExecutor({ createChildGraph: factory });
|
|
656
|
+
|
|
657
|
+
await executor.execute({
|
|
658
|
+
description: 'task',
|
|
659
|
+
subagentType: 'researcher',
|
|
660
|
+
parentConfigurable: {
|
|
661
|
+
run_id: 'parent-run-id',
|
|
662
|
+
parent_run_id: 'grandparent-run-id',
|
|
663
|
+
requestBody: { messageId: 'msg-1' },
|
|
664
|
+
},
|
|
665
|
+
});
|
|
666
|
+
|
|
667
|
+
const configurable = getInvokeConfig()!.configurable as Record<
|
|
668
|
+
string,
|
|
669
|
+
unknown
|
|
670
|
+
>;
|
|
671
|
+
// The SDK forwards these fields as part of its inheritance contract.
|
|
672
|
+
// NOTE: the LangGraph runtime overwrites `configurable.run_id` at
|
|
673
|
+
// actual child-invoke time (verified empirically); this unit test
|
|
674
|
+
// only asserts what the SDK forwards into `workflow.invoke` — not
|
|
675
|
+
// what tools downstream observe. `parent_run_id` and other
|
|
676
|
+
// host-set keys do survive the runtime pass-through.
|
|
677
|
+
expect(configurable.run_id).toBe('parent-run-id');
|
|
678
|
+
expect(configurable.parent_run_id).toBe('grandparent-run-id');
|
|
679
|
+
expect(configurable.requestBody).toEqual({ messageId: 'msg-1' });
|
|
680
|
+
});
|
|
681
|
+
|
|
682
|
+
it('does not require parentConfigurable (back-compat with hosts that omit it)', async () => {
|
|
683
|
+
const { factory, getInvokeConfig } = makeCapturingGraphFactory();
|
|
684
|
+
const executor = createExecutor({ createChildGraph: factory });
|
|
685
|
+
|
|
686
|
+
await executor.execute({
|
|
687
|
+
description: 'task',
|
|
688
|
+
subagentType: 'researcher',
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
const configurable = getInvokeConfig()!.configurable as Record<
|
|
692
|
+
string,
|
|
693
|
+
unknown
|
|
694
|
+
>;
|
|
695
|
+
// Only thread_id (childRunId fallback) and the host-attached
|
|
696
|
+
// parentToolCallId (used by ranger for attachment routing) are set
|
|
697
|
+
// when no parent context is supplied. parentToolCallId is undefined
|
|
698
|
+
// here because no tool_call_id was passed in the metadata.
|
|
699
|
+
expect(Object.keys(configurable).sort()).toEqual(
|
|
700
|
+
['parentToolCallId', 'thread_id'].sort()
|
|
701
|
+
);
|
|
702
|
+
expect(configurable.parentToolCallId).toBeUndefined();
|
|
703
|
+
});
|
|
704
|
+
});
|
|
705
|
+
|
|
549
706
|
describe('hooks', () => {
|
|
550
707
|
let capturedStart: unknown;
|
|
551
708
|
let capturedStop: unknown;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `memory_append` — the reflection-phase-only write tool.
|
|
3
3
|
*
|
|
4
|
-
* New (not present in verbatim).
|
|
4
|
+
* New (not present in upstream verbatim). Upstream enforces append-only via
|
|
5
5
|
* `wrapToolMemoryFlushAppendOnlyWrite`; we combine the tool and the phase
|
|
6
6
|
* gate in one place because the agents library has a simpler graph state.
|
|
7
7
|
*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `memory_search` — the mandatory-recall tool.
|
|
3
3
|
*
|
|
4
|
-
* Port of `createMemorySearchTool` at
|
|
5
|
-
* `reference`. The tool description
|
|
6
|
-
* is verbatim "Mandatory recall step..." from
|
|
4
|
+
* Port of upstream `createMemorySearchTool` at
|
|
5
|
+
* `upstream reference`. The tool description
|
|
6
|
+
* is verbatim "Mandatory recall step..." from upstream — this is the load-
|
|
7
7
|
* bearing line that turns "the agent may recall" into "the agent will recall".
|
|
8
8
|
*/
|
|
9
9
|
import { tool } from '@langchain/core/tools';
|
|
@@ -117,7 +117,7 @@ export function buildMemorySearchUnavailableResult(
|
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Clamp a ranked result list to a total character budget.
|
|
120
|
-
* Ported from
|
|
120
|
+
* Ported from upstream `tools.citations.ts::clampResultsByInjectedChars`.
|
|
121
121
|
*/
|
|
122
122
|
export function clampResultsByInjectedChars<T extends { content: string }>(
|
|
123
123
|
results: T[],
|