@falai/agent 3.4.5 → 4.0.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 +41 -34
- package/dist/cjs/core/Agent.d.ts +22 -378
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +104 -1178
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
- package/dist/cjs/core/CompactionEngine.js +5 -3
- package/dist/cjs/core/CompactionEngine.js.map +1 -1
- package/dist/cjs/core/FlowSpec.d.ts +136 -0
- package/dist/cjs/core/FlowSpec.d.ts.map +1 -0
- package/dist/cjs/core/FlowSpec.js +522 -0
- package/dist/cjs/core/FlowSpec.js.map +1 -0
- package/dist/cjs/core/Migrate.d.ts +38 -0
- package/dist/cjs/core/Migrate.d.ts.map +1 -0
- package/dist/cjs/core/Migrate.js +270 -0
- package/dist/cjs/core/Migrate.js.map +1 -0
- package/dist/cjs/core/Prompt.d.ts +54 -0
- package/dist/cjs/core/Prompt.d.ts.map +1 -0
- package/dist/cjs/core/Prompt.js +143 -0
- package/dist/cjs/core/Prompt.js.map +1 -0
- package/dist/cjs/core/Runner.d.ts +160 -0
- package/dist/cjs/core/Runner.d.ts.map +1 -0
- package/dist/cjs/core/Runner.js +1131 -0
- package/dist/cjs/core/Runner.js.map +1 -0
- package/dist/cjs/core/Speak.d.ts +37 -0
- package/dist/cjs/core/Speak.d.ts.map +1 -0
- package/dist/cjs/core/Speak.js +364 -0
- package/dist/cjs/core/Speak.js.map +1 -0
- package/dist/cjs/core/Understand.d.ts +28 -0
- package/dist/cjs/core/Understand.d.ts.map +1 -0
- package/dist/cjs/core/Understand.js +353 -0
- package/dist/cjs/core/Understand.js.map +1 -0
- package/dist/cjs/core/contracts.d.ts +122 -0
- package/dist/cjs/core/contracts.d.ts.map +1 -0
- package/dist/cjs/core/contracts.js +11 -0
- package/dist/cjs/core/contracts.js.map +1 -0
- package/dist/cjs/core/falai.d.ts +57 -0
- package/dist/cjs/core/falai.d.ts.map +1 -0
- package/dist/cjs/core/falai.js +43 -0
- package/dist/cjs/core/falai.js.map +1 -0
- package/dist/cjs/core/predicate.d.ts +9 -0
- package/dist/cjs/core/predicate.d.ts.map +1 -0
- package/dist/cjs/core/predicate.js +58 -0
- package/dist/cjs/core/predicate.js.map +1 -0
- package/dist/cjs/index.d.ts +26 -31
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +46 -68
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/persistence/MemoryStore.d.ts +15 -0
- package/dist/cjs/persistence/MemoryStore.d.ts.map +1 -0
- package/dist/cjs/persistence/MemoryStore.js +39 -0
- package/dist/cjs/persistence/MemoryStore.js.map +1 -0
- package/dist/cjs/persistence/MongoStore.d.ts +42 -0
- package/dist/cjs/persistence/MongoStore.d.ts.map +1 -0
- package/dist/cjs/persistence/MongoStore.js +60 -0
- package/dist/cjs/persistence/MongoStore.js.map +1 -0
- package/dist/cjs/persistence/OpenSearchStore.d.ts +86 -0
- package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -0
- package/dist/cjs/persistence/OpenSearchStore.js +120 -0
- package/dist/cjs/persistence/OpenSearchStore.js.map +1 -0
- package/dist/cjs/persistence/PostgresStore.d.ts +41 -0
- package/dist/cjs/persistence/PostgresStore.d.ts.map +1 -0
- package/dist/cjs/persistence/PostgresStore.js +58 -0
- package/dist/cjs/persistence/PostgresStore.js.map +1 -0
- package/dist/cjs/persistence/PrismaStore.d.ts +65 -0
- package/dist/cjs/persistence/PrismaStore.d.ts.map +1 -0
- package/dist/cjs/persistence/PrismaStore.js +95 -0
- package/dist/cjs/persistence/PrismaStore.js.map +1 -0
- package/dist/cjs/persistence/RedisStore.d.ts +34 -0
- package/dist/cjs/persistence/RedisStore.d.ts.map +1 -0
- package/dist/cjs/persistence/RedisStore.js +61 -0
- package/dist/cjs/persistence/RedisStore.js.map +1 -0
- package/dist/cjs/persistence/SQLiteStore.d.ts +45 -0
- package/dist/cjs/persistence/SQLiteStore.d.ts.map +1 -0
- package/dist/cjs/persistence/SQLiteStore.js +74 -0
- package/dist/cjs/persistence/SQLiteStore.js.map +1 -0
- package/dist/cjs/persistence/sessionRow.d.ts +14 -0
- package/dist/cjs/persistence/sessionRow.d.ts.map +1 -0
- package/dist/cjs/persistence/sessionRow.js +50 -0
- package/dist/cjs/persistence/sessionRow.js.map +1 -0
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +8 -3
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +4 -3
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +4 -3
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +4 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +2 -4
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.js +33 -10
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +153 -383
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js +1 -1
- package/dist/cjs/types/ai.d.ts +32 -1
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/compaction.d.ts +3 -1
- package/dist/cjs/types/compaction.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +9 -12
- package/dist/cjs/types/errors.d.ts.map +1 -1
- package/dist/cjs/types/errors.js +14 -17
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/types/flow.d.ts +265 -513
- package/dist/cjs/types/flow.d.ts.map +1 -1
- package/dist/cjs/types/flow.js +7 -1
- package/dist/cjs/types/flow.js.map +1 -1
- package/dist/cjs/types/history.d.ts +7 -18
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/history.js.map +1 -1
- package/dist/cjs/types/index.d.ts +9 -15
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +4 -14
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/session.d.ts +94 -64
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/session.js +5 -1
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/cjs/types/tool.d.ts +37 -207
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/types/tool.js +5 -14
- package/dist/cjs/types/tool.js.map +1 -1
- package/dist/cjs/utils/clock.d.ts +28 -0
- package/dist/cjs/utils/clock.d.ts.map +1 -0
- package/dist/cjs/utils/clock.js +64 -0
- package/dist/cjs/utils/clock.js.map +1 -0
- package/dist/cjs/utils/duration.d.ts +11 -0
- package/dist/cjs/utils/duration.d.ts.map +1 -0
- package/dist/cjs/utils/duration.js +31 -0
- package/dist/cjs/utils/duration.js.map +1 -0
- package/dist/cjs/utils/history.d.ts +4 -1
- package/dist/cjs/utils/history.d.ts.map +1 -1
- package/dist/cjs/utils/history.js +2 -2
- package/dist/cjs/utils/history.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +4 -10
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +14 -61
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/json.d.ts +2 -0
- package/dist/cjs/utils/json.d.ts.map +1 -1
- package/dist/cjs/utils/json.js +5 -0
- package/dist/cjs/utils/json.js.map +1 -1
- package/dist/cjs/utils/outcomes.d.ts +48 -0
- package/dist/cjs/utils/outcomes.d.ts.map +1 -0
- package/dist/cjs/utils/outcomes.js +51 -0
- package/dist/cjs/utils/outcomes.js.map +1 -0
- package/dist/cjs/utils/schema.d.ts +50 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +138 -0
- package/dist/cjs/utils/schema.js.map +1 -0
- package/dist/cjs/utils/streamingMessage.d.ts +3 -2
- package/dist/cjs/utils/streamingMessage.d.ts.map +1 -1
- package/dist/cjs/utils/streamingMessage.js +38 -4
- package/dist/cjs/utils/streamingMessage.js.map +1 -1
- package/dist/cjs/utils/template.d.ts +13 -149
- package/dist/cjs/utils/template.d.ts.map +1 -1
- package/dist/cjs/utils/template.js +31 -363
- package/dist/cjs/utils/template.js.map +1 -1
- package/dist/cjs/utils/usage.d.ts +19 -0
- package/dist/cjs/utils/usage.d.ts.map +1 -0
- package/dist/cjs/utils/usage.js +35 -0
- package/dist/cjs/utils/usage.js.map +1 -0
- package/dist/core/Agent.d.ts +22 -378
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +107 -1181
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/CompactionEngine.d.ts.map +1 -1
- package/dist/core/CompactionEngine.js +5 -3
- package/dist/core/CompactionEngine.js.map +1 -1
- package/dist/core/FlowSpec.d.ts +136 -0
- package/dist/core/FlowSpec.d.ts.map +1 -0
- package/dist/core/FlowSpec.js +516 -0
- package/dist/core/FlowSpec.js.map +1 -0
- package/dist/core/Migrate.d.ts +38 -0
- package/dist/core/Migrate.d.ts.map +1 -0
- package/dist/core/Migrate.js +264 -0
- package/dist/core/Migrate.js.map +1 -0
- package/dist/core/Prompt.d.ts +54 -0
- package/dist/core/Prompt.d.ts.map +1 -0
- package/dist/core/Prompt.js +133 -0
- package/dist/core/Prompt.js.map +1 -0
- package/dist/core/Runner.d.ts +160 -0
- package/dist/core/Runner.d.ts.map +1 -0
- package/dist/core/Runner.js +1127 -0
- package/dist/core/Runner.js.map +1 -0
- package/dist/core/Speak.d.ts +37 -0
- package/dist/core/Speak.d.ts.map +1 -0
- package/dist/core/Speak.js +360 -0
- package/dist/core/Speak.js.map +1 -0
- package/dist/core/Understand.d.ts +28 -0
- package/dist/core/Understand.d.ts.map +1 -0
- package/dist/core/Understand.js +349 -0
- package/dist/core/Understand.js.map +1 -0
- package/dist/core/contracts.d.ts +122 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +10 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/falai.d.ts +57 -0
- package/dist/core/falai.d.ts.map +1 -0
- package/dist/core/falai.js +40 -0
- package/dist/core/falai.js.map +1 -0
- package/dist/core/predicate.d.ts +9 -0
- package/dist/core/predicate.d.ts.map +1 -0
- package/dist/core/predicate.js +54 -0
- package/dist/core/predicate.js.map +1 -0
- package/dist/index.d.ts +26 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/persistence/MemoryStore.d.ts +15 -0
- package/dist/persistence/MemoryStore.d.ts.map +1 -0
- package/dist/persistence/MemoryStore.js +35 -0
- package/dist/persistence/MemoryStore.js.map +1 -0
- package/dist/persistence/MongoStore.d.ts +42 -0
- package/dist/persistence/MongoStore.d.ts.map +1 -0
- package/dist/persistence/MongoStore.js +56 -0
- package/dist/persistence/MongoStore.js.map +1 -0
- package/dist/persistence/OpenSearchStore.d.ts +86 -0
- package/dist/persistence/OpenSearchStore.d.ts.map +1 -0
- package/dist/persistence/OpenSearchStore.js +116 -0
- package/dist/persistence/OpenSearchStore.js.map +1 -0
- package/dist/persistence/PostgresStore.d.ts +41 -0
- package/dist/persistence/PostgresStore.d.ts.map +1 -0
- package/dist/persistence/PostgresStore.js +54 -0
- package/dist/persistence/PostgresStore.js.map +1 -0
- package/dist/persistence/PrismaStore.d.ts +65 -0
- package/dist/persistence/PrismaStore.d.ts.map +1 -0
- package/dist/persistence/PrismaStore.js +91 -0
- package/dist/persistence/PrismaStore.js.map +1 -0
- package/dist/persistence/RedisStore.d.ts +34 -0
- package/dist/persistence/RedisStore.d.ts.map +1 -0
- package/dist/persistence/RedisStore.js +57 -0
- package/dist/persistence/RedisStore.js.map +1 -0
- package/dist/persistence/SQLiteStore.d.ts +45 -0
- package/dist/persistence/SQLiteStore.d.ts.map +1 -0
- package/dist/persistence/SQLiteStore.js +70 -0
- package/dist/persistence/SQLiteStore.js.map +1 -0
- package/dist/persistence/sessionRow.d.ts +14 -0
- package/dist/persistence/sessionRow.d.ts.map +1 -0
- package/dist/persistence/sessionRow.js +45 -0
- package/dist/persistence/sessionRow.js.map +1 -0
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +8 -3
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +4 -3
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +4 -3
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.d.ts +4 -0
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +2 -4
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/ProviderAdapter.d.ts +1 -1
- package/dist/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/providers/ProviderAdapter.js +34 -11
- package/dist/providers/ProviderAdapter.js.map +1 -1
- package/dist/types/agent.d.ts +153 -383
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +1 -1
- package/dist/types/ai.d.ts +32 -1
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/compaction.d.ts +3 -1
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/errors.d.ts +9 -12
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +12 -15
- package/dist/types/errors.js.map +1 -1
- package/dist/types/flow.d.ts +265 -513
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/flow.js +7 -1
- package/dist/types/flow.js.map +1 -1
- package/dist/types/history.d.ts +7 -18
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/history.js.map +1 -1
- package/dist/types/index.d.ts +9 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -7
- package/dist/types/index.js.map +1 -1
- package/dist/types/session.d.ts +94 -64
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +5 -1
- package/dist/types/session.js.map +1 -1
- package/dist/types/tool.d.ts +37 -207
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/types/tool.js +6 -13
- package/dist/types/tool.js.map +1 -1
- package/dist/utils/clock.d.ts +28 -0
- package/dist/utils/clock.d.ts.map +1 -0
- package/dist/utils/clock.js +59 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/duration.d.ts +11 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +26 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/history.d.ts +4 -1
- package/dist/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +2 -2
- package/dist/utils/history.js.map +1 -1
- package/dist/utils/index.d.ts +4 -10
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -21
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +4 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/outcomes.d.ts +48 -0
- package/dist/utils/outcomes.d.ts.map +1 -0
- package/dist/utils/outcomes.js +48 -0
- package/dist/utils/outcomes.js.map +1 -0
- package/dist/utils/schema.d.ts +50 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +129 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/streamingMessage.d.ts +3 -2
- package/dist/utils/streamingMessage.d.ts.map +1 -1
- package/dist/utils/streamingMessage.js +38 -4
- package/dist/utils/streamingMessage.js.map +1 -1
- package/dist/utils/template.d.ts +13 -149
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +28 -355
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/usage.d.ts +19 -0
- package/dist/utils/usage.d.ts.map +1 -0
- package/dist/utils/usage.js +31 -0
- package/dist/utils/usage.js.map +1 -0
- package/docs/README.md +37 -19
- package/docs/concepts/architecture.md +117 -239
- package/docs/concepts/collection.md +170 -0
- package/docs/concepts/pipeline.md +132 -378
- package/docs/concepts/runs-and-waits.md +192 -0
- package/docs/guides/actions-and-events.md +276 -0
- package/docs/guides/branching.md +119 -208
- package/docs/guides/compaction.md +63 -158
- package/docs/guides/conditions.md +164 -128
- package/docs/guides/error-handling.md +168 -164
- package/docs/guides/flow-control.md +210 -349
- package/docs/guides/flows-from-json.md +224 -0
- package/docs/guides/instructions.md +125 -161
- package/docs/guides/persistence.md +182 -206
- package/docs/guides/streaming.md +50 -114
- package/docs/guides/testing.md +284 -0
- package/docs/guides/triggers.md +401 -0
- package/docs/migration/README.md +8 -15
- package/docs/migration/v1-to-v2.md +1 -1
- package/docs/migration/v2-3-to-v2-4.md +2 -2
- package/docs/migration/v2-6-to-v2-7.md +4 -4
- package/docs/migration/v3-to-v4.md +452 -0
- package/docs/reference/actions-events-conditions.md +396 -0
- package/docs/reference/agent.md +244 -0
- package/docs/reference/branches.md +75 -203
- package/docs/reference/errors.md +188 -144
- package/docs/reference/fields.md +125 -0
- package/docs/reference/flow-spec.md +248 -0
- package/docs/reference/flow.md +104 -192
- package/docs/reference/instruction.md +83 -137
- package/docs/reference/outcomes.md +273 -0
- package/docs/reference/providers.md +525 -302
- package/docs/reference/session.md +210 -0
- package/docs/reference/step.md +194 -312
- package/docs/reference/stores.md +496 -0
- package/docs/reference/tool.md +162 -231
- package/docs/reference/trigger.md +180 -0
- package/docs/rfc/v4-one-flow.md +477 -0
- package/docs/start/01-install.md +59 -44
- package/docs/start/02-first-agent.md +97 -147
- package/docs/start/03-collect-data.md +78 -183
- package/docs/start/04-add-tools.md +159 -227
- package/docs/start/05-go-to-production.md +167 -164
- package/examples/01-quickstart.ts +26 -16
- package/examples/02-fields.ts +75 -0
- package/examples/03-tools.ts +79 -119
- package/examples/04-instructions.ts +60 -87
- package/examples/05-branches.ts +78 -0
- package/examples/06-triggers-and-waits.ts +148 -0
- package/examples/07-streaming.ts +34 -60
- package/examples/08-store-and-migration.ts +97 -0
- package/examples/09-flows-from-json.ts +107 -0
- package/package.json +9 -6
- package/src/core/Agent.ts +116 -1512
- package/src/core/CompactionEngine.ts +7 -4
- package/src/core/FlowSpec.ts +712 -0
- package/src/core/Migrate.ts +256 -0
- package/src/core/Prompt.ts +156 -0
- package/src/core/Runner.ts +1181 -0
- package/src/core/Speak.ts +451 -0
- package/src/core/Understand.ts +422 -0
- package/src/core/contracts.ts +111 -0
- package/src/core/falai.ts +86 -0
- package/src/core/predicate.ts +56 -0
- package/src/index.ts +119 -147
- package/src/persistence/MemoryStore.ts +37 -0
- package/src/persistence/MongoStore.ts +89 -0
- package/src/persistence/OpenSearchStore.ts +153 -0
- package/src/persistence/PostgresStore.ts +89 -0
- package/src/persistence/PrismaStore.ts +127 -0
- package/src/persistence/RedisStore.ts +90 -0
- package/src/persistence/SQLiteStore.ts +103 -0
- package/src/persistence/sessionRow.ts +45 -0
- package/src/providers/DeepSeekProvider.ts +8 -3
- package/src/providers/GeminiProvider.ts +4 -3
- package/src/providers/OpenAICompatibleProvider.ts +6 -0
- package/src/providers/OpenRouterProvider.ts +2 -4
- package/src/providers/ProviderAdapter.ts +36 -8
- package/src/types/agent.ts +124 -397
- package/src/types/ai.ts +33 -1
- package/src/types/compaction.ts +3 -1
- package/src/types/errors.ts +13 -16
- package/src/types/flow.ts +249 -550
- package/src/types/history.ts +7 -20
- package/src/types/index.ts +87 -139
- package/src/types/session.ts +135 -70
- package/src/types/tool.ts +42 -267
- package/src/utils/clock.ts +70 -0
- package/src/utils/duration.ts +33 -0
- package/src/utils/history.ts +3 -2
- package/src/utils/index.ts +8 -66
- package/src/utils/json.ts +5 -0
- package/src/utils/outcomes.ts +56 -0
- package/src/utils/schema.ts +145 -0
- package/src/utils/streamingMessage.ts +34 -4
- package/src/utils/template.ts +32 -423
- package/src/utils/usage.ts +37 -0
- package/dist/adapters/MemoryAdapter.d.ts +0 -47
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js +0 -204
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts +0 -97
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js +0 -196
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts +0 -169
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js +0 -471
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts +0 -85
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js +0 -308
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts +0 -115
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js +0 -406
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts +0 -72
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js +0 -286
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts +0 -86
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js +0 -337
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -17
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -11
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/sessionRow.d.ts +0 -22
- package/dist/adapters/sessionRow.d.ts.map +0 -1
- package/dist/adapters/sessionRow.js +0 -48
- package/dist/adapters/sessionRow.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts +0 -47
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js +0 -208
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts +0 -97
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js +0 -200
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts +0 -169
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +0 -475
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +0 -85
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +0 -312
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts +0 -115
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js +0 -410
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts +0 -72
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js +0 -290
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +0 -86
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +0 -341
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.d.ts +0 -17
- package/dist/cjs/adapters/index.d.ts.map +0 -1
- package/dist/cjs/adapters/index.js +0 -21
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/sessionRow.d.ts +0 -22
- package/dist/cjs/adapters/sessionRow.d.ts.map +0 -1
- package/dist/cjs/adapters/sessionRow.js +0 -52
- package/dist/cjs/adapters/sessionRow.js.map +0 -1
- package/dist/cjs/constants/index.d.ts +0 -1
- package/dist/cjs/constants/index.d.ts.map +0 -1
- package/dist/cjs/constants/index.js +0 -4
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +0 -97
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +0 -1
- package/dist/cjs/core/AutoChainExecutor.js +0 -288
- package/dist/cjs/core/AutoChainExecutor.js.map +0 -1
- package/dist/cjs/core/BranchEvaluator.d.ts +0 -55
- package/dist/cjs/core/BranchEvaluator.d.ts.map +0 -1
- package/dist/cjs/core/BranchEvaluator.js +0 -125
- package/dist/cjs/core/BranchEvaluator.js.map +0 -1
- package/dist/cjs/core/DirectiveChainTracker.d.ts +0 -49
- package/dist/cjs/core/DirectiveChainTracker.d.ts.map +0 -1
- package/dist/cjs/core/DirectiveChainTracker.js +0 -121
- package/dist/cjs/core/DirectiveChainTracker.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -26
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -144
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/Flow.d.ts +0 -183
- package/dist/cjs/core/Flow.d.ts.map +0 -1
- package/dist/cjs/core/Flow.js +0 -551
- package/dist/cjs/core/Flow.js.map +0 -1
- package/dist/cjs/core/FlowRouter.d.ts +0 -183
- package/dist/cjs/core/FlowRouter.d.ts.map +0 -1
- package/dist/cjs/core/FlowRouter.js +0 -1047
- package/dist/cjs/core/FlowRouter.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts +0 -114
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js +0 -336
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -47
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -397
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +0 -48
- package/dist/cjs/core/PromptSectionCache.d.ts.map +0 -1
- package/dist/cjs/core/PromptSectionCache.js +0 -108
- package/dist/cjs/core/PromptSectionCache.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -43
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -235
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/ResponseGenerationError.d.ts +0 -30
- package/dist/cjs/core/ResponseGenerationError.d.ts.map +0 -1
- package/dist/cjs/core/ResponseGenerationError.js +0 -35
- package/dist/cjs/core/ResponseGenerationError.js.map +0 -1
- package/dist/cjs/core/ResponseModal.d.ts +0 -305
- package/dist/cjs/core/ResponseModal.d.ts.map +0 -1
- package/dist/cjs/core/ResponseModal.js +0 -1414
- package/dist/cjs/core/ResponseModal.js.map +0 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +0 -220
- package/dist/cjs/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/cjs/core/ResponsePipeline.js +0 -1040
- package/dist/cjs/core/ResponsePipeline.js.map +0 -1
- package/dist/cjs/core/SessionFinalizer.d.ts +0 -34
- package/dist/cjs/core/SessionFinalizer.d.ts.map +0 -1
- package/dist/cjs/core/SessionFinalizer.js +0 -88
- package/dist/cjs/core/SessionFinalizer.js.map +0 -1
- package/dist/cjs/core/SessionManager.d.ts +0 -112
- package/dist/cjs/core/SessionManager.d.ts.map +0 -1
- package/dist/cjs/core/SessionManager.js +0 -308
- package/dist/cjs/core/SessionManager.js.map +0 -1
- package/dist/cjs/core/SignalCoordinator.d.ts +0 -103
- package/dist/cjs/core/SignalCoordinator.d.ts.map +0 -1
- package/dist/cjs/core/SignalCoordinator.js +0 -207
- package/dist/cjs/core/SignalCoordinator.js.map +0 -1
- package/dist/cjs/core/SignalEvaluator.d.ts +0 -86
- package/dist/cjs/core/SignalEvaluator.d.ts.map +0 -1
- package/dist/cjs/core/SignalEvaluator.js +0 -319
- package/dist/cjs/core/SignalEvaluator.js.map +0 -1
- package/dist/cjs/core/SignalProcessor.d.ts +0 -152
- package/dist/cjs/core/SignalProcessor.d.ts.map +0 -1
- package/dist/cjs/core/SignalProcessor.js +0 -505
- package/dist/cjs/core/SignalProcessor.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -184
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -599
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/StepLifecycle.d.ts +0 -43
- package/dist/cjs/core/StepLifecycle.d.ts.map +0 -1
- package/dist/cjs/core/StepLifecycle.js +0 -180
- package/dist/cjs/core/StepLifecycle.js.map +0 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +0 -142
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/StreamingToolExecutor.js +0 -490
- package/dist/cjs/core/StreamingToolExecutor.js.map +0 -1
- package/dist/cjs/core/ToolLoopExecutor.d.ts +0 -133
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolLoopExecutor.js +0 -568
- package/dist/cjs/core/ToolLoopExecutor.js.map +0 -1
- package/dist/cjs/core/ToolManager.d.ts +0 -250
- package/dist/cjs/core/ToolManager.d.ts.map +0 -1
- package/dist/cjs/core/ToolManager.js +0 -1104
- package/dist/cjs/core/ToolManager.js.map +0 -1
- package/dist/cjs/core/createAgent.d.ts +0 -35
- package/dist/cjs/core/createAgent.d.ts.map +0 -1
- package/dist/cjs/core/createAgent.js +0 -39
- package/dist/cjs/core/createAgent.js.map +0 -1
- package/dist/cjs/core/flow-namespace.d.ts +0 -64
- package/dist/cjs/core/flow-namespace.d.ts.map +0 -1
- package/dist/cjs/core/flow-namespace.js +0 -182
- package/dist/cjs/core/flow-namespace.js.map +0 -1
- package/dist/cjs/core/toolGates.d.ts +0 -24
- package/dist/cjs/core/toolGates.d.ts.map +0 -1
- package/dist/cjs/core/toolGates.js +0 -52
- package/dist/cjs/core/toolGates.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts +0 -254
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js +0 -7
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/prompt-cache.d.ts +0 -15
- package/dist/cjs/types/prompt-cache.d.ts.map +0 -1
- package/dist/cjs/types/prompt-cache.js +0 -6
- package/dist/cjs/types/prompt-cache.js.map +0 -1
- package/dist/cjs/types/signals.d.ts +0 -263
- package/dist/cjs/types/signals.d.ts.map +0 -1
- package/dist/cjs/types/signals.js +0 -11
- package/dist/cjs/types/signals.js.map +0 -1
- package/dist/cjs/types/template.d.ts +0 -84
- package/dist/cjs/types/template.d.ts.map +0 -1
- package/dist/cjs/types/template.js +0 -3
- package/dist/cjs/types/template.js.map +0 -1
- package/dist/cjs/utils/condition.d.ts +0 -63
- package/dist/cjs/utils/condition.d.ts.map +0 -1
- package/dist/cjs/utils/condition.js +0 -239
- package/dist/cjs/utils/condition.js.map +0 -1
- package/dist/cjs/utils/event.d.ts +0 -6
- package/dist/cjs/utils/event.d.ts.map +0 -1
- package/dist/cjs/utils/event.js +0 -20
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.d.ts +0 -33
- package/dist/cjs/utils/id.d.ts.map +0 -1
- package/dist/cjs/utils/id.js +0 -84
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/serialize.d.ts +0 -36
- package/dist/cjs/utils/serialize.d.ts.map +0 -1
- package/dist/cjs/utils/serialize.js +0 -77
- package/dist/cjs/utils/serialize.js.map +0 -1
- package/dist/cjs/utils/session.d.ts +0 -124
- package/dist/cjs/utils/session.d.ts.map +0 -1
- package/dist/cjs/utils/session.js +0 -396
- package/dist/cjs/utils/session.js.map +0 -1
- package/dist/constants/index.d.ts +0 -2
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -4
- package/dist/constants/index.js.map +0 -1
- package/dist/core/AutoChainExecutor.d.ts +0 -97
- package/dist/core/AutoChainExecutor.d.ts.map +0 -1
- package/dist/core/AutoChainExecutor.js +0 -284
- package/dist/core/AutoChainExecutor.js.map +0 -1
- package/dist/core/BranchEvaluator.d.ts +0 -55
- package/dist/core/BranchEvaluator.d.ts.map +0 -1
- package/dist/core/BranchEvaluator.js +0 -121
- package/dist/core/BranchEvaluator.js.map +0 -1
- package/dist/core/DirectiveChainTracker.d.ts +0 -49
- package/dist/core/DirectiveChainTracker.d.ts.map +0 -1
- package/dist/core/DirectiveChainTracker.js +0 -117
- package/dist/core/DirectiveChainTracker.js.map +0 -1
- package/dist/core/Events.d.ts +0 -26
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -137
- package/dist/core/Events.js.map +0 -1
- package/dist/core/Flow.d.ts +0 -183
- package/dist/core/Flow.d.ts.map +0 -1
- package/dist/core/Flow.js +0 -547
- package/dist/core/Flow.js.map +0 -1
- package/dist/core/FlowRouter.d.ts +0 -183
- package/dist/core/FlowRouter.d.ts.map +0 -1
- package/dist/core/FlowRouter.js +0 -1043
- package/dist/core/FlowRouter.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts +0 -114
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js +0 -332
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -47
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -393
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/PromptSectionCache.d.ts +0 -48
- package/dist/core/PromptSectionCache.d.ts.map +0 -1
- package/dist/core/PromptSectionCache.js +0 -104
- package/dist/core/PromptSectionCache.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -43
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -231
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/ResponseGenerationError.d.ts +0 -30
- package/dist/core/ResponseGenerationError.d.ts.map +0 -1
- package/dist/core/ResponseGenerationError.js +0 -31
- package/dist/core/ResponseGenerationError.js.map +0 -1
- package/dist/core/ResponseModal.d.ts +0 -305
- package/dist/core/ResponseModal.d.ts.map +0 -1
- package/dist/core/ResponseModal.js +0 -1410
- package/dist/core/ResponseModal.js.map +0 -1
- package/dist/core/ResponsePipeline.d.ts +0 -220
- package/dist/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/core/ResponsePipeline.js +0 -1035
- package/dist/core/ResponsePipeline.js.map +0 -1
- package/dist/core/SessionFinalizer.d.ts +0 -34
- package/dist/core/SessionFinalizer.d.ts.map +0 -1
- package/dist/core/SessionFinalizer.js +0 -84
- package/dist/core/SessionFinalizer.js.map +0 -1
- package/dist/core/SessionManager.d.ts +0 -112
- package/dist/core/SessionManager.d.ts.map +0 -1
- package/dist/core/SessionManager.js +0 -301
- package/dist/core/SessionManager.js.map +0 -1
- package/dist/core/SignalCoordinator.d.ts +0 -103
- package/dist/core/SignalCoordinator.d.ts.map +0 -1
- package/dist/core/SignalCoordinator.js +0 -203
- package/dist/core/SignalCoordinator.js.map +0 -1
- package/dist/core/SignalEvaluator.d.ts +0 -86
- package/dist/core/SignalEvaluator.d.ts.map +0 -1
- package/dist/core/SignalEvaluator.js +0 -312
- package/dist/core/SignalEvaluator.js.map +0 -1
- package/dist/core/SignalProcessor.d.ts +0 -152
- package/dist/core/SignalProcessor.d.ts.map +0 -1
- package/dist/core/SignalProcessor.js +0 -498
- package/dist/core/SignalProcessor.js.map +0 -1
- package/dist/core/Step.d.ts +0 -184
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -594
- package/dist/core/Step.js.map +0 -1
- package/dist/core/StepLifecycle.d.ts +0 -43
- package/dist/core/StepLifecycle.d.ts.map +0 -1
- package/dist/core/StepLifecycle.js +0 -176
- package/dist/core/StepLifecycle.js.map +0 -1
- package/dist/core/StreamingToolExecutor.d.ts +0 -142
- package/dist/core/StreamingToolExecutor.d.ts.map +0 -1
- package/dist/core/StreamingToolExecutor.js +0 -483
- package/dist/core/StreamingToolExecutor.js.map +0 -1
- package/dist/core/ToolLoopExecutor.d.ts +0 -133
- package/dist/core/ToolLoopExecutor.d.ts.map +0 -1
- package/dist/core/ToolLoopExecutor.js +0 -564
- package/dist/core/ToolLoopExecutor.js.map +0 -1
- package/dist/core/ToolManager.d.ts +0 -250
- package/dist/core/ToolManager.d.ts.map +0 -1
- package/dist/core/ToolManager.js +0 -1098
- package/dist/core/ToolManager.js.map +0 -1
- package/dist/core/createAgent.d.ts +0 -35
- package/dist/core/createAgent.d.ts.map +0 -1
- package/dist/core/createAgent.js +0 -36
- package/dist/core/createAgent.js.map +0 -1
- package/dist/core/flow-namespace.d.ts +0 -64
- package/dist/core/flow-namespace.d.ts.map +0 -1
- package/dist/core/flow-namespace.js +0 -179
- package/dist/core/flow-namespace.js.map +0 -1
- package/dist/core/toolGates.d.ts +0 -24
- package/dist/core/toolGates.d.ts.map +0 -1
- package/dist/core/toolGates.js +0 -49
- package/dist/core/toolGates.js.map +0 -1
- package/dist/types/persistence.d.ts +0 -254
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js +0 -6
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/prompt-cache.d.ts +0 -15
- package/dist/types/prompt-cache.d.ts.map +0 -1
- package/dist/types/prompt-cache.js +0 -5
- package/dist/types/prompt-cache.js.map +0 -1
- package/dist/types/signals.d.ts +0 -263
- package/dist/types/signals.d.ts.map +0 -1
- package/dist/types/signals.js +0 -10
- package/dist/types/signals.js.map +0 -1
- package/dist/types/template.d.ts +0 -84
- package/dist/types/template.d.ts.map +0 -1
- package/dist/types/template.js +0 -2
- package/dist/types/template.js.map +0 -1
- package/dist/utils/condition.d.ts +0 -63
- package/dist/utils/condition.d.ts.map +0 -1
- package/dist/utils/condition.js +0 -230
- package/dist/utils/condition.js.map +0 -1
- package/dist/utils/event.d.ts +0 -6
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js +0 -17
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts +0 -33
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js +0 -77
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/serialize.d.ts +0 -36
- package/dist/utils/serialize.d.ts.map +0 -1
- package/dist/utils/serialize.js +0 -72
- package/dist/utils/serialize.js.map +0 -1
- package/dist/utils/session.d.ts +0 -124
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -379
- package/dist/utils/session.js.map +0 -1
- package/docs/concepts/directives.md +0 -369
- package/docs/reference/adapters.md +0 -543
- package/docs/reference/create-agent.md +0 -216
- package/docs/reference/directive.md +0 -242
- package/docs/reference/signals.md +0 -368
- package/examples/02-data-extraction.ts +0 -90
- package/examples/05-branching.ts +0 -140
- package/examples/06-flow-control.ts +0 -103
- package/examples/08-persistence.ts +0 -98
- package/examples/09-signals.ts +0 -144
- package/src/adapters/MemoryAdapter.ts +0 -281
- package/src/adapters/MongoAdapter.ts +0 -341
- package/src/adapters/OpenSearchAdapter.ts +0 -693
- package/src/adapters/PostgreSQLAdapter.ts +0 -487
- package/src/adapters/PrismaAdapter.ts +0 -617
- package/src/adapters/RedisAdapter.ts +0 -439
- package/src/adapters/SQLiteAdapter.ts +0 -496
- package/src/adapters/index.ts +0 -43
- package/src/adapters/sessionRow.ts +0 -57
- package/src/constants/index.ts +0 -2
- package/src/core/AutoChainExecutor.ts +0 -397
- package/src/core/BranchEvaluator.ts +0 -161
- package/src/core/DirectiveChainTracker.ts +0 -144
- package/src/core/Events.ts +0 -164
- package/src/core/Flow.ts +0 -665
- package/src/core/FlowRouter.ts +0 -1540
- package/src/core/PersistenceManager.ts +0 -446
- package/src/core/PromptComposer.ts +0 -448
- package/src/core/PromptSectionCache.ts +0 -125
- package/src/core/ResponseEngine.ts +0 -338
- package/src/core/ResponseGenerationError.ts +0 -53
- package/src/core/ResponseModal.ts +0 -1902
- package/src/core/ResponsePipeline.ts +0 -1404
- package/src/core/SessionFinalizer.ts +0 -108
- package/src/core/SessionManager.ts +0 -372
- package/src/core/SignalCoordinator.ts +0 -263
- package/src/core/SignalEvaluator.ts +0 -404
- package/src/core/SignalProcessor.ts +0 -663
- package/src/core/Step.ts +0 -782
- package/src/core/StepLifecycle.ts +0 -242
- package/src/core/StreamingToolExecutor.ts +0 -609
- package/src/core/ToolLoopExecutor.ts +0 -749
- package/src/core/ToolManager.ts +0 -1379
- package/src/core/createAgent.ts +0 -40
- package/src/core/flow-namespace.ts +0 -227
- package/src/core/toolGates.ts +0 -72
- package/src/types/persistence.ts +0 -303
- package/src/types/prompt-cache.ts +0 -17
- package/src/types/signals.ts +0 -338
- package/src/types/template.ts +0 -98
- package/src/utils/condition.ts +0 -296
- package/src/utils/event.ts +0 -16
- package/src/utils/id.ts +0 -91
- package/src/utils/serialize.ts +0 -86
- package/src/utils/session.ts +0 -501
package/dist/cjs/types/flow.d.ts
CHANGED
|
@@ -1,543 +1,295 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
import type { Tool } from "./tool.js";
|
|
5
|
-
import type { StructuredSchema } from "./schema.js";
|
|
6
|
-
import type { Instruction, HookContext, ExitReason } from "./agent.js";
|
|
7
|
-
import type { Template } from "./template.js";
|
|
8
|
-
/**
|
|
9
|
-
* Code-evaluated condition predicate. Returns `true` to pass, `false` to fail.
|
|
10
|
-
* May be async. Used on `if` fields (free to evaluate, no LLM cost).
|
|
11
|
-
*/
|
|
12
|
-
export type ConditionPredicate<TContext = unknown, TData = unknown> = (ctx: {
|
|
13
|
-
data: Partial<TData>;
|
|
14
|
-
context: TContext;
|
|
15
|
-
session: import("./session.js").SessionState<TData>;
|
|
16
|
-
history: Event[];
|
|
17
|
-
}) => boolean | Promise<boolean>;
|
|
18
|
-
/**
|
|
19
|
-
* The `if` field shape: a single predicate or an array of predicates (AND semantics).
|
|
20
|
-
*/
|
|
21
|
-
export type ConditionIf<TContext = unknown, TData = unknown> = ConditionPredicate<TContext, TData> | ConditionPredicate<TContext, TData>[];
|
|
22
|
-
/**
|
|
23
|
-
* The `when` field shape: a single AI-evaluated string or array of strings.
|
|
24
|
-
* Non-`!` entries use OR semantics. `!`-prefixed entries are OR exclusions:
|
|
25
|
-
* any matching exclusion inhibits the condition. Functions are NOT allowed on
|
|
26
|
-
* `when` — they belong on `if` only.
|
|
27
|
-
*/
|
|
28
|
-
export type ConditionWhen = string | string[];
|
|
29
|
-
import type { SessionState } from "./session.js";
|
|
30
|
-
import type { Event } from "./history.js";
|
|
31
|
-
/**
|
|
32
|
-
* Reason why execution stopped.
|
|
33
|
-
* Used to indicate the stopping condition for step execution.
|
|
2
|
+
* The authoring surface: fields, flows, steps, triggers, actions, conditions.
|
|
34
3
|
*
|
|
35
|
-
*
|
|
4
|
+
* A Flow is a trigger plus an ordered list of steps. Everything here is a
|
|
5
|
+
* plain object literal, so the same shape round-trips through JSON (FlowSpec).
|
|
6
|
+
* Two generics thread through: `C` is the host's ambient context, passed on
|
|
7
|
+
* every turn; `D` is the data collected across all flows, inferred from the
|
|
8
|
+
* agent's fields with `InferData`.
|
|
36
9
|
*/
|
|
37
|
-
|
|
10
|
+
import type { Run } from "./session.js";
|
|
11
|
+
/** A time span: `'30s'`, `'5m'`, `'24h'`, `'3d'`. */
|
|
12
|
+
export type Duration = `${number}${"s" | "m" | "h" | "d"}`;
|
|
13
|
+
/** How often a trigger may start a run for one session or anchor. */
|
|
14
|
+
export type Repeat = "once" | "always" | {
|
|
15
|
+
cooldown: Duration;
|
|
16
|
+
};
|
|
38
17
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
18
|
+
* Prompt text. `{{data.x}}`, `{{context.x}}` and `{{input.x}}` are filled in
|
|
19
|
+
* before the text is used.
|
|
41
20
|
*/
|
|
42
|
-
export
|
|
43
|
-
/** Partial data to merge into session.data */
|
|
44
|
-
dataUpdate?: Partial<TData>;
|
|
45
|
-
/** Partial context to merge into the agent context */
|
|
46
|
-
contextUpdate?: Partial<TContext>;
|
|
47
|
-
/** If true, stop the auto-step chain and end the turn with `reply` */
|
|
48
|
-
halt?: boolean;
|
|
49
|
-
/** Verbatim reply to send when halting */
|
|
50
|
-
reply?: string;
|
|
51
|
-
/** Jump to a step within the current flow */
|
|
52
|
-
goToStep?: string | {
|
|
53
|
-
step: string;
|
|
54
|
-
flow?: string;
|
|
55
|
-
data?: Partial<TData>;
|
|
56
|
-
reason?: string;
|
|
57
|
-
};
|
|
58
|
-
/** Jump to another flow */
|
|
59
|
-
goTo?: string | {
|
|
60
|
-
flow?: string;
|
|
61
|
-
step?: string;
|
|
62
|
-
data?: Partial<TData>;
|
|
63
|
-
reason?: string;
|
|
64
|
-
carry?: 'preserve' | 'reset';
|
|
65
|
-
};
|
|
66
|
-
/** Mark the current flow as complete */
|
|
67
|
-
complete?: true | {
|
|
68
|
-
next?: Directive<unknown, unknown>;
|
|
69
|
-
reason?: string;
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Prompt lines appended to this turn's generation prompt. Pre-LLM
|
|
73
|
-
* augmentation: honored by auto steps' prepare; other step kinds drop it
|
|
74
|
-
* with a loud warning rather than silently ignoring it.
|
|
75
|
-
*/
|
|
76
|
-
appendPrompt?: string[];
|
|
77
|
-
/**
|
|
78
|
-
* Extra tools made available for this turn only. Same auto-step-only
|
|
79
|
-
* honoring as {@link appendPrompt}.
|
|
80
|
-
*/
|
|
81
|
-
injectTools?: Tool[];
|
|
82
|
-
}
|
|
21
|
+
export type Template = string;
|
|
83
22
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* verbatim.
|
|
87
|
-
*
|
|
88
|
-
* At most one position field (`goTo`, `goToStep`, `complete`, `abort`, `reset`)
|
|
89
|
-
* may be set per Directive. Non-position fields (`reply`, `contextUpdate`,
|
|
90
|
-
* `dataUpdate`) may accompany any position field.
|
|
91
|
-
*
|
|
92
|
-
* Pre-LLM augmentation fields (`appendPrompt`, `injectTools`, `halt`) are
|
|
93
|
-
* one-turn-lifetime: they only take effect in pre-LLM hooks (`onEnter`,
|
|
94
|
-
* `prepare`). When emitted from post-LLM hooks (`finalize`, `onComplete`) or
|
|
95
|
-
* persisted to `session.pendingDirective`, these fields are ignored and a WARN
|
|
96
|
-
* log is emitted. They are never serialized across turns.
|
|
23
|
+
* Where a step sends the run next: a step id, `'end'` (reserved; ends the
|
|
24
|
+
* run), a step with fields to clear first, or another flow to start.
|
|
97
25
|
*/
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
complete?: true | {
|
|
116
|
-
next?: Directive<unknown, unknown>;
|
|
117
|
-
reason?: string;
|
|
118
|
-
};
|
|
119
|
-
/** Abort the current flow. */
|
|
120
|
-
abort?: string | {
|
|
121
|
-
reason: string;
|
|
122
|
-
clearSession?: boolean;
|
|
123
|
-
};
|
|
124
|
-
/** Reset the current flow (or jump to a step within it). */
|
|
125
|
-
reset?: true | {
|
|
126
|
-
step?: string;
|
|
127
|
-
clearData?: boolean;
|
|
128
|
-
reason?: string;
|
|
129
|
-
};
|
|
130
|
-
/** Verbatim reply text to send to the user. */
|
|
131
|
-
reply?: string;
|
|
132
|
-
/** Partial context update applied before the next turn. */
|
|
133
|
-
contextUpdate?: Partial<TContext>;
|
|
134
|
-
/** Partial data update applied before the next turn. */
|
|
135
|
-
dataUpdate?: Partial<TData>;
|
|
136
|
-
/**
|
|
137
|
-
* Sentences to append to the system prompt for THIS turn only.
|
|
138
|
-
* Wired through PromptComposer's per-turn appendage slot.
|
|
139
|
-
*
|
|
140
|
-
* Only meaningful in pre-LLM hooks (`onEnter`, `prepare`). Ignored with
|
|
141
|
-
* a WARN log when emitted from post-LLM hooks or persisted.
|
|
142
|
-
*/
|
|
143
|
-
appendPrompt?: string[];
|
|
144
|
-
/**
|
|
145
|
-
* Tools available for THIS turn only. Stacked on top of agent/flow/step
|
|
146
|
-
* tool scopes via ToolManager's transient layer.
|
|
147
|
-
*
|
|
148
|
-
* Only meaningful in pre-LLM hooks (`onEnter`, `prepare`). Ignored with
|
|
149
|
-
* a WARN log when emitted from post-LLM hooks or persisted.
|
|
150
|
-
*/
|
|
151
|
-
injectTools?: Tool[];
|
|
26
|
+
export type Next<D = unknown> = string | {
|
|
27
|
+
step: string;
|
|
28
|
+
clear?: (keyof D & string)[];
|
|
29
|
+
} | {
|
|
30
|
+
flow: Template;
|
|
31
|
+
input?: unknown;
|
|
32
|
+
};
|
|
33
|
+
export type ScalarType = "string" | "number" | "integer" | "boolean";
|
|
34
|
+
export interface ScalarDef<T extends ScalarType = ScalarType> {
|
|
35
|
+
type: T;
|
|
36
|
+
description?: string;
|
|
37
|
+
enum?: readonly (string | number)[];
|
|
38
|
+
}
|
|
39
|
+
/** One collectable field, authored once on the agent. */
|
|
40
|
+
export interface FieldDef<T extends ScalarType = ScalarType> extends ScalarDef<T> {
|
|
41
|
+
/** How the AI should ask for this field when a step collects it. */
|
|
42
|
+
ask?: string;
|
|
152
43
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* assistant output (`stoppedReason: 'reply'`). When `halt` is true
|
|
157
|
-
* without `reply`, the turn produces an empty assistant message
|
|
158
|
-
* (`stoppedReason: 'halt'`).
|
|
159
|
-
*
|
|
160
|
-
* Only meaningful in pre-LLM hooks (`onEnter`, `prepare`). Ignored with
|
|
161
|
-
* a WARN log when emitted from post-LLM hooks or persisted.
|
|
44
|
+
* Where the value may be harvested from. `'anywhere'` (default for strings
|
|
45
|
+
* and numbers): any lead message. `'asked'` (default for booleans): only the
|
|
46
|
+
* reply to the step that lists the field, so a stray "sim" never opens a gate.
|
|
162
47
|
*/
|
|
163
|
-
|
|
48
|
+
extract?: "anywhere" | "asked";
|
|
164
49
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
50
|
+
export type FieldDefs = Record<string, FieldDef>;
|
|
51
|
+
/** One parameter of a host action. All parameters are required unless `optional: true`. */
|
|
52
|
+
export type ParamDef = (ScalarDef & {
|
|
53
|
+
optional?: true;
|
|
54
|
+
}) | {
|
|
55
|
+
type: "array";
|
|
56
|
+
items: ScalarDef;
|
|
57
|
+
description?: string;
|
|
58
|
+
optional?: true;
|
|
59
|
+
};
|
|
60
|
+
export type ParamDefs = Record<string, ParamDef>;
|
|
61
|
+
type Simplify<T> = {
|
|
62
|
+
[K in keyof T]: T[K];
|
|
63
|
+
};
|
|
64
|
+
type TypeValue<T extends ScalarType> = T extends "string" ? string : T extends "boolean" ? boolean : number;
|
|
65
|
+
type ScalarValue<Def extends ScalarDef> = Def extends {
|
|
66
|
+
enum: readonly (infer E)[];
|
|
67
|
+
} ? E : TypeValue<Def["type"]>;
|
|
68
|
+
type ParamValue<Def extends ParamDef> = Def extends {
|
|
69
|
+
type: "array";
|
|
70
|
+
items: infer I extends ScalarDef;
|
|
71
|
+
} ? ScalarValue<I>[] : Def extends ScalarDef ? ScalarValue<Def> : never;
|
|
72
|
+
type OptionalKeys<P extends ParamDefs> = {
|
|
73
|
+
[K in keyof P]: P[K] extends {
|
|
74
|
+
optional: true;
|
|
75
|
+
} ? K : never;
|
|
76
|
+
}[keyof P];
|
|
77
|
+
/** The collected-data type of a set of fields. Enums become literal unions. */
|
|
78
|
+
export type InferData<F extends FieldDefs> = Simplify<{
|
|
79
|
+
[K in keyof F]: ScalarValue<F[K]>;
|
|
80
|
+
}>;
|
|
81
|
+
/** The `with` shape of a host action, from its parameter definitions. */
|
|
82
|
+
export type InferParams<P extends ParamDefs> = Simplify<{
|
|
83
|
+
[K in Exclude<keyof P, OptionalKeys<P>>]: ParamValue<P[K]>;
|
|
84
|
+
} & {
|
|
85
|
+
[K in OptionalKeys<P>]?: ParamValue<P[K]>;
|
|
86
|
+
}>;
|
|
87
|
+
/** What a code predicate sees. `run` is the run about to move or start. */
|
|
88
|
+
export interface PredCtx<C = unknown, D = unknown, P = unknown> {
|
|
89
|
+
context: C;
|
|
90
|
+
data: Partial<D>;
|
|
91
|
+
input: P;
|
|
92
|
+
/** The run being judged. Absent only for an agent-level instruction while the idle speaker answers. */
|
|
93
|
+
run?: Run;
|
|
94
|
+
/** The host's reason the assistant cannot speak right now, when it cannot. */
|
|
95
|
+
silenced?: string;
|
|
96
|
+
now: Date;
|
|
182
97
|
}
|
|
183
98
|
/**
|
|
184
|
-
* A
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* Predicates are evaluated **before** any AI condition (`when`) on the same
|
|
188
|
-
* entry — code-first evaluation saves tokens when the predicate fails.
|
|
189
|
-
*/
|
|
190
|
-
export type BranchPredicate<TContext = unknown, TData = unknown> = (ctx: BranchPredicateContext<TContext, TData>) => boolean | Promise<boolean>;
|
|
191
|
-
/**
|
|
192
|
-
* A single entry in a `BranchMap`. Evaluated in declaration order; the first
|
|
193
|
-
* entry whose conditions pass wins.
|
|
194
|
-
*
|
|
195
|
-
* **Resolution rules for `then`:**
|
|
196
|
-
* 1. String matching a step id in the current flow → enter that step.
|
|
197
|
-
* 2. String matching a flow id/title in the agent → treated as
|
|
198
|
-
* `applyDirective({ goTo: <string> })`.
|
|
199
|
-
* 3. `Directive` object → applied via `applyDirective` directly.
|
|
200
|
-
*
|
|
201
|
-
* An entry with neither `when` nor `if` is an unconditional fallback and
|
|
202
|
-
* is only legal as the **last** entry in the array.
|
|
99
|
+
* A named host condition, used by name (with its argument) in JSON specs.
|
|
100
|
+
* Declared as a method so a condition typed for one argument fits the map;
|
|
101
|
+
* the argument arrives from JSON unvalidated, so the check should test it.
|
|
203
102
|
*/
|
|
204
|
-
export interface
|
|
205
|
-
|
|
206
|
-
* AI-evaluated condition. Non-`!` strings are OR alternatives; `!` strings
|
|
207
|
-
* are OR exclusions where any match inhibits the branch.
|
|
208
|
-
* Costs LLM tokens. Reuses the same machinery as `step.when`.
|
|
209
|
-
* Only evaluated if `if` passes (or is absent) — code-first short-circuit.
|
|
210
|
-
*/
|
|
211
|
-
when?: string | string[];
|
|
212
|
-
/**
|
|
213
|
-
* Code predicate. Function or array of functions (AND semantics).
|
|
214
|
-
* Free to evaluate. When both `when` and `if` are set, `if` runs first;
|
|
215
|
-
* `when` is only evaluated if all `if` predicates pass (token-saving).
|
|
216
|
-
*/
|
|
217
|
-
if?: BranchPredicate<TContext, TData> | BranchPredicate<TContext, TData>[];
|
|
218
|
-
/**
|
|
219
|
-
* Where to go when this entry matches.
|
|
220
|
-
* - **String:** step id in the current flow, or flow id/title for cross-flow.
|
|
221
|
-
* - **Directive:** full programmatic transition (cross-flow with data,
|
|
222
|
-
* complete, abort, reset, etc.).
|
|
223
|
-
*/
|
|
224
|
-
then: string | Directive<TContext, TData>;
|
|
225
|
-
/** Optional label for event traces and flow visualization. */
|
|
226
|
-
label?: string;
|
|
103
|
+
export interface Condition<C = unknown, D = unknown, Arg = unknown> {
|
|
104
|
+
check(ctx: PredCtx<C, D>, arg: Arg): boolean;
|
|
227
105
|
}
|
|
106
|
+
export type ConditionMap<C = unknown, D = unknown> = Record<string, Condition<C, D>>;
|
|
228
107
|
/**
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
108
|
+
* The JSON form of a predicate. Every listed entry must hold. Built-ins:
|
|
109
|
+
* `equals` (fields equal the given values), `known` (fields are known),
|
|
110
|
+
* `silenced` (the host gate is closed). Any other key names one of the
|
|
111
|
+
* agent's conditions and carries its argument.
|
|
232
112
|
*/
|
|
233
|
-
export
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
/** Flow identifier */
|
|
239
|
-
id: string;
|
|
113
|
+
export interface ConditionSpec<D = unknown> {
|
|
114
|
+
equals?: Partial<D>;
|
|
115
|
+
known?: (keyof D & string)[];
|
|
116
|
+
silenced?: boolean;
|
|
117
|
+
[condition: string]: unknown;
|
|
240
118
|
}
|
|
119
|
+
/** A code predicate (free) or its JSON form. */
|
|
120
|
+
export type Pred<C = unknown, D = unknown, P = unknown> = ((ctx: PredCtx<C, D, P>) => boolean) | ConditionSpec<D>;
|
|
121
|
+
/** A fork judged while a step is asking: `when` by the AI, `if` by code. */
|
|
122
|
+
export type Branch<C = unknown, D = unknown> = {
|
|
123
|
+
then: Next<D>;
|
|
124
|
+
} & ({
|
|
125
|
+
when: string;
|
|
126
|
+
} | {
|
|
127
|
+
if: Pred<C, D>;
|
|
128
|
+
});
|
|
241
129
|
/**
|
|
242
|
-
*
|
|
130
|
+
* When a run starts. `repeat` defaults to `'once'` for message, mention and
|
|
131
|
+
* silence triggers and to `'always'` for events.
|
|
243
132
|
*/
|
|
244
|
-
export
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
133
|
+
export type Trigger<C = unknown, D = unknown> = {
|
|
134
|
+
repeat?: Repeat;
|
|
135
|
+
} & (
|
|
136
|
+
/** The lead asks for this; the run takes the conversation. `[]` = catch-all. */
|
|
137
|
+
{
|
|
138
|
+
message: string[];
|
|
139
|
+
if?: Pred<C, D>;
|
|
249
140
|
}
|
|
250
|
-
/**
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
* Informational hooks (`onExit`) return `void`.
|
|
256
|
-
* Data hooks (`onDataUpdate`, `onContextUpdate`) retain their v1 signatures.
|
|
257
|
-
*/
|
|
258
|
-
export interface FlowLifecycleHooks<TContext = unknown, TData = unknown> {
|
|
259
|
-
/**
|
|
260
|
-
* Called when the flow is first entered.
|
|
261
|
-
* May return a Directive to augment the prompt, inject tools, halt, or redirect.
|
|
262
|
-
* Pre-LLM fields (`appendPrompt`, `injectTools`, `halt`) are honored here.
|
|
263
|
-
*/
|
|
264
|
-
onEnter?: (ctx: HookContext<TContext, TData>) => void | Directive<TContext, TData> | Promise<void | Directive<TContext, TData>>;
|
|
265
|
-
/**
|
|
266
|
-
* Called when the flow is exited. Informational only — cannot influence flow control.
|
|
267
|
-
* Receives the reason the flow was exited.
|
|
268
|
-
*/
|
|
269
|
-
onExit?: (ctx: HookContext<TContext, TData>, reason: ExitReason) => void | Promise<void>;
|
|
270
|
-
/**
|
|
271
|
-
* Called when the flow's required fields are satisfied or when a `complete` directive fires.
|
|
272
|
-
* May return a Directive to chain into another flow or perform state writes.
|
|
273
|
-
*/
|
|
274
|
-
onComplete?: (ctx: HookContext<TContext, TData>) => void | Directive<TContext, TData> | Promise<void | Directive<TContext, TData>>;
|
|
275
|
-
/**
|
|
276
|
-
* Called after collected data is updated for this flow (from AI response or tool execution)
|
|
277
|
-
* Useful for validation, enrichment, or persistence of flow-specific collected data
|
|
278
|
-
* Return modified collected data or the same data to keep it unchanged
|
|
279
|
-
*
|
|
280
|
-
* Unlike Agent-level onDataUpdate, this only triggers for data changes in this specific flow.
|
|
281
|
-
*/
|
|
282
|
-
onDataUpdate?: (data: Partial<TData>, previousCollected: Partial<TData>) => Partial<TData> | Promise<Partial<TData>>;
|
|
283
|
-
/**
|
|
284
|
-
* Called after context is updated via updateContext() when this flow is active
|
|
285
|
-
* Useful for flow-specific context reactions, validation, or side effects
|
|
286
|
-
*
|
|
287
|
-
* Unlike Agent-level onContextUpdate, this only triggers when this specific flow is active.
|
|
288
|
-
*/
|
|
289
|
-
onContextUpdate?: (newContext: TContext, previousContext: TContext) => void | Promise<void>;
|
|
141
|
+
/** The lead mentions this; the run reacts beside the conversation. `[]` + `if` = code-only. */
|
|
142
|
+
| {
|
|
143
|
+
mention: string[];
|
|
144
|
+
extract?: ParamDefs;
|
|
145
|
+
if?: Pred<C, D>;
|
|
290
146
|
}
|
|
291
|
-
/**
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
147
|
+
/** The lead has been quiet since the assistant last spoke. */
|
|
148
|
+
| {
|
|
149
|
+
silence: Duration;
|
|
150
|
+
if?: Pred<C, D>;
|
|
151
|
+
businessHours?: boolean;
|
|
152
|
+
}
|
|
153
|
+
/** The host reported an event; its payload is the run's `input`. */
|
|
154
|
+
| {
|
|
155
|
+
event: string;
|
|
156
|
+
if?: Pred<C, D>;
|
|
157
|
+
after?: Duration;
|
|
158
|
+
businessHours?: boolean;
|
|
159
|
+
});
|
|
160
|
+
/** A behavioural statement rendered into the prompt while it applies. */
|
|
161
|
+
export interface Instruction<C = unknown, D = unknown> {
|
|
297
162
|
id?: string;
|
|
298
|
-
/**
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
* Costs LLM tokens. Functions are NOT allowed here — use `if` for code predicates.
|
|
306
|
-
*/
|
|
307
|
-
when?: ConditionWhen;
|
|
308
|
-
/**
|
|
309
|
-
* Code-evaluated activation condition(s). Function or array of functions (AND semantics).
|
|
310
|
-
* Free to evaluate. When both `when` and `if` are set, `if` runs first;
|
|
311
|
-
* `when` is only evaluated when `if` passes.
|
|
312
|
-
*/
|
|
313
|
-
if?: ConditionIf<TContext, TData>;
|
|
314
|
-
/**
|
|
315
|
-
* Instructions for this flow.
|
|
316
|
-
*/
|
|
317
|
-
instructions?: Instruction<TContext, TData>[];
|
|
318
|
-
/** Tools available in this flow */
|
|
319
|
-
tools?: (string | Tool<TContext, TData>)[];
|
|
320
|
-
/** Optional: extractions the router may return (added to routing schema) */
|
|
321
|
-
routingExtrasSchema?: StructuredSchema;
|
|
322
|
-
/** Optional: structured response data for this flow's message generation */
|
|
323
|
-
responseOutputSchema?: StructuredSchema;
|
|
324
|
-
/**
|
|
325
|
-
* Required fields for flow completion - must be valid keys from agent's TData type
|
|
326
|
-
* Flow is considered complete when all required fields are present in agent data
|
|
327
|
-
*/
|
|
328
|
-
requiredFields?: (keyof TData)[];
|
|
329
|
-
/**
|
|
330
|
-
* Optional fields that enhance the flow but aren't required for completion
|
|
331
|
-
* Must be valid keys from agent's TData type
|
|
332
|
-
*/
|
|
333
|
-
optionalFields?: (keyof TData)[];
|
|
334
|
-
/**
|
|
335
|
-
* Initial data to pre-populate when entering this flow
|
|
336
|
-
* Useful for restoring sessions or pre-filling known information
|
|
337
|
-
* Steps with skip conditions will be automatically bypassed if data is present
|
|
338
|
-
* Now refers to agent-level data
|
|
339
|
-
*/
|
|
340
|
-
initialData?: Partial<TData>;
|
|
341
|
-
/**
|
|
342
|
-
* Sequential steps for simple linear flows
|
|
343
|
-
* If provided, automatically chains the steps from initialStep
|
|
344
|
-
* The last step in the array is the implicit terminus of the flow
|
|
345
|
-
* For complex flows with branching, build the step machine manually instead
|
|
346
|
-
*/
|
|
347
|
-
steps?: StepOptions<TContext, TData>[];
|
|
348
|
-
/**
|
|
349
|
-
* Optional transition when the flow completes (last step finishes).
|
|
350
|
-
*
|
|
351
|
-
* Accepts a flow ID or title string — sugar for
|
|
352
|
-
* `hooks.onComplete = () => ({ goTo: '<id>' })`.
|
|
353
|
-
*
|
|
354
|
-
* For dynamic completion logic, use `hooks.onComplete` instead.
|
|
355
|
-
* Setting both `onComplete` and `hooks.onComplete` on the same flow
|
|
356
|
-
* throws `FlowConfigurationError` at construction time.
|
|
357
|
-
*
|
|
358
|
-
* @example
|
|
359
|
-
* // Simple string — transitions to "Collect Feedback" on completion
|
|
360
|
-
* onComplete: "Collect Feedback"
|
|
361
|
-
*/
|
|
362
|
-
onComplete?: string;
|
|
363
|
-
/**
|
|
364
|
-
* If true, this flow can be re-selected by the router after it has
|
|
365
|
-
* completed in the current session — useful for "do another?" patterns
|
|
366
|
-
* (re-book, re-search, repeat-task).
|
|
367
|
-
*
|
|
368
|
-
* Default: `false`. Once a flow completes (and `onComplete` is not set
|
|
369
|
-
* or returns `undefined`), the flow is excluded from routing candidates
|
|
370
|
-
* for the rest of the session unless `reentrant: true`.
|
|
371
|
-
*
|
|
372
|
-
* On re-entry, the engine clears every field declared in this flow's
|
|
373
|
-
* `requiredFields` and `optionalFields` (so the flow starts fresh from
|
|
374
|
-
* its initial step). Fields not declared as owned by this flow are
|
|
375
|
-
* preserved in `session.data`.
|
|
376
|
-
*
|
|
377
|
-
* `onComplete` always wins over `reentrant`. If `onComplete` returns a
|
|
378
|
-
* target flow, the session transitions there immediately on completion;
|
|
379
|
-
* `reentrant` is consulted only when `onComplete` is absent or returns
|
|
380
|
-
* `undefined`.
|
|
381
|
-
*/
|
|
382
|
-
reentrant?: boolean;
|
|
383
|
-
/**
|
|
384
|
-
* Flow lifecycle hooks
|
|
385
|
-
*/
|
|
386
|
-
hooks?: FlowLifecycleHooks<TContext, TData>;
|
|
163
|
+
/** `'must'` always, `'never'` a prohibition, `'should'` (default) a nudge. */
|
|
164
|
+
kind?: "must" | "never" | "should";
|
|
165
|
+
/** AI-judged activation, rendered into the prompt. */
|
|
166
|
+
when?: string | string[];
|
|
167
|
+
/** Code-judged activation, free. */
|
|
168
|
+
if?: Pred<C, D>;
|
|
169
|
+
prompt: Template;
|
|
387
170
|
}
|
|
388
|
-
/**
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
171
|
+
/** The AI talks: a guideline, fields to collect, or both. */
|
|
172
|
+
export type TalkStep<C = unknown, D = unknown> = ({
|
|
173
|
+
prompt: Template;
|
|
174
|
+
collect?: (keyof D & string)[];
|
|
175
|
+
} | {
|
|
176
|
+
collect: (keyof D & string)[];
|
|
177
|
+
prompt?: Template;
|
|
178
|
+
}) & {
|
|
179
|
+
/** Per-flow wording for a field; the field's own `ask` is the default. */
|
|
180
|
+
ask?: Partial<Record<keyof D & string, string>>;
|
|
181
|
+
/** Times a field may be asked before it is skipped. Default 3. */
|
|
182
|
+
maxAsks?: number;
|
|
183
|
+
branches?: Branch<C, D>[];
|
|
184
|
+
tools?: string[];
|
|
185
|
+
instructions?: Instruction<C, D>[];
|
|
186
|
+
};
|
|
187
|
+
/** A fixed message goes out, verbatim. */
|
|
188
|
+
export interface SayStep {
|
|
189
|
+
say: Template;
|
|
190
|
+
media?: {
|
|
191
|
+
slug: string;
|
|
192
|
+
};
|
|
193
|
+
/** Send at most once per session. */
|
|
194
|
+
once?: boolean;
|
|
409
195
|
}
|
|
410
|
-
/**
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
|
|
416
|
-
/** Description of the transition */
|
|
417
|
-
description?: string;
|
|
418
|
-
/** Transition to a chat state with this description */
|
|
419
|
-
prompt?: Template<TContext, TData>;
|
|
420
|
-
/** Tools available for AI to call in this step (by ID reference or inline definition) */
|
|
421
|
-
tools?: (string | Tool<TContext, TData>)[];
|
|
422
|
-
/** Programmatic function or tool to run before AI responds */
|
|
423
|
-
prepare?: string | Tool<TContext, TData> | ((context: TContext, data?: Partial<TData>) => void | PrepareResult<TContext, TData> | Promise<void | PrepareResult<TContext, TData>>);
|
|
424
|
-
/** Programmatic function or tool to run after AI responds */
|
|
425
|
-
finalize?: string | Tool<TContext, TData> | ((context: TContext, data?: Partial<TData>) => void | PrepareResult<TContext, TData> | Promise<void | PrepareResult<TContext, TData>>);
|
|
426
|
-
/**
|
|
427
|
-
* Fields to collect from the conversation in this step
|
|
428
|
-
* These should match keys in the agent's TData schema
|
|
429
|
-
*/
|
|
430
|
-
collect?: (keyof TData)[];
|
|
431
|
-
/**
|
|
432
|
-
* Code-evaluated skip condition. If evaluates to true, the step will be bypassed.
|
|
433
|
-
* Function or array of functions (OR semantics) — if any returns true, step is skipped.
|
|
434
|
-
* Only code predicates are allowed here (no AI strings).
|
|
435
|
-
*
|
|
436
|
-
* Renamed from v1 `skipIf` to clarify the if-only shape.
|
|
437
|
-
*/
|
|
438
|
-
skip?: ConditionIf<TContext, TData>;
|
|
439
|
-
/**
|
|
440
|
-
* Required data fields that must be present before entering this step
|
|
441
|
-
* If any required field is missing, step cannot be entered
|
|
442
|
-
* Must be valid keys from agent's TData type
|
|
443
|
-
*/
|
|
444
|
-
requires?: (keyof TData)[];
|
|
445
|
-
/**
|
|
446
|
-
* AI-evaluated activation condition(s). Non-`!` strings are OR alternatives;
|
|
447
|
-
* `!` strings are OR exclusions where any match inhibits activation.
|
|
448
|
-
* Costs LLM tokens. Functions are NOT allowed here — use `if` for code predicates.
|
|
449
|
-
*/
|
|
450
|
-
when?: ConditionWhen;
|
|
451
|
-
/**
|
|
452
|
-
* Code-evaluated activation condition(s). Function or array of functions (AND semantics).
|
|
453
|
-
* Free to evaluate. When both `when` and `if` are set, `if` runs first;
|
|
454
|
-
* `when` is only evaluated when `if` passes.
|
|
455
|
-
*/
|
|
456
|
-
if?: ConditionIf<TContext, TData>;
|
|
457
|
-
/**
|
|
458
|
-
* Instructions for this step. Replaces v1's `guidelines`.
|
|
459
|
-
*/
|
|
460
|
-
instructions?: Instruction<TContext, TData>[];
|
|
461
|
-
/**
|
|
462
|
-
* If true, this step runs without an LLM call. Pre-LLM hooks
|
|
463
|
-
* (`onEnter`, `prepare`) and branch resolution still execute.
|
|
464
|
-
*
|
|
465
|
-
* An auto-step **cannot** define `prompt`, `collect`, `tools`, or `finalize`.
|
|
466
|
-
* Defining any of these will throw `FlowConfigurationError` at construction time.
|
|
467
|
-
*
|
|
468
|
-
* Use auto-steps for:
|
|
469
|
-
* - Data enrichment between user-facing steps (CRM lookup, pricing calc).
|
|
470
|
-
* - Deterministic decision points (pair with `branches`).
|
|
471
|
-
* - Programmatic short-circuits (`prepare` returning `{ halt: true, reply }`).
|
|
472
|
-
*
|
|
473
|
-
* @default false
|
|
474
|
-
*/
|
|
475
|
-
auto?: boolean;
|
|
476
|
-
/**
|
|
477
|
-
* Verbatim assistant output for this step. When set, the template is
|
|
478
|
-
* rendered via the same engine as `prompt` and emitted as the assistant
|
|
479
|
-
* message without invoking the LLM.
|
|
480
|
-
*
|
|
481
|
-
* A reply step **cannot** define `prompt`, `collect`, `tools`, `finalize`,
|
|
482
|
-
* or `auto: true`. Defining any of these will throw `FlowConfigurationError`
|
|
483
|
-
* at construction time.
|
|
484
|
-
*
|
|
485
|
-
* `onEnter` and `prepare` hooks fire normally before the reply is rendered.
|
|
486
|
-
* If `prepare` returns a Directive with its own `reply` field, the
|
|
487
|
-
* hook-emitted reply wins (last-emission-wins per Algorithm 4).
|
|
488
|
-
*
|
|
489
|
-
* After emission, `onExit` fires and `branches` are resolved for next step.
|
|
490
|
-
* `stoppedReason: 'reply'`.
|
|
491
|
-
*
|
|
492
|
-
* Use reply steps for: confirmations, hand-offs, farewells, acks — anything
|
|
493
|
-
* that doesn't need LLM reasoning.
|
|
494
|
-
*/
|
|
495
|
-
reply?: Template<TContext, TData>;
|
|
496
|
-
/**
|
|
497
|
-
* Explicit source-local fork. An array of branch entries evaluated in
|
|
498
|
-
* declaration order — the first entry whose conditions pass wins; its
|
|
499
|
-
* `then` resolves to the next step or a Directive.
|
|
500
|
-
*
|
|
501
|
-
* Coexists with `nextStep`. If `branches` is absent or no entry matches,
|
|
502
|
-
* resolution falls through to linear nextStep / AI step selection.
|
|
503
|
-
*
|
|
504
|
-
* Runs **after** the step's post-LLM phase (tool execution, `finalize`)
|
|
505
|
-
* and **before** linear successor selection.
|
|
506
|
-
*/
|
|
507
|
-
branches?: BranchMap<TContext, TData>;
|
|
508
|
-
/**
|
|
509
|
-
* Step lifecycle hooks — an alternative spelling of the top-level
|
|
510
|
-
* `prepare` / `finalize` fields. Both spellings run when declared together;
|
|
511
|
-
* returns are merged via Algorithm 4.
|
|
512
|
-
*/
|
|
513
|
-
hooks?: StepLifecycleHooks<TContext, TData>;
|
|
196
|
+
/** The host does something. `with` is checked against the action's parameters. */
|
|
197
|
+
export interface DoStep<D = unknown> {
|
|
198
|
+
do: string;
|
|
199
|
+
with?: Record<string, unknown>;
|
|
200
|
+
/** Where to go when the action reports `failed`. Default: continue. */
|
|
201
|
+
onFail?: Next<D>;
|
|
514
202
|
}
|
|
515
|
-
/**
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
203
|
+
/** Park for a while. `then` = the time passed; `else` = the lead replied first. */
|
|
204
|
+
export interface WaitStep<C = unknown, D = unknown> {
|
|
205
|
+
wait: Duration;
|
|
206
|
+
businessHours?: boolean;
|
|
207
|
+
else?: Next<D>;
|
|
208
|
+
branches?: Branch<C, D>[];
|
|
209
|
+
}
|
|
210
|
+
/** Park until an event. `then` = it came; `else` = `upTo` passed (default 30 days). */
|
|
211
|
+
export interface WaitEventStep<D = unknown> {
|
|
212
|
+
wait: {
|
|
213
|
+
event: string;
|
|
214
|
+
upTo?: Duration;
|
|
215
|
+
};
|
|
216
|
+
else?: Next<D>;
|
|
217
|
+
}
|
|
218
|
+
/** The code forks. `then` = true; `else` = false (default `'end'`). */
|
|
219
|
+
export interface IfStep<C = unknown, D = unknown> {
|
|
220
|
+
if: Pred<C, D>;
|
|
221
|
+
else?: Next<D>;
|
|
222
|
+
}
|
|
223
|
+
export interface StepBase<D = unknown> {
|
|
224
|
+
/** Required, unique inside the flow, never `'end'`. */
|
|
225
|
+
id: string;
|
|
226
|
+
label?: string;
|
|
227
|
+
then?: Next<D>;
|
|
228
|
+
/** Editor-only data the framework carries but never reads. */
|
|
229
|
+
ui?: Record<string, unknown>;
|
|
230
|
+
}
|
|
231
|
+
export type Step<C = unknown, D = unknown> = StepBase<D> & (TalkStep<C, D> | SayStep | DoStep<D> | WaitStep<C, D> | WaitEventStep<D> | IfStep<C, D>);
|
|
232
|
+
export interface Flow<C = unknown, D = unknown> {
|
|
233
|
+
id: string;
|
|
520
234
|
name: string;
|
|
521
|
-
/**
|
|
522
|
-
|
|
523
|
-
/**
|
|
524
|
-
|
|
235
|
+
/** When this flow should be used; the AI reads it when routing. */
|
|
236
|
+
description?: string;
|
|
237
|
+
/** Absent or empty: the flow only starts when the host calls `start`. */
|
|
238
|
+
on?: Trigger<C, D>[];
|
|
239
|
+
/** `'session'` (default) or a host anchor name such as `'lead'`. */
|
|
240
|
+
anchor?: string;
|
|
241
|
+
/** Re-checked whenever the run moves. Default: the trigger's `if`. */
|
|
242
|
+
while?: Pred<C, D>;
|
|
243
|
+
clearOnStart?: (keyof D & string)[];
|
|
244
|
+
steps: Step<C, D>[];
|
|
245
|
+
/** What the run does after its last step. Default `'end'`. */
|
|
246
|
+
onEnd?: "end" | "stay" | "reset";
|
|
247
|
+
instructions?: Instruction<C, D>[];
|
|
248
|
+
tools?: string[];
|
|
525
249
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
250
|
+
export type ActionResult = {
|
|
251
|
+
ok: true;
|
|
252
|
+
detail?: string;
|
|
253
|
+
spoke?: true;
|
|
254
|
+
} | {
|
|
255
|
+
skipped: string;
|
|
256
|
+
} | {
|
|
257
|
+
failed: string;
|
|
258
|
+
} | {
|
|
259
|
+
defer: Duration;
|
|
260
|
+
detail: string;
|
|
261
|
+
};
|
|
262
|
+
/** What a host action sees. Handlers run at-least-once; make them idempotent on `key`. */
|
|
263
|
+
export interface ActionCtx<C = unknown, D = unknown> {
|
|
264
|
+
context: C;
|
|
265
|
+
data: Partial<D>;
|
|
266
|
+
input: unknown;
|
|
267
|
+
run: Run;
|
|
268
|
+
/** `${runId}:${stepId}:${visit}`; the same on a replay of the same input. */
|
|
269
|
+
key: string;
|
|
270
|
+
/** `${flowId}:${anchor}:${nonce}`; shared across a lead's sessions. */
|
|
271
|
+
dedupeKey: string;
|
|
272
|
+
silenced?: string;
|
|
273
|
+
now: Date;
|
|
274
|
+
/** Write collected data from inside the action. */
|
|
275
|
+
set(patch: Partial<D>): void;
|
|
532
276
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
277
|
+
export interface Action<C = unknown, D = unknown, P = Record<string, unknown>> {
|
|
278
|
+
description?: string;
|
|
279
|
+
parameters: ParamDefs;
|
|
280
|
+
run(params: P, ctx: ActionCtx<C, D>): ActionResult | Promise<ActionResult>;
|
|
281
|
+
}
|
|
282
|
+
export type ActionMap<C = unknown, D = unknown> = Record<string, Action<C, D>>;
|
|
283
|
+
/** A host event the agent may react to. `P` is the payload type. */
|
|
284
|
+
export interface EventDef<P = unknown> {
|
|
285
|
+
/**
|
|
286
|
+
* `'inbound'` counts as the lead speaking (resolves reply waits);
|
|
287
|
+
* `'outbound'` as the assistant speaking (re-arms silence).
|
|
288
|
+
*/
|
|
289
|
+
direction?: "inbound" | "outbound";
|
|
290
|
+
/** Phantom: the payload type, for inference. Never set at runtime. */
|
|
291
|
+
readonly payload?: P;
|
|
542
292
|
}
|
|
293
|
+
export type EventMap = Record<string, EventDef>;
|
|
294
|
+
export {};
|
|
543
295
|
//# sourceMappingURL=flow.d.ts.map
|