@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
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
# Multi-Step Execution Migration Guide
|
|
2
|
-
|
|
3
|
-
This guide covers the behavioral changes from single-step to multi-step execution and provides migration guidance for existing routes.
|
|
4
|
-
|
|
5
|
-
## Breaking Changes in v1.0.0
|
|
6
|
-
|
|
7
|
-
### History API Simplified
|
|
8
|
-
|
|
9
|
-
The `createMessageEvent` and `EventSource` exports have been replaced with simpler helper functions:
|
|
10
|
-
|
|
11
|
-
**Before (v0.x):**
|
|
12
|
-
```typescript
|
|
13
|
-
import { createMessageEvent, EventSource } from "@falai/agent";
|
|
14
|
-
|
|
15
|
-
const history = [
|
|
16
|
-
createMessageEvent(EventSource.CUSTOMER, "Hello"),
|
|
17
|
-
createMessageEvent(EventSource.AI_AGENT, "Hi there!"),
|
|
18
|
-
];
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
**After (v1.0.0):**
|
|
22
|
-
```typescript
|
|
23
|
-
import { userMessage, assistantMessage } from "@falai/agent";
|
|
24
|
-
|
|
25
|
-
const history = [
|
|
26
|
-
userMessage("Hello"),
|
|
27
|
-
assistantMessage("Hi there!"),
|
|
28
|
-
];
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The history is now a simple array of objects with `role` and `content` properties:
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
// Available helper functions
|
|
35
|
-
import {
|
|
36
|
-
userMessage, // (content, name?) => { role: "user", content, name? }
|
|
37
|
-
assistantMessage, // (content, toolCalls?) => { role: "assistant", content, tool_calls? }
|
|
38
|
-
toolMessage, // (toolCallId, name, content) => { role: "tool", ... }
|
|
39
|
-
systemMessage, // (content) => { role: "system", content }
|
|
40
|
-
} from "@falai/agent";
|
|
41
|
-
|
|
42
|
-
// Or create history items directly
|
|
43
|
-
const history = [
|
|
44
|
-
{ role: "user", content: "Hello" },
|
|
45
|
-
{ role: "assistant", content: "Hi there!" },
|
|
46
|
-
];
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### StepOptions: `instructions` → `prompt`
|
|
50
|
-
|
|
51
|
-
The `instructions` property in `StepOptions` has been renamed to `prompt`:
|
|
52
|
-
|
|
53
|
-
**Before:**
|
|
54
|
-
```typescript
|
|
55
|
-
steps: [
|
|
56
|
-
{
|
|
57
|
-
id: "greeting",
|
|
58
|
-
instructions: "Greet the user warmly",
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**After:**
|
|
64
|
-
```typescript
|
|
65
|
-
steps: [
|
|
66
|
-
{
|
|
67
|
-
id: "greeting",
|
|
68
|
-
prompt: "Greet the user warmly",
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## Overview
|
|
76
|
-
|
|
77
|
-
Multi-step execution is a **major behavioral change** that allows multiple consecutive steps to execute in a single LLM call. While the public API shape remains compatible, the execution semantics differ from the previous single-step model.
|
|
78
|
-
|
|
79
|
-
## Key Behavioral Changes
|
|
80
|
-
|
|
81
|
-
### Before: Single-Step Execution
|
|
82
|
-
|
|
83
|
-
Previously, each `.respond()` call executed exactly one step:
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
// Turn 1
|
|
87
|
-
const response1 = await agent.respond("Book Grand Hotel for 2 on Friday");
|
|
88
|
-
// Executes: ask-hotel step
|
|
89
|
-
// Response: "What date would you like to book?"
|
|
90
|
-
|
|
91
|
-
// Turn 2
|
|
92
|
-
const response2 = await agent.respond("Friday");
|
|
93
|
-
// Executes: ask-date step
|
|
94
|
-
// Response: "How many guests?"
|
|
95
|
-
|
|
96
|
-
// Turn 3
|
|
97
|
-
const response3 = await agent.respond("2 people");
|
|
98
|
-
// Executes: ask-guests step
|
|
99
|
-
// Response: "Booking confirmed!"
|
|
100
|
-
|
|
101
|
-
// Total: 3 LLM calls
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### After: Multi-Step Execution
|
|
105
|
-
|
|
106
|
-
Now, multiple steps can execute in a single call when data requirements are satisfied and `maxStepsPerBatch` is set higher than `1`:
|
|
107
|
-
|
|
108
|
-
```typescript
|
|
109
|
-
const agent = new Agent({
|
|
110
|
-
// ...
|
|
111
|
-
maxStepsPerBatch: Infinity, // Enable batching
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// Turn 1
|
|
115
|
-
const response = await agent.respond("Book Grand Hotel for 2 on Friday");
|
|
116
|
-
// Pre-extraction captures: { hotel: "Grand Hotel", date: "Friday", guests: 2 }
|
|
117
|
-
// Executes: ask-hotel, ask-date, ask-guests steps (all in one batch)
|
|
118
|
-
// Response: "Booking confirmed for 2 guests at Grand Hotel on Friday!"
|
|
119
|
-
|
|
120
|
-
// Total: 1 LLM call
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
> **Note:** By default, `maxStepsPerBatch` is `1`, which preserves the classic single-step behavior. You must explicitly opt in to batching.
|
|
124
|
-
|
|
125
|
-
## What Changed
|
|
126
|
-
|
|
127
|
-
| Aspect | Before | After |
|
|
128
|
-
|--------|--------|-------|
|
|
129
|
-
| Steps per call | Always 1 | 1 or more (batched) |
|
|
130
|
-
| LLM calls | One per step | One per batch |
|
|
131
|
-
| Pre-extraction | Per-step | Before batch determination |
|
|
132
|
-
| Response fields | Basic | Includes `executedSteps`, `stoppedReason` |
|
|
133
|
-
| Hook execution | Per-step | All prepare hooks, then LLM, then all finalize hooks |
|
|
134
|
-
|
|
135
|
-
## Migration Checklist
|
|
136
|
-
|
|
137
|
-
### 1. Review Hook Dependencies
|
|
138
|
-
|
|
139
|
-
If your hooks depend on being called between steps, they may need adjustment:
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
// Before: Hooks called between each step
|
|
143
|
-
const step1 = {
|
|
144
|
-
finalize: async (ctx, data) => {
|
|
145
|
-
// This ran before step2's prepare
|
|
146
|
-
await saveProgress(data);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
const step2 = {
|
|
151
|
-
prepare: async (ctx, data) => {
|
|
152
|
-
// This expected step1's finalize to have run
|
|
153
|
-
const progress = await loadProgress();
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// After: All prepare hooks run first, then all finalize hooks
|
|
158
|
-
// If step1 and step2 are batched together:
|
|
159
|
-
// 1. step1.prepare runs
|
|
160
|
-
// 2. step2.prepare runs
|
|
161
|
-
// 3. LLM call
|
|
162
|
-
// 4. step1.finalize runs
|
|
163
|
-
// 5. step2.finalize runs
|
|
164
|
-
|
|
165
|
-
// Migration: Use session data instead of external state
|
|
166
|
-
const step1 = {
|
|
167
|
-
finalize: async (ctx, data) => {
|
|
168
|
-
// Store in session data, not external state
|
|
169
|
-
data.step1Complete = true;
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
const step2 = {
|
|
174
|
-
prepare: async (ctx, data) => {
|
|
175
|
-
// Check session data
|
|
176
|
-
if (!data.step1Complete) {
|
|
177
|
-
// Handle case where step1 hasn't finalized yet
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### 2. Update Response Handling
|
|
184
|
-
|
|
185
|
-
Check for new response fields:
|
|
186
|
-
|
|
187
|
-
```typescript
|
|
188
|
-
// Before
|
|
189
|
-
const response = await agent.respond(message);
|
|
190
|
-
console.log(response.message);
|
|
191
|
-
console.log(response.isRouteComplete);
|
|
192
|
-
|
|
193
|
-
// After - additional fields available
|
|
194
|
-
const response = await agent.respond(message);
|
|
195
|
-
console.log(response.message);
|
|
196
|
-
console.log(response.isRouteComplete);
|
|
197
|
-
console.log(response.executedSteps); // NEW: Array of executed steps
|
|
198
|
-
console.log(response.stoppedReason); // NEW: Why execution stopped
|
|
199
|
-
console.log(response.error); // NEW: Error details if any
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### 3. Review SkipIf Conditions
|
|
203
|
-
|
|
204
|
-
SkipIf conditions now affect batch determination:
|
|
205
|
-
|
|
206
|
-
```typescript
|
|
207
|
-
// Before: skipIf evaluated when entering step
|
|
208
|
-
const step = {
|
|
209
|
-
skipIf: (data) => {
|
|
210
|
-
// Called when transitioning to this step
|
|
211
|
-
return data.alreadyHaveInfo;
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
// After: skipIf evaluated during batch determination
|
|
216
|
-
// If skipIf returns true, step is skipped and next step is evaluated
|
|
217
|
-
// If skipIf throws, step is treated as non-skippable (included in batch)
|
|
218
|
-
|
|
219
|
-
// Migration: Ensure skipIf is pure and doesn't have side effects
|
|
220
|
-
const step = {
|
|
221
|
-
skipIf: (data) => {
|
|
222
|
-
// GOOD: Pure function
|
|
223
|
-
return data.alreadyHaveInfo;
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
// AVOID: Side effects in skipIf
|
|
228
|
-
const badStep = {
|
|
229
|
-
skipIf: (data) => {
|
|
230
|
-
// BAD: Side effect
|
|
231
|
-
logSkipCheck(data);
|
|
232
|
-
return data.alreadyHaveInfo;
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### 4. Handle Partial Execution
|
|
238
|
-
|
|
239
|
-
Errors may leave partial progress:
|
|
240
|
-
|
|
241
|
-
```typescript
|
|
242
|
-
// Before: Single step, all or nothing
|
|
243
|
-
|
|
244
|
-
// After: Batch may partially complete
|
|
245
|
-
const response = await agent.respond(message);
|
|
246
|
-
|
|
247
|
-
if (response.stoppedReason === 'prepare_error') {
|
|
248
|
-
// Some steps may have executed before the error
|
|
249
|
-
console.log("Executed before error:", response.executedSteps);
|
|
250
|
-
console.log("Error details:", response.error);
|
|
251
|
-
}
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### 5. Update Tests
|
|
255
|
-
|
|
256
|
-
Tests expecting single-step behavior need updates:
|
|
257
|
-
|
|
258
|
-
```typescript
|
|
259
|
-
// Before
|
|
260
|
-
test("collects hotel name", async () => {
|
|
261
|
-
const response = await agent.respond("Book Grand Hotel");
|
|
262
|
-
expect(response.session.data.hotel).toBe("Grand Hotel");
|
|
263
|
-
// Assumed only hotel step executed
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// After
|
|
267
|
-
test("collects hotel name", async () => {
|
|
268
|
-
const response = await agent.respond("Book Grand Hotel");
|
|
269
|
-
expect(response.session.data.hotel).toBe("Grand Hotel");
|
|
270
|
-
|
|
271
|
-
// Check which steps actually executed
|
|
272
|
-
expect(response.executedSteps).toContainEqual(
|
|
273
|
-
expect.objectContaining({ id: "ask-hotel" })
|
|
274
|
-
);
|
|
275
|
-
|
|
276
|
-
// May have executed more steps if data was available
|
|
277
|
-
expect(response.stoppedReason).toBe("needs_input");
|
|
278
|
-
});
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## Before/After Examples
|
|
282
|
-
|
|
283
|
-
### Example 1: Simple Booking Flow
|
|
284
|
-
|
|
285
|
-
**Before (3 turns):**
|
|
286
|
-
```
|
|
287
|
-
User: "I want to book a hotel"
|
|
288
|
-
Bot: "Which hotel would you like?"
|
|
289
|
-
User: "Grand Hotel"
|
|
290
|
-
Bot: "What date?"
|
|
291
|
-
User: "Friday"
|
|
292
|
-
Bot: "Booking confirmed!"
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
**After (potentially 1-2 turns):**
|
|
296
|
-
```
|
|
297
|
-
User: "I want to book Grand Hotel for Friday"
|
|
298
|
-
Bot: "Booking confirmed for Grand Hotel on Friday!"
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
### Example 2: Partial Information
|
|
302
|
-
|
|
303
|
-
**Before:**
|
|
304
|
-
```
|
|
305
|
-
User: "Book Grand Hotel"
|
|
306
|
-
Bot: "What date?" (only hotel step executed)
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
**After:**
|
|
310
|
-
```
|
|
311
|
-
User: "Book Grand Hotel"
|
|
312
|
-
Bot: "What date?" (hotel step executed, stopped at date step)
|
|
313
|
-
// response.executedSteps = [{ id: "ask-hotel" }]
|
|
314
|
-
// response.stoppedReason = "needs_input"
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### Example 3: With SkipIf Conditions
|
|
318
|
-
|
|
319
|
-
**Before:**
|
|
320
|
-
```typescript
|
|
321
|
-
// Each step evaluated individually
|
|
322
|
-
const step1 = { skipIf: (d) => !!d.name }; // Skipped if name exists
|
|
323
|
-
const step2 = { skipIf: (d) => !!d.email }; // Skipped if email exists
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**After:**
|
|
327
|
-
```typescript
|
|
328
|
-
// All skipIf conditions evaluated during batch determination
|
|
329
|
-
// If user provides "I'm John, john@example.com":
|
|
330
|
-
// - Pre-extraction: { name: "John", email: "john@example.com" }
|
|
331
|
-
// - step1 skipIf: true (skipped)
|
|
332
|
-
// - step2 skipIf: true (skipped)
|
|
333
|
-
// - Both steps skipped, route may complete immediately
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
## Controlling Batching with `maxStepsPerBatch`
|
|
337
|
-
|
|
338
|
-
As of v1.1.0, batching is **off by default** (`maxStepsPerBatch: 1`). To enable multi-step batching, set the option on your agent:
|
|
339
|
-
|
|
340
|
-
```typescript
|
|
341
|
-
const agent = new Agent({
|
|
342
|
-
name: "Assistant",
|
|
343
|
-
provider: provider,
|
|
344
|
-
maxStepsPerBatch: Infinity, // Batch all eligible steps (v1.0.x behavior)
|
|
345
|
-
// maxStepsPerBatch: 3, // Or cap at 3 steps per batch
|
|
346
|
-
});
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
If you need single-step behavior for specific steps while batching is enabled, use `requires` to create dependencies:
|
|
350
|
-
|
|
351
|
-
```typescript
|
|
352
|
-
// Force step2 to wait for step1's data
|
|
353
|
-
const step1 = {
|
|
354
|
-
collect: ["name"],
|
|
355
|
-
};
|
|
356
|
-
|
|
357
|
-
const step2 = {
|
|
358
|
-
collect: ["email"],
|
|
359
|
-
requires: ["name"], // Won't batch with step1
|
|
360
|
-
};
|
|
361
|
-
|
|
362
|
-
// Now step2 will only execute after step1 completes
|
|
363
|
-
// (in a separate batch/LLM call)
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
## Debugging Migration Issues
|
|
367
|
-
|
|
368
|
-
Enable debug mode to see batch behavior:
|
|
369
|
-
|
|
370
|
-
```typescript
|
|
371
|
-
const agent = new Agent({
|
|
372
|
-
debug: true,
|
|
373
|
-
// ...
|
|
374
|
-
});
|
|
375
|
-
|
|
376
|
-
// Logs will show:
|
|
377
|
-
// [BatchExecutor] Starting batch determination...
|
|
378
|
-
// [BatchExecutor] Including step ask-hotel in batch
|
|
379
|
-
// [BatchExecutor] Step ask-date needs input, stopping batch
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
## Summary
|
|
383
|
-
|
|
384
|
-
1. **`maxStepsPerBatch` defaults to `1`** - single-step execution by default (v1.1.0 breaking change)
|
|
385
|
-
2. **Set `maxStepsPerBatch: Infinity`** to restore v1.0.x batching behavior
|
|
386
|
-
3. **Multiple steps can execute together** when batching is enabled, reducing LLM calls
|
|
387
|
-
4. **Pre-extraction happens before batch determination** - maximizing batching
|
|
388
|
-
5. **New response fields** - `executedSteps`, `stoppedReason`, `error`
|
|
389
|
-
6. **Hook execution order changed** - all prepare, then LLM, then all finalize
|
|
390
|
-
7. **SkipIf affects batching** - evaluated during batch determination
|
|
391
|
-
8. **Partial progress preserved** - on errors, completed steps are retained
|
|
392
|
-
|
|
393
|
-
The changes improve efficiency and UX while maintaining API compatibility. Most existing code will work without changes, but reviewing hook dependencies and test expectations is recommended.
|