@ariaflowagents/core 0.1.0

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.
Files changed (134) hide show
  1. package/README.md +39 -0
  2. package/dist/agents/Agent.d.ts +15 -0
  3. package/dist/agents/Agent.d.ts.map +1 -0
  4. package/dist/agents/Agent.js +33 -0
  5. package/dist/agents/Agent.js.map +1 -0
  6. package/dist/agents/CompositeAgent.d.ts +24 -0
  7. package/dist/agents/CompositeAgent.d.ts.map +1 -0
  8. package/dist/agents/CompositeAgent.js +59 -0
  9. package/dist/agents/CompositeAgent.js.map +1 -0
  10. package/dist/agents/FlowAgent.d.ts +11 -0
  11. package/dist/agents/FlowAgent.d.ts.map +1 -0
  12. package/dist/agents/FlowAgent.js +44 -0
  13. package/dist/agents/FlowAgent.js.map +1 -0
  14. package/dist/agents/LLMAgent.d.ts +11 -0
  15. package/dist/agents/LLMAgent.d.ts.map +1 -0
  16. package/dist/agents/LLMAgent.js +52 -0
  17. package/dist/agents/LLMAgent.js.map +1 -0
  18. package/dist/agents/TriageAgent.d.ts +11 -0
  19. package/dist/agents/TriageAgent.d.ts.map +1 -0
  20. package/dist/agents/TriageAgent.js +89 -0
  21. package/dist/agents/TriageAgent.js.map +1 -0
  22. package/dist/agents/index.d.ts +7 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +6 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/flows/AgentFlowManager.d.ts +154 -0
  27. package/dist/flows/AgentFlowManager.d.ts.map +1 -0
  28. package/dist/flows/AgentFlowManager.js +272 -0
  29. package/dist/flows/AgentFlowManager.js.map +1 -0
  30. package/dist/flows/FlowGraph.d.ts +23 -0
  31. package/dist/flows/FlowGraph.d.ts.map +1 -0
  32. package/dist/flows/FlowGraph.js +57 -0
  33. package/dist/flows/FlowGraph.js.map +1 -0
  34. package/dist/flows/FlowManager.d.ts +36 -0
  35. package/dist/flows/FlowManager.d.ts.map +1 -0
  36. package/dist/flows/FlowManager.js +256 -0
  37. package/dist/flows/FlowManager.js.map +1 -0
  38. package/dist/flows/FlowNode.d.ts +8 -0
  39. package/dist/flows/FlowNode.d.ts.map +1 -0
  40. package/dist/flows/FlowNode.js +12 -0
  41. package/dist/flows/FlowNode.js.map +1 -0
  42. package/dist/flows/index.d.ts +8 -0
  43. package/dist/flows/index.d.ts.map +1 -0
  44. package/dist/flows/index.js +6 -0
  45. package/dist/flows/index.js.map +1 -0
  46. package/dist/flows/transitions.d.ts +9 -0
  47. package/dist/flows/transitions.d.ts.map +1 -0
  48. package/dist/flows/transitions.js +15 -0
  49. package/dist/flows/transitions.js.map +1 -0
  50. package/dist/guards/StopConditions.d.ts +14 -0
  51. package/dist/guards/StopConditions.d.ts.map +1 -0
  52. package/dist/guards/StopConditions.js +161 -0
  53. package/dist/guards/StopConditions.js.map +1 -0
  54. package/dist/guards/ToolEnforcer.d.ts +11 -0
  55. package/dist/guards/ToolEnforcer.d.ts.map +1 -0
  56. package/dist/guards/ToolEnforcer.js +40 -0
  57. package/dist/guards/ToolEnforcer.js.map +1 -0
  58. package/dist/guards/index.d.ts +4 -0
  59. package/dist/guards/index.d.ts.map +1 -0
  60. package/dist/guards/index.js +4 -0
  61. package/dist/guards/index.js.map +1 -0
  62. package/dist/guards/rules.d.ts +8 -0
  63. package/dist/guards/rules.d.ts.map +1 -0
  64. package/dist/guards/rules.js +128 -0
  65. package/dist/guards/rules.js.map +1 -0
  66. package/dist/hooks/HookRunner.d.ts +30 -0
  67. package/dist/hooks/HookRunner.d.ts.map +1 -0
  68. package/dist/hooks/HookRunner.js +85 -0
  69. package/dist/hooks/HookRunner.js.map +1 -0
  70. package/dist/hooks/builtin/logging.d.ts +6 -0
  71. package/dist/hooks/builtin/logging.d.ts.map +1 -0
  72. package/dist/hooks/builtin/logging.js +99 -0
  73. package/dist/hooks/builtin/logging.js.map +1 -0
  74. package/dist/hooks/builtin/metrics.d.ts +38 -0
  75. package/dist/hooks/builtin/metrics.d.ts.map +1 -0
  76. package/dist/hooks/builtin/metrics.js +111 -0
  77. package/dist/hooks/builtin/metrics.js.map +1 -0
  78. package/dist/hooks/index.d.ts +5 -0
  79. package/dist/hooks/index.d.ts.map +1 -0
  80. package/dist/hooks/index.js +4 -0
  81. package/dist/hooks/index.js.map +1 -0
  82. package/dist/index.d.ts +30 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +23 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/runtime/InjectionQueue.d.ts +46 -0
  87. package/dist/runtime/InjectionQueue.d.ts.map +1 -0
  88. package/dist/runtime/InjectionQueue.js +128 -0
  89. package/dist/runtime/InjectionQueue.js.map +1 -0
  90. package/dist/runtime/Runtime.d.ts +24 -0
  91. package/dist/runtime/Runtime.d.ts.map +1 -0
  92. package/dist/runtime/Runtime.js +277 -0
  93. package/dist/runtime/Runtime.js.map +1 -0
  94. package/dist/runtime/WorkingMemory.d.ts +12 -0
  95. package/dist/runtime/WorkingMemory.d.ts.map +1 -0
  96. package/dist/runtime/WorkingMemory.js +29 -0
  97. package/dist/runtime/WorkingMemory.js.map +1 -0
  98. package/dist/runtime/index.d.ts +4 -0
  99. package/dist/runtime/index.d.ts.map +1 -0
  100. package/dist/runtime/index.js +4 -0
  101. package/dist/runtime/index.js.map +1 -0
  102. package/dist/session/SessionManager.d.ts +20 -0
  103. package/dist/session/SessionManager.d.ts.map +1 -0
  104. package/dist/session/SessionManager.js +134 -0
  105. package/dist/session/SessionManager.js.map +1 -0
  106. package/dist/session/SessionStore.d.ts +9 -0
  107. package/dist/session/SessionStore.d.ts.map +1 -0
  108. package/dist/session/SessionStore.js +2 -0
  109. package/dist/session/SessionStore.js.map +1 -0
  110. package/dist/session/index.d.ts +4 -0
  111. package/dist/session/index.d.ts.map +1 -0
  112. package/dist/session/index.js +3 -0
  113. package/dist/session/index.js.map +1 -0
  114. package/dist/session/stores/MemoryStore.d.ts +11 -0
  115. package/dist/session/stores/MemoryStore.d.ts.map +1 -0
  116. package/dist/session/stores/MemoryStore.js +34 -0
  117. package/dist/session/stores/MemoryStore.js.map +1 -0
  118. package/dist/tools/Tool.d.ts +10 -0
  119. package/dist/tools/Tool.d.ts.map +1 -0
  120. package/dist/tools/Tool.js +2 -0
  121. package/dist/tools/Tool.js.map +1 -0
  122. package/dist/tools/handoff.d.ts +25 -0
  123. package/dist/tools/handoff.d.ts.map +1 -0
  124. package/dist/tools/handoff.js +51 -0
  125. package/dist/tools/handoff.js.map +1 -0
  126. package/dist/tools/index.d.ts +4 -0
  127. package/dist/tools/index.d.ts.map +1 -0
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -0
  130. package/dist/types/index.d.ts +325 -0
  131. package/dist/types/index.d.ts.map +1 -0
  132. package/dist/types/index.js +2 -0
  133. package/dist/types/index.js.map +1 -0
  134. package/package.json +71 -0
@@ -0,0 +1,134 @@
1
+ export class SessionManager {
2
+ store;
3
+ defaultAgentId;
4
+ constructor(store, defaultAgentId) {
5
+ this.store = store;
6
+ this.defaultAgentId = defaultAgentId;
7
+ }
8
+ async create(userId, sessionId) {
9
+ const now = new Date();
10
+ const session = {
11
+ id: sessionId ?? crypto.randomUUID(),
12
+ userId,
13
+ createdAt: now,
14
+ updatedAt: now,
15
+ messages: [],
16
+ workingMemory: {},
17
+ currentAgent: this.defaultAgentId,
18
+ activeAgentId: this.defaultAgentId,
19
+ state: {},
20
+ metadata: {
21
+ createdAt: now,
22
+ lastActiveAt: now,
23
+ totalTokens: 0,
24
+ totalSteps: 0,
25
+ handoffHistory: [],
26
+ },
27
+ agentStates: {},
28
+ handoffHistory: [],
29
+ };
30
+ await this.store.save(session);
31
+ return session;
32
+ }
33
+ async getOrCreate(sessionId, userId) {
34
+ if (sessionId) {
35
+ const existing = await this.store.get(sessionId);
36
+ if (existing) {
37
+ return existing;
38
+ }
39
+ return this.create(userId, sessionId);
40
+ }
41
+ return this.create(userId);
42
+ }
43
+ async get(sessionId) {
44
+ return this.store.get(sessionId);
45
+ }
46
+ async save(session) {
47
+ session.updatedAt = new Date();
48
+ if (session.metadata) {
49
+ session.metadata.lastActiveAt = new Date();
50
+ }
51
+ await this.store.save(session);
52
+ }
53
+ async delete(sessionId) {
54
+ await this.store.delete(sessionId);
55
+ }
56
+ async listForUser(userId) {
57
+ return this.store.list(userId);
58
+ }
59
+ async recordHandoff(sessionId, fromAgentId, toAgentId, reason) {
60
+ const session = await this.store.get(sessionId);
61
+ if (!session) {
62
+ throw new Error(`Session ${sessionId} not found`);
63
+ }
64
+ session.currentAgent = toAgentId;
65
+ session.activeAgentId = toAgentId;
66
+ session.handoffHistory.push({
67
+ from: fromAgentId,
68
+ to: toAgentId,
69
+ reason,
70
+ timestamp: new Date(),
71
+ });
72
+ if (session.metadata) {
73
+ session.metadata.handoffHistory.push({
74
+ from: fromAgentId,
75
+ to: toAgentId,
76
+ reason,
77
+ timestamp: new Date(),
78
+ });
79
+ }
80
+ await this.save(session);
81
+ }
82
+ async updateStats(sessionId, tokensUsed, stepsCompleted) {
83
+ const session = await this.store.get(sessionId);
84
+ if (!session) {
85
+ throw new Error(`Session ${sessionId} not found`);
86
+ }
87
+ if (!session.metadata) {
88
+ session.metadata = {
89
+ createdAt: session.createdAt,
90
+ lastActiveAt: new Date(),
91
+ totalTokens: 0,
92
+ totalSteps: 0,
93
+ handoffHistory: session.handoffHistory ?? [],
94
+ };
95
+ }
96
+ session.metadata.totalTokens += tokensUsed;
97
+ session.metadata.totalSteps += stepsCompleted;
98
+ await this.save(session);
99
+ }
100
+ async setState(sessionId, key, value) {
101
+ const session = await this.store.get(sessionId);
102
+ if (!session) {
103
+ throw new Error(`Session ${sessionId} not found`);
104
+ }
105
+ if (!session.state) {
106
+ session.state = {};
107
+ }
108
+ session.state[key] = value;
109
+ await this.save(session);
110
+ }
111
+ async getState(sessionId, key) {
112
+ const session = await this.store.get(sessionId);
113
+ return session?.state?.[key];
114
+ }
115
+ async cleanup(maxAgeMs) {
116
+ if (this.store.cleanup) {
117
+ return this.store.cleanup(maxAgeMs);
118
+ }
119
+ return 0;
120
+ }
121
+ async updateAgentState(sessionId, agentId, state) {
122
+ const session = await this.store.get(sessionId);
123
+ if (!session) {
124
+ throw new Error(`Session ${sessionId} not found`);
125
+ }
126
+ session.agentStates[agentId] = {
127
+ agentId,
128
+ state,
129
+ lastActive: new Date(),
130
+ };
131
+ await this.save(session);
132
+ }
133
+ }
134
+ //# sourceMappingURL=SessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../src/session/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Session } from '../types/index.js';
2
+ export interface SessionStore {
3
+ get(id: string): Promise<Session | null>;
4
+ save(session: Session): Promise<void>;
5
+ delete(id: string): Promise<void>;
6
+ list(userId?: string): Promise<Session[]>;
7
+ cleanup?(maxAgeMs: number): Promise<number>;
8
+ }
9
+ //# sourceMappingURL=SessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStore.d.ts","sourceRoot":"","sources":["../../src/session/SessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStore.js","sourceRoot":"","sources":["../../src/session/SessionStore.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { SessionManager } from './SessionManager.js';
2
+ export type { SessionStore } from './SessionStore.js';
3
+ export { MemoryStore } from './stores/MemoryStore.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SessionManager } from './SessionManager.js';
2
+ export { MemoryStore } from './stores/MemoryStore.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Session } from '../../types/index.js';
2
+ import type { SessionStore } from '../SessionStore.js';
3
+ export declare class MemoryStore implements SessionStore {
4
+ private sessions;
5
+ get(id: string): Promise<Session | null>;
6
+ save(session: Session): Promise<void>;
7
+ delete(id: string): Promise<void>;
8
+ list(userId?: string): Promise<Session[]>;
9
+ cleanup(maxAgeMs: number): Promise<number>;
10
+ }
11
+ //# sourceMappingURL=MemoryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../../src/session/stores/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAExC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKxC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQzC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAcjD"}
@@ -0,0 +1,34 @@
1
+ export class MemoryStore {
2
+ sessions = new Map();
3
+ async get(id) {
4
+ const session = this.sessions.get(id);
5
+ return session ? structuredClone(session) : null;
6
+ }
7
+ async save(session) {
8
+ session.updatedAt = new Date();
9
+ this.sessions.set(session.id, structuredClone(session));
10
+ }
11
+ async delete(id) {
12
+ this.sessions.delete(id);
13
+ }
14
+ async list(userId) {
15
+ const all = Array.from(this.sessions.values());
16
+ if (userId) {
17
+ return all.filter(session => session.userId === userId);
18
+ }
19
+ return all;
20
+ }
21
+ async cleanup(maxAgeMs) {
22
+ const now = Date.now();
23
+ let deleted = 0;
24
+ for (const [id, session] of this.sessions) {
25
+ const age = now - session.updatedAt.getTime();
26
+ if (age > maxAgeMs) {
27
+ this.sessions.delete(id);
28
+ deleted += 1;
29
+ }
30
+ }
31
+ return deleted;
32
+ }
33
+ }
34
+ //# sourceMappingURL=MemoryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../../src/session/stores/MemoryStore.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,WAAW;IACd,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Tool as AiTool, ToolSet as AiToolSet } from 'ai';
2
+ import type { ZodTypeAny } from 'zod';
3
+ export type Tool<TInput = unknown, TResult = unknown> = AiTool<TInput, TResult>;
4
+ export type ToolSet = AiToolSet;
5
+ export interface ToolDefinition<TInput = unknown, TResult = unknown> {
6
+ description: string;
7
+ inputSchema: ZodTypeAny;
8
+ execute: (input: TInput) => Promise<TResult> | TResult;
9
+ }
10
+ //# sourceMappingURL=Tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/tools/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtC,MAAM,MAAM,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChF,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC;AAEhC,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CACxD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tool.js","sourceRoot":"","sources":["../../src/tools/Tool.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { AgentConfig } from '../types/index.js';
2
+ export interface HandoffResult {
3
+ __handoff: true;
4
+ targetAgentId: string;
5
+ targetAgent?: string;
6
+ reason: string;
7
+ summary?: string;
8
+ message?: string;
9
+ }
10
+ export declare function createHandoffTool(availableAgents: AgentConfig[], currentAgentId?: string): import("ai").Tool<{}, {
11
+ error: string;
12
+ }> | import("ai").Tool<{
13
+ targetAgentId: string;
14
+ reason: string;
15
+ summary?: string | undefined;
16
+ }, {
17
+ __handoff: true;
18
+ targetAgentId: string;
19
+ targetAgent: string;
20
+ reason: string;
21
+ summary: string | undefined;
22
+ message: string;
23
+ }>;
24
+ export declare function isHandoffResult(result: unknown): result is HandoffResult;
25
+ //# sourceMappingURL=handoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/tools/handoff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,WAAW,EAAE,EAC9B,cAAc,CAAC,EAAE,MAAM;;;;;;;;;;;;;GA6CxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa,CAQxE"}
@@ -0,0 +1,51 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export function createHandoffTool(availableAgents, currentAgentId) {
4
+ const currentAgent = currentAgentId
5
+ ? availableAgents.find(agent => agent.id === currentAgentId)
6
+ : undefined;
7
+ const targets = currentAgent?.canHandoffTo
8
+ ? availableAgents.filter(agent => currentAgent.canHandoffTo.includes(agent.id))
9
+ : availableAgents.filter(agent => agent.id !== currentAgentId);
10
+ if (targets.length === 0) {
11
+ return tool({
12
+ description: 'No other agents available for handoff.',
13
+ inputSchema: z.object({}),
14
+ execute: async () => ({
15
+ error: 'No handoff targets available',
16
+ }),
17
+ });
18
+ }
19
+ const agentDescriptions = targets
20
+ .map(agent => `- **${agent.id}** (${agent.name}): ${agent.description ?? 'No description provided'}`)
21
+ .join('\n');
22
+ return tool({
23
+ description: `Hand off the conversation to another specialized agent.\n\nAvailable agents:\n${agentDescriptions}\n\nProvide a clear reason for the handoff.`,
24
+ inputSchema: z.object({
25
+ targetAgentId: z.enum(targets.map(agent => agent.id))
26
+ .describe('The ID of the agent to hand off to'),
27
+ reason: z.string()
28
+ .describe('Why you are handing off - include relevant context'),
29
+ summary: z.string().optional()
30
+ .describe('Optional summary of what has been done so far'),
31
+ }),
32
+ execute: async ({ targetAgentId, reason, summary }) => {
33
+ return {
34
+ __handoff: true,
35
+ targetAgentId,
36
+ targetAgent: targetAgentId,
37
+ reason,
38
+ summary,
39
+ message: `Handing off to ${targetAgentId}: ${reason}`,
40
+ };
41
+ },
42
+ });
43
+ }
44
+ export function isHandoffResult(result) {
45
+ return (typeof result === 'object' &&
46
+ result !== null &&
47
+ '__handoff' in result &&
48
+ result.__handoff === true &&
49
+ ('targetAgentId' in result || 'targetAgent' in result));
50
+ }
51
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/tools/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,MAAM,UAAU,iBAAiB,CAC/B,eAA8B,EAC9B,cAAuB;IAEvB,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,cAAc,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,YAAY,EAAE,YAAY;QACxC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;YACV,WAAW,EAAE,wCAAwC;YACrD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACpB,KAAK,EAAE,8BAA8B;aACtC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO;SAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,IAAI,yBAAyB,EAAE,CAAC;SACpG,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,iFAAiF,iBAAiB,6CAA6C;QAC5J,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAA0B,CAAC;iBAC3E,QAAQ,CAAC,oCAAoC,CAAC;YACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;iBACf,QAAQ,CAAC,oDAAoD,CAAC;YACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC3B,QAAQ,CAAC,+CAA+C,CAAC;SAC7D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACpD,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,aAAa;gBACb,WAAW,EAAE,aAAa;gBAC1B,MAAM;gBACN,OAAO;gBACP,OAAO,EAAE,kBAAkB,aAAa,KAAK,MAAM,EAAE;aAC9B,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,WAAW,IAAI,MAAM;QACpB,MAAiC,CAAC,SAAS,KAAK,IAAI;QACrD,CAAC,eAAe,IAAI,MAAM,IAAI,aAAa,IAAI,MAAM,CAAC,CACvD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { Tool, ToolSet, ToolDefinition } from './Tool.js';
2
+ export { createHandoffTool, isHandoffResult } from './handoff.js';
3
+ export type { HandoffResult } from './handoff.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createHandoffTool, isHandoffResult } from './handoff.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}