@falai/agent 0.6.8 → 0.7.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 (231) hide show
  1. package/README.md +62 -59
  2. package/dist/adapters/MemoryAdapter.js +2 -2
  3. package/dist/adapters/MemoryAdapter.js.map +1 -1
  4. package/dist/adapters/MongoAdapter.js +2 -2
  5. package/dist/adapters/MongoAdapter.js.map +1 -1
  6. package/dist/adapters/OpenSearchAdapter.js +7 -7
  7. package/dist/adapters/OpenSearchAdapter.js.map +1 -1
  8. package/dist/adapters/PostgreSQLAdapter.js +9 -9
  9. package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
  10. package/dist/adapters/PrismaAdapter.js +3 -3
  11. package/dist/adapters/PrismaAdapter.js.map +1 -1
  12. package/dist/adapters/RedisAdapter.js +2 -2
  13. package/dist/adapters/RedisAdapter.js.map +1 -1
  14. package/dist/adapters/SQLiteAdapter.d.ts +3 -3
  15. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
  16. package/dist/adapters/SQLiteAdapter.js +11 -11
  17. package/dist/adapters/SQLiteAdapter.js.map +1 -1
  18. package/dist/adapters/index.d.ts +1 -1
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/cjs/adapters/MemoryAdapter.js +2 -2
  21. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
  22. package/dist/cjs/adapters/MongoAdapter.js +2 -2
  23. package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
  24. package/dist/cjs/adapters/OpenSearchAdapter.js +7 -7
  25. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
  26. package/dist/cjs/adapters/PostgreSQLAdapter.js +9 -9
  27. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
  28. package/dist/cjs/adapters/PrismaAdapter.js +3 -3
  29. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
  30. package/dist/cjs/adapters/RedisAdapter.js +2 -2
  31. package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
  32. package/dist/cjs/adapters/SQLiteAdapter.d.ts +3 -3
  33. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
  34. package/dist/cjs/adapters/SQLiteAdapter.js +11 -11
  35. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
  36. package/dist/cjs/adapters/index.d.ts +1 -1
  37. package/dist/cjs/adapters/index.d.ts.map +1 -1
  38. package/dist/cjs/constants/index.d.ts +4 -4
  39. package/dist/cjs/constants/index.js +5 -5
  40. package/dist/cjs/core/Agent.d.ts +22 -22
  41. package/dist/cjs/core/Agent.d.ts.map +1 -1
  42. package/dist/cjs/core/Agent.js +160 -152
  43. package/dist/cjs/core/Agent.js.map +1 -1
  44. package/dist/cjs/core/Events.d.ts +6 -6
  45. package/dist/cjs/core/Events.d.ts.map +1 -1
  46. package/dist/cjs/core/PersistenceManager.d.ts +13 -13
  47. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
  48. package/dist/cjs/core/PersistenceManager.js +24 -24
  49. package/dist/cjs/core/PersistenceManager.js.map +1 -1
  50. package/dist/cjs/core/ResponseEngine.d.ts +3 -8
  51. package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
  52. package/dist/cjs/core/ResponseEngine.js +8 -8
  53. package/dist/cjs/core/ResponseEngine.js.map +1 -1
  54. package/dist/cjs/core/Route.d.ts +17 -17
  55. package/dist/cjs/core/Route.d.ts.map +1 -1
  56. package/dist/cjs/core/Route.js +33 -33
  57. package/dist/cjs/core/Route.js.map +1 -1
  58. package/dist/cjs/core/RoutingEngine.d.ts +30 -30
  59. package/dist/cjs/core/RoutingEngine.d.ts.map +1 -1
  60. package/dist/cjs/core/RoutingEngine.js +192 -192
  61. package/dist/cjs/core/RoutingEngine.js.map +1 -1
  62. package/dist/cjs/core/Step.d.ts +72 -0
  63. package/dist/cjs/core/Step.d.ts.map +1 -0
  64. package/dist/cjs/core/Step.js +150 -0
  65. package/dist/cjs/core/Step.js.map +1 -0
  66. package/dist/cjs/core/ToolExecutor.d.ts +5 -5
  67. package/dist/cjs/core/ToolExecutor.d.ts.map +1 -1
  68. package/dist/cjs/core/ToolExecutor.js +8 -8
  69. package/dist/cjs/core/ToolExecutor.js.map +1 -1
  70. package/dist/cjs/core/Transition.d.ts +14 -14
  71. package/dist/cjs/core/Transition.d.ts.map +1 -1
  72. package/dist/cjs/core/Transition.js +48 -19
  73. package/dist/cjs/core/Transition.js.map +1 -1
  74. package/dist/cjs/index.d.ts +7 -7
  75. package/dist/cjs/index.d.ts.map +1 -1
  76. package/dist/cjs/index.js +8 -8
  77. package/dist/cjs/index.js.map +1 -1
  78. package/dist/cjs/types/agent.d.ts +8 -8
  79. package/dist/cjs/types/agent.d.ts.map +1 -1
  80. package/dist/cjs/types/ai.d.ts +2 -2
  81. package/dist/cjs/types/ai.d.ts.map +1 -1
  82. package/dist/cjs/types/history.d.ts +3 -3
  83. package/dist/cjs/types/history.d.ts.map +1 -1
  84. package/dist/cjs/types/index.d.ts +1 -1
  85. package/dist/cjs/types/index.d.ts.map +1 -1
  86. package/dist/cjs/types/persistence.d.ts +5 -5
  87. package/dist/cjs/types/persistence.d.ts.map +1 -1
  88. package/dist/cjs/types/route.d.ts +57 -52
  89. package/dist/cjs/types/route.d.ts.map +1 -1
  90. package/dist/cjs/types/session.d.ts +27 -27
  91. package/dist/cjs/types/session.d.ts.map +1 -1
  92. package/dist/cjs/types/session.js +48 -50
  93. package/dist/cjs/types/session.js.map +1 -1
  94. package/dist/cjs/types/tool.d.ts +13 -13
  95. package/dist/cjs/types/tool.d.ts.map +1 -1
  96. package/dist/cjs/utils/id.d.ts +8 -3
  97. package/dist/cjs/utils/id.d.ts.map +1 -1
  98. package/dist/cjs/utils/id.js +16 -7
  99. package/dist/cjs/utils/id.js.map +1 -1
  100. package/dist/constants/index.d.ts +4 -4
  101. package/dist/constants/index.js +4 -4
  102. package/dist/core/Agent.d.ts +22 -22
  103. package/dist/core/Agent.d.ts.map +1 -1
  104. package/dist/core/Agent.js +162 -154
  105. package/dist/core/Agent.js.map +1 -1
  106. package/dist/core/Events.d.ts +6 -6
  107. package/dist/core/Events.d.ts.map +1 -1
  108. package/dist/core/PersistenceManager.d.ts +13 -13
  109. package/dist/core/PersistenceManager.d.ts.map +1 -1
  110. package/dist/core/PersistenceManager.js +25 -25
  111. package/dist/core/PersistenceManager.js.map +1 -1
  112. package/dist/core/ResponseEngine.d.ts +3 -8
  113. package/dist/core/ResponseEngine.d.ts.map +1 -1
  114. package/dist/core/ResponseEngine.js +8 -8
  115. package/dist/core/ResponseEngine.js.map +1 -1
  116. package/dist/core/Route.d.ts +17 -17
  117. package/dist/core/Route.d.ts.map +1 -1
  118. package/dist/core/Route.js +33 -33
  119. package/dist/core/Route.js.map +1 -1
  120. package/dist/core/RoutingEngine.d.ts +30 -30
  121. package/dist/core/RoutingEngine.d.ts.map +1 -1
  122. package/dist/core/RoutingEngine.js +193 -193
  123. package/dist/core/RoutingEngine.js.map +1 -1
  124. package/dist/core/Step.d.ts +72 -0
  125. package/dist/core/Step.d.ts.map +1 -0
  126. package/dist/core/Step.js +146 -0
  127. package/dist/core/Step.js.map +1 -0
  128. package/dist/core/ToolExecutor.d.ts +5 -5
  129. package/dist/core/ToolExecutor.d.ts.map +1 -1
  130. package/dist/core/ToolExecutor.js +8 -8
  131. package/dist/core/ToolExecutor.js.map +1 -1
  132. package/dist/core/Transition.d.ts +14 -14
  133. package/dist/core/Transition.d.ts.map +1 -1
  134. package/dist/core/Transition.js +48 -19
  135. package/dist/core/Transition.js.map +1 -1
  136. package/dist/index.d.ts +7 -7
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +4 -4
  139. package/dist/index.js.map +1 -1
  140. package/dist/types/agent.d.ts +8 -8
  141. package/dist/types/agent.d.ts.map +1 -1
  142. package/dist/types/ai.d.ts +2 -2
  143. package/dist/types/ai.d.ts.map +1 -1
  144. package/dist/types/history.d.ts +3 -3
  145. package/dist/types/history.d.ts.map +1 -1
  146. package/dist/types/index.d.ts +1 -1
  147. package/dist/types/index.d.ts.map +1 -1
  148. package/dist/types/persistence.d.ts +5 -5
  149. package/dist/types/persistence.d.ts.map +1 -1
  150. package/dist/types/route.d.ts +57 -52
  151. package/dist/types/route.d.ts.map +1 -1
  152. package/dist/types/session.d.ts +27 -27
  153. package/dist/types/session.d.ts.map +1 -1
  154. package/dist/types/session.js +44 -46
  155. package/dist/types/session.js.map +1 -1
  156. package/dist/types/tool.d.ts +13 -13
  157. package/dist/types/tool.d.ts.map +1 -1
  158. package/dist/utils/id.d.ts +8 -3
  159. package/dist/utils/id.d.ts.map +1 -1
  160. package/dist/utils/id.js +14 -6
  161. package/dist/utils/id.js.map +1 -1
  162. package/docs/ADAPTERS.md +21 -21
  163. package/docs/AGENT.md +57 -55
  164. package/docs/API_REFERENCE.md +218 -220
  165. package/docs/ARCHITECTURE.md +99 -104
  166. package/docs/CONTEXT_MANAGEMENT.md +81 -88
  167. package/docs/DOCS.md +18 -18
  168. package/docs/DOMAINS.md +16 -16
  169. package/docs/EXAMPLES.md +43 -43
  170. package/docs/GETTING_STARTED.md +60 -63
  171. package/docs/PERSISTENCE.md +66 -70
  172. package/docs/PROVIDERS.md +2 -2
  173. package/docs/README.md +6 -6
  174. package/docs/ROUTES.md +218 -220
  175. package/docs/STEPS.md +883 -0
  176. package/examples/business-onboarding.ts +84 -81
  177. package/examples/company-qna-agent.ts +68 -67
  178. package/examples/custom-database-persistence.ts +87 -89
  179. package/examples/declarative-agent.ts +32 -32
  180. package/examples/domain-scoping.ts +18 -18
  181. package/examples/extracted-data-modification.ts +92 -97
  182. package/examples/healthcare-agent.ts +89 -91
  183. package/examples/openai-agent.ts +29 -32
  184. package/examples/opensearch-persistence.ts +43 -45
  185. package/examples/persistent-onboarding.ts +65 -66
  186. package/examples/prisma-persistence.ts +108 -112
  187. package/examples/prisma-schema.example.prisma +3 -3
  188. package/examples/redis-persistence.ts +67 -73
  189. package/examples/route-transitions.ts +71 -47
  190. package/examples/rules-prohibitions.ts +28 -28
  191. package/examples/streaming-agent.ts +24 -24
  192. package/examples/travel-agent.ts +94 -109
  193. package/package.json +1 -1
  194. package/src/adapters/MemoryAdapter.ts +3 -3
  195. package/src/adapters/MongoAdapter.ts +3 -3
  196. package/src/adapters/OpenSearchAdapter.ts +8 -8
  197. package/src/adapters/PostgreSQLAdapter.ts +10 -10
  198. package/src/adapters/PrismaAdapter.ts +4 -4
  199. package/src/adapters/RedisAdapter.ts +3 -3
  200. package/src/adapters/SQLiteAdapter.ts +15 -15
  201. package/src/adapters/index.ts +1 -1
  202. package/src/constants/index.ts +4 -4
  203. package/src/core/Agent.ts +210 -206
  204. package/src/core/Events.ts +12 -12
  205. package/src/core/PersistenceManager.ts +32 -36
  206. package/src/core/ResponseEngine.ts +11 -17
  207. package/src/core/Route.ts +55 -49
  208. package/src/core/RoutingEngine.ts +244 -252
  209. package/src/core/Step.ts +197 -0
  210. package/src/core/ToolExecutor.ts +11 -11
  211. package/src/core/Transition.ts +72 -26
  212. package/src/index.ts +8 -8
  213. package/src/types/agent.ts +8 -8
  214. package/src/types/ai.ts +2 -2
  215. package/src/types/history.ts +3 -3
  216. package/src/types/index.ts +1 -1
  217. package/src/types/persistence.ts +6 -6
  218. package/src/types/route.ts +77 -61
  219. package/src/types/session.ts +75 -78
  220. package/src/types/tool.ts +17 -17
  221. package/src/utils/id.ts +15 -6
  222. package/dist/cjs/core/State.d.ts +0 -72
  223. package/dist/cjs/core/State.d.ts.map +0 -1
  224. package/dist/cjs/core/State.js +0 -148
  225. package/dist/cjs/core/State.js.map +0 -1
  226. package/dist/core/State.d.ts +0 -72
  227. package/dist/core/State.d.ts.map +0 -1
  228. package/dist/core/State.js +0 -144
  229. package/dist/core/State.js.map +0 -1
  230. package/docs/STATES.md +0 -888
  231. package/src/core/State.ts +0 -212
@@ -1,72 +0,0 @@
1
- /**
2
- * State in the route DSL
3
- */
4
- import type { StateRef, TransitionSpec, TransitionResult } from "../types/route";
5
- import type { Guideline } from "../types/agent";
6
- import { Transition } from "./Transition";
7
- /**
8
- * Represents a state within a route
9
- */
10
- export declare class State<TContext = unknown, TExtracted = unknown> {
11
- readonly routeId: string;
12
- description?: string | undefined;
13
- readonly id: string;
14
- private transitions;
15
- private guidelines;
16
- gatherFields?: string[];
17
- skipIf?: (extracted: Partial<TExtracted>) => boolean;
18
- requiredData?: string[];
19
- chatState?: string;
20
- constructor(routeId: string, description?: string | undefined, customId?: string, gatherFields?: string[], skipIf?: (extracted: Partial<TExtracted>) => boolean, requiredData?: string[], chatState?: string);
21
- /**
22
- * Configure the state properties after creation
23
- * Useful for overriding initial state configuration
24
- */
25
- configure(config: {
26
- description?: string;
27
- gatherFields?: string[];
28
- skipIf?: (extracted: Partial<TExtracted>) => boolean;
29
- requiredData?: string[];
30
- chatState?: string;
31
- }): this;
32
- /**
33
- * Create a transition from this state to another
34
- *
35
- * @param spec - Transition specification (chatState, toolState, or direct state)
36
- * @returns TransitionResult that supports chaining
37
- */
38
- transitionTo(spec: TransitionSpec<TContext, TExtracted>): TransitionResult<TContext, TExtracted>;
39
- /**
40
- * Add a guideline specific to this state
41
- */
42
- addGuideline(guideline: Guideline): void;
43
- /**
44
- * Get guidelines for this state
45
- */
46
- getGuidelines(): Guideline[];
47
- /**
48
- * Get all transitions from this state
49
- */
50
- getTransitions(): Transition<TContext, TExtracted>[];
51
- /**
52
- * Check if this state should be skipped based on extracted data
53
- */
54
- shouldSkip(extracted: Partial<TExtracted>): boolean;
55
- /**
56
- * Check if this state has all required data to proceed
57
- */
58
- hasRequiredData(extracted: Partial<TExtracted>): boolean;
59
- /**
60
- * Get state reference
61
- */
62
- getRef(): StateRef;
63
- /**
64
- * Create a state reference with transitionTo capability for chaining
65
- */
66
- private createStateRefWithTransition;
67
- /**
68
- * Create a terminal state reference (for END_STATE)
69
- */
70
- private createTerminalRef;
71
- }
72
- //# sourceMappingURL=State.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/core/State.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO;aAUvC,OAAO,EAAE,MAAM;IACxB,WAAW,CAAC,EAAE,MAAM;IAV7B,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,UAAU,CAAmB;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGR,OAAO,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,YAAA,EAC3B,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,EACpD,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,SAAS,CAAC,EAAE,MAAM;IAUpB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;QACrD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI;IAmBR;;;;;OAKG;IACH,YAAY,CACV,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,GACzC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC;IAiDzC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE;IAI5B;;OAEG;IACH,cAAc,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;IAIpD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;IAKnD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;IAOxD;;OAEG;IACH,MAAM,IAAI,QAAQ;IAOlB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAapC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAa1B"}
@@ -1,148 +0,0 @@
1
- "use strict";
2
- /**
3
- * State in the route DSL
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.State = void 0;
7
- const constants_1 = require("../constants");
8
- const Transition_1 = require("./Transition");
9
- const id_1 = require("../utils/id");
10
- /**
11
- * Represents a state within a route
12
- */
13
- class State {
14
- constructor(routeId, description, customId, gatherFields, skipIf, requiredData, chatState) {
15
- this.routeId = routeId;
16
- this.description = description;
17
- this.transitions = [];
18
- this.guidelines = [];
19
- // Use provided ID or generate a deterministic one
20
- this.id = customId || (0, id_1.generateStateId)(routeId, description);
21
- this.gatherFields = gatherFields;
22
- this.skipIf = skipIf;
23
- this.requiredData = requiredData;
24
- this.chatState = chatState;
25
- }
26
- /**
27
- * Configure the state properties after creation
28
- * Useful for overriding initial state configuration
29
- */
30
- configure(config) {
31
- if (config.description !== undefined) {
32
- this.description = config.description;
33
- }
34
- if (config.gatherFields !== undefined) {
35
- this.gatherFields = config.gatherFields;
36
- }
37
- if (config.skipIf !== undefined) {
38
- this.skipIf = config.skipIf;
39
- }
40
- if (config.requiredData !== undefined) {
41
- this.requiredData = config.requiredData;
42
- }
43
- if (config.chatState !== undefined) {
44
- this.chatState = config.chatState;
45
- }
46
- return this;
47
- }
48
- /**
49
- * Create a transition from this state to another
50
- *
51
- * @param spec - Transition specification (chatState, toolState, or direct state)
52
- * @returns TransitionResult that supports chaining
53
- */
54
- transitionTo(spec) {
55
- // Handle END_STATE
56
- if (spec.state &&
57
- typeof spec.state === "symbol" &&
58
- spec.state === constants_1.END_STATE) {
59
- const endTransition = new Transition_1.Transition(this.getRef(), { state: constants_1.END_STATE, condition: spec.condition, chatState: spec.chatState });
60
- this.transitions.push(endTransition);
61
- // Return a terminal state reference
62
- return this.createTerminalRef();
63
- }
64
- // Handle direct state reference
65
- if (spec.state && typeof spec.state !== "symbol") {
66
- const transition = new Transition_1.Transition(this.getRef(), spec);
67
- this.transitions.push(transition);
68
- return this.createStateRefWithTransition(spec.state);
69
- }
70
- // Create new target state for chatState or toolState
71
- const targetState = new State(this.routeId, spec.chatState, spec.id, // Use custom ID if provided
72
- spec.gather, spec.skipIf, spec.requiredData, spec.chatState);
73
- const transition = new Transition_1.Transition(this.getRef(), spec);
74
- transition.setTarget(targetState);
75
- this.transitions.push(transition);
76
- return this.createStateRefWithTransition(targetState.getRef(), targetState);
77
- }
78
- /**
79
- * Add a guideline specific to this state
80
- */
81
- addGuideline(guideline) {
82
- this.guidelines.push(guideline);
83
- }
84
- /**
85
- * Get guidelines for this state
86
- */
87
- getGuidelines() {
88
- return [...this.guidelines];
89
- }
90
- /**
91
- * Get all transitions from this state
92
- */
93
- getTransitions() {
94
- return [...this.transitions];
95
- }
96
- /**
97
- * Check if this state should be skipped based on extracted data
98
- */
99
- shouldSkip(extracted) {
100
- if (!this.skipIf)
101
- return false;
102
- return this.skipIf(extracted);
103
- }
104
- /**
105
- * Check if this state has all required data to proceed
106
- */
107
- hasRequiredData(extracted) {
108
- if (!this.requiredData || this.requiredData.length === 0)
109
- return true;
110
- return this.requiredData.every((key) => extracted[key] !== undefined);
111
- }
112
- /**
113
- * Get state reference
114
- */
115
- getRef() {
116
- return {
117
- id: this.id,
118
- routeId: this.routeId,
119
- };
120
- }
121
- /**
122
- * Create a state reference with transitionTo capability for chaining
123
- */
124
- createStateRefWithTransition(ref, state) {
125
- const stateInstance = state || this;
126
- return {
127
- ...ref,
128
- transitionTo: (spec) => stateInstance.transitionTo(spec),
129
- };
130
- }
131
- /**
132
- * Create a terminal state reference (for END_STATE)
133
- */
134
- createTerminalRef() {
135
- const terminalRef = {
136
- id: "END",
137
- routeId: this.routeId,
138
- };
139
- return {
140
- ...terminalRef,
141
- transitionTo: () => {
142
- throw new Error("Cannot transition from END_STATE state");
143
- },
144
- };
145
- }
146
- }
147
- exports.State = State;
148
- //# sourceMappingURL=State.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"State.js","sourceRoot":"","sources":["../../../src/core/State.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- /**
2
- * State in the route DSL
3
- */
4
- import type { StateRef, TransitionSpec, TransitionResult } from "../types/route";
5
- import type { Guideline } from "../types/agent";
6
- import { Transition } from "./Transition";
7
- /**
8
- * Represents a state within a route
9
- */
10
- export declare class State<TContext = unknown, TExtracted = unknown> {
11
- readonly routeId: string;
12
- description?: string | undefined;
13
- readonly id: string;
14
- private transitions;
15
- private guidelines;
16
- gatherFields?: string[];
17
- skipIf?: (extracted: Partial<TExtracted>) => boolean;
18
- requiredData?: string[];
19
- chatState?: string;
20
- constructor(routeId: string, description?: string | undefined, customId?: string, gatherFields?: string[], skipIf?: (extracted: Partial<TExtracted>) => boolean, requiredData?: string[], chatState?: string);
21
- /**
22
- * Configure the state properties after creation
23
- * Useful for overriding initial state configuration
24
- */
25
- configure(config: {
26
- description?: string;
27
- gatherFields?: string[];
28
- skipIf?: (extracted: Partial<TExtracted>) => boolean;
29
- requiredData?: string[];
30
- chatState?: string;
31
- }): this;
32
- /**
33
- * Create a transition from this state to another
34
- *
35
- * @param spec - Transition specification (chatState, toolState, or direct state)
36
- * @returns TransitionResult that supports chaining
37
- */
38
- transitionTo(spec: TransitionSpec<TContext, TExtracted>): TransitionResult<TContext, TExtracted>;
39
- /**
40
- * Add a guideline specific to this state
41
- */
42
- addGuideline(guideline: Guideline): void;
43
- /**
44
- * Get guidelines for this state
45
- */
46
- getGuidelines(): Guideline[];
47
- /**
48
- * Get all transitions from this state
49
- */
50
- getTransitions(): Transition<TContext, TExtracted>[];
51
- /**
52
- * Check if this state should be skipped based on extracted data
53
- */
54
- shouldSkip(extracted: Partial<TExtracted>): boolean;
55
- /**
56
- * Check if this state has all required data to proceed
57
- */
58
- hasRequiredData(extracted: Partial<TExtracted>): boolean;
59
- /**
60
- * Get state reference
61
- */
62
- getRef(): StateRef;
63
- /**
64
- * Create a state reference with transitionTo capability for chaining
65
- */
66
- private createStateRefWithTransition;
67
- /**
68
- * Create a terminal state reference (for END_STATE)
69
- */
70
- private createTerminalRef;
71
- }
72
- //# sourceMappingURL=State.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../src/core/State.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO;aAUvC,OAAO,EAAE,MAAM;IACxB,WAAW,CAAC,EAAE,MAAM;IAV7B,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,UAAU,CAAmB;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGR,OAAO,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,YAAA,EAC3B,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,EACpD,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,SAAS,CAAC,EAAE,MAAM;IAUpB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;QACrD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI;IAmBR;;;;;OAKG;IACH,YAAY,CACV,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,GACzC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC;IAiDzC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE;IAI5B;;OAEG;IACH,cAAc,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;IAIpD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;IAKnD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;IAOxD;;OAEG;IACH,MAAM,IAAI,QAAQ;IAOlB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAapC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAa1B"}
@@ -1,144 +0,0 @@
1
- /**
2
- * State in the route DSL
3
- */
4
- import { END_STATE } from "../constants";
5
- import { Transition } from "./Transition";
6
- import { generateStateId } from "../utils/id";
7
- /**
8
- * Represents a state within a route
9
- */
10
- export class State {
11
- constructor(routeId, description, customId, gatherFields, skipIf, requiredData, chatState) {
12
- this.routeId = routeId;
13
- this.description = description;
14
- this.transitions = [];
15
- this.guidelines = [];
16
- // Use provided ID or generate a deterministic one
17
- this.id = customId || generateStateId(routeId, description);
18
- this.gatherFields = gatherFields;
19
- this.skipIf = skipIf;
20
- this.requiredData = requiredData;
21
- this.chatState = chatState;
22
- }
23
- /**
24
- * Configure the state properties after creation
25
- * Useful for overriding initial state configuration
26
- */
27
- configure(config) {
28
- if (config.description !== undefined) {
29
- this.description = config.description;
30
- }
31
- if (config.gatherFields !== undefined) {
32
- this.gatherFields = config.gatherFields;
33
- }
34
- if (config.skipIf !== undefined) {
35
- this.skipIf = config.skipIf;
36
- }
37
- if (config.requiredData !== undefined) {
38
- this.requiredData = config.requiredData;
39
- }
40
- if (config.chatState !== undefined) {
41
- this.chatState = config.chatState;
42
- }
43
- return this;
44
- }
45
- /**
46
- * Create a transition from this state to another
47
- *
48
- * @param spec - Transition specification (chatState, toolState, or direct state)
49
- * @returns TransitionResult that supports chaining
50
- */
51
- transitionTo(spec) {
52
- // Handle END_STATE
53
- if (spec.state &&
54
- typeof spec.state === "symbol" &&
55
- spec.state === END_STATE) {
56
- const endTransition = new Transition(this.getRef(), { state: END_STATE, condition: spec.condition, chatState: spec.chatState });
57
- this.transitions.push(endTransition);
58
- // Return a terminal state reference
59
- return this.createTerminalRef();
60
- }
61
- // Handle direct state reference
62
- if (spec.state && typeof spec.state !== "symbol") {
63
- const transition = new Transition(this.getRef(), spec);
64
- this.transitions.push(transition);
65
- return this.createStateRefWithTransition(spec.state);
66
- }
67
- // Create new target state for chatState or toolState
68
- const targetState = new State(this.routeId, spec.chatState, spec.id, // Use custom ID if provided
69
- spec.gather, spec.skipIf, spec.requiredData, spec.chatState);
70
- const transition = new Transition(this.getRef(), spec);
71
- transition.setTarget(targetState);
72
- this.transitions.push(transition);
73
- return this.createStateRefWithTransition(targetState.getRef(), targetState);
74
- }
75
- /**
76
- * Add a guideline specific to this state
77
- */
78
- addGuideline(guideline) {
79
- this.guidelines.push(guideline);
80
- }
81
- /**
82
- * Get guidelines for this state
83
- */
84
- getGuidelines() {
85
- return [...this.guidelines];
86
- }
87
- /**
88
- * Get all transitions from this state
89
- */
90
- getTransitions() {
91
- return [...this.transitions];
92
- }
93
- /**
94
- * Check if this state should be skipped based on extracted data
95
- */
96
- shouldSkip(extracted) {
97
- if (!this.skipIf)
98
- return false;
99
- return this.skipIf(extracted);
100
- }
101
- /**
102
- * Check if this state has all required data to proceed
103
- */
104
- hasRequiredData(extracted) {
105
- if (!this.requiredData || this.requiredData.length === 0)
106
- return true;
107
- return this.requiredData.every((key) => extracted[key] !== undefined);
108
- }
109
- /**
110
- * Get state reference
111
- */
112
- getRef() {
113
- return {
114
- id: this.id,
115
- routeId: this.routeId,
116
- };
117
- }
118
- /**
119
- * Create a state reference with transitionTo capability for chaining
120
- */
121
- createStateRefWithTransition(ref, state) {
122
- const stateInstance = state || this;
123
- return {
124
- ...ref,
125
- transitionTo: (spec) => stateInstance.transitionTo(spec),
126
- };
127
- }
128
- /**
129
- * Create a terminal state reference (for END_STATE)
130
- */
131
- createTerminalRef() {
132
- const terminalRef = {
133
- id: "END",
134
- routeId: this.routeId,
135
- };
136
- return {
137
- ...terminalRef,
138
- transitionTo: () => {
139
- throw new Error("Cannot transition from END_STATE state");
140
- },
141
- };
142
- }
143
- }
144
- //# sourceMappingURL=State.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"State.js","sourceRoot":"","sources":["../../src/core/State.ts"],"names":[],"mappings":"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"}