@falai/agent 0.1.4 → 0.2.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.
- package/README.md +117 -1
- package/dist/cjs/core/Agent.d.ts +11 -0
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +44 -2
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/Events.d.ts +2 -2
- package/dist/cjs/core/Events.d.ts.map +1 -1
- package/dist/cjs/core/Events.js +4 -4
- package/dist/cjs/core/Events.js.map +1 -1
- package/dist/cjs/core/Observation.d.ts.map +1 -1
- package/dist/cjs/core/Observation.js +3 -2
- package/dist/cjs/core/Observation.js.map +1 -1
- package/dist/cjs/core/Route.d.ts.map +1 -1
- package/dist/cjs/core/Route.js +3 -4
- package/dist/cjs/core/Route.js.map +1 -1
- package/dist/cjs/core/State.d.ts +1 -1
- package/dist/cjs/core/State.d.ts.map +1 -1
- package/dist/cjs/core/State.js +4 -3
- package/dist/cjs/core/State.js.map +1 -1
- package/dist/cjs/core/Tool.d.ts +1 -0
- package/dist/cjs/core/Tool.d.ts.map +1 -1
- package/dist/cjs/core/Tool.js +3 -2
- package/dist/cjs/core/Tool.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +26 -2
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/observation.d.ts +2 -0
- package/dist/cjs/types/observation.d.ts.map +1 -1
- package/dist/cjs/types/route.d.ts +2 -0
- package/dist/cjs/types/route.d.ts.map +1 -1
- package/dist/cjs/types/tool.d.ts +6 -2
- package/dist/cjs/types/tool.d.ts.map +1 -1
- 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/core/Agent.d.ts +11 -0
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +44 -2
- package/dist/core/Agent.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 +3 -2
- package/dist/core/Observation.js.map +1 -1
- package/dist/core/Route.d.ts.map +1 -1
- package/dist/core/Route.js +3 -4
- 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 +4 -3
- 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/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/agent.d.ts +26 -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/types/tool.d.ts +6 -2
- package/dist/types/tool.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/CONTEXT_MANAGEMENT.md +447 -0
- package/docs/GETTING_STARTED.md +2 -0
- package/docs/PROVIDERS.md +3 -0
- package/examples/declarative-agent.ts +31 -7
- package/examples/persistent-onboarding.ts +464 -0
- package/package.json +1 -1
- package/src/core/Agent.ts +56 -2
- 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 +10 -0
- package/src/types/agent.ts +36 -2
- package/src/types/observation.ts +2 -0
- package/src/types/route.ts +2 -0
- package/src/types/tool.ts +6 -2
- package/src/utils/id.ts +74 -0
package/dist/core/Tool.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tool definition and creation utilities
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
import { generateToolId } from "../utils/id";
|
|
5
5
|
/**
|
|
6
6
|
* Define a new tool with type-safe context and arguments
|
|
7
7
|
*
|
|
@@ -21,7 +21,8 @@ let toolIdCounter = 0;
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export function defineTool(name, handler, options) {
|
|
24
|
-
|
|
24
|
+
// Use provided ID or generate a deterministic one from the name
|
|
25
|
+
const id = options?.id || generateToolId(name);
|
|
25
26
|
return {
|
|
26
27
|
id,
|
|
27
28
|
name,
|
package/dist/core/Tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../../src/core/Tool.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../../src/core/Tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,OAA8C,EAC9C,OAIC;IAED,gEAAgE;IAChE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAE/C,OAAO;QACL,EAAE;QACF,IAAI;QACJ,OAAO;QACP,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export type { OpenAIProviderOptions } from "./providers/OpenAIProvider";
|
|
|
21
21
|
export { OpenRouterProvider } from "./providers/OpenRouterProvider";
|
|
22
22
|
export type { OpenRouterProviderOptions } from "./providers/OpenRouterProvider";
|
|
23
23
|
export { END_ROUTE } from "./constants";
|
|
24
|
-
export
|
|
24
|
+
export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
|
|
25
|
+
export type { AgentOptions, Term, Guideline, Capability, GuidelineMatch, ContextLifecycleHooks, ContextProvider, } from "./types/agent";
|
|
25
26
|
export { CompositionMode } from "./types/agent";
|
|
26
27
|
export type { Event, EmittedEvent, MessageEventData, ToolEventData, StatusEventData, Participant, } from "./types/history";
|
|
27
28
|
export { EventKind, EventSource } from "./types/history";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EACV,WAAW,IAAI,YAAY,EAC3B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,8 @@ export { OpenAIProvider } from "./providers/OpenAIProvider";
|
|
|
20
20
|
export { OpenRouterProvider } from "./providers/OpenRouterProvider";
|
|
21
21
|
// Constants
|
|
22
22
|
export { END_ROUTE } from "./constants";
|
|
23
|
+
// Utils
|
|
24
|
+
export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
|
|
23
25
|
export { CompositionMode } from "./types/agent";
|
|
24
26
|
export { EventKind, EventSource } from "./types/history";
|
|
25
27
|
export { SectionStatus } from "./types/prompt";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAQ;AACR,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8BzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/types/agent.d.ts
CHANGED
|
@@ -21,6 +21,26 @@ export declare enum CompositionMode {
|
|
|
21
21
|
* Forward declare observation types
|
|
22
22
|
*/
|
|
23
23
|
import type { ObservationOptions } from "./observation";
|
|
24
|
+
/**
|
|
25
|
+
* Context lifecycle hooks for managing state persistence
|
|
26
|
+
*/
|
|
27
|
+
export interface ContextLifecycleHooks<TContext = unknown> {
|
|
28
|
+
/**
|
|
29
|
+
* Called before respond() to get fresh context
|
|
30
|
+
* Useful for loading context from a database or cache
|
|
31
|
+
*/
|
|
32
|
+
beforeRespond?: (currentContext: TContext) => Promise<TContext> | TContext;
|
|
33
|
+
/**
|
|
34
|
+
* Called after context is updated via updateContext() or tool execution
|
|
35
|
+
* Useful for persisting context to a database or cache
|
|
36
|
+
*/
|
|
37
|
+
onContextUpdate?: (newContext: TContext, previousContext: TContext) => Promise<void> | void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Context provider function for always-fresh context
|
|
41
|
+
* Alternative to static context, useful for loading from external sources
|
|
42
|
+
*/
|
|
43
|
+
export type ContextProvider<TContext = unknown> = () => Promise<TContext> | TContext;
|
|
24
44
|
/**
|
|
25
45
|
* Options for creating an Agent
|
|
26
46
|
*/
|
|
@@ -33,6 +53,10 @@ export interface AgentOptions<TContext = unknown> {
|
|
|
33
53
|
goal?: string;
|
|
34
54
|
/** Default context data available to the agent */
|
|
35
55
|
context?: TContext;
|
|
56
|
+
/** Context provider function for always-fresh context (alternative to static context) */
|
|
57
|
+
contextProvider?: ContextProvider<TContext>;
|
|
58
|
+
/** Lifecycle hooks for context management */
|
|
59
|
+
hooks?: ContextLifecycleHooks<TContext>;
|
|
36
60
|
/** AI provider strategy for generating responses */
|
|
37
61
|
ai: AiProvider;
|
|
38
62
|
/** Maximum number of processing iterations per request */
|
|
@@ -76,7 +100,7 @@ export interface Guideline {
|
|
|
76
100
|
/** Tags for organizing and filtering guidelines */
|
|
77
101
|
tags?: string[];
|
|
78
102
|
/** Tools available when following this guideline */
|
|
79
|
-
tools?: ToolRef<
|
|
103
|
+
tools?: ToolRef<any, any[], any>[];
|
|
80
104
|
/** Additional metadata */
|
|
81
105
|
metadata?: Record<string, unknown>;
|
|
82
106
|
}
|
|
@@ -91,7 +115,7 @@ export interface Capability {
|
|
|
91
115
|
/** Description of what the capability does */
|
|
92
116
|
description: string;
|
|
93
117
|
/** Tools used by this capability */
|
|
94
|
-
tools?: ToolRef<
|
|
118
|
+
tools?: ToolRef<any, any[], any>[];
|
|
95
119
|
}
|
|
96
120
|
/**
|
|
97
121
|
* Guideline match with rationale
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;GAEG;AACH,oBAAY,eAAe;IACzB,2DAA2D;IAC3D,KAAK,UAAU;IACf,2CAA2C;IAC3C,YAAY,iBAAiB;IAC7B,kCAAkC;IAClC,iBAAiB,sBAAsB;IACvC,mCAAmC;IACnC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,GAAG,OAAO;IAC9C,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,oDAAoD;IACpD,EAAE,EAAE,UAAU,CAAC;IACf,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,wCAAwC;IACxC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wBAAwB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oDAAoD;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,8 @@ export interface Observation {
|
|
|
17
17
|
* Options for creating an observation
|
|
18
18
|
*/
|
|
19
19
|
export interface ObservationOptions {
|
|
20
|
+
/** Custom ID for the observation (optional - will generate deterministic ID from description if not provided) */
|
|
21
|
+
id?: string;
|
|
20
22
|
/** The observation description */
|
|
21
23
|
description: string;
|
|
22
24
|
/** Route IDs or titles to disambiguate between (can be set later with disambiguate()) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/types/observation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
|
1
|
+
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/types/observation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iHAAiH;IACjH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
package/dist/types/route.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ import type { Guideline } from "./agent";
|
|
|
26
26
|
* Options for creating a route
|
|
27
27
|
*/
|
|
28
28
|
export interface RouteOptions {
|
|
29
|
+
/** Custom ID for the route (optional - will generate deterministic ID from title if not provided) */
|
|
30
|
+
id?: string;
|
|
29
31
|
/** Title of the route */
|
|
30
32
|
title: string;
|
|
31
33
|
/** Description of what this route accomplishes */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,GAAG,OAAO;IAChD,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IAEnC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1C,mDAAmD;IACnD,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ,GAAG,OAAO;IAClD,wCAAwC;IACxC,MAAM,EAAE,QAAQ,GAAG;QACjB,iCAAiC;QACjC,YAAY,EAAE,CACZ,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,KACf,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACjC,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qGAAqG;IACrG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,GAAG,OAAO;IAChD,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IAEnC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1C,mDAAmD;IACnD,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ,GAAG,OAAO;IAClD,wCAAwC;IACxC,MAAM,EAAE,QAAQ,GAAG;QACjB,iCAAiC;QACjC,YAAY,EAAE,CACZ,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,KACf,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACjC,CAAC;CACH"}
|
package/dist/types/tool.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ import type { Event, StateRef } from "./index";
|
|
|
8
8
|
export interface ToolContext<TContext = unknown> {
|
|
9
9
|
/** The agent's context data */
|
|
10
10
|
context: TContext;
|
|
11
|
+
/** Update the agent's context (triggers lifecycle hooks if configured) */
|
|
12
|
+
updateContext: (updates: Partial<TContext>) => Promise<void>;
|
|
11
13
|
/** Current state reference (if in a route) */
|
|
12
14
|
state?: StateRef;
|
|
13
15
|
/** Interaction history */
|
|
@@ -18,16 +20,18 @@ export interface ToolContext<TContext = unknown> {
|
|
|
18
20
|
/**
|
|
19
21
|
* Result returned by a tool
|
|
20
22
|
*/
|
|
21
|
-
export interface ToolResult<TData = unknown> {
|
|
23
|
+
export interface ToolResult<TData = unknown, TContext = unknown> {
|
|
22
24
|
/** The result data */
|
|
23
25
|
data: TData;
|
|
26
|
+
/** Optional context update to be merged with current context */
|
|
27
|
+
contextUpdate?: Partial<TContext>;
|
|
24
28
|
/** Optional metadata about the execution */
|
|
25
29
|
meta?: Record<string, unknown>;
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Handler function for a tool
|
|
29
33
|
*/
|
|
30
|
-
export type ToolHandler<TContext, TArgs extends unknown[], TResult> = (context: ToolContext<TContext>, ...args: TArgs) => Promise<ToolResult<TResult>> | ToolResult<TResult>;
|
|
34
|
+
export type ToolHandler<TContext, TArgs extends unknown[], TResult> = (context: ToolContext<TContext>, ...args: TArgs) => Promise<ToolResult<TResult, TContext>> | ToolResult<TResult, TContext>;
|
|
31
35
|
/**
|
|
32
36
|
* Reference to a defined tool
|
|
33
37
|
*/
|
package/dist/types/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,QAAQ,GAAG,OAAO;IAC7C,+BAA+B;IAC/B,OAAO,EAAE,QAAQ,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,0BAA0B;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,QAAQ,GAAG,OAAO;IAC7C,+BAA+B;IAC/B,OAAO,EAAE,QAAQ,CAAC;IAClB,0EAA0E;IAC1E,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,8CAA8C;IAC9C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,0BAA0B;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO;IAC7D,sBAAsB;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,IAAI,CACpE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC9B,GAAG,IAAI,EAAE,KAAK,KACX,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,QAAQ,EAAE,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO;IACjE,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities
|
|
3
|
+
* Provides deterministic ID generation to ensure consistency across server restarts
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate a deterministic route ID
|
|
7
|
+
* Format: route_{sanitized_title}_{hash}
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateRouteId(title: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Generate a deterministic state ID
|
|
12
|
+
* Format: state_{sanitized_description}_{hash} or state_{routeId}_{index}
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateStateId(routeId: string, description?: string, index?: number): string;
|
|
15
|
+
/**
|
|
16
|
+
* Generate a deterministic observation ID
|
|
17
|
+
* Format: observation_{sanitized_description}_{hash}
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateObservationId(description: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a deterministic tool ID
|
|
22
|
+
* Format: tool_{sanitized_name}_{hash}
|
|
23
|
+
*/
|
|
24
|
+
export declare function generateToolId(name: string): string;
|
|
25
|
+
//# sourceMappingURL=id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CASR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
package/dist/utils/id.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities
|
|
3
|
+
* Provides deterministic ID generation to ensure consistency across server restarts
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate a deterministic ID from a string by creating a simple hash
|
|
7
|
+
* This ensures the same input always produces the same ID
|
|
8
|
+
*/
|
|
9
|
+
function simpleHash(str) {
|
|
10
|
+
let hash = 0;
|
|
11
|
+
for (let i = 0; i < str.length; i++) {
|
|
12
|
+
const char = str.charCodeAt(i);
|
|
13
|
+
hash = (hash << 5) - hash + char;
|
|
14
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
15
|
+
}
|
|
16
|
+
return Math.abs(hash).toString(36);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sanitize a string for use in an ID
|
|
20
|
+
*/
|
|
21
|
+
function sanitize(str) {
|
|
22
|
+
return str.toLowerCase().replace(/[^a-z0-9]+/g, "_");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate a deterministic route ID
|
|
26
|
+
* Format: route_{sanitized_title}_{hash}
|
|
27
|
+
*/
|
|
28
|
+
export function generateRouteId(title) {
|
|
29
|
+
const sanitized = sanitize(title);
|
|
30
|
+
const hash = simpleHash(title);
|
|
31
|
+
return `route_${sanitized}_${hash}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate a deterministic state ID
|
|
35
|
+
* Format: state_{sanitized_description}_{hash} or state_{routeId}_{index}
|
|
36
|
+
*/
|
|
37
|
+
export function generateStateId(routeId, description, index) {
|
|
38
|
+
if (description) {
|
|
39
|
+
const sanitized = sanitize(description);
|
|
40
|
+
const hash = simpleHash(`${routeId}_${description}`);
|
|
41
|
+
return `state_${sanitized}_${hash}`;
|
|
42
|
+
}
|
|
43
|
+
// Fallback for states without descriptions
|
|
44
|
+
const suffix = index !== undefined ? index : simpleHash(routeId);
|
|
45
|
+
return `state_${routeId}_${suffix}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generate a deterministic observation ID
|
|
49
|
+
* Format: observation_{sanitized_description}_{hash}
|
|
50
|
+
*/
|
|
51
|
+
export function generateObservationId(description) {
|
|
52
|
+
const sanitized = sanitize(description.substring(0, 50)); // Limit length
|
|
53
|
+
const hash = simpleHash(description);
|
|
54
|
+
return `observation_${sanitized}_${hash}`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate a deterministic tool ID
|
|
58
|
+
* Format: tool_{sanitized_name}_{hash}
|
|
59
|
+
*/
|
|
60
|
+
export function generateToolId(name) {
|
|
61
|
+
const sanitized = sanitize(name);
|
|
62
|
+
const hash = simpleHash(name);
|
|
63
|
+
return `tool_${sanitized}_${hash}`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,SAAS,SAAS,IAAI,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,WAAoB,EACpB,KAAc;IAEd,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,SAAS,SAAS,IAAI,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,2CAA2C;IAC3C,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO,SAAS,OAAO,IAAI,MAAM,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;IACzE,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,OAAO,eAAe,SAAS,IAAI,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,QAAQ,SAAS,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC"}
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -129,8 +129,18 @@ Represents a conversation flow with states and transitions.
|
|
|
129
129
|
|
|
130
130
|
```typescript
|
|
131
131
|
new Route(options: RouteOptions)
|
|
132
|
+
|
|
133
|
+
interface RouteOptions {
|
|
134
|
+
id?: string; // Optional custom ID (deterministic ID generated from title if not provided)
|
|
135
|
+
title: string; // Route title
|
|
136
|
+
description?: string; // Route description
|
|
137
|
+
conditions?: string[]; // Conditions that activate this route
|
|
138
|
+
guidelines?: Guideline[]; // Initial guidelines for this route
|
|
139
|
+
}
|
|
132
140
|
```
|
|
133
141
|
|
|
142
|
+
**Note on IDs:** Route IDs are deterministic by default, generated from the title using a hash function. This ensures consistency across server restarts. You can provide a custom ID if you need specific control over the identifier.
|
|
143
|
+
|
|
134
144
|
#### Methods
|
|
135
145
|
|
|
136
146
|
##### `createGuideline(guideline: Guideline): this`
|
|
@@ -223,8 +233,16 @@ Handles disambiguation between multiple routes.
|
|
|
223
233
|
|
|
224
234
|
```typescript
|
|
225
235
|
new Observation(options: ObservationOptions)
|
|
236
|
+
|
|
237
|
+
interface ObservationOptions {
|
|
238
|
+
id?: string; // Optional custom ID (deterministic ID generated from description if not provided)
|
|
239
|
+
description: string; // The observation description
|
|
240
|
+
routeRefs?: string[]; // Route IDs or titles to disambiguate between
|
|
241
|
+
}
|
|
226
242
|
```
|
|
227
243
|
|
|
244
|
+
**Note on IDs:** Observation IDs are deterministic by default, generated from the description using a hash function. This ensures consistency across server restarts.
|
|
245
|
+
|
|
228
246
|
#### Methods
|
|
229
247
|
|
|
230
248
|
##### `disambiguate(routes: (Route | RouteRef)[]): this`
|
|
@@ -326,12 +344,15 @@ defineTool<TContext, TArgs extends unknown[], TReturn>(
|
|
|
326
344
|
name: string,
|
|
327
345
|
handler: ToolHandler<TContext, TArgs, TReturn>,
|
|
328
346
|
options?: {
|
|
347
|
+
id?: string; // Optional custom ID (deterministic ID generated from name if not provided)
|
|
329
348
|
description?: string;
|
|
330
|
-
|
|
349
|
+
parameters?: unknown;
|
|
331
350
|
}
|
|
332
351
|
): ToolRef<TContext, TArgs, TReturn>
|
|
333
352
|
```
|
|
334
353
|
|
|
354
|
+
**Note on IDs:** Tool IDs are deterministic by default, generated from the name using a hash function. This ensures consistency across server restarts.
|
|
355
|
+
|
|
335
356
|
**Example:**
|
|
336
357
|
|
|
337
358
|
```typescript
|
|
@@ -340,7 +361,10 @@ const getTool = defineTool<MyContext, [id: string], Data>(
|
|
|
340
361
|
async ({ context }, id) => {
|
|
341
362
|
return { data: await fetchData(id) };
|
|
342
363
|
},
|
|
343
|
-
{
|
|
364
|
+
{
|
|
365
|
+
id: "custom_get_data_tool", // Optional: provide your own ID
|
|
366
|
+
description: "Fetches data by ID",
|
|
367
|
+
}
|
|
344
368
|
);
|
|
345
369
|
```
|
|
346
370
|
|
|
@@ -353,11 +377,27 @@ Creates a message event for conversation history.
|
|
|
353
377
|
```typescript
|
|
354
378
|
createMessageEvent(
|
|
355
379
|
source: EventSource,
|
|
356
|
-
|
|
357
|
-
message: string
|
|
380
|
+
participantName: string,
|
|
381
|
+
message: string,
|
|
382
|
+
timestamp?: string // Optional: provide custom timestamp (ISO 8601 format)
|
|
358
383
|
): Event
|
|
359
384
|
```
|
|
360
385
|
|
|
386
|
+
**Example:**
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
// With auto-generated timestamp
|
|
390
|
+
createMessageEvent(EventSource.CUSTOMER, "Alice", "Hello!");
|
|
391
|
+
|
|
392
|
+
// With custom timestamp (useful for historical data)
|
|
393
|
+
createMessageEvent(
|
|
394
|
+
EventSource.CUSTOMER,
|
|
395
|
+
"Alice",
|
|
396
|
+
"Hello!",
|
|
397
|
+
"2025-10-13T10:30:00Z"
|
|
398
|
+
);
|
|
399
|
+
```
|
|
400
|
+
|
|
361
401
|
---
|
|
362
402
|
|
|
363
403
|
### `createToolEvent()`
|
|
@@ -366,11 +406,28 @@ Creates a tool execution event.
|
|
|
366
406
|
|
|
367
407
|
```typescript
|
|
368
408
|
createToolEvent(
|
|
369
|
-
|
|
370
|
-
|
|
409
|
+
source: EventSource,
|
|
410
|
+
toolCalls: ToolCall[],
|
|
411
|
+
timestamp?: string // Optional: provide custom timestamp (ISO 8601 format)
|
|
371
412
|
): Event
|
|
372
413
|
```
|
|
373
414
|
|
|
415
|
+
**Example:**
|
|
416
|
+
|
|
417
|
+
```typescript
|
|
418
|
+
// With auto-generated timestamp
|
|
419
|
+
createToolEvent(EventSource.AI_AGENT, [
|
|
420
|
+
{ tool_id: "get_data", arguments: { id: "123" }, result: { data: {...} } }
|
|
421
|
+
]);
|
|
422
|
+
|
|
423
|
+
// With custom timestamp
|
|
424
|
+
createToolEvent(
|
|
425
|
+
EventSource.AI_AGENT,
|
|
426
|
+
[{ tool_id: "get_data", arguments: { id: "123" }, result: { data: {...} } }],
|
|
427
|
+
"2025-10-13T10:30:00Z"
|
|
428
|
+
);
|
|
429
|
+
```
|
|
430
|
+
|
|
374
431
|
---
|
|
375
432
|
|
|
376
433
|
### `adaptEvent()`
|
|
@@ -501,6 +558,65 @@ This type represents the structured JSON output that AI providers return when us
|
|
|
501
558
|
|
|
502
559
|
---
|
|
503
560
|
|
|
561
|
+
### ID Generation Utilities
|
|
562
|
+
|
|
563
|
+
Generate deterministic IDs for consistency across server restarts.
|
|
564
|
+
|
|
565
|
+
#### `generateRouteId(title: string): string`
|
|
566
|
+
|
|
567
|
+
Generates a deterministic route ID from a title.
|
|
568
|
+
|
|
569
|
+
```typescript
|
|
570
|
+
import { generateRouteId } from "@falai/agent";
|
|
571
|
+
|
|
572
|
+
const routeId = generateRouteId("User Onboarding");
|
|
573
|
+
// Returns: "route_user_onboarding_{hash}"
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
#### `generateStateId(routeId: string, description?: string, index?: number): string`
|
|
577
|
+
|
|
578
|
+
Generates a deterministic state ID.
|
|
579
|
+
|
|
580
|
+
```typescript
|
|
581
|
+
import { generateStateId } from "@falai/agent";
|
|
582
|
+
|
|
583
|
+
const stateId = generateStateId("route_123", "Ask for name");
|
|
584
|
+
// Returns: "state_ask_for_name_{hash}"
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
#### `generateObservationId(description: string): string`
|
|
588
|
+
|
|
589
|
+
Generates a deterministic observation ID from a description.
|
|
590
|
+
|
|
591
|
+
```typescript
|
|
592
|
+
import { generateObservationId } from "@falai/agent";
|
|
593
|
+
|
|
594
|
+
const obsId = generateObservationId("User intent is unclear");
|
|
595
|
+
// Returns: "observation_user_intent_is_unclear_{hash}"
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### `generateToolId(name: string): string`
|
|
599
|
+
|
|
600
|
+
Generates a deterministic tool ID from a name.
|
|
601
|
+
|
|
602
|
+
```typescript
|
|
603
|
+
import { generateToolId } from "@falai/agent";
|
|
604
|
+
|
|
605
|
+
const toolId = generateToolId("get_user_data");
|
|
606
|
+
// Returns: "tool_get_user_data_{hash}"
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
**Why Deterministic IDs?**
|
|
610
|
+
|
|
611
|
+
All IDs are generated deterministically using a hash function of their content (title, name, description). This ensures:
|
|
612
|
+
|
|
613
|
+
- **Consistency** - Same input always produces the same ID
|
|
614
|
+
- **Server Restart Safe** - IDs remain stable across application restarts
|
|
615
|
+
- **Persistence Friendly** - Safe to store in databases and reference later
|
|
616
|
+
- **Custom Control** - You can always provide your own IDs when needed
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
504
620
|
## Constants
|
|
505
621
|
|
|
506
622
|
### `END_ROUTE`
|