@falai/agent 0.1.3 → 0.1.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 (160) hide show
  1. package/README.md +56 -1
  2. package/dist/cjs/constants/index.d.ts +5 -0
  3. package/dist/cjs/constants/index.d.ts.map +1 -0
  4. package/dist/cjs/constants/index.js +8 -0
  5. package/dist/cjs/constants/index.js.map +1 -0
  6. package/dist/cjs/core/Agent.d.ts +110 -0
  7. package/dist/cjs/core/Agent.d.ts.map +1 -0
  8. package/dist/cjs/core/Agent.js +290 -0
  9. package/dist/cjs/core/Agent.js.map +1 -0
  10. package/dist/cjs/core/DomainRegistry.d.ts +26 -0
  11. package/dist/cjs/core/DomainRegistry.d.ts.map +1 -0
  12. package/dist/cjs/core/DomainRegistry.js +47 -0
  13. package/dist/cjs/core/DomainRegistry.js.map +1 -0
  14. package/dist/cjs/core/Events.d.ts +19 -0
  15. package/dist/cjs/core/Events.d.ts.map +1 -0
  16. package/dist/cjs/core/Events.js +84 -0
  17. package/dist/cjs/core/Events.js.map +1 -0
  18. package/dist/cjs/core/Observation.d.ts +24 -0
  19. package/dist/cjs/core/Observation.d.ts.map +1 -0
  20. package/dist/cjs/core/Observation.js +39 -0
  21. package/dist/cjs/core/Observation.js.map +1 -0
  22. package/dist/cjs/core/PromptBuilder.d.ts +125 -0
  23. package/dist/cjs/core/PromptBuilder.d.ts.map +1 -0
  24. package/dist/cjs/core/PromptBuilder.js +374 -0
  25. package/dist/cjs/core/PromptBuilder.js.map +1 -0
  26. package/dist/cjs/core/Route.d.ts +46 -0
  27. package/dist/cjs/core/Route.d.ts.map +1 -0
  28. package/dist/cjs/core/Route.js +111 -0
  29. package/dist/cjs/core/Route.js.map +1 -0
  30. package/dist/cjs/core/State.d.ts +50 -0
  31. package/dist/cjs/core/State.d.ts.map +1 -0
  32. package/dist/cjs/core/State.js +112 -0
  33. package/dist/cjs/core/State.js.map +1 -0
  34. package/dist/cjs/core/Tool.d.ts +32 -0
  35. package/dist/cjs/core/Tool.d.ts.map +1 -0
  36. package/dist/cjs/core/Tool.js +37 -0
  37. package/dist/cjs/core/Tool.js.map +1 -0
  38. package/dist/cjs/core/Transition.d.ts +32 -0
  39. package/dist/cjs/core/Transition.d.ts.map +1 -0
  40. package/dist/cjs/core/Transition.js +59 -0
  41. package/dist/cjs/core/Transition.js.map +1 -0
  42. package/dist/cjs/index.d.ts +35 -0
  43. package/dist/cjs/index.d.ts.map +1 -0
  44. package/dist/cjs/index.js +55 -0
  45. package/dist/cjs/index.js.map +1 -0
  46. package/dist/cjs/package.json +1 -0
  47. package/dist/cjs/providers/GeminiProvider.d.ts +40 -0
  48. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -0
  49. package/dist/cjs/providers/GeminiProvider.js +142 -0
  50. package/dist/cjs/providers/GeminiProvider.js.map +1 -0
  51. package/dist/cjs/providers/OpenAIProvider.d.ts +42 -0
  52. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -0
  53. package/dist/cjs/providers/OpenAIProvider.js +242 -0
  54. package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
  55. package/dist/cjs/providers/OpenRouterProvider.d.ts +46 -0
  56. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -0
  57. package/dist/cjs/providers/OpenRouterProvider.js +249 -0
  58. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
  59. package/dist/cjs/types/agent.d.ts +105 -0
  60. package/dist/cjs/types/agent.d.ts.map +1 -0
  61. package/dist/cjs/types/agent.js +21 -0
  62. package/dist/cjs/types/agent.js.map +1 -0
  63. package/dist/cjs/types/ai.d.ts +102 -0
  64. package/dist/cjs/types/ai.d.ts.map +1 -0
  65. package/dist/cjs/types/ai.js +6 -0
  66. package/dist/cjs/types/ai.js.map +1 -0
  67. package/dist/cjs/types/history.d.ts +112 -0
  68. package/dist/cjs/types/history.d.ts.map +1 -0
  69. package/dist/cjs/types/history.js +37 -0
  70. package/dist/cjs/types/history.js.map +1 -0
  71. package/dist/cjs/types/index.d.ts +14 -0
  72. package/dist/cjs/types/index.d.ts.map +1 -0
  73. package/dist/cjs/types/index.js +14 -0
  74. package/dist/cjs/types/index.js.map +1 -0
  75. package/dist/cjs/types/observation.d.ts +27 -0
  76. package/dist/cjs/types/observation.d.ts.map +1 -0
  77. package/dist/cjs/types/observation.js +6 -0
  78. package/dist/cjs/types/observation.js.map +1 -0
  79. package/dist/cjs/types/prompt.d.ts +46 -0
  80. package/dist/cjs/types/prompt.d.ts.map +1 -0
  81. package/dist/cjs/types/prompt.js +19 -0
  82. package/dist/cjs/types/prompt.js.map +1 -0
  83. package/dist/cjs/types/route.d.ts +61 -0
  84. package/dist/cjs/types/route.d.ts.map +1 -0
  85. package/dist/cjs/types/route.js +6 -0
  86. package/dist/cjs/types/route.js.map +1 -0
  87. package/dist/cjs/types/tool.d.ts +46 -0
  88. package/dist/cjs/types/tool.d.ts.map +1 -0
  89. package/dist/cjs/types/tool.js +6 -0
  90. package/dist/cjs/types/tool.js.map +1 -0
  91. package/dist/cjs/utils/id.d.ts +25 -0
  92. package/dist/cjs/utils/id.d.ts.map +1 -0
  93. package/dist/cjs/utils/id.js +71 -0
  94. package/dist/cjs/utils/id.js.map +1 -0
  95. package/dist/cjs/utils/retry.d.ts +13 -0
  96. package/dist/cjs/utils/retry.d.ts.map +1 -0
  97. package/dist/cjs/utils/retry.js +75 -0
  98. package/dist/cjs/utils/retry.js.map +1 -0
  99. package/dist/core/Agent.js +10 -11
  100. package/dist/core/Agent.js.map +1 -1
  101. package/dist/core/DomainRegistry.js +3 -1
  102. package/dist/core/DomainRegistry.js.map +1 -1
  103. package/dist/core/Events.d.ts +2 -2
  104. package/dist/core/Events.d.ts.map +1 -1
  105. package/dist/core/Events.js +4 -4
  106. package/dist/core/Events.js.map +1 -1
  107. package/dist/core/Observation.d.ts.map +1 -1
  108. package/dist/core/Observation.js +4 -5
  109. package/dist/core/Observation.js.map +1 -1
  110. package/dist/core/PromptBuilder.js +2 -3
  111. package/dist/core/PromptBuilder.js.map +1 -1
  112. package/dist/core/Route.d.ts.map +1 -1
  113. package/dist/core/Route.js +4 -10
  114. package/dist/core/Route.js.map +1 -1
  115. package/dist/core/State.d.ts +1 -1
  116. package/dist/core/State.d.ts.map +1 -1
  117. package/dist/core/State.js +6 -8
  118. package/dist/core/State.js.map +1 -1
  119. package/dist/core/Tool.d.ts +1 -0
  120. package/dist/core/Tool.d.ts.map +1 -1
  121. package/dist/core/Tool.js +3 -2
  122. package/dist/core/Tool.js.map +1 -1
  123. package/dist/core/Transition.js +0 -4
  124. package/dist/core/Transition.js.map +1 -1
  125. package/dist/index.d.ts +1 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +2 -0
  128. package/dist/index.js.map +1 -1
  129. package/dist/providers/GeminiProvider.js +1 -6
  130. package/dist/providers/GeminiProvider.js.map +1 -1
  131. package/dist/providers/OpenAIProvider.js +1 -6
  132. package/dist/providers/OpenAIProvider.js.map +1 -1
  133. package/dist/providers/OpenRouterProvider.js +1 -6
  134. package/dist/providers/OpenRouterProvider.js.map +1 -1
  135. package/dist/types/agent.d.ts +2 -2
  136. package/dist/types/agent.d.ts.map +1 -1
  137. package/dist/types/observation.d.ts +2 -0
  138. package/dist/types/observation.d.ts.map +1 -1
  139. package/dist/types/route.d.ts +2 -0
  140. package/dist/types/route.d.ts.map +1 -1
  141. package/dist/utils/id.d.ts +25 -0
  142. package/dist/utils/id.d.ts.map +1 -0
  143. package/dist/utils/id.js +65 -0
  144. package/dist/utils/id.js.map +1 -0
  145. package/docs/API_REFERENCE.md +122 -6
  146. package/docs/CONSTRUCTOR_OPTIONS.md +43 -36
  147. package/docs/GETTING_STARTED.md +2 -0
  148. package/docs/PROVIDERS.md +3 -0
  149. package/examples/declarative-agent.ts +31 -7
  150. package/package.json +15 -5
  151. package/src/core/Events.ts +6 -4
  152. package/src/core/Observation.ts +3 -3
  153. package/src/core/Route.ts +3 -5
  154. package/src/core/State.ts +5 -4
  155. package/src/core/Tool.ts +4 -3
  156. package/src/index.ts +8 -0
  157. package/src/types/agent.ts +4 -2
  158. package/src/types/observation.ts +2 -0
  159. package/src/types/route.ts +2 -0
  160. package/src/utils/id.ts +74 -0
package/README.md CHANGED
@@ -103,6 +103,7 @@ interface SupportContext {
103
103
  // 2️⃣ Create AI provider (choose one)
104
104
  const ai = new GeminiProvider({
105
105
  apiKey: process.env.GEMINI_API_KEY!,
106
+ model: "models/gemini-2.5-flash",
106
107
  });
107
108
 
108
109
  // Or use OpenAI:
@@ -236,6 +237,7 @@ const fetchUserProfile = defineTool<
236
237
  return { data: profile };
237
238
  },
238
239
  {
240
+ id: "tool_fetch_user_profile", // Optional: custom ID for persistence
239
241
  description: "Retrieves user profile information from the database",
240
242
  }
241
243
  );
@@ -261,6 +263,7 @@ const agent = new Agent({
261
263
  ai: provider,
262
264
  routes: [
263
265
  {
266
+ id: "route_user_onboarding", // Optional: custom ID for consistency
264
267
  title: "User Onboarding",
265
268
  description: "Guide new users through account setup",
266
269
  conditions: ["User is new and needs onboarding"],
@@ -277,6 +280,7 @@ const agent = new Agent({
277
280
 
278
281
  // Option B: Programmatic (build flows dynamically)
279
282
  const onboardingRoute = agent.createRoute({
283
+ id: "route_user_onboarding", // Optional: custom ID
280
284
  title: "User Onboarding",
281
285
  description: "Guide new users through account setup",
282
286
  conditions: ["User is new and needs onboarding"],
@@ -324,14 +328,20 @@ const agent = new Agent({
324
328
  name: "HealthBot",
325
329
  ai: provider,
326
330
  routes: [
327
- { title: "Schedule Appointment", conditions: ["User wants to schedule"] },
328
331
  {
332
+ id: "route_schedule", // Custom ID
333
+ title: "Schedule Appointment",
334
+ conditions: ["User wants to schedule"],
335
+ },
336
+ {
337
+ id: "route_reschedule", // Custom ID
329
338
  title: "Reschedule Appointment",
330
339
  conditions: ["User wants to reschedule"],
331
340
  },
332
341
  ],
333
342
  observations: [
334
343
  {
344
+ id: "obs_appointment_intent", // Custom ID for tracking
335
345
  description: "User mentions appointment but intent is unclear",
336
346
  routeRefs: ["Schedule Appointment", "Reschedule Appointment"], // By title
337
347
  },
@@ -340,11 +350,13 @@ const agent = new Agent({
340
350
 
341
351
  // Option B: Programmatic
342
352
  const scheduleRoute = agent.createRoute({
353
+ id: "route_schedule", // Custom ID
343
354
  title: "Schedule Appointment",
344
355
  conditions: ["User wants to schedule"],
345
356
  });
346
357
 
347
358
  const rescheduleRoute = agent.createRoute({
359
+ id: "route_reschedule", // Custom ID
348
360
  title: "Reschedule Appointment",
349
361
  conditions: ["User wants to reschedule"],
350
362
  });
@@ -388,6 +400,49 @@ agent
388
400
  });
389
401
  ```
390
402
 
403
+ ### 🆔 Deterministic IDs & Persistence
404
+
405
+ All entities (routes, states, observations, tools) have **deterministic IDs** by default, ensuring consistency across server restarts:
406
+
407
+ ```typescript
408
+ import {
409
+ generateRouteId,
410
+ generateToolId,
411
+ generateObservationId,
412
+ } from "@falai/agent";
413
+
414
+ // Auto-generated deterministic IDs (recommended)
415
+ const route = agent.createRoute({
416
+ title: "User Onboarding",
417
+ // ID will be: route_user_onboarding_{hash}
418
+ });
419
+
420
+ // Or provide custom IDs when you need specific control
421
+ const route = agent.createRoute({
422
+ id: "my_custom_route_id", // Custom ID for database persistence
423
+ title: "User Onboarding",
424
+ });
425
+
426
+ // Generate IDs manually if needed
427
+ const routeId = generateRouteId("User Onboarding");
428
+ const toolId = generateToolId("fetch_user_data");
429
+
430
+ // Custom timestamps for events (useful for historical data)
431
+ const event = createMessageEvent(
432
+ EventSource.CUSTOMER,
433
+ "Alice",
434
+ "Hello!",
435
+ "2025-10-13T10:30:00Z" // Optional: custom timestamp
436
+ );
437
+ ```
438
+
439
+ **Why this matters:**
440
+
441
+ - ✅ **Database Safe** - Store IDs in your database without worrying about changes
442
+ - ✅ **Analytics Ready** - Track metrics and user journeys reliably
443
+ - ✅ **Multi-Instance** - Deploy multiple server instances with consistent IDs
444
+ - ✅ **Migration Friendly** - IDs remain stable during deployments
445
+
391
446
  ### ⚙️ Advanced Configuration
392
447
 
393
448
  Fine-tune AI provider behavior - works with both Gemini and OpenAI:
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Special marker to end a route/journey
3
+ */
4
+ export declare const END_ROUTE: unique symbol;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,SAAS,eAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Special marker to end a route/journey
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.END_ROUTE = void 0;
7
+ exports.END_ROUTE = Symbol("END_ROUTE");
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Core Agent implementation
3
+ */
4
+ import type { AgentOptions, Term, Guideline, Capability } from "../types/agent";
5
+ import type { Event, StateRef } from "../types/index";
6
+ import type { RouteOptions } from "../types/route";
7
+ import { Route } from "./Route";
8
+ import { DomainRegistry } from "./DomainRegistry";
9
+ import { Observation } from "./Observation";
10
+ /**
11
+ * Main Agent class with generic context support
12
+ */
13
+ export declare class Agent<TContext = unknown> {
14
+ private readonly options;
15
+ private terms;
16
+ private guidelines;
17
+ private capabilities;
18
+ private routes;
19
+ private observations;
20
+ private domainRegistry;
21
+ /**
22
+ * Dynamic domain property - populated via addDomain
23
+ */
24
+ readonly domain: Record<string, Record<string, unknown>>;
25
+ constructor(options: AgentOptions<TContext>);
26
+ /**
27
+ * Get agent name
28
+ */
29
+ get name(): string;
30
+ /**
31
+ * Get agent description
32
+ */
33
+ get description(): string | undefined;
34
+ /**
35
+ * Get agent goal
36
+ */
37
+ get goal(): string | undefined;
38
+ /**
39
+ * Create a new route (journey)
40
+ */
41
+ createRoute(options: RouteOptions): Route<TContext>;
42
+ /**
43
+ * Create a domain term for the glossary
44
+ */
45
+ createTerm(term: Term): this;
46
+ /**
47
+ * Create a behavioral guideline
48
+ */
49
+ createGuideline(guideline: Guideline): this;
50
+ /**
51
+ * Add a capability
52
+ */
53
+ createCapability(capability: Capability): this;
54
+ /**
55
+ * Create an observation for disambiguation
56
+ */
57
+ createObservation(description: string): Observation;
58
+ /**
59
+ * Add a domain with its tools/methods
60
+ */
61
+ addDomain<TName extends string, TDomain extends Record<string, unknown>>(name: TName, domainObject: TDomain): void;
62
+ /**
63
+ * Generate a response based on history and context
64
+ */
65
+ respond(params: {
66
+ history: Event[];
67
+ state?: StateRef;
68
+ contextOverride?: Partial<TContext>;
69
+ signal?: AbortSignal;
70
+ }): Promise<{
71
+ message: string;
72
+ route?: {
73
+ id: string;
74
+ title: string;
75
+ } | null;
76
+ state?: {
77
+ id: string;
78
+ description?: string;
79
+ } | null;
80
+ toolCalls?: Array<{
81
+ toolName: string;
82
+ arguments: Record<string, unknown>;
83
+ }>;
84
+ }>;
85
+ /**
86
+ * Get all routes
87
+ */
88
+ getRoutes(): Route<TContext>[];
89
+ /**
90
+ * Get all terms
91
+ */
92
+ getTerms(): Term[];
93
+ /**
94
+ * Get all guidelines
95
+ */
96
+ getGuidelines(): Guideline[];
97
+ /**
98
+ * Get all capabilities
99
+ */
100
+ getCapabilities(): Capability[];
101
+ /**
102
+ * Get all observations
103
+ */
104
+ getObservations(): Observation[];
105
+ /**
106
+ * Get the domain registry
107
+ */
108
+ getDomainRegistry(): DomainRegistry;
109
+ }
110
+ //# sourceMappingURL=Agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../../src/core/Agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ /**
3
+ * Core Agent implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Agent = void 0;
7
+ const Route_1 = require("./Route");
8
+ const DomainRegistry_1 = require("./DomainRegistry");
9
+ const PromptBuilder_1 = require("./PromptBuilder");
10
+ const Observation_1 = require("./Observation");
11
+ /**
12
+ * Main Agent class with generic context support
13
+ */
14
+ class Agent {
15
+ constructor(options) {
16
+ this.options = options;
17
+ this.terms = [];
18
+ this.guidelines = [];
19
+ this.capabilities = [];
20
+ this.routes = [];
21
+ this.observations = [];
22
+ this.domainRegistry = new DomainRegistry_1.DomainRegistry();
23
+ /**
24
+ * Dynamic domain property - populated via addDomain
25
+ */
26
+ this.domain = {};
27
+ // Initialize with default values
28
+ if (!this.options.maxEngineIterations) {
29
+ this.options.maxEngineIterations = 1;
30
+ }
31
+ // Initialize from options
32
+ if (options.terms) {
33
+ this.terms = [...options.terms];
34
+ }
35
+ if (options.guidelines) {
36
+ options.guidelines.forEach((guideline) => {
37
+ this.createGuideline(guideline);
38
+ });
39
+ }
40
+ if (options.capabilities) {
41
+ options.capabilities.forEach((capability) => {
42
+ this.createCapability(capability);
43
+ });
44
+ }
45
+ if (options.routes) {
46
+ options.routes.forEach((routeOptions) => {
47
+ this.createRoute(routeOptions);
48
+ });
49
+ }
50
+ if (options.observations) {
51
+ options.observations.forEach((obsOptions) => {
52
+ const obs = this.createObservation(obsOptions.description);
53
+ // If route refs were provided, resolve and disambiguate
54
+ if (obsOptions.routeRefs && obsOptions.routeRefs.length > 0) {
55
+ const resolvedRoutes = obsOptions.routeRefs
56
+ .map((ref) => {
57
+ // Try to find route by ID or title
58
+ return this.routes.find((r) => r.id === ref || r.title === ref);
59
+ })
60
+ .filter((r) => r !== undefined);
61
+ if (resolvedRoutes.length > 0) {
62
+ obs.disambiguate(resolvedRoutes);
63
+ }
64
+ }
65
+ });
66
+ }
67
+ }
68
+ /**
69
+ * Get agent name
70
+ */
71
+ get name() {
72
+ return this.options.name;
73
+ }
74
+ /**
75
+ * Get agent description
76
+ */
77
+ get description() {
78
+ return this.options.description;
79
+ }
80
+ /**
81
+ * Get agent goal
82
+ */
83
+ get goal() {
84
+ return this.options.goal;
85
+ }
86
+ /**
87
+ * Create a new route (journey)
88
+ */
89
+ createRoute(options) {
90
+ const route = new Route_1.Route(options);
91
+ this.routes.push(route);
92
+ return route;
93
+ }
94
+ /**
95
+ * Create a domain term for the glossary
96
+ */
97
+ createTerm(term) {
98
+ this.terms.push(term);
99
+ return this;
100
+ }
101
+ /**
102
+ * Create a behavioral guideline
103
+ */
104
+ createGuideline(guideline) {
105
+ const guidelineWithId = {
106
+ ...guideline,
107
+ id: guideline.id || `guideline_${this.guidelines.length}`,
108
+ enabled: guideline.enabled !== false, // Default to true
109
+ };
110
+ this.guidelines.push(guidelineWithId);
111
+ return this;
112
+ }
113
+ /**
114
+ * Add a capability
115
+ */
116
+ createCapability(capability) {
117
+ const capabilityWithId = {
118
+ ...capability,
119
+ id: capability.id || `capability_${this.capabilities.length}`,
120
+ };
121
+ this.capabilities.push(capabilityWithId);
122
+ return this;
123
+ }
124
+ /**
125
+ * Create an observation for disambiguation
126
+ */
127
+ createObservation(description) {
128
+ const observation = new Observation_1.Observation({ description });
129
+ this.observations.push(observation);
130
+ return observation;
131
+ }
132
+ /**
133
+ * Add a domain with its tools/methods
134
+ */
135
+ addDomain(name, domainObject) {
136
+ this.domainRegistry.register(name, domainObject);
137
+ // Attach to the domain property for easy access
138
+ this.domain[name] = domainObject;
139
+ }
140
+ /**
141
+ * Generate a response based on history and context
142
+ */
143
+ async respond(params) {
144
+ const { history, contextOverride, signal } = params;
145
+ // Merge context
146
+ const effectiveContext = {
147
+ ...this.options.context,
148
+ ...contextOverride,
149
+ };
150
+ // Build prompt
151
+ const promptBuilder = new PromptBuilder_1.PromptBuilder();
152
+ // Add agent identity
153
+ if (this.options.description) {
154
+ promptBuilder.addAgentIdentity({
155
+ name: this.options.name,
156
+ description: this.options.description,
157
+ });
158
+ }
159
+ // Add interaction history
160
+ promptBuilder.addInteractionHistoryForMessageGeneration(history);
161
+ // Add glossary
162
+ if (this.terms.length > 0) {
163
+ promptBuilder.addGlossary(this.terms);
164
+ }
165
+ // Add guidelines (convert to GuidelineMatch format, filter enabled only)
166
+ const enabledGuidelines = this.guidelines.filter((g) => g.enabled !== false);
167
+ if (enabledGuidelines.length > 0) {
168
+ const guidelineMatches = enabledGuidelines.map((g) => ({
169
+ guideline: g,
170
+ }));
171
+ promptBuilder.addGuidelinesForMessageGeneration(guidelineMatches);
172
+ }
173
+ // Add capabilities
174
+ if (this.capabilities.length > 0) {
175
+ promptBuilder.addCapabilitiesForMessageGeneration(this.capabilities);
176
+ }
177
+ // Add observations
178
+ if (this.observations.length > 0) {
179
+ const observationsWithRoutes = this.observations
180
+ .map((obs) => ({
181
+ description: obs.description,
182
+ routes: obs.getRoutes().map((routeRef) => {
183
+ const route = this.routes.find((r) => r.id === routeRef.id);
184
+ return { title: route?.title || routeRef.id };
185
+ }),
186
+ }))
187
+ .filter((obs) => obs.routes.length > 0);
188
+ if (observationsWithRoutes.length > 0) {
189
+ promptBuilder.addObservations(observationsWithRoutes);
190
+ }
191
+ }
192
+ // Add active routes
193
+ if (this.routes.length > 0) {
194
+ promptBuilder.addActiveRoutes(this.routes.map((r) => ({
195
+ title: r.title,
196
+ description: r.description,
197
+ conditions: r.conditions,
198
+ })));
199
+ }
200
+ // Add JSON response schema instructions
201
+ promptBuilder.addJsonResponseSchema();
202
+ // Build final prompt
203
+ const prompt = promptBuilder.build();
204
+ // Generate message using AI provider with JSON mode enabled
205
+ const result = await this.options.ai.generateMessage({
206
+ prompt,
207
+ history,
208
+ context: effectiveContext,
209
+ signal,
210
+ parameters: {
211
+ jsonMode: true,
212
+ },
213
+ });
214
+ // Parse structured response
215
+ let message = result.message;
216
+ let route = null;
217
+ let state = null;
218
+ let toolCalls;
219
+ if (result.structured) {
220
+ // Extract data from structured response
221
+ message = result.structured.message || message;
222
+ // Find route by title
223
+ if (result.structured.route) {
224
+ const foundRoute = this.routes.find((r) => r.title === result.structured?.route);
225
+ if (foundRoute) {
226
+ route = {
227
+ id: foundRoute.id,
228
+ title: foundRoute.title,
229
+ };
230
+ }
231
+ }
232
+ // Create state reference if provided
233
+ if (result.structured.state) {
234
+ state = {
235
+ id: "dynamic_state",
236
+ description: result.structured.state,
237
+ };
238
+ }
239
+ // Extract tool calls
240
+ if (result.structured.toolCalls &&
241
+ result.structured.toolCalls.length > 0) {
242
+ toolCalls = result.structured.toolCalls;
243
+ }
244
+ }
245
+ return {
246
+ message,
247
+ route: route || undefined,
248
+ state: state || undefined,
249
+ toolCalls,
250
+ };
251
+ }
252
+ /**
253
+ * Get all routes
254
+ */
255
+ getRoutes() {
256
+ return [...this.routes];
257
+ }
258
+ /**
259
+ * Get all terms
260
+ */
261
+ getTerms() {
262
+ return [...this.terms];
263
+ }
264
+ /**
265
+ * Get all guidelines
266
+ */
267
+ getGuidelines() {
268
+ return [...this.guidelines];
269
+ }
270
+ /**
271
+ * Get all capabilities
272
+ */
273
+ getCapabilities() {
274
+ return [...this.capabilities];
275
+ }
276
+ /**
277
+ * Get all observations
278
+ */
279
+ getObservations() {
280
+ return [...this.observations];
281
+ }
282
+ /**
283
+ * Get the domain registry
284
+ */
285
+ getDomainRegistry() {
286
+ return this.domainRegistry;
287
+ }
288
+ }
289
+ exports.Agent = Agent;
290
+ //# sourceMappingURL=Agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../../src/core/Agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Domain registry for organizing agent capabilities by domain
3
+ */
4
+ /**
5
+ * Registry that holds domain-specific tools and methods
6
+ */
7
+ export declare class DomainRegistry {
8
+ private domains;
9
+ /**
10
+ * Register a new domain with its methods/tools
11
+ */
12
+ register<TDomain extends Record<string, unknown>>(name: string, domain: TDomain): void;
13
+ /**
14
+ * Get a registered domain
15
+ */
16
+ get<TDomain extends Record<string, unknown>>(name: string): TDomain | undefined;
17
+ /**
18
+ * Check if a domain is registered
19
+ */
20
+ has(name: string): boolean;
21
+ /**
22
+ * Get all registered domains as a single object
23
+ */
24
+ all(): Record<string, Record<string, unknown>>;
25
+ }
26
+ //# sourceMappingURL=DomainRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/DomainRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmD;IAElE;;OAEG;IACH,QAAQ,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,GACd,IAAI;IAOP;;OAEG;IACH,GAAG,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,SAAS;IAItB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAO/C"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Domain registry for organizing agent capabilities by domain
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DomainRegistry = void 0;
7
+ /**
8
+ * Registry that holds domain-specific tools and methods
9
+ */
10
+ class DomainRegistry {
11
+ constructor() {
12
+ this.domains = new Map();
13
+ }
14
+ /**
15
+ * Register a new domain with its methods/tools
16
+ */
17
+ register(name, domain) {
18
+ if (this.domains.has(name)) {
19
+ throw new Error(`Domain "${name}" is already registered`);
20
+ }
21
+ this.domains.set(name, domain);
22
+ }
23
+ /**
24
+ * Get a registered domain
25
+ */
26
+ get(name) {
27
+ return this.domains.get(name);
28
+ }
29
+ /**
30
+ * Check if a domain is registered
31
+ */
32
+ has(name) {
33
+ return this.domains.has(name);
34
+ }
35
+ /**
36
+ * Get all registered domains as a single object
37
+ */
38
+ all() {
39
+ const result = {};
40
+ for (const [name, domain] of this.domains) {
41
+ result[name] = domain;
42
+ }
43
+ return result;
44
+ }
45
+ }
46
+ exports.DomainRegistry = DomainRegistry;
47
+ //# sourceMappingURL=DomainRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainRegistry.js","sourceRoot":"","sources":["../../../src/core/DomainRegistry.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,MAAa,cAAc;IAA3B;QACU,YAAO,GAAyC,IAAI,GAAG,EAAE,CAAC;IAyCpE,CAAC;IAvCC;;OAEG;IACH,QAAQ,CACN,IAAY,EACZ,MAAe;QAEf,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,yBAAyB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,GAAG,CACD,IAAY;QAEZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAwB,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,GAAG;QACD,MAAM,MAAM,GAA4C,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA1CD,wCA0CC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Event utilities and helpers
3
+ */
4
+ import type { Event, EmittedEvent, MessageEventData, ToolEventData, ToolCall } from "../types/history";
5
+ import { EventSource } from "../types/history";
6
+ /**
7
+ * Adapt an event for inclusion in prompts
8
+ * Transforms event data into a serializable format
9
+ */
10
+ export declare function adaptEvent(e: Event | EmittedEvent): string;
11
+ /**
12
+ * Create a message event
13
+ */
14
+ export declare function createMessageEvent(source: EventSource, participantName: string, message: string, timestamp?: string): Event<MessageEventData>;
15
+ /**
16
+ * Create a tool event
17
+ */
18
+ export declare function createToolEvent(source: EventSource, toolCalls: ToolCall[], timestamp?: string): Event<ToolEventData>;
19
+ //# sourceMappingURL=Events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../src/core/Events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAa,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,CA+C1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,gBAAgB,CAAC,CAUzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,aAAa,CAAC,CAStB"}