@falai/agent 0.5.3 → 0.5.5

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 (48) hide show
  1. package/README.md +20 -4
  2. package/dist/cjs/core/Agent.d.ts +0 -5
  3. package/dist/cjs/core/Agent.d.ts.map +1 -1
  4. package/dist/cjs/core/Agent.js +75 -157
  5. package/dist/cjs/core/Agent.js.map +1 -1
  6. package/dist/cjs/core/RoutingEngine.d.ts +68 -2
  7. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  8. package/dist/cjs/core/RoutingEngine.js +416 -2
  9. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  10. package/dist/cjs/core/State.js +2 -1
  11. package/dist/cjs/core/State.js.map +1 -1
  12. package/dist/cjs/types/route.d.ts +2 -0
  13. package/dist/cjs/types/route.d.ts.map +1 -1
  14. package/dist/cjs/utils/event.d.ts +6 -0
  15. package/dist/cjs/utils/event.d.ts.map +1 -0
  16. package/dist/cjs/utils/event.js +20 -0
  17. package/dist/cjs/utils/event.js.map +1 -0
  18. package/dist/core/Agent.d.ts +0 -5
  19. package/dist/core/Agent.d.ts.map +1 -1
  20. package/dist/core/Agent.js +74 -156
  21. package/dist/core/Agent.js.map +1 -1
  22. package/dist/core/RoutingEngine.d.ts +68 -2
  23. package/dist/core/RoutingEngine.d.ts.map +1 -1
  24. package/dist/core/RoutingEngine.js +416 -2
  25. package/dist/core/RoutingEngine.js.map +1 -1
  26. package/dist/core/State.js +2 -1
  27. package/dist/core/State.js.map +1 -1
  28. package/dist/types/route.d.ts +2 -0
  29. package/dist/types/route.d.ts.map +1 -1
  30. package/dist/utils/event.d.ts +6 -0
  31. package/dist/utils/event.d.ts.map +1 -0
  32. package/dist/utils/event.js +17 -0
  33. package/dist/utils/event.js.map +1 -0
  34. package/docs/API_REFERENCE.md +107 -26
  35. package/docs/ARCHITECTURE.md +83 -12
  36. package/docs/PERSISTENCE.md +18 -6
  37. package/examples/business-onboarding.ts +11 -0
  38. package/examples/custom-database-persistence.ts +533 -0
  39. package/examples/healthcare-agent.ts +28 -16
  40. package/examples/persistent-onboarding.ts +16 -10
  41. package/examples/prisma-persistence.ts +13 -2
  42. package/examples/travel-agent.ts +94 -52
  43. package/package.json +1 -1
  44. package/src/core/Agent.ts +78 -227
  45. package/src/core/RoutingEngine.ts +663 -2
  46. package/src/core/State.ts +1 -1
  47. package/src/types/route.ts +2 -0
  48. package/src/utils/event.ts +16 -0
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Core Agent implementation
3
3
  */
4
- import { createSession, enterRoute, enterState, mergeExtracted, } from "../types/session";
5
- import { EventKind } from "../types/history";
4
+ import { createSession, enterState, mergeExtracted } from "../types/session";
6
5
  import { PromptComposer } from "./PromptComposer";
7
6
  import { Route } from "./Route";
8
7
  import { DomainRegistry } from "./DomainRegistry";
@@ -10,18 +9,7 @@ import { PersistenceManager } from "./PersistenceManager";
10
9
  import { RoutingEngine } from "./RoutingEngine";
11
10
  import { ResponseEngine } from "./ResponseEngine";
12
11
  import { ToolExecutor } from "./ToolExecutor";
13
- /**
14
- * Helper to extract last message from history
15
- */
16
- function getLastMessageFromHistory(history) {
17
- for (let i = history.length - 1; i >= 0; i--) {
18
- const event = history[i];
19
- if (event.kind === EventKind.MESSAGE) {
20
- return event.data.message;
21
- }
22
- }
23
- return "";
24
- }
12
+ import { getLastMessageFromHistory } from "../utils/event";
25
13
  /**
26
14
  * Main Agent class with generic context support
27
15
  */
@@ -209,46 +197,6 @@ export class Agent {
209
197
  // Otherwise return the stored context
210
198
  return this.context;
211
199
  }
212
- /**
213
- * Determine the next state in a route based on extracted data
214
- * @internal
215
- */
216
- getNextState(route, currentState, extracted) {
217
- // If no current state, start from initial state
218
- if (!currentState) {
219
- // Check if initial state should be skipped
220
- if (route.initialState.shouldSkip(extracted)) {
221
- return this.getNextState(route, route.initialState, extracted);
222
- }
223
- return route.initialState;
224
- }
225
- // Get transitions from current state
226
- const transitions = currentState.getTransitions();
227
- // If no transitions, stay in current state
228
- if (transitions.length === 0) {
229
- return currentState;
230
- }
231
- // Try to find the next state to transition to
232
- for (const transition of transitions) {
233
- const target = transition.getTarget();
234
- if (!target)
235
- continue;
236
- // Check if target state should be skipped
237
- if (target.shouldSkip(extracted)) {
238
- // Recursively find next non-skipped state
239
- return this.getNextState(route, target, extracted);
240
- }
241
- // Check if target state has required data
242
- if (!target.hasRequiredData(extracted)) {
243
- // Cannot enter this state yet, stay in current state
244
- continue;
245
- }
246
- // Found valid next state
247
- return target;
248
- }
249
- // No valid transition found, stay in current state
250
- return currentState;
251
- }
252
200
  /**
253
201
  * Generate a response based on history and context as a stream
254
202
  */
@@ -296,69 +244,54 @@ export class Agent {
296
244
  }
297
245
  }
298
246
  }
299
- // PHASE 2: ROUTING - Determine which route to use
247
+ // PHASE 2: ROUTING + STATE SELECTION - Determine which route and state to use (combined)
300
248
  let selectedRoute;
301
249
  let responseDirectives;
250
+ let selectedState;
302
251
  if (this.routes.length > 0) {
303
- // Get last user message
304
- const lastUserMessage = getLastMessageFromHistory(history);
305
- // Build routing schema
306
- const routingSchema = this.routingEngine.buildDynamicRoutingSchema(this.routes);
307
- // Build routing prompt with session context
308
- const routingPrompt = this.routingEngine.buildRoutingPrompt(history, this.routes, lastUserMessage, {
309
- name: this.options.name,
310
- goal: this.options.goal,
311
- description: this.options.description,
312
- personality: this.options.personality,
313
- }, session // Pass session for context-aware routing
314
- );
315
- // Call AI to score routes (non-streaming for routing decision)
316
- const routingResult = await this.options.ai.generateMessage({
317
- prompt: routingPrompt,
252
+ const orchestration = await this.routingEngine.decideRouteAndState({
253
+ routes: this.routes,
254
+ session,
318
255
  history,
256
+ agentMeta: {
257
+ name: this.options.name,
258
+ goal: this.options.goal,
259
+ description: this.options.description,
260
+ personality: this.options.personality,
261
+ },
262
+ ai: this.options.ai,
319
263
  context: effectiveContext,
320
264
  signal,
321
- parameters: {
322
- jsonSchema: routingSchema,
323
- schemaName: "routing_output",
324
- },
325
265
  });
326
- // Select best route from scores
327
- if (routingResult.structured?.routes) {
328
- const decision = this.routingEngine.decideRouteFromScores({
329
- context: routingResult.structured.context,
330
- routes: routingResult.structured.routes,
331
- responseDirectives: routingResult.structured.responseDirectives,
332
- });
333
- selectedRoute = this.routes.find((r) => r.id === decision.routeId);
334
- responseDirectives = routingResult.structured.responseDirectives;
335
- if (selectedRoute) {
336
- console.log(`[Agent] Selected route: ${selectedRoute.title} (score: ${decision.maxScore})`);
337
- // Update session with selected route (if changed)
338
- if (!session.currentRoute ||
339
- session.currentRoute.id !== selectedRoute.id) {
340
- session = enterRoute(session, selectedRoute.id, selectedRoute.title);
341
- // Merge initial data if provided by the route
342
- if (selectedRoute.initialData) {
343
- session = mergeExtracted(session, selectedRoute.initialData);
344
- console.log(`[Agent] Merged initial data:`, selectedRoute.initialData);
345
- }
346
- console.log(`[Agent] Entered route: ${selectedRoute.title}`);
347
- }
348
- }
349
- }
266
+ selectedRoute = orchestration.selectedRoute;
267
+ selectedState = orchestration.selectedState;
268
+ responseDirectives = orchestration.responseDirectives;
269
+ session = orchestration.session;
350
270
  }
351
- // PHASE 3: RESPONSE - Stream message using selected route
271
+ // PHASE 3: DETERMINE NEXT STATE - Use state from combined decision or get initial state
352
272
  if (selectedRoute) {
353
- // Determine next state based on current extracted data
354
- const currentStateRef = session.currentState;
355
- const currentState = currentStateRef
356
- ? selectedRoute.getState(currentStateRef.id)
357
- : undefined;
358
- const nextState = this.getNextState(selectedRoute, currentState, session.extracted);
273
+ let nextState;
274
+ // If we have a selected state from the combined routing decision, use it
275
+ if (selectedState) {
276
+ nextState = selectedState;
277
+ }
278
+ else {
279
+ // New route or no state selected - get initial state or first valid state
280
+ const candidates = this.routingEngine.getCandidateStates(selectedRoute, undefined, session.extracted);
281
+ if (candidates.length > 0) {
282
+ nextState = candidates[0].state;
283
+ console.log(`[Agent] Using first valid state: ${nextState.id} for new route`);
284
+ }
285
+ else {
286
+ // Fallback to initial state even if it should be skipped
287
+ nextState = selectedRoute.initialState;
288
+ console.warn(`[Agent] No valid states found, using initial state: ${nextState.id}`);
289
+ }
290
+ }
359
291
  // Update session with next state
360
292
  session = enterState(session, nextState.id, nextState.description);
361
293
  console.log(`[Agent] Entered state: ${nextState.id}`);
294
+ // PHASE 4: RESPONSE GENERATION - Stream message using selected route and state
362
295
  // Get last user message
363
296
  const lastUserMessage = getLastMessageFromHistory(history);
364
297
  // Build response schema for this route (with gather fields from state)
@@ -514,71 +447,56 @@ export class Agent {
514
447
  }
515
448
  }
516
449
  }
517
- // PHASE 2: ROUTING - Determine which route to use
450
+ // PHASE 2: ROUTING + STATE SELECTION - Determine which route and state to use (combined)
518
451
  let selectedRoute;
519
452
  let responseDirectives;
453
+ let selectedState;
520
454
  if (this.routes.length > 0) {
521
- // Get last user message
522
- const lastUserMessage = getLastMessageFromHistory(history);
523
- // Build routing schema
524
- const routingSchema = this.routingEngine.buildDynamicRoutingSchema(this.routes);
525
- // Build routing prompt with session context
526
- const routingPrompt = this.routingEngine.buildRoutingPrompt(history, this.routes, lastUserMessage, {
527
- name: this.options.name,
528
- goal: this.options.goal,
529
- description: this.options.description,
530
- personality: this.options.personality,
531
- }, session // Pass session for context-aware routing
532
- );
533
- // Call AI to score routes
534
- const routingResult = await this.options.ai.generateMessage({
535
- prompt: routingPrompt,
455
+ const orchestration = await this.routingEngine.decideRouteAndState({
456
+ routes: this.routes,
457
+ session,
536
458
  history,
459
+ agentMeta: {
460
+ name: this.options.name,
461
+ goal: this.options.goal,
462
+ description: this.options.description,
463
+ personality: this.options.personality,
464
+ },
465
+ ai: this.options.ai,
537
466
  context: effectiveContext,
538
467
  signal,
539
- parameters: {
540
- jsonSchema: routingSchema,
541
- schemaName: "routing_output",
542
- },
543
468
  });
544
- // Select best route from scores
545
- if (routingResult.structured?.routes) {
546
- const decision = this.routingEngine.decideRouteFromScores({
547
- context: routingResult.structured.context,
548
- routes: routingResult.structured.routes,
549
- responseDirectives: routingResult.structured.responseDirectives,
550
- });
551
- selectedRoute = this.routes.find((r) => r.id === decision.routeId);
552
- responseDirectives = routingResult.structured.responseDirectives;
553
- if (selectedRoute) {
554
- console.log(`[Agent] Selected route: ${selectedRoute.title} (score: ${decision.maxScore})`);
555
- // Update session with selected route (if changed)
556
- if (!session.currentRoute ||
557
- session.currentRoute.id !== selectedRoute.id) {
558
- session = enterRoute(session, selectedRoute.id, selectedRoute.title);
559
- // Merge initial data if provided by the route
560
- if (selectedRoute.initialData) {
561
- session = mergeExtracted(session, selectedRoute.initialData);
562
- console.log(`[Agent] Merged initial data:`, selectedRoute.initialData);
563
- }
564
- console.log(`[Agent] Entered route: ${selectedRoute.title}`);
565
- }
566
- }
567
- }
469
+ selectedRoute = orchestration.selectedRoute;
470
+ selectedState = orchestration.selectedState;
471
+ responseDirectives = orchestration.responseDirectives;
472
+ session = orchestration.session;
568
473
  }
569
- // PHASE 3: RESPONSE - Generate message using selected route
474
+ // PHASE 3: DETERMINE NEXT STATE - Use state from combined decision or get initial state
570
475
  let message;
571
476
  const toolCalls = undefined;
572
477
  if (selectedRoute) {
573
- // Determine next state based on current extracted data
574
- const currentStateRef = session.currentState;
575
- const currentState = currentStateRef
576
- ? selectedRoute.getState(currentStateRef.id)
577
- : undefined;
578
- const nextState = this.getNextState(selectedRoute, currentState, session.extracted);
478
+ let nextState;
479
+ // If we have a selected state from the combined routing decision, use it
480
+ if (selectedState) {
481
+ nextState = selectedState;
482
+ }
483
+ else {
484
+ // New route or no state selected - get initial state or first valid state
485
+ const candidates = this.routingEngine.getCandidateStates(selectedRoute, undefined, session.extracted);
486
+ if (candidates.length > 0) {
487
+ nextState = candidates[0].state;
488
+ console.log(`[Agent] Using first valid state: ${nextState.id} for new route`);
489
+ }
490
+ else {
491
+ // Fallback to initial state even if it should be skipped
492
+ nextState = selectedRoute.initialState;
493
+ console.warn(`[Agent] No valid states found, using initial state: ${nextState.id}`);
494
+ }
495
+ }
579
496
  // Update session with next state
580
497
  session = enterState(session, nextState.id, nextState.description);
581
498
  console.log(`[Agent] Entered state: ${nextState.id}`);
499
+ // PHASE 4: RESPONSE GENERATION - Generate message using selected route and state
582
500
  // Get last user message
583
501
  const lastUserMessage = getLastMessageFromHistory(history);
584
502
  // Build response schema for this route (with gather fields from state)
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import type { Event } from "../types/history";
2
2
  import type { Route } from "./Route";
3
+ import type { State } from "./State";
3
4
  import type { StructuredSchema } from "../types/schema";
4
5
  import type { RoutingDecision } from "../types/routing";
5
6
  import type { SessionState } from "../types/session";
7
+ import type { AiProvider } from "../types/ai";
6
8
  export interface RoutingDecisionOutput {
7
9
  context: string;
8
10
  routes: Record<string, number>;
11
+ selectedStateId?: string;
12
+ stateReasoning?: string;
9
13
  responseDirectives?: string[];
10
14
  extractions?: Array<{
11
15
  name: string;
@@ -23,13 +27,75 @@ export interface RoutingEngineOptions {
23
27
  export declare class RoutingEngine<TContext = unknown> {
24
28
  private readonly options?;
25
29
  constructor(options?: RoutingEngineOptions | undefined);
26
- buildDynamicRoutingSchema(routes: Route<TContext>[], extrasSchema?: StructuredSchema): StructuredSchema;
30
+ /**
31
+ * Optimized decision for single-route scenarios
32
+ * Skips route scoring and only does state selection
33
+ * @private
34
+ */
35
+ private decideSingleRouteState;
36
+ /**
37
+ * Identify valid next candidate states based on current state and extracted data
38
+ * Returns state with isRouteComplete flag if route is complete (all states skipped + has END_ROUTE transition)
39
+ */
40
+ getCandidateStates<TExtracted = unknown>(route: Route<TContext, TExtracted>, currentState: State<TContext, TExtracted> | undefined, extracted: Partial<TExtracted>): Array<{
41
+ state: State<TContext, TExtracted>;
42
+ condition?: string;
43
+ requiredData?: string[];
44
+ gatherFields?: string[];
45
+ isRouteComplete?: boolean;
46
+ }>;
47
+ /**
48
+ * Full routing orchestration: builds prompt and schema, calls AI, selects route/state,
49
+ * and updates the session (including initialData merge when entering a new route).
50
+ *
51
+ * OPTIMIZATION: If there's only 1 route, skips route scoring and only does state selection.
52
+ */
53
+ decideRouteAndState(params: {
54
+ routes: Route<TContext, unknown>[];
55
+ session: SessionState;
56
+ history: Event[];
57
+ agentMeta?: {
58
+ name?: string;
59
+ goal?: string;
60
+ description?: string;
61
+ personality?: string;
62
+ };
63
+ ai: AiProvider;
64
+ context: TContext;
65
+ signal?: AbortSignal;
66
+ }): Promise<{
67
+ selectedRoute?: Route<TContext>;
68
+ selectedState?: State<TContext>;
69
+ responseDirectives?: string[];
70
+ session: SessionState;
71
+ isRouteComplete?: boolean;
72
+ }>;
73
+ /**
74
+ * Build prompt for state selection within a single route
75
+ * @private
76
+ */
77
+ private buildStateSelectionPrompt;
78
+ /**
79
+ * Build schema for state selection
80
+ * @private
81
+ */
82
+ private buildStateSelectionSchema;
83
+ buildDynamicRoutingSchema(routes: Route<TContext>[], extrasSchema?: StructuredSchema, activeRouteStates?: {
84
+ stateId: string;
85
+ description: string;
86
+ }[]): StructuredSchema;
27
87
  buildRoutingPrompt(history: Event[], routes: Route<TContext>[], lastMessage: string, agentMeta?: {
28
88
  name?: string;
29
89
  goal?: string;
30
90
  description?: string;
31
91
  personality?: string;
32
- }, session?: SessionState): string;
92
+ }, session?: SessionState, activeRouteStates?: Array<{
93
+ stateId: string;
94
+ description: string;
95
+ condition?: string;
96
+ requiredData?: string[];
97
+ gatherFields?: string[];
98
+ }>): string;
33
99
  decideRouteFromScores(output: RoutingDecision): {
34
100
  routeId: string;
35
101
  maxScore: number;
@@ -1 +1 @@
1
- {"version":3,"file":"RoutingEngine.d.ts","sourceRoot":"","sources":["../../src/core/RoutingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QAEb,KAAK,EAAE,GAAG,CAAC;QACX,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;KAChC,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAa,CAAC,QAAQ,GAAG,OAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,oBAAoB,YAAA;IAE3D,yBAAyB,CACvB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,EACzB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,gBAAgB;IAiDnB,kBAAkB,CAChB,OAAO,EAAE,KAAK,EAAE,EAChB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EACD,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM;IA0DT,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG;QAC9C,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB;CAUF"}
1
+ {"version":3,"file":"RoutingEngine.d.ts","sourceRoot":"","sources":["../../src/core/RoutingEngine.ts"],"names":[],"mappings":"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"}