@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/EXAMPLES.md
DELETED
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
# Examples
|
|
2
|
-
|
|
3
|
-
This directory contains production-ready examples demonstrating all features of `@falai/agent`.
|
|
4
|
-
|
|
5
|
-
## 🚀 Getting Started Examples
|
|
6
|
-
|
|
7
|
-
### 🔄 [Route Transitions](../examples/route-transitions.ts) **NEW!**
|
|
8
|
-
|
|
9
|
-
**Perfect for:** Learning automatic workflow chaining
|
|
10
|
-
|
|
11
|
-
Complete example demonstrating the new `onComplete` feature for seamless route transitions:
|
|
12
|
-
|
|
13
|
-
- ✅ Hotel booking flow transitioning to feedback collection
|
|
14
|
-
- ✅ Three ways to define transitions (string, config, function)
|
|
15
|
-
- ✅ Automatic transition after route completion
|
|
16
|
-
- ✅ Manual transition control with `agent.nextStepRoute()`
|
|
17
|
-
- ✅ Dynamic logic based on collected data
|
|
18
|
-
- ✅ Pending transition tracking in session step
|
|
19
|
-
|
|
20
|
-
**Key concepts:** Route transitions, workflow chaining, feedback collection, onComplete handlers
|
|
21
|
-
|
|
22
|
-
```typescript
|
|
23
|
-
// Automatic transition after booking completes
|
|
24
|
-
const bookingRoute = agent.createRoute<BookingData>({
|
|
25
|
-
title: "Book Hotel",
|
|
26
|
-
onComplete: "Collect Feedback", // Simple string
|
|
27
|
-
|
|
28
|
-
// Or with AI condition:
|
|
29
|
-
// onComplete: {
|
|
30
|
-
// nextStep: "Collect Feedback",
|
|
31
|
-
// condition: "if booking was successful"
|
|
32
|
-
// },
|
|
33
|
-
|
|
34
|
-
// Or with function logic:
|
|
35
|
-
// onComplete: (session) => {
|
|
36
|
-
// if (session.data?.guests > 5) {
|
|
37
|
-
// return "VIP Feedback";
|
|
38
|
-
// }
|
|
39
|
-
// return "Collect Feedback";
|
|
40
|
-
// },
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
// Feedback route automatically triggered after booking
|
|
44
|
-
const feedbackRoute = agent.createRoute<FeedbackData>({
|
|
45
|
-
title: "Collect Feedback",
|
|
46
|
-
// ... steps for collecting rating and comments
|
|
47
|
-
});
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Use cases:** Post-booking feedback, upsell flows, satisfaction surveys, error recovery
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
### 📋 [Declarative Agent](../examples/declarative-agent.ts)
|
|
55
|
-
|
|
56
|
-
**Perfect for:** Learning the full configuration API
|
|
57
|
-
|
|
58
|
-
Comprehensive example showing declarative agent configuration:
|
|
59
|
-
|
|
60
|
-
- ✅ Full constructor-based setup
|
|
61
|
-
- ✅ Terms, guidelines, capabilities, routes defined upfront
|
|
62
|
-
- ✅ Session step management with data extraction
|
|
63
|
-
- ✅ Custom IDs for routes, steps, and tools
|
|
64
|
-
- ✅ Dynamic additions after construction
|
|
65
|
-
|
|
66
|
-
**Key concepts:** Declarative configuration, session step, data extraction schemas
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
const agent = new Agent({
|
|
70
|
-
name: "HealthBot",
|
|
71
|
-
provider: provider,
|
|
72
|
-
terms: [...],
|
|
73
|
-
guidelines: [...],
|
|
74
|
-
routes: [{
|
|
75
|
-
schema: { /* JSON Schema */ }
|
|
76
|
-
}]
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## 🏢 Real-World Applications
|
|
83
|
-
|
|
84
|
-
### 🏢 [Business Onboarding](../examples/business-onboarding.ts)
|
|
85
|
-
|
|
86
|
-
**Perfect for:** Building complex multi-step workflows
|
|
87
|
-
|
|
88
|
-
Production-ready business onboarding with advanced patterns:
|
|
89
|
-
|
|
90
|
-
- ✅ Multi-step data collection flow
|
|
91
|
-
- ✅ Branching logic (physical vs online business)
|
|
92
|
-
- ✅ Tools with `contextUpdate` for automatic step management
|
|
93
|
-
- ✅ Both step-by-step and fluent chaining approaches
|
|
94
|
-
- ✅ Lifecycle hooks for persistence
|
|
95
|
-
- ✅ Dynamic route creation based on collected data
|
|
96
|
-
|
|
97
|
-
**Key concepts:** Complex flows, branching logic, context updates, lifecycle hooks
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
// Branching based on business type
|
|
101
|
-
const askPhysicalLocation = askLocation.nextStep({
|
|
102
|
-
instructions: "Get physical store address",
|
|
103
|
-
condition: "User has a physical store",
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
const askOnlineLocation = askLocation.nextStep({
|
|
107
|
-
instructions: "Get website and online support hours",
|
|
108
|
-
condition: "User does not have a physical store",
|
|
109
|
-
});
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### ✈️ [Travel Agent](../examples/travel-agent.ts)
|
|
113
|
-
|
|
114
|
-
**Perfect for:** Multi-route systems with session step
|
|
115
|
-
|
|
116
|
-
Complete travel booking system featuring:
|
|
117
|
-
|
|
118
|
-
- ✅ Multi-step flight booking flow
|
|
119
|
-
- ✅ Data extraction with JSON Schema
|
|
120
|
-
- ✅ Session step tracking across turns
|
|
121
|
-
- ✅ Tools with data access via `data` context
|
|
122
|
-
- ✅ Alternative flow handling (booking vs status check)
|
|
123
|
-
- ✅ Route-specific guidelines
|
|
124
|
-
- ✅ **NEW:** Automatic feedback collection after booking with `onComplete`
|
|
125
|
-
|
|
126
|
-
**Key concepts:** Session step, data extraction, multiple routes, tool data access, route transitions
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
const searchFlights = defineTool(
|
|
130
|
-
"search_flights",
|
|
131
|
-
async ({ context, data }) => {
|
|
132
|
-
// Tool has access to data booking data
|
|
133
|
-
if (!data?.destination || !data?.departureDate) {
|
|
134
|
-
return { data: [] };
|
|
135
|
-
}
|
|
136
|
-
// Use collected data to search
|
|
137
|
-
const flights = await searchAPI(data);
|
|
138
|
-
return { data: flights };
|
|
139
|
-
}
|
|
140
|
-
);
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### 🏥 [Healthcare Assistant](../examples/healthcare-agent.ts)
|
|
144
|
-
|
|
145
|
-
**Perfect for:** Sensitive data handling and compliance
|
|
146
|
-
|
|
147
|
-
Healthcare-focused agent demonstrating:
|
|
148
|
-
|
|
149
|
-
- ✅ Appointment scheduling with validation
|
|
150
|
-
- ✅ Lab results retrieval
|
|
151
|
-
- ✅ Route-based disambiguation with conditions
|
|
152
|
-
- ✅ Sensitive data handling best practices
|
|
153
|
-
- ✅ Urgent case prioritization
|
|
154
|
-
- ✅ HIPAA-style security patterns
|
|
155
|
-
- ✅ **NEW:** Satisfaction survey after appointment with `onComplete`
|
|
156
|
-
|
|
157
|
-
**Key concepts:** Data security, route disambiguation, validation, compliance, route transitions
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## ⚡ Advanced Features
|
|
162
|
-
|
|
163
|
-
### ⚡ [Streaming Responses](../examples/streaming-agent.ts)
|
|
164
|
-
|
|
165
|
-
**Perfect for:** Real-time UX and better perceived performance
|
|
166
|
-
|
|
167
|
-
Real-time streaming responses:
|
|
168
|
-
|
|
169
|
-
- ✅ Stream responses from all providers (Anthropic, OpenAI, Gemini, OpenRouter)
|
|
170
|
-
- ✅ Real-time text generation with `respondStream`
|
|
171
|
-
- ✅ Cancellable streams with AbortSignal
|
|
172
|
-
- ✅ Access route, step, and tool information in final chunk
|
|
173
|
-
- ✅ 5 comprehensive examples covering different use cases
|
|
174
|
-
|
|
175
|
-
**Key concepts:** Streaming, real-time UX, cancellation
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
for await (const chunk of agent.respondStream({ history })) {
|
|
179
|
-
process.stdout.write(chunk.delta);
|
|
180
|
-
|
|
181
|
-
if (chunk.done) {
|
|
182
|
-
console.log("Route:", chunk.route?.title);
|
|
183
|
-
console.log("Data:", chunk.data);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### 🔐 [Domain Scoping](../examples/domain-scoping.ts)
|
|
189
|
-
|
|
190
|
-
**Perfect for:** Security-conscious applications
|
|
191
|
-
|
|
192
|
-
Control tool access per route for security:
|
|
193
|
-
|
|
194
|
-
- ✅ Organize tools into security domains
|
|
195
|
-
- ✅ Restrict which tools each route can use
|
|
196
|
-
- ✅ Prevent unauthorized tool calls
|
|
197
|
-
- ✅ Improve AI performance by reducing decision space
|
|
198
|
-
- ✅ Clear documentation of route capabilities
|
|
199
|
-
|
|
200
|
-
**Key concepts:** Security, tool isolation, domain organization
|
|
201
|
-
|
|
202
|
-
```typescript
|
|
203
|
-
agent.addDomain("payment", { processPayment, refund });
|
|
204
|
-
agent.addDomain("user", { updateProfile, sendEmail });
|
|
205
|
-
|
|
206
|
-
// Checkout route can ONLY use payment tools
|
|
207
|
-
agent.createRoute({
|
|
208
|
-
title: "Checkout",
|
|
209
|
-
domains: ["payment"], // ← Security boundary
|
|
210
|
-
});
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### 📜 [Rules & Prohibitions](../examples/rules-prohibitions.ts)
|
|
214
|
-
|
|
215
|
-
**Perfect for:** Multi-channel bots with different styles
|
|
216
|
-
|
|
217
|
-
Control agent behavior and communication style per route:
|
|
218
|
-
|
|
219
|
-
- ✅ Define absolute rules the agent must follow
|
|
220
|
-
- ✅ Set prohibitions for what agent must never do
|
|
221
|
-
- ✅ Different communication styles per route
|
|
222
|
-
- ✅ Perfect for multi-channel bots (WhatsApp, email, chat)
|
|
223
|
-
- ✅ Automatic enforcement without manual checking
|
|
224
|
-
|
|
225
|
-
**Key concepts:** Behavior control, tone management, channel-specific styling
|
|
226
|
-
|
|
227
|
-
```typescript
|
|
228
|
-
agent.createRoute({
|
|
229
|
-
title: "WhatsApp Support",
|
|
230
|
-
rules: ["Keep messages under 2 lines", "Use max 1 emoji"],
|
|
231
|
-
prohibitions: ["Never send long paragraphs", "Don't over-explain"],
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
agent.createRoute({
|
|
235
|
-
title: "Email Support",
|
|
236
|
-
rules: ["Use professional tone", "Include clear next steps"],
|
|
237
|
-
prohibitions: ["No emojis", "Avoid slang"],
|
|
238
|
-
});
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 💾 Persistence Examples
|
|
244
|
-
|
|
245
|
-
### 💾 [Prisma Persistence](../examples/prisma-persistence.ts)
|
|
246
|
-
|
|
247
|
-
**Perfect for:** Production apps with relational databases
|
|
248
|
-
|
|
249
|
-
Auto-save sessions and messages with Prisma ORM:
|
|
250
|
-
|
|
251
|
-
- ✅ Provider pattern - simple as `new PrismaAdapter({ prisma })`
|
|
252
|
-
- ✅ Automatic session and message persistence
|
|
253
|
-
- ✅ Seamless lifecycle hook integration
|
|
254
|
-
- ✅ Type-safe database operations
|
|
255
|
-
- ✅ 3-step setup guide
|
|
256
|
-
|
|
257
|
-
**Key concepts:** Database persistence, Prisma ORM, auto-save
|
|
258
|
-
|
|
259
|
-
```typescript
|
|
260
|
-
const agent = new Agent({
|
|
261
|
-
persistence: {
|
|
262
|
-
adapter: new PrismaAdapter({ prisma }),
|
|
263
|
-
autoSave: true,
|
|
264
|
-
userId: "user_123",
|
|
265
|
-
},
|
|
266
|
-
});
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### ⚡ [Redis Persistence](../examples/redis-persistence.ts)
|
|
270
|
-
|
|
271
|
-
**Perfect for:** High-throughput real-time applications
|
|
272
|
-
|
|
273
|
-
Fast, in-memory persistence:
|
|
274
|
-
|
|
275
|
-
- ✅ Lightning-fast session storage
|
|
276
|
-
- ✅ Configurable TTLs for auto-cleanup
|
|
277
|
-
- ✅ Custom key prefixes
|
|
278
|
-
- ✅ Perfect for real-time chat applications
|
|
279
|
-
- ✅ Simple setup with ioredis
|
|
280
|
-
|
|
281
|
-
**Key concepts:** In-memory persistence, Redis, TTL management
|
|
282
|
-
|
|
283
|
-
### 🔍 [OpenSearch Persistence](../examples/opensearch-persistence.ts)
|
|
284
|
-
|
|
285
|
-
**Perfect for:** Analytics and full-text search requirements
|
|
286
|
-
|
|
287
|
-
Full-text search and analytics-powered persistence:
|
|
288
|
-
|
|
289
|
-
- ✅ Built-in full-text search across all messages
|
|
290
|
-
- ✅ Powerful aggregations and analytics
|
|
291
|
-
- ✅ Compatible with Elasticsearch 7.x
|
|
292
|
-
- ✅ AWS OpenSearch Service ready
|
|
293
|
-
- ✅ Index management and optimization
|
|
294
|
-
|
|
295
|
-
**Key concepts:** Search, analytics, OpenSearch, Elasticsearch
|
|
296
|
-
|
|
297
|
-
### 🗄️ [Custom Database Integration](../examples/custom-database-persistence.ts)
|
|
298
|
-
|
|
299
|
-
**Perfect for:** Integrating with existing database schemas
|
|
300
|
-
|
|
301
|
-
Manual session step management for existing schemas:
|
|
302
|
-
|
|
303
|
-
- ✅ Full control over database operations
|
|
304
|
-
- ✅ Works with any database (no adapter needed)
|
|
305
|
-
- ✅ Manual session step save/restore
|
|
306
|
-
- ✅ Perfect for integrating with existing schemas
|
|
307
|
-
- ✅ Complete example with validation hooks
|
|
308
|
-
|
|
309
|
-
**Key concepts:** Custom persistence, existing schemas, manual control
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## 🔧 Context & Step Management
|
|
314
|
-
|
|
315
|
-
### 💾 [Persistent Onboarding Agent](../examples/persistent-onboarding.ts)
|
|
316
|
-
|
|
317
|
-
**Perfect for:** Multi-turn conversations with persistence
|
|
318
|
-
|
|
319
|
-
Multi-turn conversation with step persistence:
|
|
320
|
-
|
|
321
|
-
- ✅ Context lifecycle hooks for database integration
|
|
322
|
-
- ✅ Automatic persistence on context updates
|
|
323
|
-
- ✅ Factory pattern for agent creation
|
|
324
|
-
- ✅ Two approaches: lifecycle hooks vs context provider
|
|
325
|
-
- ✅ Complete onboarding flow across multiple turns
|
|
326
|
-
|
|
327
|
-
**Key concepts:** Context lifecycle, multi-turn conversations, factory pattern
|
|
328
|
-
|
|
329
|
-
```typescript
|
|
330
|
-
const agent = new Agent({
|
|
331
|
-
hooks: {
|
|
332
|
-
beforeRespond: async (context) => {
|
|
333
|
-
return await database.loadContext(sessionId);
|
|
334
|
-
},
|
|
335
|
-
onContextUpdate: async (newContext) => {
|
|
336
|
-
await database.saveContext(sessionId, newContext);
|
|
337
|
-
},
|
|
338
|
-
},
|
|
339
|
-
});
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### 🔄 [Collected data Modification](../examples/data-data-modification.ts)
|
|
343
|
-
|
|
344
|
-
**Perfect for:** Data validation and enrichment
|
|
345
|
-
|
|
346
|
-
Tools that validate and enrich collected data:
|
|
347
|
-
|
|
348
|
-
- ✅ Tools can modify collected data with `dataUpdate`
|
|
349
|
-
- ✅ Data validation and enrichment patterns
|
|
350
|
-
- ✅ Flag-based conditional execution
|
|
351
|
-
- ✅ Error handling and data correction
|
|
352
|
-
- ✅ Multi-step data refinement
|
|
353
|
-
|
|
354
|
-
**Key concepts:** Data validation, enrichment, dataUpdate, flags
|
|
355
|
-
|
|
356
|
-
```typescript
|
|
357
|
-
const validateEmail = defineTool("validate_email", async ({ data }) => {
|
|
358
|
-
const isValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email);
|
|
359
|
-
return {
|
|
360
|
-
data: isValid,
|
|
361
|
-
dataUpdate: {
|
|
362
|
-
emailValid: isValid, // Enrich collected data
|
|
363
|
-
},
|
|
364
|
-
};
|
|
365
|
-
});
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## 🤖 Provider Examples
|
|
371
|
-
|
|
372
|
-
### 🌐 [OpenAI Agent](../examples/openai-agent.ts)
|
|
373
|
-
|
|
374
|
-
**Perfect for:** Using GPT models
|
|
375
|
-
|
|
376
|
-
GPT-5 integration with backup models:
|
|
377
|
-
|
|
378
|
-
- ✅ OpenAI provider configuration
|
|
379
|
-
- ✅ Backup model fallback
|
|
380
|
-
- ✅ Retry configuration
|
|
381
|
-
- ✅ Weather checking example
|
|
382
|
-
|
|
383
|
-
**Key concepts:** OpenAI integration, model fallback
|
|
384
|
-
|
|
385
|
-
### 🌐 Multiple Providers
|
|
386
|
-
|
|
387
|
-
See how different AI providers work:
|
|
388
|
-
|
|
389
|
-
- **[OpenAI Agent](../examples/openai-agent.ts)** - GPT-5 integration
|
|
390
|
-
- **[Healthcare Agent](../examples/healthcare-agent.ts)** - Claude 3.5 Sonnet (Anthropic)
|
|
391
|
-
- **[Travel Agent](../examples/travel-agent.ts)** - OpenRouter with backup models
|
|
392
|
-
- All examples include backup model configuration and retry settings
|
|
393
|
-
|
|
394
|
-
---
|
|
395
|
-
|
|
396
|
-
## 📚 Additional Examples
|
|
397
|
-
|
|
398
|
-
### 📊 [Company Q&A Agent](../examples/company-qna-agent.ts)
|
|
399
|
-
|
|
400
|
-
**Perfect for:** Stepless question-answering systems
|
|
401
|
-
|
|
402
|
-
Simple Q&A agent with knowledge base:
|
|
403
|
-
|
|
404
|
-
- ✅ Stepless routes (no data extraction)
|
|
405
|
-
- ✅ Knowledge base integration
|
|
406
|
-
- ✅ Simple request-response pattern
|
|
407
|
-
- ✅ Perfect for FAQ bots
|
|
408
|
-
|
|
409
|
-
**Key concepts:** Stepless routing, Q&A patterns
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## 🎯 How to Use These Examples
|
|
414
|
-
|
|
415
|
-
### Running Examples
|
|
416
|
-
|
|
417
|
-
```bash
|
|
418
|
-
# Install dependencies
|
|
419
|
-
bun install
|
|
420
|
-
|
|
421
|
-
# Set up environment variables
|
|
422
|
-
echo "GEMINI_API_KEY=your_key" > .env
|
|
423
|
-
|
|
424
|
-
# Run an example
|
|
425
|
-
bun examples/travel-agent.ts
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
### Learning Path
|
|
429
|
-
|
|
430
|
-
1. **Start here:** [Declarative Agent](../examples/declarative-agent.ts) - Learn the basics
|
|
431
|
-
2. **Simple flow:** [Travel Agent](../examples/travel-agent.ts) - Session step & extraction
|
|
432
|
-
3. **Complex flow:** [Business Onboarding](../examples/business-onboarding.ts) - Branching & lifecycle
|
|
433
|
-
4. **Add persistence:** [Prisma Persistence](../examples/prisma-persistence.ts) - Database integration
|
|
434
|
-
5. **Add security:** [Domain Scoping](../examples/domain-scoping.ts) - Tool isolation
|
|
435
|
-
|
|
436
|
-
### Quick Reference
|
|
437
|
-
|
|
438
|
-
| Example | Best For | Key Features |
|
|
439
|
-
| ------------------- | --------------- | --------------------------- |
|
|
440
|
-
| Declarative Agent | Learning basics | Full API coverage |
|
|
441
|
-
| Travel Agent | Session step | Multi-turn conversations |
|
|
442
|
-
| Business Onboarding | Complex flows | Branching, lifecycle hooks |
|
|
443
|
-
| Healthcare Agent | Security | Data validation, compliance |
|
|
444
|
-
| Streaming Agent | Real-time UX | Streaming responses |
|
|
445
|
-
| Domain Scoping | Security | Tool isolation |
|
|
446
|
-
| Prisma Persistence | Production | Database integration |
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
## 💡 Tips
|
|
451
|
-
|
|
452
|
-
**For Production:**
|
|
453
|
-
|
|
454
|
-
- Use [Prisma Persistence](../examples/prisma-persistence.ts) for relational data
|
|
455
|
-
- Use [Redis Persistence](../examples/redis-persistence.ts) for high-throughput
|
|
456
|
-
- Implement [Domain Scoping](../examples/domain-scoping.ts) for security
|
|
457
|
-
- Add [Rules & Prohibitions](../examples/rules-prohibitions.ts) for brand consistency
|
|
458
|
-
|
|
459
|
-
**For Development:**
|
|
460
|
-
|
|
461
|
-
- Start with [Declarative Agent](../examples/declarative-agent.ts)
|
|
462
|
-
- Use [Streaming Agent](../examples/streaming-agent.ts) for better UX
|
|
463
|
-
- Check [Custom Database Integration](../examples/custom-database-persistence.ts) for existing schemas
|
|
464
|
-
|
|
465
|
-
---
|
|
466
|
-
|
|
467
|
-
**Need help?** Check the [full documentation](./README.md) or [open an issue](https://github.com/falai-dev/agent/issues).
|