@falai/agent 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +23 -30
  2. package/dist/adapters/MemoryAdapter.d.ts +1 -1
  3. package/dist/adapters/MemoryAdapter.js +1 -1
  4. package/dist/adapters/MongoAdapter.d.ts +1 -1
  5. package/dist/adapters/MongoAdapter.js +1 -1
  6. package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
  7. package/dist/adapters/PostgreSQLAdapter.js +1 -1
  8. package/dist/adapters/PrismaAdapter.d.ts +1 -1
  9. package/dist/adapters/PrismaAdapter.js +1 -1
  10. package/dist/adapters/RedisAdapter.d.ts +1 -1
  11. package/dist/adapters/RedisAdapter.js +1 -1
  12. package/dist/adapters/SQLiteAdapter.d.ts +1 -1
  13. package/dist/adapters/SQLiteAdapter.js +1 -1
  14. package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
  15. package/dist/cjs/adapters/MemoryAdapter.js +1 -1
  16. package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
  17. package/dist/cjs/adapters/MongoAdapter.js +1 -1
  18. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
  19. package/dist/cjs/adapters/PostgreSQLAdapter.js +1 -1
  20. package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
  21. package/dist/cjs/adapters/PrismaAdapter.js +1 -1
  22. package/dist/cjs/adapters/RedisAdapter.d.ts +1 -1
  23. package/dist/cjs/adapters/RedisAdapter.js +1 -1
  24. package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
  25. package/dist/cjs/adapters/SQLiteAdapter.js +1 -1
  26. package/dist/cjs/core/Agent.d.ts +8 -8
  27. package/dist/cjs/core/Agent.d.ts.map +1 -1
  28. package/dist/cjs/core/Agent.js +10 -10
  29. package/dist/cjs/core/Agent.js.map +1 -1
  30. package/dist/cjs/core/PersistenceManager.d.ts +10 -10
  31. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  32. package/dist/cjs/core/PersistenceManager.js +9 -9
  33. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  34. package/dist/cjs/core/RoutingEngine.d.ts +5 -5
  35. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  36. package/dist/cjs/core/RoutingEngine.js +5 -5
  37. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  38. package/dist/cjs/index.d.ts +1 -1
  39. package/dist/cjs/index.d.ts.map +1 -1
  40. package/dist/cjs/types/agent.d.ts +3 -3
  41. package/dist/cjs/types/agent.d.ts.map +1 -1
  42. package/dist/cjs/types/session.d.ts +9 -9
  43. package/dist/cjs/types/session.d.ts.map +1 -1
  44. package/dist/cjs/types/session.js +2 -2
  45. package/dist/cjs/types/session.js.map +1 -1
  46. package/dist/core/Agent.d.ts +8 -8
  47. package/dist/core/Agent.d.ts.map +1 -1
  48. package/dist/core/Agent.js +10 -10
  49. package/dist/core/Agent.js.map +1 -1
  50. package/dist/core/PersistenceManager.d.ts +10 -10
  51. package/dist/core/PersistenceManager.d.ts.map +1 -1
  52. package/dist/core/PersistenceManager.js +9 -9
  53. package/dist/core/PersistenceManager.js.map +1 -1
  54. package/dist/core/RoutingEngine.d.ts +5 -5
  55. package/dist/core/RoutingEngine.d.ts.map +1 -1
  56. package/dist/core/RoutingEngine.js +5 -5
  57. package/dist/core/RoutingEngine.js.map +1 -1
  58. package/dist/index.d.ts +1 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/types/agent.d.ts +3 -3
  61. package/dist/types/agent.d.ts.map +1 -1
  62. package/dist/types/session.d.ts +9 -9
  63. package/dist/types/session.d.ts.map +1 -1
  64. package/dist/types/session.js +2 -2
  65. package/dist/types/session.js.map +1 -1
  66. package/docs/ADAPTERS.md +1 -1
  67. package/docs/AGENT.md +9 -9
  68. package/docs/API_REFERENCE.md +15 -15
  69. package/docs/CONTEXT_MANAGEMENT.md +6 -6
  70. package/docs/CONTRIBUTING.md +3 -3
  71. package/docs/DOMAINS.md +2 -2
  72. package/docs/EXAMPLES.md +1 -1
  73. package/docs/GETTING_STARTED.md +3 -3
  74. package/docs/PERSISTENCE.md +11 -11
  75. package/docs/PROVIDERS.md +4 -4
  76. package/examples/business-onboarding.ts +1 -1
  77. package/examples/company-qna-agent.ts +1 -1
  78. package/examples/custom-database-persistence.ts +8 -8
  79. package/examples/declarative-agent.ts +1 -1
  80. package/examples/domain-scoping.ts +2 -2
  81. package/examples/extracted-data-modification.ts +1 -1
  82. package/examples/healthcare-agent.ts +1 -1
  83. package/examples/openai-agent.ts +1 -1
  84. package/examples/opensearch-persistence.ts +4 -4
  85. package/examples/persistent-onboarding.ts +2 -2
  86. package/examples/prisma-persistence.ts +4 -4
  87. package/examples/redis-persistence.ts +5 -5
  88. package/examples/route-transitions.ts +4 -4
  89. package/examples/rules-prohibitions.ts +3 -3
  90. package/examples/streaming-agent.ts +5 -5
  91. package/examples/travel-agent.ts +1 -1
  92. package/package.json +1 -1
  93. package/src/adapters/MemoryAdapter.ts +1 -1
  94. package/src/adapters/MongoAdapter.ts +1 -1
  95. package/src/adapters/PostgreSQLAdapter.ts +1 -1
  96. package/src/adapters/PrismaAdapter.ts +1 -1
  97. package/src/adapters/RedisAdapter.ts +1 -1
  98. package/src/adapters/SQLiteAdapter.ts +1 -1
  99. package/src/core/Agent.ts +23 -23
  100. package/src/core/PersistenceManager.ts +13 -13
  101. package/src/core/RoutingEngine.ts +15 -13
  102. package/src/index.ts +1 -1
  103. package/src/types/agent.ts +3 -3
  104. package/src/types/session.ts +15 -15
package/src/core/Agent.ts CHANGED
@@ -6,7 +6,7 @@ import type { AgentOptions, Term, Guideline, Capability } from "../types/agent";
6
6
  import type { Event, StepRef } from "../types/index";
7
7
  import type { RouteOptions } from "../types/route";
8
8
 
9
- import type { SessionStep } from "../types/session";
9
+ import type { SessionState } from "../types/session";
10
10
  import type { AgentStructuredResponse } from "../types/ai";
11
11
  import {
12
12
  createSession,
@@ -42,7 +42,7 @@ export class Agent<TContext = unknown> {
42
42
  private persistenceManager: PersistenceManager | undefined;
43
43
  private routingEngine: RoutingEngine<TContext>;
44
44
  private responseEngine: ResponseEngine<TContext>;
45
- private currentSession?: SessionStep;
45
+ private currentSession?: SessionState;
46
46
 
47
47
  /**
48
48
  * Dynamic domain property - populated via addDomain
@@ -236,9 +236,9 @@ export class Agent<TContext = unknown> {
236
236
  * @internal
237
237
  */
238
238
  private async updateData<TData = unknown>(
239
- session: SessionStep<TData>,
239
+ session: SessionState<TData>,
240
240
  collectedUpdate: Partial<TData>
241
- ): Promise<SessionStep<TData>> {
241
+ ): Promise<SessionState<TData>> {
242
242
  const previousCollected = { ...session.data };
243
243
 
244
244
  // Merge new collected data
@@ -279,14 +279,14 @@ export class Agent<TContext = unknown> {
279
279
  async *respondStream(params: {
280
280
  history: Event[];
281
281
  step?: StepRef;
282
- session?: SessionStep;
282
+ session?: SessionState;
283
283
  contextOverride?: Partial<TContext>;
284
284
  signal?: AbortSignal;
285
285
  }): AsyncGenerator<{
286
286
  delta: string;
287
287
  accumulated: string;
288
288
  done: boolean;
289
- session?: SessionStep;
289
+ session?: SessionState;
290
290
  toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
291
291
  isRouteComplete?: boolean;
292
292
  }> {
@@ -412,7 +412,7 @@ export class Agent<TContext = unknown> {
412
412
  description: this.options.description,
413
413
  personality: this.options.personality,
414
414
  },
415
- ai: this.options.ai,
415
+ provider: this.options.provider,
416
416
  context: effectiveContext,
417
417
  signal,
418
418
  });
@@ -491,7 +491,7 @@ export class Agent<TContext = unknown> {
491
491
  );
492
492
 
493
493
  // Generate message stream using AI provider
494
- const stream = this.options.ai.generateMessageStream({
494
+ const stream = this.options.provider.generateMessageStream({
495
495
  prompt: responsePrompt,
496
496
  history,
497
497
  context: effectiveContext,
@@ -548,7 +548,7 @@ export class Agent<TContext = unknown> {
548
548
  session.id &&
549
549
  this.options.persistence?.autoSave !== false
550
550
  ) {
551
- await this.persistenceManager.saveSessionStep(session.id, session);
551
+ await this.persistenceManager.saveSessionState(session.id, session);
552
552
  logger.debug(
553
553
  `[Agent] Auto-saved session step to persistence: ${session.id}`
554
554
  );
@@ -612,7 +612,7 @@ export class Agent<TContext = unknown> {
612
612
  );
613
613
 
614
614
  // Stream completion message using AI provider
615
- const stream = this.options.ai.generateMessageStream({
615
+ const stream = this.options.provider.generateMessageStream({
616
616
  prompt: completionPrompt,
617
617
  history,
618
618
  context: effectiveContext,
@@ -698,7 +698,7 @@ export class Agent<TContext = unknown> {
698
698
  .addCapabilities(this.capabilities)
699
699
  .build();
700
700
 
701
- const stream = this.options.ai.generateMessageStream({
701
+ const stream = this.options.provider.generateMessageStream({
702
702
  prompt: fallbackPrompt,
703
703
  history,
704
704
  context: effectiveContext,
@@ -740,12 +740,12 @@ export class Agent<TContext = unknown> {
740
740
  async respond(params: {
741
741
  history: Event[];
742
742
  step?: StepRef;
743
- session?: SessionStep;
743
+ session?: SessionState;
744
744
  contextOverride?: Partial<TContext>;
745
745
  signal?: AbortSignal;
746
746
  }): Promise<{
747
747
  message: string;
748
- session?: SessionStep;
748
+ session?: SessionState;
749
749
  toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
750
750
  isRouteComplete?: boolean;
751
751
  }> {
@@ -872,7 +872,7 @@ export class Agent<TContext = unknown> {
872
872
  description: this.options.description,
873
873
  personality: this.options.personality,
874
874
  },
875
- ai: this.options.ai,
875
+ provider: this.options.provider,
876
876
  context: effectiveContext,
877
877
  signal,
878
878
  });
@@ -956,7 +956,7 @@ export class Agent<TContext = unknown> {
956
956
  );
957
957
 
958
958
  // Generate message using AI provider
959
- const result = await this.options.ai.generateMessage({
959
+ const result = await this.options.provider.generateMessage({
960
960
  prompt: responsePrompt,
961
961
  history,
962
962
  context: effectiveContext,
@@ -1044,7 +1044,7 @@ export class Agent<TContext = unknown> {
1044
1044
  );
1045
1045
 
1046
1046
  // Generate completion message using AI provider
1047
- const completionResult = await this.options.ai.generateMessage({
1047
+ const completionResult = await this.options.provider.generateMessage({
1048
1048
  prompt: completionPrompt,
1049
1049
  history,
1050
1050
  context: effectiveContext,
@@ -1115,7 +1115,7 @@ export class Agent<TContext = unknown> {
1115
1115
  .addCapabilities(this.capabilities)
1116
1116
  .build();
1117
1117
 
1118
- const result = await this.options.ai.generateMessage({
1118
+ const result = await this.options.provider.generateMessage({
1119
1119
  prompt: fallbackPrompt,
1120
1120
  history,
1121
1121
  context: effectiveContext,
@@ -1142,7 +1142,7 @@ export class Agent<TContext = unknown> {
1142
1142
  session.id &&
1143
1143
  this.options.persistence?.autoSave !== false
1144
1144
  ) {
1145
- await this.persistenceManager.saveSessionStep(session.id, session);
1145
+ await this.persistenceManager.saveSessionState(session.id, session);
1146
1146
  logger.debug(
1147
1147
  `[Agent] Auto-saved session step to persistence: ${session.id}`
1148
1148
  );
@@ -1250,14 +1250,14 @@ export class Agent<TContext = unknown> {
1250
1250
  * Set the current session for convenience methods
1251
1251
  * @param session - Session step to use for subsequent calls
1252
1252
  */
1253
- setCurrentSession(session: SessionStep): void {
1253
+ setCurrentSession(session: SessionState): void {
1254
1254
  this.currentSession = session;
1255
1255
  }
1256
1256
 
1257
1257
  /**
1258
1258
  * Get the current session (if set)
1259
1259
  */
1260
- getCurrentSession(): SessionStep | undefined {
1260
+ getCurrentSession(): SessionState | undefined {
1261
1261
  return this.currentSession;
1262
1262
  }
1263
1263
 
@@ -1305,9 +1305,9 @@ export class Agent<TContext = unknown> {
1305
1305
  */
1306
1306
  nextStepRoute(
1307
1307
  routeIdOrTitle: string,
1308
- session?: SessionStep,
1308
+ session?: SessionState,
1309
1309
  condition?: string
1310
- ): SessionStep {
1310
+ ): SessionState {
1311
1311
  const targetSession = session || this.currentSession;
1312
1312
 
1313
1313
  if (!targetSession) {
@@ -1329,7 +1329,7 @@ export class Agent<TContext = unknown> {
1329
1329
  );
1330
1330
  }
1331
1331
 
1332
- const updatedSession: SessionStep = {
1332
+ const updatedSession: SessionState = {
1333
1333
  ...targetSession,
1334
1334
  pendingTransition: {
1335
1335
  targetRouteId: targetRoute.id,
@@ -14,7 +14,7 @@ import type {
14
14
  MessageRepository,
15
15
  } from "../types/persistence";
16
16
  import type { Event } from "../types/history";
17
- import type { SessionStep } from "../types/session";
17
+ import type { SessionState } from "../types/session";
18
18
  import {
19
19
  createSession,
20
20
  sessionStepToData,
@@ -223,12 +223,12 @@ export class PersistenceManager {
223
223
  }
224
224
 
225
225
  /**
226
- * Save SessionStep to database
227
- * Converts SessionStep to SessionData and persists it
226
+ * Save SessionState to database
227
+ * Converts SessionState to SessionData and persists it
228
228
  */
229
- async saveSessionStep<TData = Record<string, unknown>>(
229
+ async saveSessionState<TData = Record<string, unknown>>(
230
230
  sessionId: string,
231
- sessionStep: SessionStep<TData>
231
+ sessionStep: SessionState<TData>
232
232
  ): Promise<SessionData | null> {
233
233
  const persistenceData = sessionStepToData(sessionStep);
234
234
 
@@ -241,12 +241,12 @@ export class PersistenceManager {
241
241
  }
242
242
 
243
243
  /**
244
- * Load SessionStep from database
245
- * Converts SessionData to SessionStep
244
+ * Load SessionState from database
245
+ * Converts SessionData to SessionState
246
246
  */
247
- async loadSessionStep<TData = Record<string, unknown>>(
247
+ async loadSessionState<TData = Record<string, unknown>>(
248
248
  sessionId: string
249
- ): Promise<SessionStep<TData> | null> {
249
+ ): Promise<SessionState<TData> | null> {
250
250
  const sessionData = await this.sessionRepository.findById(sessionId);
251
251
 
252
252
  if (!sessionData) {
@@ -272,18 +272,18 @@ export class PersistenceManager {
272
272
  }
273
273
 
274
274
  /**
275
- * Create session with SessionStep support
276
- * Returns both SessionData and initialized SessionStep
275
+ * Create session with SessionState support
276
+ * Returns both SessionData and initialized SessionState
277
277
  */
278
278
  async createSessionWithStep<TData = Record<string, unknown>>(
279
279
  options: CreateSessionOptions
280
280
  ): Promise<{
281
281
  sessionData: SessionData;
282
- sessionStep: SessionStep<TData>;
282
+ sessionStep: SessionState<TData>;
283
283
  }> {
284
284
  const sessionData = await this.createSession(options);
285
285
 
286
- // Create SessionStep with database session ID
286
+ // Create SessionState with database session ID
287
287
  const sessionStep = createSession<TData>(sessionData.id, {
288
288
  createdAt: sessionData.createdAt,
289
289
  lastUpdatedAt: sessionData.updatedAt,
@@ -3,7 +3,7 @@ import type { Route } from "./Route";
3
3
  import type { Step } from "./Step";
4
4
  import type { StructuredSchema } from "../types/schema";
5
5
  import type { RoutingDecision } from "../types/routing";
6
- import type { SessionStep } from "../types/session";
6
+ import type { SessionState } from "../types/session";
7
7
  import type { AiProvider } from "../types/ai";
8
8
  import { enterRoute, mergeCollected } from "../types/session";
9
9
  import { PromptComposer } from "./PromptComposer";
@@ -42,7 +42,7 @@ export class RoutingEngine<TContext = unknown> {
42
42
  */
43
43
  private async decideSingleRouteStep(params: {
44
44
  route: Route<TContext, unknown>;
45
- session: SessionStep;
45
+ session: SessionState;
46
46
  history: Event[];
47
47
  agentMeta?: {
48
48
  name?: string;
@@ -50,17 +50,18 @@ export class RoutingEngine<TContext = unknown> {
50
50
  description?: string;
51
51
  personality?: string;
52
52
  };
53
- ai: AiProvider;
53
+ provider: AiProvider;
54
54
  context: TContext;
55
55
  signal?: AbortSignal;
56
56
  }): Promise<{
57
57
  selectedRoute?: Route<TContext>;
58
58
  selectedStep?: Step<TContext>;
59
59
  responseDirectives?: string[];
60
- session: SessionStep;
60
+ session: SessionState;
61
61
  isRouteComplete?: boolean;
62
62
  }> {
63
- const { route, session, history, agentMeta, ai, context, signal } = params;
63
+ const { route, session, history, agentMeta, provider, context, signal } =
64
+ params;
64
65
 
65
66
  let updatedSession = session;
66
67
  const selectedRoute = route;
@@ -138,7 +139,7 @@ export class RoutingEngine<TContext = unknown> {
138
139
  candidates.map((c) => c.step.id)
139
140
  );
140
141
 
141
- const stepResult = await ai.generateMessage<
142
+ const stepResult = await provider.generateMessage<
142
143
  TContext,
143
144
  {
144
145
  reasoning: string;
@@ -403,7 +404,7 @@ export class RoutingEngine<TContext = unknown> {
403
404
  */
404
405
  async decideRouteAndStep(params: {
405
406
  routes: Route<TContext, unknown>[];
406
- session: SessionStep;
407
+ session: SessionState;
407
408
  history: Event[];
408
409
  agentMeta?: {
409
410
  name?: string;
@@ -411,17 +412,18 @@ export class RoutingEngine<TContext = unknown> {
411
412
  description?: string;
412
413
  personality?: string;
413
414
  };
414
- ai: AiProvider;
415
+ provider: AiProvider;
415
416
  context: TContext;
416
417
  signal?: AbortSignal;
417
418
  }): Promise<{
418
419
  selectedRoute?: Route<TContext>;
419
420
  selectedStep?: Step<TContext>;
420
421
  responseDirectives?: string[];
421
- session: SessionStep;
422
+ session: SessionState;
422
423
  isRouteComplete?: boolean;
423
424
  }> {
424
- const { routes, session, history, agentMeta, ai, context, signal } = params;
425
+ const { routes, session, history, agentMeta, provider, context, signal } =
426
+ params;
425
427
 
426
428
  if (routes.length === 0) {
427
429
  return { session };
@@ -434,7 +436,7 @@ export class RoutingEngine<TContext = unknown> {
434
436
  session,
435
437
  history,
436
438
  agentMeta,
437
- ai,
439
+ provider,
438
440
  context,
439
441
  signal,
440
442
  });
@@ -504,7 +506,7 @@ export class RoutingEngine<TContext = unknown> {
504
506
  activeRouteSteps
505
507
  );
506
508
 
507
- const routingResult = await ai.generateMessage<
509
+ const routingResult = await provider.generateMessage<
508
510
  TContext,
509
511
  RoutingDecisionOutput
510
512
  >({
@@ -819,7 +821,7 @@ export class RoutingEngine<TContext = unknown> {
819
821
  description?: string;
820
822
  personality?: string;
821
823
  },
822
- session?: SessionStep,
824
+ session?: SessionState,
823
825
  activeRouteSteps?: Array<{
824
826
  stepId: string;
825
827
  description: string;
package/src/index.ts CHANGED
@@ -99,7 +99,7 @@ export type {
99
99
  RouteCompletionHandler,
100
100
  } from "./types/route";
101
101
 
102
- export type { SessionStep, PendingTransition } from "./types/session";
102
+ export type { SessionState, PendingTransition } from "./types/session";
103
103
  export {
104
104
  createSession,
105
105
  enterRoute,
@@ -6,7 +6,7 @@ import type { AiProvider } from "./ai";
6
6
  import type { ToolRef } from "./tool";
7
7
  import type { RouteOptions } from "./route";
8
8
  import type { PersistenceConfig } from "./persistence";
9
- import type { SessionStep } from "./session";
9
+ import type { SessionState } from "./session";
10
10
 
11
11
  /**
12
12
  * Composition mode determines how the agent processes and structures responses
@@ -80,13 +80,13 @@ export interface AgentOptions<TContext = unknown> {
80
80
  /** Default context data available to the agent */
81
81
  context?: TContext;
82
82
  /** Optional current session for convenience methods */
83
- session?: SessionStep;
83
+ session?: SessionState;
84
84
  /** Context provider function for always-fresh context (alternative to static context) */
85
85
  contextProvider?: ContextProvider<TContext>;
86
86
  /** Lifecycle hooks for context management */
87
87
  hooks?: ContextLifecycleHooks<TContext>;
88
88
  /** AI provider strategy for generating responses */
89
- ai: AiProvider;
89
+ provider: AiProvider;
90
90
  /** Composition mode for response generation */
91
91
  compositionMode?: CompositionMode;
92
92
  /** Initial terms for domain glossary */
@@ -18,7 +18,7 @@ export interface PendingTransition {
18
18
  * Session step tracks the current position in the conversation flow
19
19
  * and data collected during the route progression
20
20
  */
21
- export interface SessionStep<TData = Record<string, unknown>> {
21
+ export interface SessionState<TData = Record<string, unknown>> {
22
22
  /** Unique session identifier (useful for persistence) */
23
23
  id?: string;
24
24
 
@@ -78,8 +78,8 @@ export interface SessionStep<TData = Record<string, unknown>> {
78
78
  */
79
79
  export function createSession<TData = Record<string, unknown>>(
80
80
  sessionId?: string,
81
- metadata?: SessionStep<TData>["metadata"]
82
- ): SessionStep<TData> {
81
+ metadata?: SessionState<TData>["metadata"]
82
+ ): SessionState<TData> {
83
83
  return {
84
84
  id: sessionId,
85
85
  data: {},
@@ -98,10 +98,10 @@ export function createSession<TData = Record<string, unknown>>(
98
98
  * Preserves collected data per route in dataByRoute map
99
99
  */
100
100
  export function enterRoute<TData = Record<string, unknown>>(
101
- session: SessionStep<TData>,
101
+ session: SessionState<TData>,
102
102
  routeId: string,
103
103
  routeTitle: string
104
- ): SessionStep<TData> {
104
+ ): SessionState<TData> {
105
105
  // Save current route's collected data before switching
106
106
  const dataByRoute = { ...session.dataByRoute };
107
107
  if (
@@ -157,10 +157,10 @@ export function enterRoute<TData = Record<string, unknown>>(
157
157
  * Helper to update session with new step
158
158
  */
159
159
  export function enterStep<TData = Record<string, unknown>>(
160
- session: SessionStep<TData>,
160
+ session: SessionState<TData>,
161
161
  stepId: string,
162
162
  stepDescription?: string
163
- ): SessionStep<TData> {
163
+ ): SessionState<TData> {
164
164
  return {
165
165
  ...session,
166
166
  currentStep: {
@@ -180,9 +180,9 @@ export function enterStep<TData = Record<string, unknown>>(
180
180
  * Updates both the data field and the dataByRoute map
181
181
  */
182
182
  export function mergeCollected<TData = Record<string, unknown>>(
183
- session: SessionStep<TData>,
183
+ session: SessionState<TData>,
184
184
  data: Partial<unknown>
185
- ): SessionStep<TData> {
185
+ ): SessionState<TData> {
186
186
  const newCollected = {
187
187
  ...session.data,
188
188
  ...data,
@@ -206,11 +206,11 @@ export function mergeCollected<TData = Record<string, unknown>>(
206
206
  }
207
207
 
208
208
  /**
209
- * Helper to convert SessionStep to persistence-friendly format
209
+ * Helper to convert SessionState to persistence-friendly format
210
210
  * Used when saving to database
211
211
  */
212
212
  export function sessionStepToData<TData = Record<string, unknown>>(
213
- session: SessionStep<TData>
213
+ session: SessionState<TData>
214
214
  ): {
215
215
  currentRoute?: string;
216
216
  currentStep?: string;
@@ -231,7 +231,7 @@ export function sessionStepToData<TData = Record<string, unknown>>(
231
231
  }
232
232
 
233
233
  /**
234
- * Helper to convert database SessionData back to SessionStep
234
+ * Helper to convert database SessionData back to SessionState
235
235
  * Used when loading from database
236
236
  * @param sessionId - The database session ID
237
237
  * @param data - The database session data
@@ -243,7 +243,7 @@ export function sessionDataToStep<TData = Record<string, unknown>>(
243
243
  currentStep?: string;
244
244
  collectedData?: Record<string, unknown>;
245
245
  }
246
- ): SessionStep<TData> {
246
+ ): SessionState<TData> {
247
247
  const collectedData = data.collectedData || {};
248
248
 
249
249
  return {
@@ -268,7 +268,7 @@ export function sessionDataToStep<TData = Record<string, unknown>>(
268
268
  dataByRoute:
269
269
  (collectedData.dataByRoute as Record<string, Partial<unknown>>) || {}, // Restore per-route data
270
270
  routeHistory:
271
- (collectedData.routeHistory as SessionStep<TData>["routeHistory"]) || [],
272
- metadata: (collectedData.metadata as SessionStep<TData>["metadata"]) || {},
271
+ (collectedData.routeHistory as SessionState<TData>["routeHistory"]) || [],
272
+ metadata: (collectedData.metadata as SessionState<TData>["metadata"]) || {},
273
273
  };
274
274
  }