@falai/agent 1.2.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -886
- package/dist/adapters/MemoryAdapter.js +2 -2
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +9 -7
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +25 -9
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.js +5 -5
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.js +2 -2
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts +17 -0
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +30 -11
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +2 -2
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +2 -2
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +5 -5
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/constants/index.d.ts +0 -9
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +2 -11
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/core/Agent.d.ts +119 -153
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +471 -324
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
- package/dist/cjs/core/AutoChainExecutor.js +297 -0
- package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
- package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
- package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
- package/dist/cjs/core/BranchEvaluator.js +130 -0
- package/dist/cjs/core/BranchEvaluator.js.map +1 -0
- package/dist/cjs/core/DirectiveBus.d.ts +88 -0
- package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
- package/dist/cjs/core/DirectiveBus.js +196 -0
- package/dist/cjs/core/DirectiveBus.js.map +1 -0
- package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
- package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
- package/dist/cjs/core/DirectiveChainTracker.js +121 -0
- package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
- package/dist/cjs/core/Flow.d.ts +186 -0
- package/dist/cjs/core/Flow.d.ts.map +1 -0
- package/dist/cjs/core/Flow.js +550 -0
- package/dist/cjs/core/Flow.js.map +1 -0
- package/dist/cjs/core/FlowRouter.d.ts +182 -0
- package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
- package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
- package/dist/cjs/core/FlowRouter.js.map +1 -0
- package/dist/cjs/core/PersistenceManager.d.ts +2 -2
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +7 -7
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/PromptComposer.d.ts +21 -8
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/core/PromptComposer.js +182 -105
- package/dist/cjs/core/PromptComposer.js.map +1 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
- package/dist/cjs/core/PromptSectionCache.js +1 -1
- package/dist/cjs/core/ResponseEngine.d.ts +18 -8
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +38 -36
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/ResponseModal.d.ts +73 -56
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +1196 -1015
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/core/ResponsePipeline.js +524 -134
- package/dist/cjs/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
- package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
- package/dist/cjs/core/SignalEvaluator.js +333 -0
- package/dist/cjs/core/SignalEvaluator.js.map +1 -0
- package/dist/cjs/core/SignalProcessor.d.ts +152 -0
- package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
- package/dist/cjs/core/SignalProcessor.js +562 -0
- package/dist/cjs/core/SignalProcessor.js.map +1 -0
- package/dist/cjs/core/Step.d.ts +43 -32
- package/dist/cjs/core/Step.d.ts.map +1 -1
- package/dist/cjs/core/Step.js +221 -126
- package/dist/cjs/core/Step.js.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
- package/dist/cjs/core/ToolManager.d.ts +44 -13
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js +174 -91
- package/dist/cjs/core/ToolManager.js.map +1 -1
- package/dist/cjs/core/createAgent.d.ts +35 -0
- package/dist/cjs/core/createAgent.d.ts.map +1 -0
- package/dist/cjs/core/createAgent.js +39 -0
- package/dist/cjs/core/createAgent.js.map +1 -0
- package/dist/cjs/core/flow-namespace.d.ts +49 -0
- package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
- package/dist/cjs/core/flow-namespace.js +171 -0
- package/dist/cjs/core/flow-namespace.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -14
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +18 -22
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +3 -3
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +16 -14
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +183 -54
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js +0 -6
- package/dist/cjs/types/agent.js.map +1 -1
- package/dist/cjs/types/ai.d.ts +3 -3
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +15 -0
- package/dist/cjs/types/errors.d.ts.map +1 -0
- package/dist/cjs/types/errors.js +22 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/flow.d.ts +513 -0
- package/dist/cjs/types/flow.d.ts.map +1 -0
- package/dist/cjs/types/{route.js → flow.js} +2 -2
- package/dist/cjs/types/flow.js.map +1 -0
- package/dist/cjs/types/index.d.ts +7 -6
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +6 -2
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/persistence.d.ts +11 -7
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/routing.d.ts +1 -1
- package/dist/cjs/types/routing.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +24 -23
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/signals.d.ts +248 -0
- package/dist/cjs/types/signals.d.ts.map +1 -0
- package/dist/cjs/types/signals.js +11 -0
- package/dist/cjs/types/signals.js.map +1 -0
- package/dist/cjs/types/template.d.ts +2 -8
- package/dist/cjs/types/template.d.ts.map +1 -1
- package/dist/cjs/types/tool.d.ts +36 -29
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/types/tool.js +1 -1
- package/dist/cjs/types/tool.js.map +1 -1
- package/dist/cjs/utils/condition.d.ts +7 -1
- package/dist/cjs/utils/condition.d.ts.map +1 -1
- package/dist/cjs/utils/condition.js.map +1 -1
- package/dist/cjs/utils/id.d.ts +13 -5
- package/dist/cjs/utils/id.d.ts.map +1 -1
- package/dist/cjs/utils/id.js +24 -10
- package/dist/cjs/utils/id.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +2 -2
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +7 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/session.d.ts +44 -5
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +197 -38
- package/dist/cjs/utils/session.js.map +1 -1
- package/dist/constants/index.d.ts +0 -9
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -9
- package/dist/constants/index.js.map +1 -1
- package/dist/core/Agent.d.ts +119 -153
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +472 -325
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/AutoChainExecutor.d.ts +107 -0
- package/dist/core/AutoChainExecutor.d.ts.map +1 -0
- package/dist/core/AutoChainExecutor.js +293 -0
- package/dist/core/AutoChainExecutor.js.map +1 -0
- package/dist/core/BranchEvaluator.d.ts +54 -0
- package/dist/core/BranchEvaluator.d.ts.map +1 -0
- package/dist/core/BranchEvaluator.js +126 -0
- package/dist/core/BranchEvaluator.js.map +1 -0
- package/dist/core/DirectiveBus.d.ts +88 -0
- package/dist/core/DirectiveBus.d.ts.map +1 -0
- package/dist/core/DirectiveBus.js +192 -0
- package/dist/core/DirectiveBus.js.map +1 -0
- package/dist/core/DirectiveChainTracker.d.ts +49 -0
- package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
- package/dist/core/DirectiveChainTracker.js +117 -0
- package/dist/core/DirectiveChainTracker.js.map +1 -0
- package/dist/core/Flow.d.ts +186 -0
- package/dist/core/Flow.d.ts.map +1 -0
- package/dist/core/Flow.js +546 -0
- package/dist/core/Flow.js.map +1 -0
- package/dist/core/FlowRouter.d.ts +182 -0
- package/dist/core/FlowRouter.d.ts.map +1 -0
- package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
- package/dist/core/FlowRouter.js.map +1 -0
- package/dist/core/PersistenceManager.d.ts +2 -2
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +7 -7
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/PromptComposer.d.ts +21 -8
- package/dist/core/PromptComposer.d.ts.map +1 -1
- package/dist/core/PromptComposer.js +183 -106
- package/dist/core/PromptComposer.js.map +1 -1
- package/dist/core/PromptSectionCache.d.ts +1 -1
- package/dist/core/PromptSectionCache.js +1 -1
- package/dist/core/ResponseEngine.d.ts +18 -8
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +38 -36
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/ResponseModal.d.ts +73 -56
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +1198 -1017
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/ResponsePipeline.d.ts +124 -26
- package/dist/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/core/ResponsePipeline.js +524 -135
- package/dist/core/ResponsePipeline.js.map +1 -1
- package/dist/core/SignalEvaluator.d.ts +86 -0
- package/dist/core/SignalEvaluator.d.ts.map +1 -0
- package/dist/core/SignalEvaluator.js +326 -0
- package/dist/core/SignalEvaluator.js.map +1 -0
- package/dist/core/SignalProcessor.d.ts +152 -0
- package/dist/core/SignalProcessor.d.ts.map +1 -0
- package/dist/core/SignalProcessor.js +555 -0
- package/dist/core/SignalProcessor.js.map +1 -0
- package/dist/core/Step.d.ts +43 -32
- package/dist/core/Step.d.ts.map +1 -1
- package/dist/core/Step.js +220 -126
- package/dist/core/Step.js.map +1 -1
- package/dist/core/StreamingToolExecutor.d.ts +2 -2
- package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/core/StreamingToolExecutor.js.map +1 -1
- package/dist/core/ToolManager.d.ts +44 -13
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js +174 -91
- package/dist/core/ToolManager.js.map +1 -1
- package/dist/core/createAgent.d.ts +35 -0
- package/dist/core/createAgent.d.ts.map +1 -0
- package/dist/core/createAgent.js +36 -0
- package/dist/core/createAgent.js.map +1 -0
- package/dist/core/flow-namespace.d.ts +49 -0
- package/dist/core/flow-namespace.d.ts.map +1 -0
- package/dist/core/flow-namespace.js +168 -0
- package/dist/core/flow-namespace.js.map +1 -0
- package/dist/index.d.ts +11 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -12
- package/dist/index.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +3 -3
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +16 -14
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/types/agent.d.ts +183 -54
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +0 -6
- package/dist/types/agent.js.map +1 -1
- package/dist/types/ai.d.ts +3 -3
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/errors.d.ts +15 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +18 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/flow.d.ts +513 -0
- package/dist/types/flow.d.ts.map +1 -0
- package/dist/types/flow.js +5 -0
- package/dist/types/flow.js.map +1 -0
- package/dist/types/index.d.ts +7 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +11 -7
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/routing.d.ts +1 -1
- package/dist/types/routing.d.ts.map +1 -1
- package/dist/types/session.d.ts +24 -23
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/signals.d.ts +248 -0
- package/dist/types/signals.d.ts.map +1 -0
- package/dist/types/signals.js +10 -0
- package/dist/types/signals.js.map +1 -0
- package/dist/types/template.d.ts +2 -8
- package/dist/types/template.d.ts.map +1 -1
- package/dist/types/tool.d.ts +36 -29
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/types/tool.js +1 -1
- package/dist/types/tool.js.map +1 -1
- package/dist/utils/condition.d.ts +7 -1
- package/dist/utils/condition.d.ts.map +1 -1
- package/dist/utils/condition.js.map +1 -1
- package/dist/utils/id.d.ts +13 -5
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +22 -9
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +44 -5
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +193 -37
- package/dist/utils/session.js.map +1 -1
- package/docs/README.md +15 -202
- package/docs/concepts/architecture.md +281 -0
- package/docs/concepts/directives.md +400 -0
- package/docs/concepts/pipeline.md +399 -0
- package/docs/guides/branching.md +263 -0
- package/docs/guides/compaction.md +163 -0
- package/docs/guides/conditions.md +167 -0
- package/docs/guides/error-handling.md +176 -0
- package/docs/guides/flow-control.md +409 -0
- package/docs/guides/instructions.md +210 -0
- package/docs/guides/persistence.md +182 -0
- package/docs/guides/streaming.md +137 -0
- package/docs/migration/README.md +15 -0
- package/docs/migration/route-to-flow.md +560 -0
- package/docs/migration/v1-to-v2.md +909 -0
- package/docs/reference/adapters.md +481 -0
- package/docs/reference/branches.md +241 -0
- package/docs/reference/create-agent.md +186 -0
- package/docs/reference/directive.md +243 -0
- package/docs/reference/errors.md +122 -0
- package/docs/reference/flow.md +238 -0
- package/docs/reference/instruction.md +177 -0
- package/docs/reference/pre-directive.md +131 -0
- package/docs/reference/providers.md +227 -0
- package/docs/reference/signals.md +356 -0
- package/docs/reference/step.md +339 -0
- package/docs/reference/tool.md +269 -0
- package/docs/start/01-install.md +81 -0
- package/docs/start/02-first-agent.md +196 -0
- package/docs/start/03-collect-data.md +222 -0
- package/docs/start/04-add-tools.md +276 -0
- package/docs/start/05-go-to-production.md +216 -0
- package/examples/01-quickstart.ts +20 -0
- package/examples/02-data-extraction.ts +90 -0
- package/examples/03-tools.ts +136 -0
- package/examples/04-instructions.ts +100 -0
- package/examples/05-branching.ts +140 -0
- package/examples/06-flow-control.ts +103 -0
- package/examples/07-streaming.ts +69 -0
- package/examples/08-persistence.ts +98 -0
- package/examples/09-signals.ts +144 -0
- package/examples/tsconfig.json +30 -0
- package/package.json +2 -1
- package/src/adapters/MemoryAdapter.ts +3 -3
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +10 -8
- package/src/adapters/PostgreSQLAdapter.ts +26 -10
- package/src/adapters/PrismaAdapter.ts +6 -6
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/adapters/SQLiteAdapter.ts +31 -12
- package/src/constants/index.ts +2 -10
- package/src/core/Agent.ts +585 -374
- package/src/core/AutoChainExecutor.ts +440 -0
- package/src/core/BranchEvaluator.ts +167 -0
- package/src/core/DirectiveBus.ts +248 -0
- package/src/core/DirectiveChainTracker.ts +144 -0
- package/src/core/Flow.ts +666 -0
- package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
- package/src/core/PersistenceManager.ts +8 -8
- package/src/core/PromptComposer.ts +209 -140
- package/src/core/PromptSectionCache.ts +1 -1
- package/src/core/ResponseEngine.ts +61 -46
- package/src/core/ResponseModal.ts +1458 -1241
- package/src/core/ResponsePipeline.ts +675 -173
- package/src/core/SignalEvaluator.ts +420 -0
- package/src/core/SignalProcessor.ts +723 -0
- package/src/core/Step.ts +279 -176
- package/src/core/StreamingToolExecutor.ts +4 -4
- package/src/core/ToolManager.ts +200 -97
- package/src/core/createAgent.ts +40 -0
- package/src/core/flow-namespace.ts +219 -0
- package/src/index.ts +42 -36
- package/src/providers/GeminiProvider.ts +17 -15
- package/src/types/agent.ts +182 -53
- package/src/types/ai.ts +3 -3
- package/src/types/errors.ts +18 -0
- package/src/types/flow.ts +590 -0
- package/src/types/index.ts +43 -16
- package/src/types/persistence.ts +12 -8
- package/src/types/routing.ts +1 -1
- package/src/types/session.ts +26 -23
- package/src/types/signals.ts +321 -0
- package/src/types/template.ts +3 -11
- package/src/types/tool.ts +50 -42
- package/src/utils/condition.ts +13 -4
- package/src/utils/id.ts +27 -9
- package/src/utils/index.ts +6 -2
- package/src/utils/session.ts +238 -42
- package/dist/cjs/core/BatchExecutor.d.ts +0 -359
- package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
- package/dist/cjs/core/BatchExecutor.js +0 -861
- package/dist/cjs/core/BatchExecutor.js.map +0 -1
- package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
- package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
- package/dist/cjs/core/BatchPromptBuilder.js +0 -223
- package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -180
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js +0 -542
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -185
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/types/route.d.ts +0 -336
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/route.js.map +0 -1
- package/dist/core/BatchExecutor.d.ts +0 -359
- package/dist/core/BatchExecutor.d.ts.map +0 -1
- package/dist/core/BatchExecutor.js +0 -856
- package/dist/core/BatchExecutor.js.map +0 -1
- package/dist/core/BatchPromptBuilder.d.ts +0 -89
- package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
- package/dist/core/BatchPromptBuilder.js +0 -219
- package/dist/core/BatchPromptBuilder.js.map +0 -1
- package/dist/core/Route.d.ts +0 -180
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js +0 -538
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -185
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/types/route.d.ts +0 -336
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/route.js +0 -5
- package/dist/types/route.js.map +0 -1
- package/docs/CONTRIBUTING.md +0 -521
- package/docs/api/README.md +0 -3299
- package/docs/api/overview.md +0 -1410
- package/docs/architecture/data-extraction-flow.md +0 -360
- package/docs/architecture/multi-step-execution.md +0 -277
- package/docs/core/agent/README.md +0 -938
- package/docs/core/agent/context-management.md +0 -796
- package/docs/core/agent/rules-and-prohibitions.md +0 -113
- package/docs/core/agent/session-management.md +0 -693
- package/docs/core/ai-integration/prompt-composition.md +0 -355
- package/docs/core/ai-integration/providers.md +0 -515
- package/docs/core/ai-integration/response-processing.md +0 -433
- package/docs/core/conversation-flows/data-collection.md +0 -772
- package/docs/core/conversation-flows/route-dsl.md +0 -509
- package/docs/core/conversation-flows/routes.md +0 -249
- package/docs/core/conversation-flows/step-transitions.md +0 -731
- package/docs/core/conversation-flows/steps.md +0 -268
- package/docs/core/error-handling.md +0 -830
- package/docs/core/persistence/adapters.md +0 -255
- package/docs/core/persistence/session-storage.md +0 -656
- package/docs/core/routing/intelligent-routing.md +0 -470
- package/docs/core/tools/enhanced-tool.md +0 -186
- package/docs/core/tools/streaming-execution.md +0 -161
- package/docs/core/tools/tool-definition.md +0 -970
- package/docs/core/tools/tool-scoping.md +0 -819
- package/docs/guides/advanced-patterns/publishing.md +0 -186
- package/docs/guides/context-compaction.md +0 -96
- package/docs/guides/error-handling-patterns.md +0 -578
- package/docs/guides/getting-started/README.md +0 -795
- package/docs/guides/migration/README.md +0 -101
- package/docs/guides/migration/flexible-routing-conditions.md +0 -375
- package/docs/guides/migration/multi-step-execution.md +0 -393
- package/docs/guides/migration/response-modal-refactor.md +0 -518
- package/docs/guides/prompt-optimization.md +0 -164
- package/examples/advanced-patterns/context-compaction.ts +0 -223
- package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
- package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
- package/examples/advanced-patterns/streaming-responses.ts +0 -656
- package/examples/ai-providers/anthropic-integration.ts +0 -388
- package/examples/ai-providers/openai-integration.ts +0 -228
- package/examples/condition-patterns/function-only-conditions.ts +0 -365
- package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
- package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
- package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
- package/examples/condition-patterns/string-only-conditions.ts +0 -296
- package/examples/conversation-flows/completion-transitions.ts +0 -318
- package/examples/core-concepts/basic-agent.ts +0 -503
- package/examples/core-concepts/modern-streaming-api.ts +0 -309
- package/examples/core-concepts/schema-driven-extraction.ts +0 -332
- package/examples/core-concepts/session-management.ts +0 -494
- package/examples/integrations/database-integration.ts +0 -631
- package/examples/integrations/healthcare-integration.ts +0 -595
- package/examples/integrations/search-integration.ts +0 -530
- package/examples/integrations/server-session-management.ts +0 -307
- package/examples/persistence/custom-adapter.ts +0 -526
- package/examples/persistence/database-persistence.ts +0 -583
- package/examples/persistence/memory-sessions.ts +0 -495
- package/examples/persistence/prisma-schema.example.prisma +0 -74
- package/examples/persistence/redis-persistence.ts +0 -488
- package/examples/tools/basic-tools.ts +0 -765
- package/examples/tools/data-enrichment-tools.ts +0 -593
- package/examples/tools/enhanced-tool-metadata.ts +0 -268
- package/examples/tools/streaming-tool-execution.ts +0 -283
- package/src/core/BatchExecutor.ts +0 -1187
- package/src/core/BatchPromptBuilder.ts +0 -299
- package/src/core/Route.ts +0 -678
- package/src/types/route.ts +0 -392
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Level-1 factory for constructing an Agent from a single options object.
|
|
3
|
+
*
|
|
4
|
+
* `createAgent` is syntactic sugar over `new Agent(options)` and is the
|
|
5
|
+
* recommended entry point in docs and examples. Generic inference flows
|
|
6
|
+
* from `schema` through `flows[].steps[].collect` identically to `new Agent`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const agent = createAgent({
|
|
11
|
+
* name: 'BookingBot',
|
|
12
|
+
* provider: new GeminiProvider({ apiKey }),
|
|
13
|
+
* schema: { type: 'object', properties: { name: { type: 'string' }, email: { type: 'string' } } },
|
|
14
|
+
* flows: [{ title: 'Onboarding', steps: [{ collect: ['name', 'email'] }] }],
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* **Validates: Requirements 14.1–14.7**
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { Agent } from "./Agent";
|
|
22
|
+
import type { AgentOptions } from "../types";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Create an Agent from a single options object.
|
|
26
|
+
*
|
|
27
|
+
* This is the recommended entry point for constructing agents in v2.
|
|
28
|
+
* Accepts the same options as `new Agent(options)` — `schema`, `provider`,
|
|
29
|
+
* `instructions`, `flows`, and everything else `AgentOptions` carries.
|
|
30
|
+
*
|
|
31
|
+
* Generic inference flows from `schema` through `flows[].steps[].collect`.
|
|
32
|
+
* Invalid `collect` references throw `FlowConfigurationError` at construction time.
|
|
33
|
+
*
|
|
34
|
+
* Post-construction flow registration is still available via `agent.createFlow(...)`.
|
|
35
|
+
*/
|
|
36
|
+
export function createAgent<TContext = unknown, TData = unknown>(
|
|
37
|
+
options: AgentOptions<TContext, TData>
|
|
38
|
+
): Agent<TContext, TData> {
|
|
39
|
+
return new Agent<TContext, TData>(options);
|
|
40
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `flow` namespace — type guards, merge, and validation helpers for Directives.
|
|
3
|
+
*
|
|
4
|
+
* No builder constructors live here (no `flow.goTo(...)`, `flow.complete(...)` etc.).
|
|
5
|
+
* Directives are plain object literals; this namespace provides runtime utilities only.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Directive } from "../types/flow";
|
|
9
|
+
import { FlowConfigurationError } from "./Step";
|
|
10
|
+
|
|
11
|
+
// ─── Position field metadata ─────────────────────────────────────────────────
|
|
12
|
+
|
|
13
|
+
/** Position fields in precedence order (highest first). */
|
|
14
|
+
const POSITION_FIELDS = ["abort", "complete", "goTo", "goToStep", "reset"] as const;
|
|
15
|
+
type PositionField = (typeof POSITION_FIELDS)[number];
|
|
16
|
+
|
|
17
|
+
/** Precedence map: lower number = higher priority. */
|
|
18
|
+
const POSITION_PRECEDENCE: Record<PositionField, number> = {
|
|
19
|
+
abort: 0,
|
|
20
|
+
complete: 1,
|
|
21
|
+
goTo: 2,
|
|
22
|
+
goToStep: 2,
|
|
23
|
+
reset: 3,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
function getSetPositionFields(d: Directive): PositionField[] {
|
|
29
|
+
return POSITION_FIELDS.filter((f) => d[f] !== undefined && d[f] !== null);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Determines whether `candidate` beats `current` by precedence.
|
|
34
|
+
* Lower precedence number wins. On tie, candidate wins (last-emission-wins).
|
|
35
|
+
*/
|
|
36
|
+
function beatsCurrent(
|
|
37
|
+
candidate: PositionField,
|
|
38
|
+
current: PositionField | null
|
|
39
|
+
): boolean {
|
|
40
|
+
if (current === null) return true;
|
|
41
|
+
return POSITION_PRECEDENCE[candidate] <= POSITION_PRECEDENCE[current];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Type guard: is `x` a Directive (or any subtype like PreDirective)?
|
|
48
|
+
*
|
|
49
|
+
* A value is considered a Directive if it is a non-null object. The Directive
|
|
50
|
+
* interface has all-optional fields, so any plain object qualifies structurally.
|
|
51
|
+
* This guard filters out primitives, null, undefined, arrays, and functions.
|
|
52
|
+
*/
|
|
53
|
+
function isDirective(x: unknown): x is Directive {
|
|
54
|
+
return (
|
|
55
|
+
x !== null &&
|
|
56
|
+
x !== undefined &&
|
|
57
|
+
typeof x === "object" &&
|
|
58
|
+
!Array.isArray(x)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Merge two directives by Algorithm 4's rules:
|
|
64
|
+
* - Position fields: precedence (abort > complete > goTo/goToStep > reset);
|
|
65
|
+
* ties broken by emission order (b wins over a — last wins).
|
|
66
|
+
* - reply: last-wins (b.reply overrides a.reply if set).
|
|
67
|
+
* - dataUpdate / contextUpdate: shallow-merge (b overrides a on key collision).
|
|
68
|
+
* - appendPrompt / injectTools (PreDirective fields): concatenate then dedupe.
|
|
69
|
+
* - halt: logical-OR.
|
|
70
|
+
*/
|
|
71
|
+
function merge<T extends Directive>(a: T, b: T): T {
|
|
72
|
+
const result = {} as Record<string, unknown>;
|
|
73
|
+
|
|
74
|
+
// ── Position field: winner-takes-all by precedence, b wins ties ──
|
|
75
|
+
const aPos = getSetPositionFields(a as Directive);
|
|
76
|
+
const bPos = getSetPositionFields(b as Directive);
|
|
77
|
+
|
|
78
|
+
// Pick the highest-priority position field across both directives.
|
|
79
|
+
// b's fields are evaluated after a's, so b wins on same precedence (last-wins).
|
|
80
|
+
let winnerField: PositionField | null = null;
|
|
81
|
+
let winnerSource: Directive | null = null;
|
|
82
|
+
|
|
83
|
+
for (const field of aPos) {
|
|
84
|
+
if (beatsCurrent(field, winnerField)) {
|
|
85
|
+
winnerField = field;
|
|
86
|
+
winnerSource = a as Directive;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const field of bPos) {
|
|
90
|
+
if (beatsCurrent(field, winnerField)) {
|
|
91
|
+
winnerField = field;
|
|
92
|
+
winnerSource = b as Directive;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (winnerField !== null && winnerSource !== null) {
|
|
97
|
+
result[winnerField] = (winnerSource as Record<string, unknown>)[winnerField];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// ── reply: last-wins ──
|
|
101
|
+
if ((b as Directive).reply !== undefined) {
|
|
102
|
+
result.reply = (b as Directive).reply;
|
|
103
|
+
} else if ((a as Directive).reply !== undefined) {
|
|
104
|
+
result.reply = (a as Directive).reply;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ── dataUpdate: shallow merge ──
|
|
108
|
+
const aData = (a as Record<string, unknown>).dataUpdate as
|
|
109
|
+
| Record<string, unknown>
|
|
110
|
+
| undefined;
|
|
111
|
+
const bData = (b as Record<string, unknown>).dataUpdate as
|
|
112
|
+
| Record<string, unknown>
|
|
113
|
+
| undefined;
|
|
114
|
+
if (aData || bData) {
|
|
115
|
+
result.dataUpdate = { ...aData, ...bData };
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── contextUpdate: shallow merge ──
|
|
119
|
+
const aCtx = (a as Record<string, unknown>).contextUpdate as
|
|
120
|
+
| Record<string, unknown>
|
|
121
|
+
| undefined;
|
|
122
|
+
const bCtx = (b as Record<string, unknown>).contextUpdate as
|
|
123
|
+
| Record<string, unknown>
|
|
124
|
+
| undefined;
|
|
125
|
+
if (aCtx || bCtx) {
|
|
126
|
+
result.contextUpdate = { ...aCtx, ...bCtx };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ── appendPrompt (PreDirective): concatenate ──
|
|
130
|
+
const aPrompt = (a as Record<string, unknown>).appendPrompt as
|
|
131
|
+
| string[]
|
|
132
|
+
| undefined;
|
|
133
|
+
const bPrompt = (b as Record<string, unknown>).appendPrompt as
|
|
134
|
+
| string[]
|
|
135
|
+
| undefined;
|
|
136
|
+
if (aPrompt || bPrompt) {
|
|
137
|
+
result.appendPrompt = [...(aPrompt ?? []), ...(bPrompt ?? [])];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ── injectTools (PreDirective): concatenate then dedupe by id (last wins) ──
|
|
141
|
+
const aTools = (a as Record<string, unknown>).injectTools as
|
|
142
|
+
| Array<{ id: string;[k: string]: unknown }>
|
|
143
|
+
| undefined;
|
|
144
|
+
const bTools = (b as Record<string, unknown>).injectTools as
|
|
145
|
+
| Array<{ id: string;[k: string]: unknown }>
|
|
146
|
+
| undefined;
|
|
147
|
+
if (aTools || bTools) {
|
|
148
|
+
const combined = [...(aTools ?? []), ...(bTools ?? [])];
|
|
149
|
+
// Dedupe by id — last definition wins
|
|
150
|
+
const seen = new Map<string, (typeof combined)[number]>();
|
|
151
|
+
for (const tool of combined) {
|
|
152
|
+
seen.set(tool.id, tool);
|
|
153
|
+
}
|
|
154
|
+
result.injectTools = Array.from(seen.values());
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// ── halt (PreDirective): logical OR ──
|
|
158
|
+
const aHalt = (a as Record<string, unknown>).halt as boolean | undefined;
|
|
159
|
+
const bHalt = (b as Record<string, unknown>).halt as boolean | undefined;
|
|
160
|
+
if (aHalt || bHalt) {
|
|
161
|
+
result.halt = true;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return result as T;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Runtime validator. Throws FlowConfigurationError for invalid combinations:
|
|
169
|
+
* - Multiple position fields set.
|
|
170
|
+
* - `goTo` set as empty object `{}` (no flow target).
|
|
171
|
+
* - `reply` co-existing with `abort` (abort ends the conversation; a reply is nonsensical).
|
|
172
|
+
*/
|
|
173
|
+
function validate(d: Directive): void {
|
|
174
|
+
// ── Multiple position fields ──
|
|
175
|
+
const setFields = getSetPositionFields(d);
|
|
176
|
+
if (setFields.length > 1) {
|
|
177
|
+
throw new FlowConfigurationError(
|
|
178
|
+
`[FlowConfigurationError] Invalid directive: multiple position fields set (${setFields.join(", ")}). ` +
|
|
179
|
+
`A directive may have at most one position field. Remove the extras.`
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// ── Empty goTo object ──
|
|
184
|
+
if (d.goTo !== undefined && d.goTo !== null) {
|
|
185
|
+
if (typeof d.goTo === "object") {
|
|
186
|
+
const goToObj = d.goTo as { flow?: string; step?: string };
|
|
187
|
+
if (!goToObj.flow && !goToObj.step) {
|
|
188
|
+
throw new FlowConfigurationError(
|
|
189
|
+
`[FlowConfigurationError] Invalid directive: goTo is set as an empty object. ` +
|
|
190
|
+
`goTo requires a flow id or title. Provide { flow: "<id>" } or use the string shorthand.`
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// ── reply co-existing with abort ──
|
|
197
|
+
if (d.reply !== undefined && d.abort !== undefined) {
|
|
198
|
+
throw new FlowConfigurationError(
|
|
199
|
+
`[FlowConfigurationError] Invalid directive: reply cannot co-exist with abort. ` +
|
|
200
|
+
`An aborted conversation cannot deliver a reply. Remove one of the fields.`
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* The `flow` namespace object. Exported as a single const for ergonomic usage:
|
|
207
|
+
*
|
|
208
|
+
* ```ts
|
|
209
|
+
* import { flow } from '@falai/agent';
|
|
210
|
+
* if (flow.isDirective(x)) { ... }
|
|
211
|
+
* const merged = flow.merge(a, b);
|
|
212
|
+
* flow.validate(d);
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
export const flow = {
|
|
216
|
+
isDirective,
|
|
217
|
+
merge,
|
|
218
|
+
validate,
|
|
219
|
+
} as const;
|
package/src/index.ts
CHANGED
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @falai/agent - Standalone AI Agent framework
|
|
3
3
|
*
|
|
4
|
-
* A strongly-typed, modular agent framework with
|
|
4
|
+
* A strongly-typed, modular agent framework with flow DSL and AI provider strategy
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
// Core
|
|
8
8
|
export { Agent } from "./core/Agent";
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
GenerateOptions
|
|
17
|
-
} from "./core/ResponseModal";
|
|
9
|
+
export { createAgent } from "./core/createAgent";
|
|
10
|
+
export { Flow } from "./core/Flow";
|
|
11
|
+
export { Step, FlowConfigurationError } from "./core/Step";
|
|
12
|
+
export { flow } from "./core/flow-namespace";
|
|
13
|
+
export { DirectiveChainTracker } from "./core/DirectiveChainTracker";
|
|
14
|
+
export type { DirectiveChainEntry } from "./core/DirectiveChainTracker";
|
|
15
|
+
|
|
18
16
|
export { adaptEvent, convertHistoryToEvents } from "./core/Events";
|
|
19
17
|
export { PersistenceManager } from "./core/PersistenceManager";
|
|
20
18
|
export { SessionManager } from "./core/SessionManager";
|
|
21
19
|
export { ToolManager, ToolCreationError, ToolExecutionError } from "./core/ToolManager";
|
|
22
|
-
export {
|
|
23
|
-
|
|
24
|
-
export { CompactionEngine } from "./core/CompactionEngine";
|
|
20
|
+
export { NotImplementedError } from "./types/errors";
|
|
21
|
+
|
|
25
22
|
export { StreamingToolExecutor } from "./core/StreamingToolExecutor";
|
|
26
|
-
|
|
27
|
-
export type { PromptSectionType, PromptCacheConfig, SectionCompute } from "./core/PromptSectionCache";
|
|
23
|
+
|
|
28
24
|
|
|
29
25
|
// Providers
|
|
30
26
|
export { GeminiProvider } from "./providers/GeminiProvider";
|
|
@@ -71,11 +67,8 @@ export type {
|
|
|
71
67
|
OpenSearchAdapterOptions,
|
|
72
68
|
} from "./adapters/OpenSearchAdapter";
|
|
73
69
|
|
|
74
|
-
// Constants
|
|
75
|
-
export { END_ROUTE, END_ROUTE_ID } from "./constants";
|
|
76
|
-
|
|
77
70
|
// Utils
|
|
78
|
-
export {
|
|
71
|
+
export { generateFlowId, generateStepId, generateToolId } from "./utils/id";
|
|
79
72
|
export { formatKnowledgeBase } from "./utils/template";
|
|
80
73
|
export {
|
|
81
74
|
ConditionEvaluator,
|
|
@@ -101,30 +94,40 @@ export type {
|
|
|
101
94
|
AgentCompactionConfig,
|
|
102
95
|
AgentResponse,
|
|
103
96
|
Term,
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
Instruction,
|
|
98
|
+
ScopedInstructions,
|
|
99
|
+
AppliedInstruction,
|
|
106
100
|
ContextLifecycleHooks,
|
|
107
101
|
ContextProvider,
|
|
102
|
+
HookContext,
|
|
103
|
+
ExitReason,
|
|
108
104
|
Event,
|
|
109
105
|
EmittedEvent,
|
|
110
106
|
MessageEventData,
|
|
111
107
|
ToolEventData,
|
|
112
108
|
StatusEventData,
|
|
113
109
|
Participant,
|
|
114
|
-
|
|
110
|
+
FlowRef,
|
|
115
111
|
StepRef,
|
|
116
|
-
|
|
112
|
+
FlowOptions,
|
|
117
113
|
StepOptions,
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
FlowLifecycleHooks,
|
|
115
|
+
StepLifecycleHooks,
|
|
120
116
|
SessionState,
|
|
121
|
-
|
|
117
|
+
SignalsState,
|
|
118
|
+
SignalTriggerState,
|
|
119
|
+
Signal,
|
|
120
|
+
SignalContext,
|
|
121
|
+
SignalDirective,
|
|
122
|
+
SignalPredicate,
|
|
123
|
+
SignalPredicateContext,
|
|
124
|
+
SignalFiring,
|
|
125
|
+
SignalSchema,
|
|
122
126
|
ToolContext,
|
|
123
127
|
ToolResult,
|
|
124
128
|
ToolHandler,
|
|
125
129
|
Tool,
|
|
126
130
|
|
|
127
|
-
EnhancedTool,
|
|
128
131
|
ToolValidationResult,
|
|
129
132
|
ToolPermissionResult,
|
|
130
133
|
ToolCallRequest,
|
|
@@ -161,20 +164,23 @@ export type {
|
|
|
161
164
|
PersistenceAdapter,
|
|
162
165
|
Template,
|
|
163
166
|
TemplateContext,
|
|
164
|
-
ConditionTemplate,
|
|
165
167
|
ConditionEvaluationResult,
|
|
166
168
|
UserHistoryItem,
|
|
167
169
|
AssistantHistoryItem,
|
|
168
170
|
ToolHistoryItem,
|
|
169
171
|
SystemHistoryItem,
|
|
170
|
-
//
|
|
172
|
+
// Flow execution types
|
|
171
173
|
StoppedReason,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
PrepareResult,
|
|
175
|
+
Directive,
|
|
176
|
+
PreDirective,
|
|
177
|
+
BranchEntry,
|
|
178
|
+
BranchMap,
|
|
179
|
+
BranchPredicate,
|
|
180
|
+
BranchPredicateContext,
|
|
181
|
+
ConditionPredicate,
|
|
182
|
+
ConditionIf,
|
|
183
|
+
ConditionWhen,
|
|
178
184
|
} from "./types";
|
|
179
185
|
export { CompositionMode, EventKind, MessageRole } from "./types";
|
|
180
|
-
export { createSession, createSessionId,
|
|
186
|
+
export { createSession, createSessionId, enterFlow, enterStep, completeCurrentFlow, isFlowCompletedThisSession, mergeCollected } from "./utils";
|
|
@@ -231,24 +231,26 @@ export class GeminiProvider implements AiProvider {
|
|
|
231
231
|
|
|
232
232
|
/**
|
|
233
233
|
* Safely extract text from a Gemini response or chunk.
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
234
|
+
* Bypasses the SDK's `.text` getter entirely to avoid warnings about
|
|
235
|
+
* non-text parts (e.g., "thoughtSignature") in the response.
|
|
236
|
+
* Manually concatenates only text parts from candidates.
|
|
237
237
|
*
|
|
238
238
|
* @private
|
|
239
239
|
*/
|
|
240
240
|
private safeExtractText(responseOrChunk: { text?: string; candidates?: Array<{ content?: { parts?: Array<{ text?: string; functionCall?: unknown }> } }> }): string {
|
|
241
|
+
// Always extract text parts manually to avoid SDK warnings about
|
|
242
|
+
// non-text parts like "thoughtSignature" in the response.
|
|
243
|
+
const parts = responseOrChunk.candidates?.[0]?.content?.parts;
|
|
244
|
+
if (parts) {
|
|
245
|
+
return parts
|
|
246
|
+
.filter((p) => p.text != null)
|
|
247
|
+
.map((p) => p.text)
|
|
248
|
+
.join("");
|
|
249
|
+
}
|
|
250
|
+
// Fallback: try the .text getter if no candidates structure exists
|
|
241
251
|
try {
|
|
242
252
|
return responseOrChunk.text || "";
|
|
243
253
|
} catch {
|
|
244
|
-
// .text getter threw — extract text parts manually
|
|
245
|
-
const parts = responseOrChunk.candidates?.[0]?.content?.parts;
|
|
246
|
-
if (parts) {
|
|
247
|
-
return parts
|
|
248
|
-
.filter((p) => p.text != null)
|
|
249
|
-
.map((p) => p.text)
|
|
250
|
-
.join("");
|
|
251
|
-
}
|
|
252
254
|
return "";
|
|
253
255
|
}
|
|
254
256
|
}
|
|
@@ -534,17 +536,17 @@ export class GeminiProvider implements AiProvider {
|
|
|
534
536
|
}
|
|
535
537
|
}
|
|
536
538
|
|
|
539
|
+
// Safely extract text — avoids SDK warning about non-text parts
|
|
540
|
+
const message = this.safeExtractText(response);
|
|
541
|
+
|
|
537
542
|
// Debug logging for response structure
|
|
538
|
-
if (!
|
|
543
|
+
if (!message && toolCalls.length === 0) {
|
|
539
544
|
logger.debug(`[GeminiProvider] Debug - Response structure:`, {
|
|
540
545
|
candidatesCount: response.candidates?.length || 0,
|
|
541
546
|
firstCandidateParts: response.candidates?.[0]?.content?.parts?.length || 0,
|
|
542
547
|
});
|
|
543
548
|
}
|
|
544
549
|
|
|
545
|
-
// Safely extract text — .text getter can throw when response has only function calls
|
|
546
|
-
const message = this.safeExtractText(response);
|
|
547
|
-
|
|
548
550
|
// Only throw error if we have no text AND no function calls
|
|
549
551
|
if (!message && toolCalls.length === 0) {
|
|
550
552
|
logger.error(`[GeminiProvider] Empty response - no text or function calls`);
|