@falai/agent 0.9.0-alpha-1 → 0.9.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 +34 -22
- package/dist/cjs/src/core/Agent.d.ts +77 -59
- package/dist/cjs/src/core/Agent.d.ts.map +1 -1
- package/dist/cjs/src/core/Agent.js +284 -1060
- package/dist/cjs/src/core/Agent.js.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/src/core/PersistenceManager.js +48 -25
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts +1 -1
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/src/core/PromptComposer.js.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.d.ts +13 -12
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponseEngine.js +4 -4
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/src/core/ResponseModal.d.ts +205 -0
- package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseModal.js +1328 -0
- package/dist/cjs/src/core/ResponseModal.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/src/core/ResponsePipeline.js +72 -4
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/src/core/Route.d.ts +24 -5
- package/dist/cjs/src/core/Route.d.ts.map +1 -1
- package/dist/cjs/src/core/Route.js +45 -1
- package/dist/cjs/src/core/Route.js.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts +31 -6
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/cjs/src/core/RoutingEngine.js +113 -9
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -1
- package/dist/cjs/src/core/SessionManager.d.ts +14 -4
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/src/core/SessionManager.js +25 -5
- package/dist/cjs/src/core/SessionManager.js.map +1 -1
- package/dist/cjs/src/core/Step.d.ts +10 -10
- package/dist/cjs/src/core/Step.d.ts.map +1 -1
- package/dist/cjs/src/core/Step.js.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.d.ts +4 -2
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/cjs/src/core/ToolExecutor.js +13 -3
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -1
- package/dist/cjs/src/index.d.ts +3 -1
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +7 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/types/agent.d.ts +42 -21
- package/dist/cjs/src/types/agent.d.ts.map +1 -1
- package/dist/cjs/src/types/agent.js.map +1 -1
- package/dist/cjs/src/types/ai.d.ts +1 -1
- package/dist/cjs/src/types/ai.d.ts.map +1 -1
- package/dist/cjs/src/types/index.d.ts +1 -1
- package/dist/cjs/src/types/index.d.ts.map +1 -1
- package/dist/cjs/src/types/index.js.map +1 -1
- package/dist/cjs/src/types/persistence.d.ts +0 -1
- package/dist/cjs/src/types/persistence.d.ts.map +1 -1
- package/dist/cjs/src/types/route.d.ts +22 -16
- package/dist/cjs/src/types/route.d.ts.map +1 -1
- package/dist/cjs/src/types/session.d.ts +6 -11
- package/dist/cjs/src/types/session.d.ts.map +1 -1
- package/dist/cjs/src/types/tool.d.ts +12 -6
- package/dist/cjs/src/types/tool.d.ts.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts.map +1 -1
- package/dist/cjs/src/utils/clone.js +0 -4
- package/dist/cjs/src/utils/clone.js.map +1 -1
- package/dist/cjs/src/utils/history.d.ts +30 -1
- package/dist/cjs/src/utils/history.d.ts.map +1 -1
- package/dist/cjs/src/utils/history.js +169 -23
- package/dist/cjs/src/utils/history.js.map +1 -1
- package/dist/cjs/src/utils/index.d.ts +1 -1
- package/dist/cjs/src/utils/index.d.ts.map +1 -1
- package/dist/cjs/src/utils/index.js +5 -1
- package/dist/cjs/src/utils/index.js.map +1 -1
- package/dist/cjs/src/utils/session.d.ts +2 -2
- package/dist/cjs/src/utils/session.d.ts.map +1 -1
- package/dist/cjs/src/utils/session.js +6 -26
- package/dist/cjs/src/utils/session.js.map +1 -1
- package/dist/src/core/Agent.d.ts +77 -59
- package/dist/src/core/Agent.d.ts.map +1 -1
- package/dist/src/core/Agent.js +285 -1061
- package/dist/src/core/Agent.js.map +1 -1
- package/dist/src/core/PersistenceManager.d.ts.map +1 -1
- package/dist/src/core/PersistenceManager.js +48 -25
- package/dist/src/core/PersistenceManager.js.map +1 -1
- package/dist/src/core/PromptComposer.d.ts +1 -1
- package/dist/src/core/PromptComposer.d.ts.map +1 -1
- package/dist/src/core/PromptComposer.js.map +1 -1
- package/dist/src/core/ResponseEngine.d.ts +13 -12
- package/dist/src/core/ResponseEngine.d.ts.map +1 -1
- package/dist/src/core/ResponseEngine.js +4 -4
- package/dist/src/core/ResponseEngine.js.map +1 -1
- package/dist/src/core/ResponseModal.d.ts +205 -0
- package/dist/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/src/core/ResponseModal.js +1323 -0
- package/dist/src/core/ResponseModal.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +66 -38
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/src/core/ResponsePipeline.js +72 -4
- package/dist/src/core/ResponsePipeline.js.map +1 -1
- package/dist/src/core/Route.d.ts +24 -5
- package/dist/src/core/Route.d.ts.map +1 -1
- package/dist/src/core/Route.js +45 -1
- package/dist/src/core/Route.js.map +1 -1
- package/dist/src/core/RoutingEngine.d.ts +31 -6
- package/dist/src/core/RoutingEngine.d.ts.map +1 -1
- package/dist/src/core/RoutingEngine.js +113 -9
- package/dist/src/core/RoutingEngine.js.map +1 -1
- package/dist/src/core/SessionManager.d.ts +14 -4
- package/dist/src/core/SessionManager.d.ts.map +1 -1
- package/dist/src/core/SessionManager.js +25 -5
- package/dist/src/core/SessionManager.js.map +1 -1
- package/dist/src/core/Step.d.ts +10 -10
- package/dist/src/core/Step.d.ts.map +1 -1
- package/dist/src/core/Step.js.map +1 -1
- package/dist/src/core/ToolExecutor.d.ts +4 -2
- package/dist/src/core/ToolExecutor.d.ts.map +1 -1
- package/dist/src/core/ToolExecutor.js +13 -3
- package/dist/src/core/ToolExecutor.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/agent.d.ts +42 -21
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/ai.d.ts +1 -1
- package/dist/src/types/ai.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/persistence.d.ts +0 -1
- package/dist/src/types/persistence.d.ts.map +1 -1
- package/dist/src/types/route.d.ts +22 -16
- package/dist/src/types/route.d.ts.map +1 -1
- package/dist/src/types/session.d.ts +6 -11
- package/dist/src/types/session.d.ts.map +1 -1
- package/dist/src/types/tool.d.ts +12 -6
- package/dist/src/types/tool.d.ts.map +1 -1
- package/dist/src/utils/clone.d.ts.map +1 -1
- package/dist/src/utils/clone.js +0 -4
- package/dist/src/utils/clone.js.map +1 -1
- package/dist/src/utils/history.d.ts +30 -1
- package/dist/src/utils/history.d.ts.map +1 -1
- package/dist/src/utils/history.js +165 -23
- package/dist/src/utils/history.js.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/session.d.ts +2 -2
- package/dist/src/utils/session.d.ts.map +1 -1
- package/dist/src/utils/session.js +6 -26
- package/dist/src/utils/session.js.map +1 -1
- package/docs/README.md +5 -4
- package/docs/api/README.md +195 -4
- package/docs/api/overview.md +232 -13
- package/docs/core/agent/README.md +162 -17
- package/docs/core/agent/context-management.md +39 -15
- package/docs/core/agent/session-management.md +49 -16
- package/docs/core/ai-integration/prompt-composition.md +38 -14
- package/docs/core/ai-integration/response-processing.md +28 -17
- package/docs/core/conversation-flows/data-collection.md +103 -25
- package/docs/core/conversation-flows/route-dsl.md +45 -22
- package/docs/core/conversation-flows/routes.md +74 -18
- package/docs/core/conversation-flows/step-transitions.md +3 -3
- package/docs/core/conversation-flows/steps.md +39 -15
- package/docs/core/routing/intelligent-routing.md +18 -9
- package/docs/core/tools/tool-definition.md +8 -8
- package/docs/core/tools/tool-execution.md +26 -26
- package/docs/core/tools/tool-scoping.md +5 -5
- package/docs/guides/getting-started/README.md +54 -32
- package/docs/guides/migration/README.md +72 -0
- package/docs/guides/migration/response-modal-refactor.md +518 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +37 -28
- package/examples/advanced-patterns/persistent-onboarding.ts +70 -41
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +28 -2
- package/examples/advanced-patterns/streaming-responses.ts +197 -119
- package/examples/ai-providers/anthropic-integration.ts +40 -33
- package/examples/ai-providers/openai-integration.ts +25 -25
- package/examples/conversation-flows/completion-transitions.ts +36 -32
- package/examples/core-concepts/basic-agent.ts +76 -78
- package/examples/core-concepts/modern-streaming-api.ts +309 -0
- package/examples/core-concepts/schema-driven-extraction.ts +20 -16
- package/examples/core-concepts/session-management.ts +65 -53
- package/examples/integrations/database-integration.ts +49 -34
- package/examples/integrations/healthcare-integration.ts +96 -91
- package/examples/integrations/search-integration.ts +79 -82
- package/examples/integrations/server-session-management.ts +25 -17
- package/examples/persistence/database-persistence.ts +61 -45
- package/examples/persistence/memory-sessions.ts +52 -63
- package/examples/persistence/redis-persistence.ts +81 -95
- package/examples/tools/basic-tools.ts +73 -62
- package/examples/tools/data-enrichment-tools.ts +52 -44
- package/package.json +1 -1
- package/src/core/Agent.ts +396 -1499
- package/src/core/PersistenceManager.ts +51 -27
- package/src/core/PromptComposer.ts +1 -1
- package/src/core/ResponseEngine.ts +21 -19
- package/src/core/ResponseModal.ts +1722 -0
- package/src/core/ResponsePipeline.ts +175 -60
- package/src/core/Route.ts +58 -6
- package/src/core/RoutingEngine.ts +174 -27
- package/src/core/SessionManager.ts +32 -8
- package/src/core/Step.ts +20 -12
- package/src/core/ToolExecutor.ts +19 -5
- package/src/index.ts +11 -0
- package/src/types/agent.ts +47 -23
- package/src/types/ai.ts +1 -1
- package/src/types/index.ts +2 -0
- package/src/types/persistence.ts +0 -1
- package/src/types/route.ts +22 -16
- package/src/types/session.ts +6 -12
- package/src/types/tool.ts +15 -9
- package/src/utils/clone.ts +6 -8
- package/src/utils/history.ts +190 -27
- package/src/utils/index.ts +4 -0
- package/src/utils/session.ts +6 -31
|
@@ -14,8 +14,8 @@ export interface PendingTransition {
|
|
|
14
14
|
reason: "route_complete" | "manual";
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
* Session
|
|
18
|
-
* and data collected
|
|
17
|
+
* Session state tracks the current position in the conversation flow
|
|
18
|
+
* and data collected at the agent level across all routes
|
|
19
19
|
*/
|
|
20
20
|
export interface SessionState<TData = unknown> {
|
|
21
21
|
/** Unique session identifier (useful for persistence) */
|
|
@@ -33,16 +33,11 @@ export interface SessionState<TData = unknown> {
|
|
|
33
33
|
enteredAt?: Date;
|
|
34
34
|
};
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
36
|
+
* Agent-level data collected across all routes
|
|
37
|
+
* This is the single source of truth for all collected data
|
|
38
|
+
* Routes can access and contribute to this shared data structure
|
|
38
39
|
*/
|
|
39
|
-
data
|
|
40
|
-
/**
|
|
41
|
-
* Data collected organized by route ID
|
|
42
|
-
* Persists data when switching between routes
|
|
43
|
-
* Allows resuming incomplete routes where they left off
|
|
44
|
-
*/
|
|
45
|
-
dataByRoute?: Record<string, Partial<TData>>;
|
|
40
|
+
data: Partial<TData>;
|
|
46
41
|
/** History of routes visited in this session */
|
|
47
42
|
routeHistory?: Array<{
|
|
48
43
|
routeId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK,GAAG,OAAO;IAC3C,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,2CAA2C;IAC3C,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,CAAC;IAEF,oCAAoC;IACpC,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,CAAC;IAEF
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK,GAAG,OAAO;IAC3C,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,2CAA2C;IAC3C,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,CAAC;IAEF,oCAAoC;IACpC,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,CAAC;IAEF;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAErB,gDAAgD;IAChD,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IAEH;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,uBAAuB;IACvB,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,aAAa,CAAC,EAAE,IAAI,CAAC;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH"}
|
package/dist/src/types/tool.d.ts
CHANGED
|
@@ -10,11 +10,13 @@ export interface ToolContext<TContext = unknown, TData = unknown> {
|
|
|
10
10
|
context: TContext;
|
|
11
11
|
/** Update the agent's context (triggers lifecycle hooks if configured) */
|
|
12
12
|
updateContext: (updates: Partial<TContext>) => Promise<void>;
|
|
13
|
+
/** Update the agent's collected data (triggers lifecycle hooks if configured) */
|
|
14
|
+
updateData: (updates: Partial<TData>) => Promise<void>;
|
|
13
15
|
/** Current step reference (if in a route) */
|
|
14
16
|
step?: StepRef;
|
|
15
17
|
/** Interaction history */
|
|
16
18
|
history: Event[];
|
|
17
|
-
/**
|
|
19
|
+
/** Complete agent-level data collected so far */
|
|
18
20
|
data?: Partial<TData>;
|
|
19
21
|
/** Additional metadata */
|
|
20
22
|
metadata?: Record<string, unknown>;
|
|
@@ -24,28 +26,32 @@ export interface ToolContext<TContext = unknown, TData = unknown> {
|
|
|
24
26
|
*/
|
|
25
27
|
export interface ToolResult<TResultData = unknown, TContext = unknown, TData = unknown> {
|
|
26
28
|
/** The result data */
|
|
27
|
-
data
|
|
29
|
+
data?: TResultData;
|
|
28
30
|
/** Optional context update to be merged with current context */
|
|
29
31
|
contextUpdate?: Partial<TContext>;
|
|
30
|
-
/** Optional
|
|
32
|
+
/** Optional agent-level data update to be merged with collected data */
|
|
31
33
|
dataUpdate?: Partial<TData>;
|
|
34
|
+
/** Success indicator */
|
|
35
|
+
success?: boolean;
|
|
36
|
+
/** Error message if operation failed */
|
|
37
|
+
error?: string;
|
|
32
38
|
/** Optional metadata about the execution */
|
|
33
39
|
meta?: Record<string, unknown>;
|
|
34
40
|
}
|
|
35
41
|
/**
|
|
36
42
|
* Handler function for a tool
|
|
37
43
|
*/
|
|
38
|
-
export type ToolHandler<TContext, TArgs extends unknown[], TResult
|
|
44
|
+
export type ToolHandler<TContext, TData = unknown, TArgs extends unknown[] = unknown[], TResult = unknown> = (context: ToolContext<TContext, TData>, ...args: TArgs) => Promise<ToolResult<TResult, TContext, TData>> | ToolResult<TResult, TContext, TData>;
|
|
39
45
|
/**
|
|
40
46
|
* Tool definition - plain object interface
|
|
41
47
|
*/
|
|
42
|
-
export interface Tool<TContext = unknown, TArgs extends unknown[] = unknown[], TResult = unknown
|
|
48
|
+
export interface Tool<TContext = unknown, TData = unknown, TArgs extends unknown[] = unknown[], TResult = unknown> {
|
|
43
49
|
/** Tool identifier */
|
|
44
50
|
id: string;
|
|
45
51
|
/** Tool display name (shown to AI models) */
|
|
46
52
|
name?: string;
|
|
47
53
|
/** Tool handler function */
|
|
48
|
-
handler: ToolHandler<TContext, TArgs, TResult
|
|
54
|
+
handler: ToolHandler<TContext, TData, TArgs, TResult>;
|
|
49
55
|
/** Description of what the tool does (for AI discovery) */
|
|
50
56
|
description?: string;
|
|
51
57
|
/** Parameter schema or description */
|
|
@@ -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,OAAO,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC9D,+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,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,WAAW,GAAG,OAAO,EACrB,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,OAAO;IAEf,sBAAsB;IACtB,IAAI,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC9D,+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,iFAAiF;IACjF,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,WAAW,GAAG,OAAO,EACrB,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,OAAO;IAEf,sBAAsB;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CACrB,QAAQ,EACR,KAAK,GAAG,OAAO,EACf,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EACnC,OAAO,GAAG,OAAO,IACf,CACF,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EACrC,GAAG,IAAI,EAAE,KAAK,KAEZ,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,GAC7C,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,IAAI,CACnB,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,OAAO,EACf,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EACnC,OAAO,GAAG,OAAO;IAEjB,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA0BtC"}
|
package/dist/src/utils/clone.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
/**
|
|
3
2
|
* Deep clone utility to avoid adding large dependencies like lodash.
|
|
4
3
|
* Handles objects, arrays, dates, and primitives.
|
|
@@ -10,16 +9,13 @@ export function cloneDeep(obj) {
|
|
|
10
9
|
return obj;
|
|
11
10
|
}
|
|
12
11
|
if (obj instanceof Date) {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
14
12
|
return new Date(obj.getTime());
|
|
15
13
|
}
|
|
16
14
|
if (Array.isArray(obj)) {
|
|
17
15
|
const arrCopy = [];
|
|
18
16
|
for (let i = 0; i < obj.length; i++) {
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
20
17
|
arrCopy[i] = cloneDeep(obj[i]);
|
|
21
18
|
}
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
23
19
|
return arrCopy;
|
|
24
20
|
}
|
|
25
21
|
const objCopy = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAI,GAAM;IACjC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAM,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAEpC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,OAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,OAAY,CAAC;AACtB,CAAC"}
|
|
@@ -2,10 +2,39 @@
|
|
|
2
2
|
* History normalization utilities
|
|
3
3
|
* Convert simplified history format to internal Event format
|
|
4
4
|
*/
|
|
5
|
-
import type { Event } from "../types";
|
|
5
|
+
import type { Event, MessageEventData, ToolEventData, StatusEventData } from "../types";
|
|
6
6
|
import type { History, HistoryItem } from "../types/history";
|
|
7
|
+
/**
|
|
8
|
+
* Convert a simplified history item to an internal Event
|
|
9
|
+
* @param item - The HistoryItem to convert
|
|
10
|
+
* @returns Event with proper type-safe structure
|
|
11
|
+
* @throws Error if the history item is malformed or has invalid data
|
|
12
|
+
*/
|
|
13
|
+
export declare function historyItemToEvent(item: HistoryItem): Event<MessageEventData | ToolEventData | StatusEventData>;
|
|
14
|
+
/**
|
|
15
|
+
* Convert an array of HistoryItems to Events
|
|
16
|
+
* @param history - Array of HistoryItems to convert
|
|
17
|
+
* @returns Array of Events with proper type-safe structure
|
|
18
|
+
* @throws Error if any history item is malformed
|
|
19
|
+
*/
|
|
20
|
+
export declare function historyToEvents(history: History): Event<MessageEventData | ToolEventData | StatusEventData>[];
|
|
21
|
+
/**
|
|
22
|
+
* Convert an Event back to a HistoryItem
|
|
23
|
+
* @param event - The Event to convert
|
|
24
|
+
* @returns HistoryItem with simplified structure
|
|
25
|
+
* @throws Error if the event is malformed or has invalid data
|
|
26
|
+
*/
|
|
27
|
+
export declare function eventToHistoryItem(event: Event): HistoryItem;
|
|
28
|
+
/**
|
|
29
|
+
* Convert an array of Events back to HistoryItems
|
|
30
|
+
* @param events - Array of Events to convert
|
|
31
|
+
* @returns Array of HistoryItems with simplified structure
|
|
32
|
+
* @throws Error if any event is malformed
|
|
33
|
+
*/
|
|
34
|
+
export declare function eventsToHistory(events: Event[]): History;
|
|
7
35
|
/**
|
|
8
36
|
* Normalize a simplified history array to internal Event array
|
|
37
|
+
* @deprecated Use historyToEvents instead
|
|
9
38
|
*/
|
|
10
39
|
export declare function normalizeHistory(history: History): Event[];
|
|
11
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAExF,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAA0D,MAAM,kBAAkB,CAAC;AAErH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,CAAC,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC,CAgH/G;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC,EAAE,CAY7G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAmF5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAYxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,CAAC,EAAE,KAAK,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC,GACD,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAE1D"}
|
|
@@ -5,25 +5,41 @@
|
|
|
5
5
|
import { EventKind, MessageRole } from "../types";
|
|
6
6
|
/**
|
|
7
7
|
* Convert a simplified history item to an internal Event
|
|
8
|
+
* @param item - The HistoryItem to convert
|
|
9
|
+
* @returns Event with proper type-safe structure
|
|
10
|
+
* @throws Error if the history item is malformed or has invalid data
|
|
8
11
|
*/
|
|
9
|
-
function
|
|
12
|
+
export function historyItemToEvent(item) {
|
|
13
|
+
if (!item || typeof item !== 'object') {
|
|
14
|
+
throw new Error('Invalid history item: must be a non-null object');
|
|
15
|
+
}
|
|
16
|
+
if (!item.role || typeof item.role !== 'string') {
|
|
17
|
+
throw new Error('Invalid history item: role is required and must be a string');
|
|
18
|
+
}
|
|
10
19
|
const timestamp = new Date().toISOString();
|
|
11
20
|
switch (item.role) {
|
|
12
21
|
case "user": {
|
|
22
|
+
const userItem = item;
|
|
23
|
+
if (typeof userItem.content !== 'string') {
|
|
24
|
+
throw new Error('Invalid user history item: content must be a string');
|
|
25
|
+
}
|
|
13
26
|
return {
|
|
14
27
|
kind: EventKind.MESSAGE,
|
|
15
28
|
source: MessageRole.USER,
|
|
16
29
|
timestamp,
|
|
17
30
|
data: {
|
|
18
31
|
participant: {
|
|
19
|
-
display_name:
|
|
32
|
+
display_name: userItem.name || "User",
|
|
20
33
|
},
|
|
21
|
-
message:
|
|
34
|
+
message: userItem.content,
|
|
22
35
|
},
|
|
23
36
|
};
|
|
24
37
|
}
|
|
25
38
|
case "assistant": {
|
|
26
|
-
|
|
39
|
+
const assistantItem = item;
|
|
40
|
+
if (assistantItem.content !== null && typeof assistantItem.content !== 'string') {
|
|
41
|
+
throw new Error('Invalid assistant history item: content must be a string or null');
|
|
42
|
+
}
|
|
27
43
|
const event = {
|
|
28
44
|
kind: EventKind.MESSAGE,
|
|
29
45
|
source: MessageRole.ASSISTANT,
|
|
@@ -32,17 +48,31 @@ function convertHistoryItemToEvent(item) {
|
|
|
32
48
|
participant: {
|
|
33
49
|
display_name: "Assistant",
|
|
34
50
|
},
|
|
35
|
-
message:
|
|
51
|
+
message: assistantItem.content || "",
|
|
36
52
|
},
|
|
37
53
|
};
|
|
38
|
-
// If there are tool calls,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
// If there are tool calls, validate and add them
|
|
55
|
+
if (assistantItem.tool_calls && assistantItem.tool_calls.length > 0) {
|
|
56
|
+
if (!Array.isArray(assistantItem.tool_calls)) {
|
|
57
|
+
throw new Error('Invalid assistant history item: tool_calls must be an array');
|
|
58
|
+
}
|
|
59
|
+
for (const toolCall of assistantItem.tool_calls) {
|
|
60
|
+
if (!toolCall.id || !toolCall.name || typeof toolCall.arguments !== 'object') {
|
|
61
|
+
throw new Error('Invalid tool call: id, name, and arguments are required');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
event.data.toolCalls = assistantItem.tool_calls;
|
|
42
65
|
}
|
|
43
66
|
return event;
|
|
44
67
|
}
|
|
45
68
|
case "tool": {
|
|
69
|
+
const toolItem = item;
|
|
70
|
+
if (!toolItem.tool_call_id || typeof toolItem.tool_call_id !== 'string') {
|
|
71
|
+
throw new Error('Invalid tool history item: tool_call_id is required and must be a string');
|
|
72
|
+
}
|
|
73
|
+
if (!toolItem.name || typeof toolItem.name !== 'string') {
|
|
74
|
+
throw new Error('Invalid tool history item: name is required and must be a string');
|
|
75
|
+
}
|
|
46
76
|
return {
|
|
47
77
|
kind: EventKind.TOOL,
|
|
48
78
|
source: MessageRole.AGENT,
|
|
@@ -50,10 +80,10 @@ function convertHistoryItemToEvent(item) {
|
|
|
50
80
|
data: {
|
|
51
81
|
tool_calls: [
|
|
52
82
|
{
|
|
53
|
-
tool_id:
|
|
83
|
+
tool_id: toolItem.tool_call_id,
|
|
54
84
|
arguments: {}, // Tool results don't have arguments
|
|
55
85
|
result: {
|
|
56
|
-
data:
|
|
86
|
+
data: toolItem.content,
|
|
57
87
|
},
|
|
58
88
|
},
|
|
59
89
|
],
|
|
@@ -61,6 +91,10 @@ function convertHistoryItemToEvent(item) {
|
|
|
61
91
|
};
|
|
62
92
|
}
|
|
63
93
|
case "system": {
|
|
94
|
+
const systemItem = item;
|
|
95
|
+
if (typeof systemItem.content !== 'string') {
|
|
96
|
+
throw new Error('Invalid system history item: content must be a string');
|
|
97
|
+
}
|
|
64
98
|
return {
|
|
65
99
|
kind: EventKind.MESSAGE,
|
|
66
100
|
source: MessageRole.SYSTEM,
|
|
@@ -69,30 +103,138 @@ function convertHistoryItemToEvent(item) {
|
|
|
69
103
|
participant: {
|
|
70
104
|
display_name: "System",
|
|
71
105
|
},
|
|
72
|
-
message:
|
|
106
|
+
message: systemItem.content,
|
|
73
107
|
},
|
|
74
108
|
};
|
|
75
109
|
}
|
|
76
110
|
default:
|
|
77
|
-
|
|
111
|
+
throw new Error(`Invalid history item role: ${String(item.role)}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert an array of HistoryItems to Events
|
|
116
|
+
* @param history - Array of HistoryItems to convert
|
|
117
|
+
* @returns Array of Events with proper type-safe structure
|
|
118
|
+
* @throws Error if any history item is malformed
|
|
119
|
+
*/
|
|
120
|
+
export function historyToEvents(history) {
|
|
121
|
+
if (!Array.isArray(history)) {
|
|
122
|
+
throw new Error('Invalid history: must be an array');
|
|
123
|
+
}
|
|
124
|
+
return history.map((item, index) => {
|
|
125
|
+
try {
|
|
126
|
+
return historyItemToEvent(item);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new Error(`Error converting history item at index ${index}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Convert an Event back to a HistoryItem
|
|
135
|
+
* @param event - The Event to convert
|
|
136
|
+
* @returns HistoryItem with simplified structure
|
|
137
|
+
* @throws Error if the event is malformed or has invalid data
|
|
138
|
+
*/
|
|
139
|
+
export function eventToHistoryItem(event) {
|
|
140
|
+
if (!event || typeof event !== 'object') {
|
|
141
|
+
throw new Error('Invalid event: must be a non-null object');
|
|
142
|
+
}
|
|
143
|
+
if (!event.kind || !event.source || !event.data) {
|
|
144
|
+
throw new Error('Invalid event: kind, source, and data are required');
|
|
145
|
+
}
|
|
146
|
+
switch (event.kind) {
|
|
147
|
+
case EventKind.MESSAGE: {
|
|
148
|
+
const messageData = event.data;
|
|
149
|
+
if (!messageData.message && messageData.message !== '') {
|
|
150
|
+
throw new Error('Invalid message event: message is required');
|
|
151
|
+
}
|
|
152
|
+
switch (event.source) {
|
|
153
|
+
case MessageRole.USER: {
|
|
154
|
+
const userItem = {
|
|
155
|
+
role: "user",
|
|
156
|
+
content: messageData.message,
|
|
157
|
+
};
|
|
158
|
+
if (messageData.participant?.display_name && messageData.participant.display_name !== "User") {
|
|
159
|
+
userItem.name = messageData.participant.display_name;
|
|
160
|
+
}
|
|
161
|
+
return userItem;
|
|
162
|
+
}
|
|
163
|
+
case MessageRole.ASSISTANT: {
|
|
164
|
+
const assistantItem = {
|
|
165
|
+
role: "assistant",
|
|
166
|
+
content: messageData.message || null,
|
|
167
|
+
};
|
|
168
|
+
if (messageData.toolCalls && messageData.toolCalls.length > 0) {
|
|
169
|
+
assistantItem.tool_calls = messageData.toolCalls;
|
|
170
|
+
}
|
|
171
|
+
return assistantItem;
|
|
172
|
+
}
|
|
173
|
+
case MessageRole.SYSTEM: {
|
|
174
|
+
return {
|
|
175
|
+
role: "system",
|
|
176
|
+
content: messageData.message,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
default:
|
|
180
|
+
throw new Error(`Unsupported message source for conversion: ${event.source}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
case EventKind.TOOL: {
|
|
184
|
+
const toolData = event.data;
|
|
185
|
+
if (!toolData.tool_calls || !Array.isArray(toolData.tool_calls) || toolData.tool_calls.length === 0) {
|
|
186
|
+
throw new Error('Invalid tool event: tool_calls array is required and must not be empty');
|
|
187
|
+
}
|
|
188
|
+
const firstToolCall = toolData.tool_calls[0];
|
|
189
|
+
if (!firstToolCall.tool_id) {
|
|
190
|
+
throw new Error('Invalid tool call: tool_id is required');
|
|
191
|
+
}
|
|
192
|
+
const toolItem = {
|
|
193
|
+
role: "tool",
|
|
194
|
+
tool_call_id: firstToolCall.tool_id,
|
|
195
|
+
name: firstToolCall.tool_id, // Use tool_id as name for simplicity
|
|
196
|
+
content: firstToolCall.result?.data,
|
|
197
|
+
};
|
|
198
|
+
return toolItem;
|
|
199
|
+
}
|
|
200
|
+
case EventKind.STATUS: {
|
|
201
|
+
// Status events don't have a direct HistoryItem equivalent
|
|
202
|
+
// Convert to system message for compatibility
|
|
203
|
+
const statusData = event.data;
|
|
78
204
|
return {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
timestamp,
|
|
82
|
-
data: {
|
|
83
|
-
participant: {
|
|
84
|
-
display_name: "Unknown",
|
|
85
|
-
},
|
|
86
|
-
message: "Unknown message type",
|
|
87
|
-
},
|
|
205
|
+
role: "system",
|
|
206
|
+
content: statusData.status || "Status update",
|
|
88
207
|
};
|
|
208
|
+
}
|
|
209
|
+
default:
|
|
210
|
+
throw new Error(`Unsupported event kind for conversion: ${String(event.kind)}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Convert an array of Events back to HistoryItems
|
|
215
|
+
* @param events - Array of Events to convert
|
|
216
|
+
* @returns Array of HistoryItems with simplified structure
|
|
217
|
+
* @throws Error if any event is malformed
|
|
218
|
+
*/
|
|
219
|
+
export function eventsToHistory(events) {
|
|
220
|
+
if (!Array.isArray(events)) {
|
|
221
|
+
throw new Error('Invalid events: must be an array');
|
|
89
222
|
}
|
|
223
|
+
return events.map((event, index) => {
|
|
224
|
+
try {
|
|
225
|
+
return eventToHistoryItem(event);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
throw new Error(`Error converting event at index ${index}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
90
231
|
}
|
|
91
232
|
/**
|
|
92
233
|
* Normalize a simplified history array to internal Event array
|
|
234
|
+
* @deprecated Use historyToEvents instead
|
|
93
235
|
*/
|
|
94
236
|
export function normalizeHistory(history) {
|
|
95
|
-
return history
|
|
237
|
+
return historyToEvents(history);
|
|
96
238
|
}
|
|
97
239
|
/**
|
|
98
240
|
* Helper function to create a user message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,OAAO;gBACvB,MAAM,EAAE,WAAW,CAAC,IAAI;gBACxB,SAAS;gBACT,IAAI,EAAE;oBACJ,WAAW,EAAE;wBACX,YAAY,EAAE,QAAQ,CAAC,IAAI,IAAI,MAAM;qBACtC;oBACD,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B;aACF,CAAC;QACJ,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC;YAC3B,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,KAAK,GAA4B;gBACrC,IAAI,EAAE,SAAS,CAAC,OAAO;gBACvB,MAAM,EAAE,WAAW,CAAC,SAAS;gBAC7B,SAAS;gBACT,IAAI,EAAE;oBACJ,WAAW,EAAE;wBACX,YAAY,EAAE,WAAW;qBAC1B;oBACD,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;iBACrC;aACF,CAAC;YAEF,iDAAiD;YACjD,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACjF,CAAC;gBAED,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC7E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;YAClD,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,WAAW,CAAC,KAAK;gBACzB,SAAS;gBACT,IAAI,EAAE;oBACJ,UAAU,EAAE;wBACV;4BACE,OAAO,EAAE,QAAQ,CAAC,YAAY;4BAC9B,SAAS,EAAE,EAAE,EAAE,oCAAoC;4BACnD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ,CAAC,OAAO;6BACvB;yBACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC3E,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,OAAO;gBACvB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,SAAS;gBACT,IAAI,EAAE;oBACJ,WAAW,EAAE;wBACX,YAAY,EAAE,QAAQ;qBACvB;oBACD,OAAO,EAAE,UAAU,CAAC,OAAO;iBAC5B;aACF,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAE,IAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAClI,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACvB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAwB,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrB,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACtB,MAAM,QAAQ,GAAoB;wBAChC,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,WAAW,CAAC,OAAO;qBAC7B,CAAC;oBAEF,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,IAAI,WAAW,CAAC,WAAW,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;wBAC7F,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC;oBACvD,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC3B,MAAM,aAAa,GAAyB;wBAC1C,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;qBACrC,CAAC;oBAEF,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9D,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;oBACnD,CAAC;oBAED,OAAO,aAAa,CAAC;gBACvB,CAAC;gBACD,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxB,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,WAAW,CAAC,OAAO;qBAC7B,CAAC;gBACJ,CAAC;gBACD;oBACE,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAqB,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpG,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;YAC5F,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,QAAQ,GAAoB;gBAChC,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,aAAa,CAAC,OAAO;gBACnC,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,qCAAqC;gBAClE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI;aACpC,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,2DAA2D;YAC3D,8CAA8C;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAuB,CAAC;YACjD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,UAAU,CAAC,MAAM,IAAI,eAAe;aAC9C,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAa;IACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAsB,EACtB,SAIE;IAEF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,IAAY,EACZ,OAAgB;IAEhB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -6,7 +6,7 @@ export { createSession, createSessionId, enterRoute, enterStep, mergeCollected,
|
|
|
6
6
|
export { render, renderMany, renderTemplate, renderTemplateObject, formatKnowledgeBase, } from "./template";
|
|
7
7
|
export { cloneDeep } from "./clone";
|
|
8
8
|
export { getLastMessageFromHistory } from "./event";
|
|
9
|
-
export { normalizeHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
9
|
+
export { normalizeHistory, historyItemToEvent, historyToEvents, eventToHistoryItem, eventsToHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
10
10
|
export { LoggerLevel, logger } from "./logger";
|
|
11
11
|
export type { RetryOptions } from "./retry";
|
|
12
12
|
export { retry, withTimeoutAndRetry } from "./retry";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAGd,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAGd,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export { cloneDeep } from "./clone";
|
|
|
12
12
|
// Event utilities
|
|
13
13
|
export { getLastMessageFromHistory } from "./event";
|
|
14
14
|
// History utilities
|
|
15
|
-
export { normalizeHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
15
|
+
export { normalizeHistory, historyItemToEvent, historyToEvents, eventToHistoryItem, eventsToHistory, userMessage, assistantMessage, toolMessage, systemMessage, } from "./history";
|
|
16
16
|
// Logging
|
|
17
17
|
export { LoggerLevel, logger } from "./logger";
|
|
18
18
|
export { retry, withTimeoutAndRetry } from "./retry";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAEd,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,qBAAqB;AACrB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAEd,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,qBAAqB;AACrB,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -16,7 +16,7 @@ export declare function createSessionId(): string;
|
|
|
16
16
|
export declare function cloneSession<TData>(session: SessionState<TData>): SessionState<TData>;
|
|
17
17
|
/**
|
|
18
18
|
* Helper to update session with new route
|
|
19
|
-
*
|
|
19
|
+
* With agent-level data, routes share the same data structure
|
|
20
20
|
*/
|
|
21
21
|
export declare function enterRoute<TData = Record<string, unknown>>(session: SessionState<TData>, routeId: string, routeTitle: string): SessionState<TData>;
|
|
22
22
|
/**
|
|
@@ -25,7 +25,7 @@ export declare function enterRoute<TData = Record<string, unknown>>(session: Ses
|
|
|
25
25
|
export declare function enterStep<TData = Record<string, unknown>>(session: SessionState<TData>, stepId: string, stepDescription?: string): SessionState<TData>;
|
|
26
26
|
/**
|
|
27
27
|
* Helper to merge collected data into session
|
|
28
|
-
* Updates
|
|
28
|
+
* Updates agent-level data structure
|
|
29
29
|
*/
|
|
30
30
|
export declare function mergeCollected<TData = Record<string, unknown>>(session: SessionState<TData>, data: Partial<unknown>): SessionState<TData>;
|
|
31
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GACzC,YAAY,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GACzC,YAAY,CAAC,KAAK,CAAC,CAcrB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AACD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAChC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAC3B,YAAY,CAAC,KAAK,CAAC,CAErB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,YAAY,CAAC,KAAK,CAAC,CAoCrB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,GACvB,YAAY,CAAC,KAAK,CAAC,CAarB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAC5B,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GACrB,YAAY,CAAC,KAAK,CAAC,CAcrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAC3B;IACD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAC1C,CAaA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAC3C,GACA,YAAY,CAAC,KAAK,CAAC,CA+BrB"}
|
|
@@ -8,8 +8,7 @@ export function createSession(sessionId, metadata) {
|
|
|
8
8
|
const id = sessionId || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
9
9
|
return {
|
|
10
10
|
id,
|
|
11
|
-
data: {},
|
|
12
|
-
dataByRoute: {},
|
|
11
|
+
data: {}, // Agent-level data structure
|
|
13
12
|
routeHistory: [],
|
|
14
13
|
metadata: {
|
|
15
14
|
...metadata,
|
|
@@ -32,16 +31,9 @@ export function cloneSession(session) {
|
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
33
|
* Helper to update session with new route
|
|
35
|
-
*
|
|
34
|
+
* With agent-level data, routes share the same data structure
|
|
36
35
|
*/
|
|
37
36
|
export function enterRoute(session, routeId, routeTitle) {
|
|
38
|
-
// Save current route's collected data before switching (if any)
|
|
39
|
-
const dataByRoute = { ...session.dataByRoute };
|
|
40
|
-
if (session.currentRoute &&
|
|
41
|
-
session.data &&
|
|
42
|
-
Object.keys(session.data).length > 0) {
|
|
43
|
-
dataByRoute[session.currentRoute.id] = session.data;
|
|
44
|
-
}
|
|
45
37
|
// Exit current route if exists
|
|
46
38
|
const routeHistory = [...(session.routeHistory || [])];
|
|
47
39
|
if (session.currentRoute) {
|
|
@@ -50,9 +42,7 @@ export function enterRoute(session, routeId, routeTitle) {
|
|
|
50
42
|
routeHistory[lastRouteIndex].exitedAt = new Date();
|
|
51
43
|
}
|
|
52
44
|
}
|
|
53
|
-
//
|
|
54
|
-
const newCollected = dataByRoute[routeId] || {};
|
|
55
|
-
// Enter new route
|
|
45
|
+
// Enter new route - data persists across routes at agent level
|
|
56
46
|
const now = new Date();
|
|
57
47
|
return {
|
|
58
48
|
...session,
|
|
@@ -62,8 +52,7 @@ export function enterRoute(session, routeId, routeTitle) {
|
|
|
62
52
|
enteredAt: now,
|
|
63
53
|
},
|
|
64
54
|
currentStep: undefined,
|
|
65
|
-
data
|
|
66
|
-
dataByRoute,
|
|
55
|
+
// data remains the same - shared across all routes
|
|
67
56
|
routeHistory: [
|
|
68
57
|
...routeHistory,
|
|
69
58
|
{
|
|
@@ -97,22 +86,16 @@ export function enterStep(session, stepId, stepDescription) {
|
|
|
97
86
|
}
|
|
98
87
|
/**
|
|
99
88
|
* Helper to merge collected data into session
|
|
100
|
-
* Updates
|
|
89
|
+
* Updates agent-level data structure
|
|
101
90
|
*/
|
|
102
91
|
export function mergeCollected(session, data) {
|
|
103
92
|
const newCollected = {
|
|
104
93
|
...session.data,
|
|
105
94
|
...data,
|
|
106
95
|
};
|
|
107
|
-
// Also update the dataByRoute map for the current route
|
|
108
|
-
const dataByRoute = { ...session.dataByRoute };
|
|
109
|
-
if (session.currentRoute) {
|
|
110
|
-
dataByRoute[session.currentRoute.id] = newCollected;
|
|
111
|
-
}
|
|
112
96
|
return {
|
|
113
97
|
...session,
|
|
114
|
-
data: newCollected,
|
|
115
|
-
dataByRoute,
|
|
98
|
+
data: newCollected, // Agent-level data update
|
|
116
99
|
metadata: {
|
|
117
100
|
...session.metadata,
|
|
118
101
|
lastUpdatedAt: new Date(),
|
|
@@ -129,7 +112,6 @@ export function sessionStepToData(session) {
|
|
|
129
112
|
currentStep: session.currentStep?.id,
|
|
130
113
|
collectedData: {
|
|
131
114
|
data: session.data || {},
|
|
132
|
-
dataByRoute: session.dataByRoute || {}, // Include per-route data
|
|
133
115
|
routeHistory: session.routeHistory,
|
|
134
116
|
history: session.history, // Include conversation history
|
|
135
117
|
currentRouteTitle: session.currentRoute?.title,
|
|
@@ -147,7 +129,6 @@ export function sessionStepToData(session) {
|
|
|
147
129
|
export function sessionDataToStep(sessionId, data) {
|
|
148
130
|
const collectedData = data.collectedData || {
|
|
149
131
|
data: {},
|
|
150
|
-
dataByRoute: {},
|
|
151
132
|
routeHistory: [],
|
|
152
133
|
history: [],
|
|
153
134
|
metadata: {},
|
|
@@ -171,7 +152,6 @@ export function sessionDataToStep(sessionId, data) {
|
|
|
171
152
|
}
|
|
172
153
|
: undefined,
|
|
173
154
|
data: collectedData.data || {},
|
|
174
|
-
dataByRoute: collectedData.dataByRoute || {},
|
|
175
155
|
routeHistory: collectedData.routeHistory || [],
|
|
176
156
|
history: collectedData.history || [],
|
|
177
157
|
metadata: collectedData.metadata || {},
|