concevent-ai-agent-sdk 2.1.1 → 2.2.0-rc1

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 CHANGED
@@ -17,6 +17,7 @@ A framework-agnostic AI Agent SDK for building intelligent conversational agents
17
17
  - 🔌 **Middleware System** - Extensible plugin architecture for logging, sanitization, and more
18
18
  - 📋 **Structured Output** - JSON schema validation with Zod for type-safe responses
19
19
  - 🎭 **Multi-Agent Orchestration** - Route tasks to specialized sub-agents based on their capabilities
20
+ - 📊 **Flow Visualization** - Automatic Mermaid sequence diagrams showing orchestration flow
20
21
 
21
22
  ## Installation
22
23
 
@@ -99,6 +100,7 @@ console.log(result.message);
99
100
  - [Abort Requests](#abort-requests)
100
101
  - [Middleware](#middleware)
101
102
  - [Multi-Agent Orchestration](#multi-agent-orchestration)
103
+ - [Orchestration Flow Diagrams](#orchestration-flow-diagrams)
102
104
 
103
105
  ---
104
106
 
@@ -1615,7 +1617,13 @@ interface AgentDefinition {
1615
1617
  #### OrchestratorAgent Interface
1616
1618
 
1617
1619
  ```typescript
1618
- interface OrchestratorAgent extends Agent {
1620
+ interface OrchestratorAgent extends Omit<Agent, 'chat'> {
1621
+ chat(
1622
+ message: string,
1623
+ context: ToolExecutorContext,
1624
+ callbacks?: AgentCallbacks
1625
+ ): Promise<OrchestratorResult>; // Returns OrchestratorResult with diagram
1626
+
1619
1627
  getSubAgents(): AgentDefinition[]; // Returns registered sub-agents
1620
1628
  }
1621
1629
  ```
@@ -1630,6 +1638,90 @@ interface OrchestratorAgent extends Agent {
1630
1638
 
1631
1639
  4. **Automatic Routing**: The orchestrator's LLM decides which sub-agent(s) to use based on their descriptions and the user's request.
1632
1640
 
1641
+ ### Orchestration Flow Diagrams
1642
+
1643
+ The orchestrator automatically generates Mermaid sequence diagrams that visualize the complete orchestration flow. This helps developers understand how tasks are routed between sub-agents and debug or fine-tune their multi-agent systems.
1644
+
1645
+ #### Accessing the Diagram
1646
+
1647
+ The orchestrator returns an `OrchestratorResult` which extends `AgentResult` with a `diagram` property:
1648
+
1649
+ ```typescript
1650
+ const result = await orchestrator.chat(
1651
+ "Research sorting algorithms and implement quicksort",
1652
+ { userId: "user-123", timezone: "UTC" }
1653
+ );
1654
+
1655
+ console.log(result.message); // The orchestrator's response
1656
+ console.log(result.diagram); // Mermaid sequence diagram
1657
+ ```
1658
+
1659
+ #### OrchestratorResult
1660
+
1661
+ ```typescript
1662
+ interface OrchestratorResult<T = unknown> extends AgentResult<T> {
1663
+ /** Mermaid sequence diagram showing the orchestration flow */
1664
+ diagram: string;
1665
+ }
1666
+ ```
1667
+
1668
+ #### Example Diagram Output
1669
+
1670
+ When the orchestrator delegates to sub-agents, the diagram shows the complete flow:
1671
+
1672
+ ```mermaid
1673
+ sequenceDiagram
1674
+ participant User
1675
+ participant Orchestrator
1676
+ participant researcher
1677
+ participant code_expert
1678
+
1679
+ User->>Orchestrator: Research sorting algorithms and implement quicksort
1680
+ Orchestrator->>+researcher: Research the best sorting algorithms
1681
+ researcher-->>-Orchestrator: QuickSort is efficient for large datasets
1682
+ Orchestrator->>+code_expert: Implement QuickSort in TypeScript
1683
+ Note right of code_expert: Tool: write_file
1684
+ Note right of code_expert: Tool: read_file
1685
+ code_expert-->>-Orchestrator: Implementation complete
1686
+ Orchestrator-->>User: Based on research, QuickSort is best...
1687
+ ```
1688
+
1689
+ #### Diagram Features
1690
+
1691
+ The generated diagrams include:
1692
+
1693
+ | Element | Description |
1694
+ |---------|-------------|
1695
+ | **Participants** | User, Orchestrator, and all called sub-agents |
1696
+ | **Delegations** | Messages sent from orchestrator to sub-agents |
1697
+ | **Tool Calls** | Notes showing tools called within sub-agents |
1698
+ | **Responses** | Return messages from sub-agents to orchestrator |
1699
+ | **Final Response** | The orchestrator's synthesized response to the user |
1700
+
1701
+ #### Using the Diagram
1702
+
1703
+ The diagram string is valid Mermaid syntax that can be:
1704
+
1705
+ 1. **Rendered in Markdown**: GitHub, GitLab, and many documentation tools render Mermaid natively
1706
+ 2. **Displayed in Web Apps**: Use [Mermaid.js](https://mermaid.js.org/) to render in browsers
1707
+ 3. **Logged for Debugging**: Visualize agent routing decisions in development
1708
+ 4. **Stored for Analytics**: Track orchestration patterns over time
1709
+
1710
+ ```typescript
1711
+ // Example: Save diagram to file for debugging
1712
+ import { writeFile } from "fs/promises";
1713
+
1714
+ const result = await orchestrator.chat("Complex multi-agent task", context);
1715
+ await writeFile("orchestration-flow.md", `\`\`\`mermaid\n${result.diagram}\n\`\`\``);
1716
+ ```
1717
+
1718
+ #### Diagram Characteristics
1719
+
1720
+ - **Automatic Generation**: Diagrams are generated by the SDK, not the LLM (deterministic and reliable)
1721
+ - **Message Truncation**: Long messages are truncated to 50 characters for readability
1722
+ - **Special Character Escaping**: Characters that could break Mermaid syntax are safely escaped
1723
+ - **Activation Boxes**: Sub-agent calls show activation (`+`/`-`) to indicate processing time
1724
+
1633
1725
  ---
1634
1726
 
1635
1727
  ## Exports Summary
@@ -1684,6 +1776,7 @@ export type {
1684
1776
  AgentDefinition,
1685
1777
  OrchestratorConfig,
1686
1778
  OrchestratorAgent,
1779
+ OrchestratorResult,
1687
1780
  SubAgentStartData,
1688
1781
  SubAgentCompleteData,
1689
1782
  OrchestratorCallbacks,
@@ -0,0 +1,110 @@
1
+ /**
2
+ * DiagramBuilder - Generates Mermaid sequence diagrams for orchestrator flows.
3
+ *
4
+ * This utility tracks sub-agent delegations, tool calls, and responses during
5
+ * orchestrator execution, then generates a Mermaid sequence diagram that
6
+ * visualizes the complete flow.
7
+ */
8
+ /**
9
+ * Configuration options for DiagramBuilder.
10
+ */
11
+ export interface DiagramBuilderConfig {
12
+ /**
13
+ * Maximum length for message text before truncation.
14
+ * @default 50
15
+ */
16
+ messageTruncateLength?: number;
17
+ /**
18
+ * Whether to include tool call arguments in the diagram.
19
+ * @default false
20
+ */
21
+ includeToolArgs?: boolean;
22
+ /**
23
+ * Whether to include tool result events.
24
+ * @default false
25
+ */
26
+ includeToolResults?: boolean;
27
+ }
28
+ /**
29
+ * Builds Mermaid sequence diagrams from orchestrator execution events.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const builder = new DiagramBuilder();
34
+ * builder.recordUserMessage('Write a sorting function');
35
+ * builder.recordDelegation('code_expert', 'Implement quicksort');
36
+ * builder.recordToolCall('code_expert', 'write_file');
37
+ * builder.recordSubAgentResponse('code_expert', 'Created implementation');
38
+ * builder.recordOrchestratorResponse('Here is your sorting function...');
39
+ *
40
+ * const diagram = builder.build();
41
+ * // Returns Mermaid sequence diagram string
42
+ * ```
43
+ */
44
+ export declare class DiagramBuilder {
45
+ private events;
46
+ private participants;
47
+ private currentSubAgent;
48
+ private config;
49
+ constructor(config?: DiagramBuilderConfig);
50
+ /**
51
+ * Records the initial user message to the orchestrator.
52
+ */
53
+ recordUserMessage(message: string): void;
54
+ /**
55
+ * Records the orchestrator delegating to a sub-agent.
56
+ */
57
+ recordDelegation(agentName: string, message: string): void;
58
+ /**
59
+ * Records a tool call made by a sub-agent.
60
+ */
61
+ recordToolCall(agentName: string, toolName: string, args?: Record<string, unknown>): void;
62
+ /**
63
+ * Records a tool result returned to a sub-agent.
64
+ */
65
+ recordToolResult(agentName: string, toolName: string, success?: boolean): void;
66
+ /**
67
+ * Records a sub-agent's response back to the orchestrator.
68
+ */
69
+ recordSubAgentResponse(agentName: string, message: string): void;
70
+ /**
71
+ * Records the orchestrator's final response to the user.
72
+ */
73
+ recordOrchestratorResponse(message: string): void;
74
+ /**
75
+ * Returns the name of the currently active sub-agent (if any).
76
+ * Useful for associating tool calls with the correct agent.
77
+ */
78
+ getCurrentSubAgent(): string | null;
79
+ /**
80
+ * Truncates a message to the configured length, adding ellipsis if needed.
81
+ */
82
+ private truncate;
83
+ /**
84
+ * Escapes special characters for Mermaid syntax.
85
+ */
86
+ private escape;
87
+ /**
88
+ * Sanitizes a participant name for Mermaid (no spaces, alphanumeric + underscore).
89
+ */
90
+ private sanitizeParticipant;
91
+ /**
92
+ * Formats tool call arguments for display.
93
+ */
94
+ private formatToolArgs;
95
+ /**
96
+ * Builds the Mermaid sequence diagram from recorded events.
97
+ *
98
+ * @returns The complete Mermaid diagram as a string.
99
+ */
100
+ build(): string;
101
+ /**
102
+ * Clears all recorded events and participants.
103
+ */
104
+ clear(): void;
105
+ /**
106
+ * Returns the number of recorded events.
107
+ */
108
+ getEventCount(): number;
109
+ }
110
+ //# sourceMappingURL=diagram-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-builder.d.ts","sourceRoot":"","sources":["../../src/core/diagram-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyFH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,GAAE,oBAAyB;IAQ7C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAW1D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUzF;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI;IAYpF;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUhE;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjD;;;OAGG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,MAAM;IAYd;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAmEf;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * DiagramBuilder - Generates Mermaid sequence diagrams for orchestrator flows.
3
+ *
4
+ * This utility tracks sub-agent delegations, tool calls, and responses during
5
+ * orchestrator execution, then generates a Mermaid sequence diagram that
6
+ * visualizes the complete flow.
7
+ */
8
+ /** Maximum length for message text in diagram labels */
9
+ const DEFAULT_MESSAGE_TRUNCATE_LENGTH = 50;
10
+ /**
11
+ * Builds Mermaid sequence diagrams from orchestrator execution events.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const builder = new DiagramBuilder();
16
+ * builder.recordUserMessage('Write a sorting function');
17
+ * builder.recordDelegation('code_expert', 'Implement quicksort');
18
+ * builder.recordToolCall('code_expert', 'write_file');
19
+ * builder.recordSubAgentResponse('code_expert', 'Created implementation');
20
+ * builder.recordOrchestratorResponse('Here is your sorting function...');
21
+ *
22
+ * const diagram = builder.build();
23
+ * // Returns Mermaid sequence diagram string
24
+ * ```
25
+ */
26
+ export class DiagramBuilder {
27
+ events = [];
28
+ participants = new Set();
29
+ currentSubAgent = null;
30
+ config;
31
+ constructor(config = {}) {
32
+ this.config = {
33
+ messageTruncateLength: config.messageTruncateLength ?? DEFAULT_MESSAGE_TRUNCATE_LENGTH,
34
+ includeToolArgs: config.includeToolArgs ?? false,
35
+ includeToolResults: config.includeToolResults ?? false,
36
+ };
37
+ }
38
+ /**
39
+ * Records the initial user message to the orchestrator.
40
+ */
41
+ recordUserMessage(message) {
42
+ this.events.push({
43
+ type: 'user_message',
44
+ message,
45
+ timestamp: new Date(),
46
+ });
47
+ }
48
+ /**
49
+ * Records the orchestrator delegating to a sub-agent.
50
+ */
51
+ recordDelegation(agentName, message) {
52
+ this.participants.add(agentName);
53
+ this.currentSubAgent = agentName;
54
+ this.events.push({
55
+ type: 'delegation',
56
+ agentName,
57
+ message,
58
+ timestamp: new Date(),
59
+ });
60
+ }
61
+ /**
62
+ * Records a tool call made by a sub-agent.
63
+ */
64
+ recordToolCall(agentName, toolName, args) {
65
+ this.events.push({
66
+ type: 'tool_call',
67
+ agentName,
68
+ toolName,
69
+ args,
70
+ timestamp: new Date(),
71
+ });
72
+ }
73
+ /**
74
+ * Records a tool result returned to a sub-agent.
75
+ */
76
+ recordToolResult(agentName, toolName, success = true) {
77
+ if (this.config.includeToolResults) {
78
+ this.events.push({
79
+ type: 'tool_result',
80
+ agentName,
81
+ toolName,
82
+ success,
83
+ timestamp: new Date(),
84
+ });
85
+ }
86
+ }
87
+ /**
88
+ * Records a sub-agent's response back to the orchestrator.
89
+ */
90
+ recordSubAgentResponse(agentName, message) {
91
+ this.currentSubAgent = null;
92
+ this.events.push({
93
+ type: 'sub_agent_response',
94
+ agentName,
95
+ message,
96
+ timestamp: new Date(),
97
+ });
98
+ }
99
+ /**
100
+ * Records the orchestrator's final response to the user.
101
+ */
102
+ recordOrchestratorResponse(message) {
103
+ this.events.push({
104
+ type: 'orchestrator_response',
105
+ message,
106
+ timestamp: new Date(),
107
+ });
108
+ }
109
+ /**
110
+ * Returns the name of the currently active sub-agent (if any).
111
+ * Useful for associating tool calls with the correct agent.
112
+ */
113
+ getCurrentSubAgent() {
114
+ return this.currentSubAgent;
115
+ }
116
+ /**
117
+ * Truncates a message to the configured length, adding ellipsis if needed.
118
+ */
119
+ truncate(text) {
120
+ const maxLen = this.config.messageTruncateLength;
121
+ if (text.length <= maxLen) {
122
+ return text;
123
+ }
124
+ return text.slice(0, maxLen - 3) + '...';
125
+ }
126
+ /**
127
+ * Escapes special characters for Mermaid syntax.
128
+ */
129
+ escape(text) {
130
+ // Replace characters that could break Mermaid syntax
131
+ return text
132
+ .replace(/"/g, "'")
133
+ .replace(/\n/g, ' ')
134
+ .replace(/\r/g, '')
135
+ .replace(/>/g, 'ᐳ')
136
+ .replace(/</g, 'ᐸ')
137
+ .replace(/#/g, '#')
138
+ .replace(/;/g, ';');
139
+ }
140
+ /**
141
+ * Sanitizes a participant name for Mermaid (no spaces, alphanumeric + underscore).
142
+ */
143
+ sanitizeParticipant(name) {
144
+ return name.replace(/[^a-zA-Z0-9_]/g, '_');
145
+ }
146
+ /**
147
+ * Formats tool call arguments for display.
148
+ */
149
+ formatToolArgs(args) {
150
+ if (!args || !this.config.includeToolArgs) {
151
+ return '';
152
+ }
153
+ const entries = Object.entries(args);
154
+ if (entries.length === 0) {
155
+ return '';
156
+ }
157
+ // Show first key-value pair only for brevity
158
+ const [key, value] = entries[0];
159
+ const valueStr = typeof value === 'string' ? value : JSON.stringify(value);
160
+ const truncatedValue = this.truncate(valueStr);
161
+ return `(${key}: ${truncatedValue})`;
162
+ }
163
+ /**
164
+ * Builds the Mermaid sequence diagram from recorded events.
165
+ *
166
+ * @returns The complete Mermaid diagram as a string.
167
+ */
168
+ build() {
169
+ const lines = ['sequenceDiagram'];
170
+ // Add participants in order: User, Orchestrator, then sub-agents
171
+ lines.push(' participant User');
172
+ lines.push(' participant Orchestrator');
173
+ for (const participant of this.participants) {
174
+ const sanitized = this.sanitizeParticipant(participant);
175
+ if (sanitized !== participant) {
176
+ lines.push(` participant ${sanitized} as ${participant}`);
177
+ }
178
+ else {
179
+ lines.push(` participant ${participant}`);
180
+ }
181
+ }
182
+ lines.push('');
183
+ // Add events
184
+ for (const event of this.events) {
185
+ switch (event.type) {
186
+ case 'user_message': {
187
+ const msg = this.escape(this.truncate(event.message));
188
+ lines.push(` User->>Orchestrator: ${msg}`);
189
+ break;
190
+ }
191
+ case 'delegation': {
192
+ const agent = this.sanitizeParticipant(event.agentName);
193
+ const msg = this.escape(this.truncate(event.message));
194
+ lines.push(` Orchestrator->>+${agent}: ${msg}`);
195
+ break;
196
+ }
197
+ case 'tool_call': {
198
+ const agent = this.sanitizeParticipant(event.agentName);
199
+ const argsStr = this.formatToolArgs(event.args);
200
+ const toolInfo = argsStr ? `${event.toolName}${argsStr}` : event.toolName;
201
+ lines.push(` Note right of ${agent}: Tool: ${this.escape(toolInfo)}`);
202
+ break;
203
+ }
204
+ case 'tool_result': {
205
+ const agent = this.sanitizeParticipant(event.agentName);
206
+ const status = event.success ? '✓' : '✗';
207
+ lines.push(` Note right of ${agent}: ${status} ${event.toolName}`);
208
+ break;
209
+ }
210
+ case 'sub_agent_response': {
211
+ const agent = this.sanitizeParticipant(event.agentName);
212
+ const msg = this.escape(this.truncate(event.message));
213
+ lines.push(` ${agent}-->>-Orchestrator: ${msg}`);
214
+ break;
215
+ }
216
+ case 'orchestrator_response': {
217
+ const msg = this.escape(this.truncate(event.message));
218
+ lines.push(` Orchestrator-->>User: ${msg}`);
219
+ break;
220
+ }
221
+ }
222
+ }
223
+ return lines.join('\n');
224
+ }
225
+ /**
226
+ * Clears all recorded events and participants.
227
+ */
228
+ clear() {
229
+ this.events = [];
230
+ this.participants.clear();
231
+ this.currentSubAgent = null;
232
+ }
233
+ /**
234
+ * Returns the number of recorded events.
235
+ */
236
+ getEventCount() {
237
+ return this.events.length;
238
+ }
239
+ }
240
+ //# sourceMappingURL=diagram-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-builder.js","sourceRoot":"","sources":["../../src/core/diagram-builder.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,6 @@ export { buildResponseFormat, validateResponse, formatValidationError, requiresJ
12
12
  export type { ValidationResult } from './response-format.js';
13
13
  export { convertChatMessagesToOpenAI, convertFunctionDeclarationsToTools, convertOpenAIToolCallsToFunctionCalls, mapOpenAIUsageToMetadata, normalizeReasoning, createSystemMessage, createUserMessage, createAssistantMessage, } from './openrouter-utils.js';
14
14
  export type { NormalizedReasoning } from './openrouter-utils.js';
15
+ export { DiagramBuilder } from './diagram-builder.js';
16
+ export type { DiagramBuilderConfig } from './diagram-builder.js';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -6,4 +6,5 @@ export { summarizeConversation, createSummaryMessage, shouldSummarize, DEFAULT_C
6
6
  export { AgentError, formatErrorTrace, isAbortError, createErrorMessageResolver, } from './errors.js';
7
7
  export { buildResponseFormat, validateResponse, formatValidationError, requiresJsonParsing, hasSchema, } from './response-format.js';
8
8
  export { convertChatMessagesToOpenAI, convertFunctionDeclarationsToTools, convertOpenAIToolCallsToFunctionCalls, mapOpenAIUsageToMetadata, normalizeReasoning, createSystemMessage, createUserMessage, createAssistantMessage, } from './openrouter-utils.js';
9
+ export { DiagramBuilder } from './diagram-builder.js';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AA2HlC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,CA0GrF"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAmJlC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,CA+HrF"}
@@ -1,6 +1,7 @@
1
1
  import { createAgent } from './agent.js';
2
2
  import { AgentError } from './errors.js';
3
3
  import { logger } from './logger.js';
4
+ import { DiagramBuilder } from './diagram-builder.js';
4
5
  /**
5
6
  * Symbol used to mark an agent as an orchestrator.
6
7
  * Used to prevent nested orchestrators.
@@ -16,7 +17,7 @@ function isOrchestratorAgent(agent) {
16
17
  * Creates a tool definition that delegates to a sub-agent.
17
18
  * The tool allows the orchestrator to invoke the sub-agent with a message.
18
19
  */
19
- function createSubAgentTool(definition, callbacks) {
20
+ function createSubAgentTool(definition, callbacks, diagramBuilder) {
20
21
  return {
21
22
  declaration: {
22
23
  name: definition.name,
@@ -36,6 +37,8 @@ function createSubAgentTool(definition, callbacks) {
36
37
  executor: async (args, context) => {
37
38
  const message = args.message;
38
39
  logger.subAgentStart(definition.name, message);
40
+ // Record delegation in diagram
41
+ diagramBuilder?.recordDelegation(definition.name, message);
39
42
  // Fire onSubAgentStart callback
40
43
  callbacks?.onSubAgentStart?.({
41
44
  agentName: definition.name,
@@ -44,14 +47,30 @@ function createSubAgentTool(definition, callbacks) {
44
47
  try {
45
48
  // Clear sub-agent history to ensure stateless execution
46
49
  definition.agent.clearHistory();
47
- // Delegate to the sub-agent
48
- const result = await definition.agent.chat(message, context, {
50
+ // Create wrapped callbacks that record tool calls in the diagram
51
+ const wrappedCallbacks = {
49
52
  // Forward abort handling
50
53
  onAborted: callbacks?.onAborted,
51
54
  // Forward error handling
52
55
  onError: callbacks?.onError,
53
- });
56
+ // Wrap tool call start to record in diagram
57
+ onToolCallStart: (calls) => {
58
+ for (const call of calls) {
59
+ diagramBuilder?.recordToolCall(definition.name, call.name, call.args);
60
+ }
61
+ callbacks?.onToolCallStart?.(calls);
62
+ },
63
+ // Wrap tool result to record in diagram
64
+ onToolResult: (result) => {
65
+ diagramBuilder?.recordToolResult(definition.name, result.functionName, !result.error);
66
+ callbacks?.onToolResult?.(result);
67
+ },
68
+ };
69
+ // Delegate to the sub-agent
70
+ const result = await definition.agent.chat(message, context, wrappedCallbacks);
54
71
  logger.subAgentComplete(definition.name, result.iterations);
72
+ // Record sub-agent response in diagram
73
+ diagramBuilder?.recordSubAgentResponse(definition.name, result.message);
55
74
  // Fire onSubAgentComplete callback
56
75
  callbacks?.onSubAgentComplete?.({
57
76
  agentName: definition.name,
@@ -137,19 +156,20 @@ export function createOrchestratorAgent(config) {
137
156
  }
138
157
  names.add(definition.name);
139
158
  }
140
- // We need to create tools that capture callbacks, but callbacks are passed per-chat call.
141
- // So we create a mutable reference that gets updated on each chat call.
159
+ // We need to create tools that capture callbacks and diagramBuilder, but these are passed per-chat call.
160
+ // So we create mutable references that get updated on each chat call.
142
161
  let currentCallbacks;
162
+ let currentDiagramBuilder;
143
163
  // Generate delegation tools for each sub-agent
144
164
  const subAgentTools = subAgents.map((definition) => {
145
- // Create a wrapper that uses the current callbacks
146
- const baseToolDef = createSubAgentTool(definition, undefined);
165
+ // Create a wrapper that uses the current callbacks and diagram builder
166
+ const baseToolDef = createSubAgentTool(definition, undefined, undefined);
147
167
  return {
148
168
  ...baseToolDef,
149
169
  executor: async (args, context) => {
150
- // Create tool with current callbacks
151
- const toolWithCallbacks = createSubAgentTool(definition, currentCallbacks);
152
- return toolWithCallbacks.executor(args, context);
170
+ // Create tool with current callbacks and diagram builder
171
+ const toolWithContext = createSubAgentTool(definition, currentCallbacks, currentDiagramBuilder);
172
+ return toolWithContext.executor(args, context);
153
173
  },
154
174
  };
155
175
  });
@@ -166,13 +186,27 @@ export function createOrchestratorAgent(config) {
166
186
  // Create the orchestrator agent wrapper
167
187
  const orchestratorAgent = {
168
188
  async chat(message, context, callbacks) {
169
- // Update current callbacks for sub-agent tools to use
189
+ // Create a fresh diagram builder for this chat
190
+ const diagramBuilder = new DiagramBuilder();
191
+ // Record the initial user message
192
+ diagramBuilder.recordUserMessage(message);
193
+ // Update current callbacks and diagram builder for sub-agent tools to use
170
194
  currentCallbacks = callbacks;
195
+ currentDiagramBuilder = diagramBuilder;
171
196
  try {
172
- return await underlyingAgent.chat(message, context, callbacks);
197
+ const result = await underlyingAgent.chat(message, context, callbacks);
198
+ // Record the orchestrator's final response
199
+ diagramBuilder.recordOrchestratorResponse(result.message);
200
+ // Build the diagram and return OrchestratorResult
201
+ const diagram = diagramBuilder.build();
202
+ return {
203
+ ...result,
204
+ diagram,
205
+ };
173
206
  }
174
207
  finally {
175
208
  currentCallbacks = undefined;
209
+ currentDiagramBuilder = undefined;
176
210
  }
177
211
  },
178
212
  abort() {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { createEvent } from './types/events.js';
5
5
  export { ENCRYPTED_REASONING_MARKER } from './core/openrouter-utils.js';
6
6
  export { AgentError, formatErrorTrace, isAbortError } from './core/errors.js';
7
7
  export type { AgentErrorCode } from './core/errors.js';
8
- export type { ReasoningDetail, ChatMessage, FunctionDeclaration, ToolExecutorContext, ToolDefinition, AgentConfig, ParallelExecutionConfig, RetryConfig, TimeoutConfig, UsageMetadata, AgentResult, ToolCallStartData, ToolResultData, AgentCallbacks, AgentEventType, ThinkingEventData, UsageUpdateEventData, RetryEventData, ErrorEventData, CompleteEventData, MessageDeltaEventData, ReasoningDeltaEventData, AgentEvent, ResponseFormatConfig, Middleware, MiddlewareContext, BeforeChatContext, AfterChatContext, BeforeToolCallContext, AfterToolCallContext, ErrorContext, AgentDefinition, OrchestratorConfig, OrchestratorAgent, SubAgentStartData, SubAgentCompleteData, OrchestratorCallbacks, } from './types/index.js';
8
+ export type { ReasoningDetail, ChatMessage, FunctionDeclaration, ToolExecutorContext, ToolDefinition, AgentConfig, ParallelExecutionConfig, RetryConfig, TimeoutConfig, UsageMetadata, AgentResult, ToolCallStartData, ToolResultData, AgentCallbacks, AgentEventType, ThinkingEventData, UsageUpdateEventData, RetryEventData, ErrorEventData, CompleteEventData, MessageDeltaEventData, ReasoningDeltaEventData, AgentEvent, ResponseFormatConfig, Middleware, MiddlewareContext, BeforeChatContext, AfterChatContext, BeforeToolCallContext, AfterToolCallContext, ErrorContext, AgentDefinition, OrchestratorConfig, OrchestratorAgent, OrchestratorResult, SubAgentStartData, SubAgentCompleteData, OrchestratorCallbacks, } from './types/index.js';
9
9
  export { DEFAULT_TOOL_EXECUTION_TIMEOUT_MS, DEFAULT_API_REQUEST_TIMEOUT_MS, } from './types/index.js';
10
10
  export { ToolExecutionTimeoutError } from './core/tool-executor.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EAEpB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EAEZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EAEpB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EAEZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6C9E,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA8C9E,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -4,5 +4,5 @@ export { DEFAULT_MAX_CONCURRENCY, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RETRY_BASE
4
4
  export type { AgentCallbacks, AgentEventType, ThinkingEventData, MessageEventData, MessageDeltaEventData, ReasoningDeltaEventData, ToolCallStartEventData, ToolResultEventData, UsageUpdateEventData, SummarizationStartEventData, SummarizationEndEventData, IterationStartEventData, RetryEventData, ErrorEventData, CompleteEventData, AbortedEventData, SubAgentStartEventData, SubAgentCompleteEventData, EventDataMap, AgentEvent, } from './events.js';
5
5
  export { createEvent } from './events.js';
6
6
  export type { Middleware, MiddlewareContext, BeforeChatContext, AfterChatContext, BeforeToolCallContext, AfterToolCallContext, ErrorContext, } from './middleware.js';
7
- export type { AgentDefinition, OrchestratorConfig, OrchestratorAgent, SubAgentStartData, SubAgentCompleteData, OrchestratorCallbacks, } from './orchestrator.js';
7
+ export type { AgentDefinition, OrchestratorConfig, OrchestratorAgent, OrchestratorResult, SubAgentStartData, SubAgentCompleteData, OrchestratorCallbacks, } from './orchestrator.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,eAAe,EACf,QAAQ,EACR,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,eAAe,EACf,QAAQ,EACR,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Agent } from '../core/agent.js';
2
- import type { AgentConfig, AgentResult } from './config.js';
2
+ import type { AgentConfig, AgentResult, ToolExecutorContext } from './config.js';
3
+ import type { AgentCallbacks } from './events.js';
3
4
  /**
4
5
  * Definition of a sub-agent that can be delegated to by an orchestrator.
5
6
  */
@@ -24,13 +25,6 @@ export interface OrchestratorConfig extends Omit<AgentConfig, 'tools'> {
24
25
  /** Array of sub-agents that the orchestrator can delegate to */
25
26
  subAgents: AgentDefinition[];
26
27
  }
27
- /**
28
- * Extended Agent interface for orchestrators with sub-agent management.
29
- */
30
- export interface OrchestratorAgent extends Agent {
31
- /** Returns the list of registered sub-agents */
32
- getSubAgents(): AgentDefinition[];
33
- }
34
28
  /**
35
29
  * Callback fired when orchestrator starts delegating to a sub-agent.
36
30
  */
@@ -58,4 +52,46 @@ export interface OrchestratorCallbacks {
58
52
  /** Called when a sub-agent completes its work */
59
53
  onSubAgentComplete?: (data: SubAgentCompleteData) => void;
60
54
  }
55
+ /**
56
+ * Result returned from orchestrator.chat().
57
+ * Extends AgentResult with a Mermaid sequence diagram showing the orchestration flow.
58
+ *
59
+ * @typeParam T - The type of the parsed response when using responseFormat with json_schema.
60
+ */
61
+ export interface OrchestratorResult<T = unknown> extends AgentResult<T> {
62
+ /**
63
+ * Mermaid sequence diagram showing the orchestration flow.
64
+ * Includes sub-agent delegations, tool calls, and responses.
65
+ *
66
+ * @example
67
+ * ```mermaid
68
+ * sequenceDiagram
69
+ * participant User
70
+ * participant Orchestrator
71
+ * participant code_expert
72
+ *
73
+ * User->>Orchestrator: Write a sorting function
74
+ * Orchestrator->>code_expert: Implement quicksort
75
+ * Note right of code_expert: Tool: read_file
76
+ * code_expert-->>Orchestrator: Implementation complete
77
+ * Orchestrator-->>User: Here is your function...
78
+ * ```
79
+ */
80
+ diagram: string;
81
+ }
82
+ /**
83
+ * Extended Agent interface for orchestrators with sub-agent management.
84
+ */
85
+ export interface OrchestratorAgent extends Omit<Agent, 'chat'> {
86
+ /**
87
+ * Sends a message to the orchestrator and returns a result with a diagram.
88
+ * @param message - The user's message
89
+ * @param context - Execution context (userId, timezone, abortSignal)
90
+ * @param callbacks - Optional callbacks for streaming events
91
+ * @returns OrchestratorResult including the Mermaid diagram
92
+ */
93
+ chat(message: string, context: ToolExecutorContext, callbacks?: AgentCallbacks): Promise<OrchestratorResult>;
94
+ /** Returns the list of registered sub-agents */
95
+ getSubAgents(): AgentDefinition[];
96
+ }
61
97
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/types/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,KAAK,EAAE,KAAK,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpE,gEAAgE;IAChE,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,KAAK;IAC9C,gDAAgD;IAChD,YAAY,IAAI,eAAe,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC3D"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/types/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,KAAK,EAAE,KAAK,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpE,gEAAgE;IAChE,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACrE;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;IAC5D;;;;;;OAMG;IACH,IAAI,CACF,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAC5B,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B,gDAAgD;IAChD,YAAY,IAAI,eAAe,EAAE,CAAC;CACnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "concevent-ai-agent-sdk",
3
- "version": "2.1.1",
3
+ "version": "2.2.0-rc1",
4
4
  "description": "Framework-agnostic AI Agent SDK with tool calling, conversation management, and automatic summarization",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",