@illuma-ai/agents 1.1.21 → 1.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/graphs/Graph.cjs +12 -1
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +85 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/run.cjs +20 -9
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +12 -1
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +85 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/run.mjs +20 -9
- package/dist/esm/run.mjs.map +1 -1
- package/dist/types/graphs/MultiAgentGraph.d.ts +17 -0
- package/package.json +1 -1
- package/src/graphs/Graph.ts +12 -1
- package/src/graphs/MultiAgentGraph.ts +105 -1
- package/src/graphs/__tests__/multi-agent-delegate.test.ts +191 -0
- package/src/run.ts +20 -11
- package/src/scripts/test-bedrock-handoff-autonomous.ts +231 -0
- package/src/agents/AgentContext.js +0 -782
- package/src/agents/AgentContext.test.js +0 -421
- package/src/agents/__tests__/AgentContext.test.js +0 -678
- package/src/agents/__tests__/resolveStructuredOutputMode.test.js +0 -117
- package/src/common/enum.js +0 -192
- package/src/common/index.js +0 -3
- package/src/events.js +0 -166
- package/src/graphs/Graph.js +0 -1857
- package/src/graphs/MultiAgentGraph.js +0 -1092
- package/src/graphs/__tests__/structured-output.integration.test.js +0 -624
- package/src/graphs/__tests__/structured-output.test.js +0 -144
- package/src/graphs/contextManagement.e2e.test.js +0 -718
- package/src/graphs/contextManagement.test.js +0 -485
- package/src/graphs/handoffValidation.test.js +0 -276
- package/src/graphs/index.js +0 -3
- package/src/index.js +0 -28
- package/src/instrumentation.js +0 -21
- package/src/llm/anthropic/index.js +0 -319
- package/src/llm/anthropic/types.js +0 -46
- package/src/llm/anthropic/utils/message_inputs.js +0 -627
- package/src/llm/anthropic/utils/message_outputs.js +0 -290
- package/src/llm/anthropic/utils/output_parsers.js +0 -89
- package/src/llm/anthropic/utils/tools.js +0 -25
- package/src/llm/bedrock/__tests__/bedrock-caching.test.js +0 -392
- package/src/llm/bedrock/index.js +0 -303
- package/src/llm/bedrock/types.js +0 -2
- package/src/llm/bedrock/utils/index.js +0 -6
- package/src/llm/bedrock/utils/message_inputs.js +0 -463
- package/src/llm/bedrock/utils/message_outputs.js +0 -269
- package/src/llm/fake.js +0 -92
- package/src/llm/google/index.js +0 -215
- package/src/llm/google/types.js +0 -12
- package/src/llm/google/utils/common.js +0 -670
- package/src/llm/google/utils/tools.js +0 -111
- package/src/llm/google/utils/zod_to_genai_parameters.js +0 -47
- package/src/llm/openai/index.js +0 -1033
- package/src/llm/openai/types.js +0 -2
- package/src/llm/openai/utils/index.js +0 -756
- package/src/llm/openai/utils/isReasoningModel.test.js +0 -79
- package/src/llm/openrouter/index.js +0 -261
- package/src/llm/openrouter/reasoning.test.js +0 -181
- package/src/llm/providers.js +0 -36
- package/src/llm/text.js +0 -65
- package/src/llm/vertexai/index.js +0 -402
- package/src/messages/__tests__/tools.test.js +0 -392
- package/src/messages/cache.js +0 -404
- package/src/messages/cache.test.js +0 -1167
- package/src/messages/content.js +0 -48
- package/src/messages/content.test.js +0 -314
- package/src/messages/core.js +0 -359
- package/src/messages/ensureThinkingBlock.test.js +0 -997
- package/src/messages/format.js +0 -973
- package/src/messages/formatAgentMessages.test.js +0 -2278
- package/src/messages/formatAgentMessages.tools.test.js +0 -362
- package/src/messages/formatMessage.test.js +0 -608
- package/src/messages/ids.js +0 -18
- package/src/messages/index.js +0 -9
- package/src/messages/labelContentByAgent.test.js +0 -725
- package/src/messages/prune.js +0 -438
- package/src/messages/reducer.js +0 -60
- package/src/messages/shiftIndexTokenCountMap.test.js +0 -63
- package/src/messages/summarize.js +0 -146
- package/src/messages/summarize.test.js +0 -332
- package/src/messages/tools.js +0 -90
- package/src/mockStream.js +0 -81
- package/src/prompts/collab.js +0 -7
- package/src/prompts/index.js +0 -3
- package/src/prompts/taskmanager.js +0 -58
- package/src/run.js +0 -427
- package/src/schemas/index.js +0 -3
- package/src/schemas/schema-preparation.test.js +0 -370
- package/src/schemas/validate.js +0 -314
- package/src/schemas/validate.test.js +0 -264
- package/src/scripts/abort.js +0 -127
- package/src/scripts/ant_web_search.js +0 -130
- package/src/scripts/ant_web_search_edge_case.js +0 -133
- package/src/scripts/ant_web_search_error_edge_case.js +0 -119
- package/src/scripts/args.js +0 -41
- package/src/scripts/bedrock-cache-debug.js +0 -186
- package/src/scripts/bedrock-content-aggregation-test.js +0 -195
- package/src/scripts/bedrock-merge-test.js +0 -80
- package/src/scripts/bedrock-parallel-tools-test.js +0 -150
- package/src/scripts/caching.js +0 -106
- package/src/scripts/cli.js +0 -152
- package/src/scripts/cli2.js +0 -119
- package/src/scripts/cli3.js +0 -163
- package/src/scripts/cli4.js +0 -165
- package/src/scripts/cli5.js +0 -165
- package/src/scripts/code_exec.js +0 -171
- package/src/scripts/code_exec_files.js +0 -180
- package/src/scripts/code_exec_multi_session.js +0 -185
- package/src/scripts/code_exec_ptc.js +0 -265
- package/src/scripts/code_exec_session.js +0 -217
- package/src/scripts/code_exec_simple.js +0 -120
- package/src/scripts/content.js +0 -111
- package/src/scripts/empty_input.js +0 -125
- package/src/scripts/handoff-test.js +0 -96
- package/src/scripts/image.js +0 -138
- package/src/scripts/memory.js +0 -83
- package/src/scripts/multi-agent-chain.js +0 -271
- package/src/scripts/multi-agent-conditional.js +0 -185
- package/src/scripts/multi-agent-document-review-chain.js +0 -171
- package/src/scripts/multi-agent-hybrid-flow.js +0 -264
- package/src/scripts/multi-agent-parallel-start.js +0 -214
- package/src/scripts/multi-agent-parallel.js +0 -346
- package/src/scripts/multi-agent-sequence.js +0 -184
- package/src/scripts/multi-agent-supervisor.js +0 -324
- package/src/scripts/multi-agent-test.js +0 -147
- package/src/scripts/parallel-asymmetric-tools-test.js +0 -202
- package/src/scripts/parallel-full-metadata-test.js +0 -176
- package/src/scripts/parallel-tools-test.js +0 -256
- package/src/scripts/programmatic_exec.js +0 -277
- package/src/scripts/programmatic_exec_agent.js +0 -168
- package/src/scripts/search.js +0 -118
- package/src/scripts/sequential-full-metadata-test.js +0 -143
- package/src/scripts/simple.js +0 -174
- package/src/scripts/single-agent-metadata-test.js +0 -152
- package/src/scripts/stream.js +0 -113
- package/src/scripts/test-custom-prompt-key.js +0 -132
- package/src/scripts/test-handoff-input.js +0 -143
- package/src/scripts/test-handoff-preamble.js +0 -227
- package/src/scripts/test-handoff-steering.js +0 -353
- package/src/scripts/test-multi-agent-list-handoff.js +0 -318
- package/src/scripts/test-parallel-agent-labeling.js +0 -253
- package/src/scripts/test-parallel-handoffs.js +0 -229
- package/src/scripts/test-thinking-handoff-bedrock.js +0 -132
- package/src/scripts/test-thinking-handoff.js +0 -132
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js +0 -140
- package/src/scripts/test-tool-before-handoff-role-order.js +0 -223
- package/src/scripts/test-tools-before-handoff.js +0 -187
- package/src/scripts/test_code_api.js +0 -263
- package/src/scripts/thinking-bedrock.js +0 -128
- package/src/scripts/thinking-vertexai.js +0 -130
- package/src/scripts/thinking.js +0 -134
- package/src/scripts/tool_search.js +0 -114
- package/src/scripts/tools.js +0 -125
- package/src/specs/agent-handoffs-bedrock.integration.test.js +0 -280
- package/src/specs/agent-handoffs.test.js +0 -924
- package/src/specs/anthropic.simple.test.js +0 -287
- package/src/specs/azure.simple.test.js +0 -381
- package/src/specs/cache.simple.test.js +0 -282
- package/src/specs/custom-event-await.test.js +0 -148
- package/src/specs/deepseek.simple.test.js +0 -189
- package/src/specs/emergency-prune.test.js +0 -308
- package/src/specs/moonshot.simple.test.js +0 -237
- package/src/specs/observability.integration.test.js +0 -1337
- package/src/specs/openai.simple.test.js +0 -233
- package/src/specs/openrouter.simple.test.js +0 -202
- package/src/specs/prune.test.js +0 -733
- package/src/specs/reasoning.test.js +0 -144
- package/src/specs/spec.utils.js +0 -4
- package/src/specs/thinking-handoff.test.js +0 -486
- package/src/specs/thinking-prune.test.js +0 -600
- package/src/specs/token-distribution-edge-case.test.js +0 -246
- package/src/specs/token-memoization.test.js +0 -32
- package/src/specs/tokens.test.js +0 -49
- package/src/specs/tool-error.test.js +0 -139
- package/src/splitStream.js +0 -204
- package/src/splitStream.test.js +0 -504
- package/src/stream.js +0 -650
- package/src/stream.test.js +0 -225
- package/src/test/mockTools.js +0 -340
- package/src/tools/BrowserTools.js +0 -245
- package/src/tools/Calculator.js +0 -38
- package/src/tools/Calculator.test.js +0 -225
- package/src/tools/CodeExecutor.js +0 -233
- package/src/tools/ProgrammaticToolCalling.js +0 -602
- package/src/tools/StreamingToolCallBuffer.js +0 -179
- package/src/tools/ToolNode.js +0 -930
- package/src/tools/ToolSearch.js +0 -904
- package/src/tools/__tests__/BrowserTools.test.js +0 -306
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js +0 -276
- package/src/tools/__tests__/ProgrammaticToolCalling.test.js +0 -807
- package/src/tools/__tests__/StreamingToolCallBuffer.test.js +0 -175
- package/src/tools/__tests__/ToolApproval.test.js +0 -675
- package/src/tools/__tests__/ToolNode.recovery.test.js +0 -200
- package/src/tools/__tests__/ToolNode.session.test.js +0 -319
- package/src/tools/__tests__/ToolSearch.integration.test.js +0 -125
- package/src/tools/__tests__/ToolSearch.test.js +0 -812
- package/src/tools/__tests__/handlers.test.js +0 -799
- package/src/tools/__tests__/truncation-recovery.integration.test.js +0 -362
- package/src/tools/handlers.js +0 -306
- package/src/tools/schema.js +0 -25
- package/src/tools/search/anthropic.js +0 -34
- package/src/tools/search/content.js +0 -116
- package/src/tools/search/content.test.js +0 -133
- package/src/tools/search/firecrawl.js +0 -173
- package/src/tools/search/format.js +0 -198
- package/src/tools/search/highlights.js +0 -241
- package/src/tools/search/index.js +0 -3
- package/src/tools/search/jina-reranker.test.js +0 -106
- package/src/tools/search/rerankers.js +0 -165
- package/src/tools/search/schema.js +0 -102
- package/src/tools/search/search.js +0 -561
- package/src/tools/search/serper-scraper.js +0 -126
- package/src/tools/search/test.js +0 -129
- package/src/tools/search/tool.js +0 -453
- package/src/tools/search/types.js +0 -2
- package/src/tools/search/utils.js +0 -59
- package/src/types/graph.js +0 -24
- package/src/types/graph.test.js +0 -192
- package/src/types/index.js +0 -7
- package/src/types/llm.js +0 -2
- package/src/types/messages.js +0 -2
- package/src/types/run.js +0 -2
- package/src/types/stream.js +0 -2
- package/src/types/tools.js +0 -2
- package/src/utils/contextAnalytics.js +0 -79
- package/src/utils/contextAnalytics.test.js +0 -166
- package/src/utils/events.js +0 -26
- package/src/utils/graph.js +0 -11
- package/src/utils/handlers.js +0 -65
- package/src/utils/index.js +0 -10
- package/src/utils/llm.js +0 -21
- package/src/utils/llmConfig.js +0 -205
- package/src/utils/logging.js +0 -37
- package/src/utils/misc.js +0 -51
- package/src/utils/run.js +0 -69
- package/src/utils/schema.js +0 -21
- package/src/utils/title.js +0 -119
- package/src/utils/tokens.js +0 -92
- package/src/utils/toonFormat.js +0 -379
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
// src/graphs/__tests__/structured-output.test.ts
|
|
2
|
-
import { StructuredOutputRefusalError, StructuredOutputTruncatedError } from '@/types/graph';
|
|
3
|
-
import { prepareSchemaForProvider } from '@/schemas/validate';
|
|
4
|
-
import { Providers } from '@/common';
|
|
5
|
-
/**
|
|
6
|
-
* Unit tests for the structured output logic in Graph.ts.
|
|
7
|
-
* These test individual components and error classes without instantiating the full Graph.
|
|
8
|
-
* Integration tests with real models are in structured-output.integration.test.ts.
|
|
9
|
-
*/
|
|
10
|
-
describe('StructuredOutputRefusalError', () => {
|
|
11
|
-
it('creates error with refusal text', () => {
|
|
12
|
-
const error = new StructuredOutputRefusalError('I cannot produce that output');
|
|
13
|
-
expect(error.name).toBe('StructuredOutputRefusalError');
|
|
14
|
-
expect(error.refusalText).toBe('I cannot produce that output');
|
|
15
|
-
expect(error.message).toContain('Model refused');
|
|
16
|
-
expect(error.message).toContain('I cannot produce that output');
|
|
17
|
-
expect(error instanceof Error).toBe(true);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
describe('StructuredOutputTruncatedError', () => {
|
|
21
|
-
it('creates error with stop reason', () => {
|
|
22
|
-
const error = new StructuredOutputTruncatedError('max_tokens');
|
|
23
|
-
expect(error.name).toBe('StructuredOutputTruncatedError');
|
|
24
|
-
expect(error.stopReason).toBe('max_tokens');
|
|
25
|
-
expect(error.message).toContain('truncated');
|
|
26
|
-
expect(error.message).toContain('max_tokens');
|
|
27
|
-
expect(error.message).toContain('Increase max_tokens');
|
|
28
|
-
expect(error instanceof Error).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
it('works with OpenAI-style length stop reason', () => {
|
|
31
|
-
const error = new StructuredOutputTruncatedError('length');
|
|
32
|
-
expect(error.stopReason).toBe('length');
|
|
33
|
-
expect(error.message).toContain('length');
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
describe('Error handling in structured output', () => {
|
|
37
|
-
it('StructuredOutputRefusalError is catchable as Error', () => {
|
|
38
|
-
try {
|
|
39
|
-
throw new StructuredOutputRefusalError('safety refusal');
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
expect(e instanceof Error).toBe(true);
|
|
43
|
-
expect(e instanceof StructuredOutputRefusalError).toBe(true);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
it('StructuredOutputTruncatedError is catchable as Error', () => {
|
|
47
|
-
try {
|
|
48
|
-
throw new StructuredOutputTruncatedError('max_tokens');
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
expect(e instanceof Error).toBe(true);
|
|
52
|
-
expect(e instanceof StructuredOutputTruncatedError).toBe(true);
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
it('errors are distinguishable from generic errors', () => {
|
|
56
|
-
const refusal = new StructuredOutputRefusalError('nope');
|
|
57
|
-
const truncated = new StructuredOutputTruncatedError('max_tokens');
|
|
58
|
-
const generic = new Error('generic');
|
|
59
|
-
expect(refusal instanceof StructuredOutputTruncatedError).toBe(false);
|
|
60
|
-
expect(truncated instanceof StructuredOutputRefusalError).toBe(false);
|
|
61
|
-
expect(generic instanceof StructuredOutputRefusalError).toBe(false);
|
|
62
|
-
expect(generic instanceof StructuredOutputTruncatedError).toBe(false);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('Schema preparation for native structured output', () => {
|
|
66
|
-
const testSchema = {
|
|
67
|
-
type: 'object',
|
|
68
|
-
properties: {
|
|
69
|
-
name: { type: 'string' },
|
|
70
|
-
age: { type: 'number', minimum: 0, maximum: 150 },
|
|
71
|
-
tags: { type: 'array', items: { type: 'string' }, minItems: 1 },
|
|
72
|
-
address: {
|
|
73
|
-
type: 'object',
|
|
74
|
-
properties: {
|
|
75
|
-
street: { type: 'string', maxLength: 200 },
|
|
76
|
-
zip: { type: 'string', pattern: '^\\d{5}$' },
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
required: ['name'],
|
|
81
|
-
};
|
|
82
|
-
it('prepares schema for Anthropic native mode', () => {
|
|
83
|
-
const { schema, warnings } = prepareSchemaForProvider(testSchema, Providers.ANTHROPIC);
|
|
84
|
-
// Root level
|
|
85
|
-
expect(schema.additionalProperties).toBe(false);
|
|
86
|
-
expect(schema.required).toEqual(expect.arrayContaining(['name', 'age', 'tags', 'address']));
|
|
87
|
-
// Numeric constraints stripped
|
|
88
|
-
const ageProp = schema.properties.age;
|
|
89
|
-
expect(ageProp.minimum).toBeUndefined();
|
|
90
|
-
expect(ageProp.maximum).toBeUndefined();
|
|
91
|
-
expect(ageProp.description).toContain('minimum');
|
|
92
|
-
expect(ageProp.description).toContain('maximum');
|
|
93
|
-
// Array constraints stripped
|
|
94
|
-
const tagsProp = schema.properties.tags;
|
|
95
|
-
expect(tagsProp.minItems).toBeUndefined();
|
|
96
|
-
// Nested object prepared
|
|
97
|
-
const addressProp = schema.properties.address;
|
|
98
|
-
expect(addressProp.additionalProperties).toBe(false);
|
|
99
|
-
expect(addressProp.required).toEqual(expect.arrayContaining(['street', 'zip']));
|
|
100
|
-
// String constraints stripped
|
|
101
|
-
const streetProp = addressProp.properties.street;
|
|
102
|
-
expect(streetProp.maxLength).toBeUndefined();
|
|
103
|
-
const zipProp = addressProp.properties.zip;
|
|
104
|
-
expect(zipProp.pattern).toBeUndefined();
|
|
105
|
-
// Should have multiple warnings
|
|
106
|
-
expect(warnings.length).toBeGreaterThan(0);
|
|
107
|
-
});
|
|
108
|
-
it('prepares schema for OpenAI native mode', () => {
|
|
109
|
-
const { schema } = prepareSchemaForProvider(testSchema, Providers.OPENAI);
|
|
110
|
-
// Same constraints as Anthropic
|
|
111
|
-
expect(schema.additionalProperties).toBe(false);
|
|
112
|
-
const ageProp = schema.properties.age;
|
|
113
|
-
expect(ageProp.minimum).toBeUndefined();
|
|
114
|
-
});
|
|
115
|
-
it('prepares schema for Bedrock', () => {
|
|
116
|
-
const { schema } = prepareSchemaForProvider(testSchema, Providers.BEDROCK);
|
|
117
|
-
// Same treatment
|
|
118
|
-
expect(schema.additionalProperties).toBe(false);
|
|
119
|
-
const ageProp = schema.properties.age;
|
|
120
|
-
expect(ageProp.minimum).toBeUndefined();
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
describe('Stream aggregation behavior', () => {
|
|
124
|
-
it('synthetic tool call names are correctly identified', () => {
|
|
125
|
-
// These names should be filtered by stream.ts
|
|
126
|
-
const structuredOutputToolNames = ['response', 'structuredresponse', 'structured_response'];
|
|
127
|
-
for (const name of structuredOutputToolNames) {
|
|
128
|
-
expect(name === 'response' ||
|
|
129
|
-
name === 'structuredresponse' ||
|
|
130
|
-
name === 'structured_response').toBe(true);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
it('regular tool names are not confused with structured output', () => {
|
|
134
|
-
const regularToolNames = ['web_search', 'calculator', 'my_response_handler'];
|
|
135
|
-
for (const name of regularToolNames) {
|
|
136
|
-
const lower = name.toLowerCase();
|
|
137
|
-
const isStructured = lower === 'response' ||
|
|
138
|
-
lower === 'structuredresponse' ||
|
|
139
|
-
lower === 'structured_response';
|
|
140
|
-
expect(isStructured).toBe(false);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
//# sourceMappingURL=structured-output.test.js.map
|