@falai/agent 0.8.1 → 0.9.0-alpha-1
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 +306 -133
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/{core → cjs/src/core}/Agent.d.ts +65 -67
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1433 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +50 -20
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +446 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +126 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/Route.js +116 -20
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +76 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +197 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +52 -33
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/{types → src/types}/route.d.ts +85 -31
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +70 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +30 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/cjs/{types → src/types}/tool.d.ts +6 -8
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/{types → src/utils}/session.js +34 -11
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/{cjs → src}/core/Agent.d.ts +65 -67
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1429 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +47 -17
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +31 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +442 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +126 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/{core → src/core}/Route.js +116 -20
- package/dist/src/core/Route.js.map +1 -0
- package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +98 -104
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +76 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +193 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +43 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +70 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +52 -33
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +39 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/{types → src/types}/route.d.ts +85 -31
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +70 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +30 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/{types → src/types}/tool.d.ts +6 -8
- package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
- package/dist/{types → src/types}/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/{types → src/utils}/session.js +32 -11
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +890 -251
- package/docs/api/overview.md +798 -0
- package/docs/core/agent/README.md +642 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +143 -94
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
- package/docs/core/ai-integration/prompt-composition.md +196 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +165 -0
- package/docs/core/conversation-flows/data-collection.md +545 -0
- package/docs/core/conversation-flows/route-dsl.md +479 -0
- package/docs/core/conversation-flows/routes.md +61 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +130 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +339 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +384 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
- package/examples/ai-providers/anthropic-integration.ts +377 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
- package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +112 -105
- package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
- package/examples/core-concepts/schema-driven-extraction.ts +301 -0
- package/examples/core-concepts/session-management.ts +394 -0
- package/examples/integrations/database-integration.ts +615 -0
- package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
- package/examples/integrations/server-session-management.ts +299 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
- package/examples/persistence/memory-sessions.ts +506 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
- package/examples/tools/basic-tools.ts +550 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1093 -478
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +77 -47
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +118 -38
- package/src/core/ResponsePipeline.ts +715 -0
- package/src/core/Route.ts +168 -51
- package/src/core/RoutingEngine.ts +178 -209
- package/src/core/SessionManager.ts +241 -0
- package/src/core/Step.ts +149 -67
- package/src/core/ToolExecutor.ts +37 -42
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +48 -36
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +43 -7
- package/src/types/persistence.ts +46 -28
- package/src/types/route.ts +104 -45
- package/src/types/session.ts +19 -213
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +9 -11
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +229 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/domain-scoping.ts +0 -366
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
package/docs/AGENT.md
DELETED
|
@@ -1,535 +0,0 @@
|
|
|
1
|
-
# Agent Configuration Guide
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The `@falai/agent` framework supports **two complementary patterns** for configuration:
|
|
6
|
-
|
|
7
|
-
1. **Declarative** - Pass arrays/objects in constructors (great for static configs)
|
|
8
|
-
2. **Fluent/Programmatic** - Chain methods to build dynamically (great for runtime logic)
|
|
9
|
-
|
|
10
|
-
You can **mix both patterns** - initialize with agent, then add more dynamically!
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 📦 Agent Agent
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
interface AgentOptions<TContext = unknown> {
|
|
18
|
-
// Required
|
|
19
|
-
name: string;
|
|
20
|
-
provider: AiProvider;
|
|
21
|
-
|
|
22
|
-
// Optional metadata
|
|
23
|
-
description?: string;
|
|
24
|
-
goal?: string;
|
|
25
|
-
context?: TContext;
|
|
26
|
-
|
|
27
|
-
// Optional current session for convenience methods
|
|
28
|
-
session?: SessionState;
|
|
29
|
-
|
|
30
|
-
// Context provider for always-fresh context
|
|
31
|
-
contextProvider?: () => Promise<TContext> | TContext;
|
|
32
|
-
|
|
33
|
-
// Configuration
|
|
34
|
-
compositionMode?: CompositionMode;
|
|
35
|
-
|
|
36
|
-
// Enhanced lifecycle hooks
|
|
37
|
-
hooks?: {
|
|
38
|
-
beforeRespond?: (currentContext: TContext) => Promise<TContext> | TContext;
|
|
39
|
-
onContextUpdate?: (
|
|
40
|
-
newContext: TContext,
|
|
41
|
-
previousContext: TContext
|
|
42
|
-
) => Promise<void> | void;
|
|
43
|
-
onDataUpdate?: (
|
|
44
|
-
data: Record<string, unknown>,
|
|
45
|
-
previousData: Record<string, unknown>
|
|
46
|
-
) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// Declarative initialization
|
|
50
|
-
terms?: Term[];
|
|
51
|
-
guidelines?: Guideline[];
|
|
52
|
-
capabilities?: Capability[];
|
|
53
|
-
routes?: RouteOptions[];
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Example: Data-Driven Agent with Session Step
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
// Define your data extraction types
|
|
61
|
-
interface FlightData {
|
|
62
|
-
destination: string;
|
|
63
|
-
departureDate: string;
|
|
64
|
-
passengers: number;
|
|
65
|
-
cabinClass: "economy" | "business" | "first";
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const agent = new Agent<FlightBookingContext>({
|
|
69
|
-
name: "FlightBot",
|
|
70
|
-
description: "Helpful flight booking assistant",
|
|
71
|
-
goal: "Book flights efficiently",
|
|
72
|
-
provider: new GeminiProvider({ apiKey: "...", model: "..." }),
|
|
73
|
-
|
|
74
|
-
// Static context
|
|
75
|
-
context: {
|
|
76
|
-
userId: "123",
|
|
77
|
-
availableFlights: [],
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
// Optional: Set initial session for convenience methods
|
|
81
|
-
session: createSession<FlightData>({
|
|
82
|
-
data: { destination: "Paris" }, // Pre-populate with known data
|
|
83
|
-
}),
|
|
84
|
-
|
|
85
|
-
// Enhanced lifecycle hooks
|
|
86
|
-
hooks: {
|
|
87
|
-
// Refresh context before each response
|
|
88
|
-
beforeRespond: async (ctx) => {
|
|
89
|
-
const freshUser = await db.getUser(ctx.userId);
|
|
90
|
-
return { ...ctx, userCredits: freshUser.credits };
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
// Validate and enrich collected data
|
|
94
|
-
onDataUpdate: async (data, previous) => {
|
|
95
|
-
// Normalize passenger count
|
|
96
|
-
if (data.passengers < 1) data.passengers = 1;
|
|
97
|
-
if (data.passengers > 9) data.passengers = 9;
|
|
98
|
-
|
|
99
|
-
// Auto-trigger flight search when we have enough data
|
|
100
|
-
if (data.destination && data.departureDate && data.passengers) {
|
|
101
|
-
data.shouldSearchFlights = true;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return data;
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
// Declarative routes with data extraction
|
|
109
|
-
routes: [
|
|
110
|
-
{
|
|
111
|
-
title: "Book Flight",
|
|
112
|
-
description: "Help user book a flight",
|
|
113
|
-
conditions: ["User wants to book a flight"],
|
|
114
|
-
schema: {
|
|
115
|
-
type: "object",
|
|
116
|
-
properties: {
|
|
117
|
-
destination: { type: "string" },
|
|
118
|
-
departureDate: { type: "string" },
|
|
119
|
-
passengers: { type: "number", minimum: 1, maximum: 9 },
|
|
120
|
-
cabinClass: {
|
|
121
|
-
type: "string",
|
|
122
|
-
enum: ["economy", "business", "first"],
|
|
123
|
-
default: "economy",
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
required: ["destination", "departureDate", "passengers"],
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
],
|
|
130
|
-
|
|
131
|
-
// Domain glossary
|
|
132
|
-
terms: [
|
|
133
|
-
{
|
|
134
|
-
name: "Premium Plan",
|
|
135
|
-
description: "Our top-tier subscription at $99/month",
|
|
136
|
-
synonyms: ["pro plan", "premium subscription"],
|
|
137
|
-
},
|
|
138
|
-
],
|
|
139
|
-
|
|
140
|
-
// Behavioral guidelines
|
|
141
|
-
guidelines: [
|
|
142
|
-
{
|
|
143
|
-
action: "Always be polite and professional",
|
|
144
|
-
enabled: true,
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
condition: "User seems frustrated",
|
|
148
|
-
action: "Apologize sincerely and offer to escalate to human support",
|
|
149
|
-
enabled: true,
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
|
|
153
|
-
capabilities: [
|
|
154
|
-
{ title: "Ticket Management", description: "Create and track tickets" },
|
|
155
|
-
],
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
// Option 1: Use session passed to respond (traditional)
|
|
159
|
-
let session = createSession<FlightData>();
|
|
160
|
-
const response = await agent.respond({ history, session });
|
|
161
|
-
console.log(response.session?.data); // Data flight data
|
|
162
|
-
|
|
163
|
-
// Option 2: Use session set in constructor (convenience methods)
|
|
164
|
-
// Since we set session in constructor, no need to pass it!
|
|
165
|
-
const response2 = await agent.respond({ history });
|
|
166
|
-
console.log(agent.getData()); // Uses constructor session
|
|
167
|
-
|
|
168
|
-
// Option 3: Override session for specific calls
|
|
169
|
-
const customSession = createSession<FlightData>({
|
|
170
|
-
data: { destination: "Tokyo" },
|
|
171
|
-
});
|
|
172
|
-
const response3 = await agent.respond({ history, session: customSession });
|
|
173
|
-
console.log(response3.session?.data); // Uses custom session
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
````
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## 💾 Session Management
|
|
181
|
-
|
|
182
|
-
The agent supports flexible session management for conversation step tracking:
|
|
183
|
-
|
|
184
|
-
### Constructor Session (Optional)
|
|
185
|
-
|
|
186
|
-
Set an initial session in the constructor for convenience:
|
|
187
|
-
|
|
188
|
-
```typescript
|
|
189
|
-
const agent = new Agent({
|
|
190
|
-
name: 'Bot',
|
|
191
|
-
provider: provider,
|
|
192
|
-
session: createSession<MyData>({
|
|
193
|
-
data: { name: 'John' }, // Pre-populate data
|
|
194
|
-
}),
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
// Use convenience methods without passing session
|
|
198
|
-
const response = await agent.respond({ history });
|
|
199
|
-
const data = agent.getData(); // Uses constructor session
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Runtime Session Management
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
// Set session for convenience methods
|
|
206
|
-
agent.setCurrentSession(session);
|
|
207
|
-
|
|
208
|
-
// Use without passing session parameter
|
|
209
|
-
const data = agent.getData();
|
|
210
|
-
const routeData = agent.getData('onboarding');
|
|
211
|
-
|
|
212
|
-
// Override for specific calls
|
|
213
|
-
const response = await agent.respond({ history, session: customSession });
|
|
214
|
-
|
|
215
|
-
// Clear when done
|
|
216
|
-
agent.clearCurrentSession();
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### Session Preservation
|
|
220
|
-
|
|
221
|
-
When switching routes, collected data is preserved in `dataByRoute`:
|
|
222
|
-
|
|
223
|
-
```typescript
|
|
224
|
-
// User switches from onboarding to booking
|
|
225
|
-
const response = await agent.respond({ history }); // Switches routes
|
|
226
|
-
|
|
227
|
-
// Access data from previous routes
|
|
228
|
-
const onboardingData = agent.getData('onboarding');
|
|
229
|
-
const bookingData = agent.getData('booking');
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## 🛤️ Route Agent
|
|
235
|
-
|
|
236
|
-
```typescript
|
|
237
|
-
interface RouteOptions<TData = unknown> {
|
|
238
|
-
// Required
|
|
239
|
-
title: string;
|
|
240
|
-
|
|
241
|
-
// Optional
|
|
242
|
-
id?: string; // Custom ID (auto-generated from title if not provided)
|
|
243
|
-
description?: string;
|
|
244
|
-
conditions?: string[];
|
|
245
|
-
guidelines?: Guideline[];
|
|
246
|
-
domains?: string[]; // Restrict which domains are available in this route
|
|
247
|
-
rules?: string[]; // Absolute rules the agent MUST follow
|
|
248
|
-
prohibitions?: string[]; // Absolute prohibitions the agent MUST NEVER do
|
|
249
|
-
|
|
250
|
-
// NEW: Schema-first data extraction
|
|
251
|
-
schema?: {
|
|
252
|
-
type: "object";
|
|
253
|
-
properties: Record<string, any>;
|
|
254
|
-
required?: string[];
|
|
255
|
-
additionalProperties?: boolean;
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
// NEW: Pre-populate collected data when entering route
|
|
259
|
-
initialData?: Partial<TData>;
|
|
260
|
-
}
|
|
261
|
-
````
|
|
262
|
-
|
|
263
|
-
**Domain Scoping:**
|
|
264
|
-
|
|
265
|
-
- Use `domains` to limit which registered domains (tools/methods) can be accessed during this route
|
|
266
|
-
- If `undefined` or omitted, all registered domains are available
|
|
267
|
-
- Useful for security (preventing unauthorized tool calls) and performance (reducing AI decision space)
|
|
268
|
-
|
|
269
|
-
**Rules & Prohibitions:**
|
|
270
|
-
|
|
271
|
-
- **Rules**: Absolute requirements the agent must follow in this route (style, format, behavior)
|
|
272
|
-
- **Prohibitions**: Things the agent must never do in this route
|
|
273
|
-
- These override general guidelines if there's any conflict
|
|
274
|
-
- Applied automatically when the route is active
|
|
275
|
-
- Perfect for controlling message style, tone, length, emoji usage, etc.
|
|
276
|
-
|
|
277
|
-
### Example: Route with Nested Guidelines
|
|
278
|
-
|
|
279
|
-
```typescript
|
|
280
|
-
const agent = new Agent({
|
|
281
|
-
name: "Bot",
|
|
282
|
-
provider: provider,
|
|
283
|
-
routes: [
|
|
284
|
-
{
|
|
285
|
-
title: "Onboarding",
|
|
286
|
-
description: "Guide new users",
|
|
287
|
-
conditions: ["User is new"],
|
|
288
|
-
guidelines: [
|
|
289
|
-
{
|
|
290
|
-
condition: "User skips a step",
|
|
291
|
-
action: "Gently remind them it's important",
|
|
292
|
-
tags: ["onboarding"],
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
condition: "User seems confused",
|
|
296
|
-
action: "Offer a quick tutorial video",
|
|
297
|
-
tags: ["help"],
|
|
298
|
-
},
|
|
299
|
-
],
|
|
300
|
-
},
|
|
301
|
-
],
|
|
302
|
-
});
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### Example: Route with Domain Scoping
|
|
306
|
-
|
|
307
|
-
```typescript
|
|
308
|
-
// Register domains
|
|
309
|
-
agent.addDomain("scraping", {
|
|
310
|
-
scrapeSite: async (url: string) => {
|
|
311
|
-
/* ... */
|
|
312
|
-
},
|
|
313
|
-
extractData: async (html: string) => {
|
|
314
|
-
/* ... */
|
|
315
|
-
},
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
agent.addDomain("calendar", {
|
|
319
|
-
scheduleEvent: async (date: Date, title: string) => {
|
|
320
|
-
/* ... */
|
|
321
|
-
},
|
|
322
|
-
listEvents: async () => {
|
|
323
|
-
/* ... */
|
|
324
|
-
},
|
|
325
|
-
});
|
|
326
|
-
|
|
327
|
-
agent.addDomain("payment", {
|
|
328
|
-
processPayment: async (amount: number) => {
|
|
329
|
-
/* ... */
|
|
330
|
-
},
|
|
331
|
-
});
|
|
332
|
-
|
|
333
|
-
// Create routes with domain restrictions
|
|
334
|
-
agent.createRoute({
|
|
335
|
-
title: "Data Collection",
|
|
336
|
-
description: "Collect and process web data",
|
|
337
|
-
domains: ["scraping"], // ✅ Only scraping tools available
|
|
338
|
-
});
|
|
339
|
-
|
|
340
|
-
agent.createRoute({
|
|
341
|
-
title: "Schedule Meeting",
|
|
342
|
-
description: "Book appointments",
|
|
343
|
-
domains: ["calendar"], // ✅ Only calendar tools available
|
|
344
|
-
});
|
|
345
|
-
|
|
346
|
-
agent.createRoute({
|
|
347
|
-
title: "Checkout",
|
|
348
|
-
description: "Process purchase",
|
|
349
|
-
domains: ["payment", "calendar"], // ✅ Multiple domains allowed
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
agent.createRoute({
|
|
353
|
-
title: "FAQ Support",
|
|
354
|
-
description: "Answer general questions",
|
|
355
|
-
domains: [], // ✅ No tools available (conversation only)
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
agent.createRoute({
|
|
359
|
-
title: "Admin Support",
|
|
360
|
-
description: "Administrative tasks",
|
|
361
|
-
// domains not specified = all domains available (for demo purposes)
|
|
362
|
-
});
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
### Example: Route with Rules & Prohibitions
|
|
366
|
-
|
|
367
|
-
```typescript
|
|
368
|
-
// WhatsApp support bot with different styles per route
|
|
369
|
-
agent.createRoute({
|
|
370
|
-
title: "Customer Support",
|
|
371
|
-
description: "Help customers with issues",
|
|
372
|
-
domains: [],
|
|
373
|
-
rules: [
|
|
374
|
-
"Keep messages short (maximum 2 lines per message)",
|
|
375
|
-
"Use maximum 1 emoji per message",
|
|
376
|
-
"Always ask if the issue is resolved before ending",
|
|
377
|
-
"Professional but friendly tone",
|
|
378
|
-
],
|
|
379
|
-
prohibitions: [
|
|
380
|
-
"Never send messages longer than 3 paragraphs",
|
|
381
|
-
"Do not use slang or informal language",
|
|
382
|
-
"Never promise what you cannot deliver",
|
|
383
|
-
"Do not ask for sensitive information via chat",
|
|
384
|
-
],
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
agent.createRoute({
|
|
388
|
-
title: "Sales Consultation",
|
|
389
|
-
description: "Help customer discover needs and present solutions",
|
|
390
|
-
domains: ["calendar", "analytics"],
|
|
391
|
-
rules: [
|
|
392
|
-
"Ask open-ended questions to discover needs",
|
|
393
|
-
"Use storytelling when presenting solutions",
|
|
394
|
-
"Emoji only to reinforce positive emotions 😊",
|
|
395
|
-
"Always present value before mentioning price",
|
|
396
|
-
],
|
|
397
|
-
prohibitions: [
|
|
398
|
-
"Never talk about price before showing value",
|
|
399
|
-
"Do not pressure the customer",
|
|
400
|
-
"Avoid complex technical terms",
|
|
401
|
-
"Never send more than 2 messages in a row without customer response",
|
|
402
|
-
],
|
|
403
|
-
});
|
|
404
|
-
|
|
405
|
-
agent.createRoute({
|
|
406
|
-
title: "Emergency Support",
|
|
407
|
-
description: "Handle urgent customer issues",
|
|
408
|
-
domains: ["notifications", "ticketing"],
|
|
409
|
-
rules: [
|
|
410
|
-
"Respond immediately and acknowledge urgency",
|
|
411
|
-
"Use clear, direct language",
|
|
412
|
-
"Provide concrete next steps",
|
|
413
|
-
"Set clear expectations on resolution time",
|
|
414
|
-
],
|
|
415
|
-
prohibitions: [
|
|
416
|
-
"Never downplay the customer's concern",
|
|
417
|
-
"Do not use emojis",
|
|
418
|
-
'Never say "calm down" or similar phrases',
|
|
419
|
-
"Do not transfer without explaining why",
|
|
420
|
-
],
|
|
421
|
-
});
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
**How it works:**
|
|
425
|
-
|
|
426
|
-
- Rules and prohibitions are automatically applied when the route is active
|
|
427
|
-
- They override general guidelines if there's any conflict
|
|
428
|
-
- Perfect for controlling communication style per context
|
|
429
|
-
- Applied in the AI prompt to ensure compliance
|
|
430
|
-
|
|
431
|
-
---
|
|
432
|
-
|
|
433
|
-
### Example: With Route References
|
|
434
|
-
|
|
435
|
-
```typescript
|
|
436
|
-
const agent = new Agent({
|
|
437
|
-
name: "HealthBot",
|
|
438
|
-
provider: provider,
|
|
439
|
-
routes: [
|
|
440
|
-
{ title: "Schedule Appointment", conditions: [...] },
|
|
441
|
-
{ title: "Cancel Appointment", conditions: [...] },
|
|
442
|
-
{ title: "Reschedule Appointment", conditions: [...] }
|
|
443
|
-
],
|
|
444
|
-
});
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
---
|
|
448
|
-
|
|
449
|
-
## 🔄 Fluent API (Still Available!)
|
|
450
|
-
|
|
451
|
-
All agents also have fluent methods that **return `this`** for chaining:
|
|
452
|
-
|
|
453
|
-
```typescript
|
|
454
|
-
agent
|
|
455
|
-
.createTerm({ name: "API", description: "..." })
|
|
456
|
-
.createGuideline({ condition: "...", action: "..." })
|
|
457
|
-
.createCapability({ title: "...", description: "..." });
|
|
458
|
-
|
|
459
|
-
const route = agent.createRoute({ title: "..." });
|
|
460
|
-
route.createGuideline({ condition: "...", action: "..." });
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
---
|
|
464
|
-
|
|
465
|
-
## 🎨 Best Practices
|
|
466
|
-
|
|
467
|
-
### Use Declarative When:
|
|
468
|
-
|
|
469
|
-
- ✅ Configuration is **static** and known upfront
|
|
470
|
-
- ✅ Loading config from **JSON/YAML files**
|
|
471
|
-
- ✅ Building **reusable agent templates**
|
|
472
|
-
- ✅ You want **clean, readable initialization**
|
|
473
|
-
|
|
474
|
-
### Use Fluent When:
|
|
475
|
-
|
|
476
|
-
- ✅ Logic is **dynamic** or **conditional**
|
|
477
|
-
- ✅ Building routes with **complex step machines**
|
|
478
|
-
- ✅ Adding features **based on runtime conditions**
|
|
479
|
-
- ✅ You prefer **step-by-step construction**
|
|
480
|
-
|
|
481
|
-
### Mix Both!
|
|
482
|
-
|
|
483
|
-
```typescript
|
|
484
|
-
// Start with static config
|
|
485
|
-
const agent = new Agent({
|
|
486
|
-
name: "Bot",
|
|
487
|
-
provider: provider,
|
|
488
|
-
terms: loadTermsFromFile(),
|
|
489
|
-
guidelines: loadGuidelinesFromDB(),
|
|
490
|
-
});
|
|
491
|
-
|
|
492
|
-
// Add dynamic features
|
|
493
|
-
if (user.isPremium) {
|
|
494
|
-
agent.createGuideline({
|
|
495
|
-
condition: "User asks for priority support",
|
|
496
|
-
action: "Escalate immediately to premium team",
|
|
497
|
-
});
|
|
498
|
-
}
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
|
-
## 📊 Complete Comparison
|
|
504
|
-
|
|
505
|
-
| Feature | Declarative (Constructor) | Fluent (Methods) |
|
|
506
|
-
| -------------------- | ------------------------------- | ----------------------------- |
|
|
507
|
-
| **Terms** | `terms: Term[]` | `agent.createTerm(...)` |
|
|
508
|
-
| **Guidelines** | `guidelines: Guideline[]` | `agent.createGuideline(...)` |
|
|
509
|
-
| **Capabilities** | `capabilities: Capability[]` | `agent.createCapability(...)` |
|
|
510
|
-
| **Routes** | `routes: RouteOptions[]` | `agent.createRoute(...)` |
|
|
511
|
-
| **Route Guidelines** | `route.guidelines: Guideline[]` | `route.createGuideline(...)` |
|
|
512
|
-
|
|
513
|
-
---
|
|
514
|
-
|
|
515
|
-
## 🚀 Quick Reference
|
|
516
|
-
|
|
517
|
-
```typescript
|
|
518
|
-
// Everything in one place
|
|
519
|
-
const agent = new Agent<MyContext>({
|
|
520
|
-
name: string,
|
|
521
|
-
description?: string,
|
|
522
|
-
goal?: string,
|
|
523
|
-
provider: AiProvider,
|
|
524
|
-
context?: MyContext,
|
|
525
|
-
session?: SessionState, // Optional current session
|
|
526
|
-
maxEngineIterations?: number,
|
|
527
|
-
compositionMode?: CompositionMode,
|
|
528
|
-
terms?: Term[],
|
|
529
|
-
guidelines?: Guideline[],
|
|
530
|
-
capabilities?: Capability[],
|
|
531
|
-
routes?: RouteOptions[], // Can include nested guidelines
|
|
532
|
-
});
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
**Made with ❤️ for the community**
|