@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.
- package/README.md +56 -1
- package/dist/cjs/constants/index.d.ts +5 -0
- package/dist/cjs/constants/index.d.ts.map +1 -0
- package/dist/cjs/constants/index.js +8 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/core/Agent.d.ts +110 -0
- package/dist/cjs/core/Agent.d.ts.map +1 -0
- package/dist/cjs/core/Agent.js +290 -0
- package/dist/cjs/core/Agent.js.map +1 -0
- package/dist/cjs/core/DomainRegistry.d.ts +26 -0
- package/dist/cjs/core/DomainRegistry.d.ts.map +1 -0
- package/dist/cjs/core/DomainRegistry.js +47 -0
- package/dist/cjs/core/DomainRegistry.js.map +1 -0
- package/dist/cjs/core/Events.d.ts +19 -0
- package/dist/cjs/core/Events.d.ts.map +1 -0
- package/dist/cjs/core/Events.js +84 -0
- package/dist/cjs/core/Events.js.map +1 -0
- package/dist/cjs/core/Observation.d.ts +24 -0
- package/dist/cjs/core/Observation.d.ts.map +1 -0
- package/dist/cjs/core/Observation.js +39 -0
- package/dist/cjs/core/Observation.js.map +1 -0
- package/dist/cjs/core/PromptBuilder.d.ts +125 -0
- package/dist/cjs/core/PromptBuilder.d.ts.map +1 -0
- package/dist/cjs/core/PromptBuilder.js +374 -0
- package/dist/cjs/core/PromptBuilder.js.map +1 -0
- package/dist/cjs/core/Route.d.ts +46 -0
- package/dist/cjs/core/Route.d.ts.map +1 -0
- package/dist/cjs/core/Route.js +111 -0
- package/dist/cjs/core/Route.js.map +1 -0
- package/dist/cjs/core/State.d.ts +50 -0
- package/dist/cjs/core/State.d.ts.map +1 -0
- package/dist/cjs/core/State.js +112 -0
- package/dist/cjs/core/State.js.map +1 -0
- package/dist/cjs/core/Tool.d.ts +32 -0
- package/dist/cjs/core/Tool.d.ts.map +1 -0
- package/dist/cjs/core/Tool.js +37 -0
- package/dist/cjs/core/Tool.js.map +1 -0
- package/dist/cjs/core/Transition.d.ts +32 -0
- package/dist/cjs/core/Transition.d.ts.map +1 -0
- package/dist/cjs/core/Transition.js +59 -0
- package/dist/cjs/core/Transition.js.map +1 -0
- package/dist/cjs/index.d.ts +35 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/providers/GeminiProvider.d.ts +40 -0
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/providers/GeminiProvider.js +142 -0
- package/dist/cjs/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/providers/OpenAIProvider.d.ts +42 -0
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenAIProvider.js +242 -0
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
- package/dist/cjs/providers/OpenRouterProvider.d.ts +46 -0
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenRouterProvider.js +249 -0
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/types/agent.d.ts +105 -0
- package/dist/cjs/types/agent.d.ts.map +1 -0
- package/dist/cjs/types/agent.js +21 -0
- package/dist/cjs/types/agent.js.map +1 -0
- package/dist/cjs/types/ai.d.ts +102 -0
- package/dist/cjs/types/ai.d.ts.map +1 -0
- package/dist/cjs/types/ai.js +6 -0
- package/dist/cjs/types/ai.js.map +1 -0
- package/dist/cjs/types/history.d.ts +112 -0
- package/dist/cjs/types/history.d.ts.map +1 -0
- package/dist/cjs/types/history.js +37 -0
- package/dist/cjs/types/history.js.map +1 -0
- package/dist/cjs/types/index.d.ts +14 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +14 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/observation.d.ts +27 -0
- package/dist/cjs/types/observation.d.ts.map +1 -0
- package/dist/cjs/types/observation.js +6 -0
- package/dist/cjs/types/observation.js.map +1 -0
- package/dist/cjs/types/prompt.d.ts +46 -0
- package/dist/cjs/types/prompt.d.ts.map +1 -0
- package/dist/cjs/types/prompt.js +19 -0
- package/dist/cjs/types/prompt.js.map +1 -0
- package/dist/cjs/types/route.d.ts +61 -0
- package/dist/cjs/types/route.d.ts.map +1 -0
- package/dist/cjs/types/route.js +6 -0
- package/dist/cjs/types/route.js.map +1 -0
- package/dist/cjs/types/tool.d.ts +46 -0
- package/dist/cjs/types/tool.d.ts.map +1 -0
- package/dist/cjs/types/tool.js +6 -0
- package/dist/cjs/types/tool.js.map +1 -0
- package/dist/cjs/utils/id.d.ts +25 -0
- package/dist/cjs/utils/id.d.ts.map +1 -0
- package/dist/cjs/utils/id.js +71 -0
- package/dist/cjs/utils/id.js.map +1 -0
- package/dist/cjs/utils/retry.d.ts +13 -0
- package/dist/cjs/utils/retry.d.ts.map +1 -0
- package/dist/cjs/utils/retry.js +75 -0
- package/dist/cjs/utils/retry.js.map +1 -0
- package/dist/core/Agent.js +10 -11
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/DomainRegistry.js +3 -1
- package/dist/core/DomainRegistry.js.map +1 -1
- package/dist/core/Events.d.ts +2 -2
- package/dist/core/Events.d.ts.map +1 -1
- package/dist/core/Events.js +4 -4
- package/dist/core/Events.js.map +1 -1
- package/dist/core/Observation.d.ts.map +1 -1
- package/dist/core/Observation.js +4 -5
- package/dist/core/Observation.js.map +1 -1
- package/dist/core/PromptBuilder.js +2 -3
- package/dist/core/PromptBuilder.js.map +1 -1
- package/dist/core/Route.d.ts.map +1 -1
- package/dist/core/Route.js +4 -10
- package/dist/core/Route.js.map +1 -1
- package/dist/core/State.d.ts +1 -1
- package/dist/core/State.d.ts.map +1 -1
- package/dist/core/State.js +6 -8
- package/dist/core/State.js.map +1 -1
- package/dist/core/Tool.d.ts +1 -0
- package/dist/core/Tool.d.ts.map +1 -1
- package/dist/core/Tool.js +3 -2
- package/dist/core/Tool.js.map +1 -1
- package/dist/core/Transition.js +0 -4
- package/dist/core/Transition.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/GeminiProvider.js +1 -6
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.js +1 -6
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.js +1 -6
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/types/agent.d.ts +2 -2
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/observation.d.ts +2 -0
- package/dist/types/observation.d.ts.map +1 -1
- package/dist/types/route.d.ts +2 -0
- package/dist/types/route.d.ts.map +1 -1
- package/dist/utils/id.d.ts +25 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +65 -0
- package/dist/utils/id.js.map +1 -0
- package/docs/API_REFERENCE.md +122 -6
- package/docs/CONSTRUCTOR_OPTIONS.md +43 -36
- package/docs/GETTING_STARTED.md +2 -0
- package/docs/PROVIDERS.md +3 -0
- package/examples/declarative-agent.ts +31 -7
- package/package.json +15 -5
- package/src/core/Events.ts +6 -4
- package/src/core/Observation.ts +3 -3
- package/src/core/Route.ts +3 -5
- package/src/core/State.ts +5 -4
- package/src/core/Tool.ts +4 -3
- package/src/index.ts +8 -0
- package/src/types/agent.ts +4 -2
- package/src/types/observation.ts +2 -0
- package/src/types/route.ts +2 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|