@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/src/core/createAgent.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Level-1 factory for constructing an Agent from a single options object.
|
|
3
|
-
*
|
|
4
|
-
* `createAgent` is syntactic sugar over `new Agent(options)` and is the
|
|
5
|
-
* recommended entry point in docs and examples. Generic inference flows
|
|
6
|
-
* from `schema` through `flows[].steps[].collect` identically to `new Agent`.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* const agent = createAgent({
|
|
11
|
-
* name: 'BookingBot',
|
|
12
|
-
* provider: new GeminiProvider({ apiKey }),
|
|
13
|
-
* schema: { type: 'object', properties: { name: { type: 'string' }, email: { type: 'string' } } },
|
|
14
|
-
* flows: [{ title: 'Onboarding', steps: [{ collect: ['name', 'email'] }] }],
|
|
15
|
-
* });
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* **Validates: Requirements 14.1–14.7**
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import { Agent } from "./Agent.js";
|
|
22
|
-
import type { AgentOptions } from "../types/index.js";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Create an Agent from a single options object.
|
|
26
|
-
*
|
|
27
|
-
* This is the recommended entry point for constructing agents in v2.
|
|
28
|
-
* Accepts the same options as `new Agent(options)` — `schema`, `provider`,
|
|
29
|
-
* `instructions`, `flows`, and everything else `AgentOptions` carries.
|
|
30
|
-
*
|
|
31
|
-
* Generic inference flows from `schema` through `flows[].steps[].collect`.
|
|
32
|
-
* Invalid `collect` references throw `FlowConfigurationError` at construction time.
|
|
33
|
-
*
|
|
34
|
-
* Post-construction flow registration is still available via `agent.createFlow(...)`.
|
|
35
|
-
*/
|
|
36
|
-
export function createAgent<TContext = unknown, TData = unknown>(
|
|
37
|
-
options: AgentOptions<TContext, TData>
|
|
38
|
-
): Agent<TContext, TData> {
|
|
39
|
-
return new Agent<TContext, TData>(options);
|
|
40
|
-
}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `flow` namespace — type guards, merge, and validation helpers for Directives.
|
|
3
|
-
*
|
|
4
|
-
* No builder constructors live here (no `flow.goTo(...)`, `flow.complete(...)` etc.).
|
|
5
|
-
* Directives are plain object literals; this namespace provides runtime utilities only.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { Directive } from "../types/flow.js";
|
|
9
|
-
import type { SessionState } from "../types/session.js";
|
|
10
|
-
import { FlowConfigurationError } from "./Step.js";
|
|
11
|
-
|
|
12
|
-
// ─── Position field metadata ─────────────────────────────────────────────────
|
|
13
|
-
|
|
14
|
-
/** Position fields in precedence order (highest first). */
|
|
15
|
-
const POSITION_FIELDS = ["abort", "complete", "goTo", "goToStep", "reset"] as const;
|
|
16
|
-
type PositionField = (typeof POSITION_FIELDS)[number];
|
|
17
|
-
|
|
18
|
-
/** Precedence map: lower number = higher priority. */
|
|
19
|
-
const POSITION_PRECEDENCE: Record<PositionField, number> = {
|
|
20
|
-
abort: 0,
|
|
21
|
-
complete: 1,
|
|
22
|
-
goTo: 2,
|
|
23
|
-
goToStep: 2,
|
|
24
|
-
reset: 3,
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
28
|
-
|
|
29
|
-
/** Structural type for anything that has position fields (read-only access). */
|
|
30
|
-
type HasPositionFields = {
|
|
31
|
-
readonly [K in PositionField]?: unknown;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
function getSetPositionFields(d: HasPositionFields): PositionField[] {
|
|
35
|
-
return POSITION_FIELDS.filter((f) => d[f] !== undefined && d[f] !== null);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Determines whether `candidate` beats `current` by precedence.
|
|
40
|
-
* Lower precedence number wins. On tie, candidate wins (last-emission-wins).
|
|
41
|
-
*/
|
|
42
|
-
function beatsCurrent(
|
|
43
|
-
candidate: PositionField,
|
|
44
|
-
current: PositionField | null
|
|
45
|
-
): boolean {
|
|
46
|
-
if (current === null) return true;
|
|
47
|
-
return POSITION_PRECEDENCE[candidate] <= POSITION_PRECEDENCE[current];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Type guard: is `x` a Directive (or any subtype like SignalDirective)?
|
|
54
|
-
*
|
|
55
|
-
* A value is considered a Directive if it is a non-null object. The Directive
|
|
56
|
-
* interface has all-optional fields, so any plain object qualifies structurally.
|
|
57
|
-
* This guard filters out primitives, null, undefined, arrays, and functions.
|
|
58
|
-
*/
|
|
59
|
-
function isDirective(x: unknown): x is Directive {
|
|
60
|
-
return (
|
|
61
|
-
x !== null &&
|
|
62
|
-
x !== undefined &&
|
|
63
|
-
typeof x === "object" &&
|
|
64
|
-
!Array.isArray(x)
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Merge two directives by Algorithm 4's rules:
|
|
70
|
-
* - Position fields: precedence (abort > complete > goTo/goToStep > reset);
|
|
71
|
-
* ties broken by emission order (b wins over a — last wins).
|
|
72
|
-
* - reply: last-wins (b.reply overrides a.reply if set).
|
|
73
|
-
* - dataUpdate / contextUpdate: shallow-merge (b overrides a on key collision).
|
|
74
|
-
* - appendPrompt / injectTools (pre-LLM fields): concatenate then dedupe.
|
|
75
|
-
* - halt: logical-OR.
|
|
76
|
-
*/
|
|
77
|
-
function merge<TContext, TData>(a: Directive<TContext, TData>, b: Directive<TContext, TData>): Directive<TContext, TData> {
|
|
78
|
-
const result = {} as Record<string, unknown>;
|
|
79
|
-
|
|
80
|
-
// ── Position field: winner-takes-all by precedence, b wins ties ──
|
|
81
|
-
const aPos = getSetPositionFields(a);
|
|
82
|
-
const bPos = getSetPositionFields(b);
|
|
83
|
-
|
|
84
|
-
// Pick the highest-priority position field across both directives.
|
|
85
|
-
// b's fields are evaluated after a's, so b wins on same precedence (last-wins).
|
|
86
|
-
let winnerField: PositionField | null = null;
|
|
87
|
-
let winnerSource: Directive<TContext, TData> | null = null;
|
|
88
|
-
|
|
89
|
-
for (const field of aPos) {
|
|
90
|
-
if (beatsCurrent(field, winnerField)) {
|
|
91
|
-
winnerField = field;
|
|
92
|
-
winnerSource = a;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
for (const field of bPos) {
|
|
96
|
-
if (beatsCurrent(field, winnerField)) {
|
|
97
|
-
winnerField = field;
|
|
98
|
-
winnerSource = b;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (winnerField !== null && winnerSource !== null) {
|
|
103
|
-
result[winnerField] = (winnerSource as Record<string, unknown>)[winnerField];
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// ── reply: last-wins ──
|
|
107
|
-
if (b.reply !== undefined) {
|
|
108
|
-
result.reply = b.reply;
|
|
109
|
-
} else if (a.reply !== undefined) {
|
|
110
|
-
result.reply = a.reply;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// ── dataUpdate: shallow merge ──
|
|
114
|
-
if (a.dataUpdate || b.dataUpdate) {
|
|
115
|
-
result.dataUpdate = { ...a.dataUpdate, ...b.dataUpdate };
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// ── contextUpdate: shallow merge ──
|
|
119
|
-
if (a.contextUpdate || b.contextUpdate) {
|
|
120
|
-
result.contextUpdate = { ...a.contextUpdate, ...b.contextUpdate };
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// ── appendPrompt (pre-LLM): concatenate ──
|
|
124
|
-
if (a.appendPrompt || b.appendPrompt) {
|
|
125
|
-
result.appendPrompt = [...(a.appendPrompt ?? []), ...(b.appendPrompt ?? [])];
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// ── injectTools (pre-LLM): concatenate then dedupe by id (last wins) ──
|
|
129
|
-
if (a.injectTools || b.injectTools) {
|
|
130
|
-
const combined = [...(a.injectTools ?? []), ...(b.injectTools ?? [])];
|
|
131
|
-
// Dedupe by id — last definition wins
|
|
132
|
-
const seen = new Map<string, (typeof combined)[number]>();
|
|
133
|
-
for (const tool of combined) {
|
|
134
|
-
seen.set(tool.id, tool);
|
|
135
|
-
}
|
|
136
|
-
result.injectTools = Array.from(seen.values());
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// ── halt (pre-LLM): logical OR ──
|
|
140
|
-
if (a.halt || b.halt) {
|
|
141
|
-
result.halt = true;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return result as Directive<TContext, TData>;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Runtime validator. Throws FlowConfigurationError for invalid combinations:
|
|
149
|
-
* - Multiple position fields set.
|
|
150
|
-
* - `goTo` set as empty object `{}` (no flow target).
|
|
151
|
-
* - `reply` co-existing with `abort` (abort ends the conversation; a reply is nonsensical).
|
|
152
|
-
*/
|
|
153
|
-
function validate<TContext, TData>(d: Directive<TContext, TData>): void {
|
|
154
|
-
// ── Multiple position fields ──
|
|
155
|
-
const setFields = getSetPositionFields(d);
|
|
156
|
-
if (setFields.length > 1) {
|
|
157
|
-
throw new FlowConfigurationError(
|
|
158
|
-
`[FlowConfigurationError] Invalid directive: multiple position fields set (${setFields.join(", ")}). ` +
|
|
159
|
-
`A directive may have at most one position field. Remove the extras.`
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// ── Empty goTo object ──
|
|
164
|
-
if (d.goTo !== undefined && d.goTo !== null) {
|
|
165
|
-
if (typeof d.goTo === "object") {
|
|
166
|
-
const goToObj = d.goTo as { flow?: string; step?: string };
|
|
167
|
-
if (!goToObj.flow && !goToObj.step) {
|
|
168
|
-
throw new FlowConfigurationError(
|
|
169
|
-
`[FlowConfigurationError] Invalid directive: goTo is set as an empty object. ` +
|
|
170
|
-
`goTo requires a flow id or title. Provide { flow: "<id>" } or use the string shorthand.`
|
|
171
|
-
);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// ── reply co-existing with abort ──
|
|
177
|
-
if (d.reply !== undefined && d.abort !== undefined) {
|
|
178
|
-
throw new FlowConfigurationError(
|
|
179
|
-
`[FlowConfigurationError] Invalid directive: reply cannot co-exist with abort. ` +
|
|
180
|
-
`An aborted conversation cannot deliver a reply. Remove one of the fields.`
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Reduce an array of directives into one via the canonical Algorithm 4 merge
|
|
187
|
-
* (position precedence, reply last-wins, state shallow-merge, halt OR).
|
|
188
|
-
* Empty arrays yield undefined.
|
|
189
|
-
*/
|
|
190
|
-
function mergeAll<TContext, TData>(
|
|
191
|
-
directives: Directive<TContext, TData>[]
|
|
192
|
-
): Directive<TContext, TData> | undefined {
|
|
193
|
-
if (directives.length === 0) return undefined;
|
|
194
|
-
return directives.reduce((a, b) => merge(a, b));
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Queue a control directive on the session for the pendingDirective applier at
|
|
199
|
-
* the START of the next turn, merging with anything already queued via the
|
|
200
|
-
* canonical Algorithm 4 merge.
|
|
201
|
-
*/
|
|
202
|
-
function queuePending<TData>(
|
|
203
|
-
session: SessionState<TData>,
|
|
204
|
-
directive: Directive<unknown, TData>
|
|
205
|
-
): void {
|
|
206
|
-
session.pendingDirective = session.pendingDirective
|
|
207
|
-
? merge(session.pendingDirective, directive)
|
|
208
|
-
: directive;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* The `flow` namespace object. Exported as a single const for ergonomic usage:
|
|
213
|
-
*
|
|
214
|
-
* ```ts
|
|
215
|
-
* import { flow } from '@falai/agent';
|
|
216
|
-
* if (flow.isDirective(x)) { ... }
|
|
217
|
-
* const merged = flow.merge(a, b);
|
|
218
|
-
* flow.validate(d);
|
|
219
|
-
* ```
|
|
220
|
-
*/
|
|
221
|
-
export const flow = {
|
|
222
|
-
isDirective,
|
|
223
|
-
merge,
|
|
224
|
-
mergeAll,
|
|
225
|
-
queuePending,
|
|
226
|
-
validate,
|
|
227
|
-
} as const;
|
package/src/core/toolGates.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared pre-execution gates for tool calls.
|
|
3
|
-
*
|
|
4
|
-
* A tool's `validateInput` and `checkPermissions` hooks must be applied
|
|
5
|
-
* identically regardless of how the call is executed. Previously the gates
|
|
6
|
-
* lived only in `ToolManager.executeTool` (the sequential `generate()`/
|
|
7
|
-
* `respond()` path), so the streaming path (`StreamingToolExecutor`, used by
|
|
8
|
-
* `stream()`) invoked handlers without them — a documented authorization gate
|
|
9
|
-
* ("when denied, handler is NOT invoked") was silently a no-op on one
|
|
10
|
-
* transport. Centralizing the logic here keeps both executors in lockstep.
|
|
11
|
-
*/
|
|
12
|
-
import type { Tool, ToolContext, ToolExecutionResult } from "../types/tool.js";
|
|
13
|
-
import { logger } from "../utils/index.js";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Run a tool's pre-execution gates in order: `validateInput`, then
|
|
17
|
-
* `checkPermissions`. Returns a failed `ToolExecutionResult` when a gate
|
|
18
|
-
* blocks the call (the handler must NOT be invoked), or `null` when both
|
|
19
|
-
* gates pass.
|
|
20
|
-
*
|
|
21
|
-
* @param startTime - optional execution start time (ms from `Date.now()`).
|
|
22
|
-
* When provided, denial metadata includes `executionTime`, matching the
|
|
23
|
-
* sequential executor's result shape; omit it on the streaming path.
|
|
24
|
-
*/
|
|
25
|
-
export async function evaluateToolGates<TContext, TData>(
|
|
26
|
-
tool: Tool<TContext, TData>,
|
|
27
|
-
toolArguments: Record<string, unknown> | undefined,
|
|
28
|
-
toolContext: ToolContext<TContext, TData>,
|
|
29
|
-
startTime?: number
|
|
30
|
-
): Promise<ToolExecutionResult | null> {
|
|
31
|
-
// Tool validation gate (Req 6.1, 6.7)
|
|
32
|
-
if (typeof tool.validateInput === "function" && toolArguments) {
|
|
33
|
-
const validation = await tool.validateInput(toolArguments, toolContext);
|
|
34
|
-
if (!validation.valid) {
|
|
35
|
-
logger.warn(
|
|
36
|
-
`[DataValidationError] Tool "${tool.id}" input validation failed: ${validation.error}. Fix the tool call arguments to match the expected schema.`
|
|
37
|
-
);
|
|
38
|
-
return {
|
|
39
|
-
success: false,
|
|
40
|
-
error: `Validation failed: ${validation.error || "Invalid input"}`,
|
|
41
|
-
metadata: {
|
|
42
|
-
toolId: tool.id,
|
|
43
|
-
...(startTime !== undefined ? { executionTime: Date.now() - startTime } : {}),
|
|
44
|
-
gate: "validateInput",
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Tool permission gate (Req 6.7, 6.8)
|
|
51
|
-
// When denied: do not invoke handler, do not process directives, do not apply state writes
|
|
52
|
-
if (typeof tool.checkPermissions === "function" && toolArguments) {
|
|
53
|
-
const permission = await tool.checkPermissions(toolArguments, toolContext);
|
|
54
|
-
if (!permission.allowed) {
|
|
55
|
-
logger.warn(
|
|
56
|
-
`[ToolExecutionError] Tool "${tool.id}" permission denied: ${permission.reason}. The tool's checkPermissions hook rejected this call.`
|
|
57
|
-
);
|
|
58
|
-
return {
|
|
59
|
-
success: false,
|
|
60
|
-
error: `Permission denied: ${permission.reason || "Not allowed"}`,
|
|
61
|
-
metadata: {
|
|
62
|
-
toolId: tool.id,
|
|
63
|
-
...(startTime !== undefined ? { executionTime: Date.now() - startTime } : {}),
|
|
64
|
-
gate: "checkPermissions",
|
|
65
|
-
canOverride: permission.canOverride,
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return null;
|
|
72
|
-
}
|
package/src/types/persistence.ts
DELETED
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persistence-related type definitions
|
|
3
|
-
* Support for optional database persistence (Prisma, etc.)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { Event, MessageRole } from "./history.js";
|
|
7
|
-
import type { SessionState } from "./session.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Session status enum
|
|
11
|
-
*/
|
|
12
|
-
export type SessionStatus = "active" | "completed" | "abandoned";
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Base session data structure
|
|
16
|
-
*/
|
|
17
|
-
export interface SessionData<TData = Record<string, unknown>> {
|
|
18
|
-
id: string;
|
|
19
|
-
userId?: string;
|
|
20
|
-
agentName?: string;
|
|
21
|
-
status: SessionStatus;
|
|
22
|
-
currentFlow?: string;
|
|
23
|
-
currentStep?: string;
|
|
24
|
-
collectedData?: CollectedStateData<TData>;
|
|
25
|
-
messageCount?: number;
|
|
26
|
-
lastMessageAt?: Date;
|
|
27
|
-
completedAt?: Date;
|
|
28
|
-
createdAt: Date;
|
|
29
|
-
updatedAt: Date;
|
|
30
|
-
/**
|
|
31
|
-
* Optimistic-concurrency version. Incremented by the repository on every
|
|
32
|
-
* update. Undefined on rows written by pre-2.4 versions.
|
|
33
|
-
*/
|
|
34
|
-
version?: number;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Data for creating a new session (subset of SessionData)
|
|
39
|
-
*/
|
|
40
|
-
export type CreateSessionData<TData = Record<string, unknown>> = Omit<
|
|
41
|
-
SessionData<TData>,
|
|
42
|
-
"id" | "createdAt" | "updatedAt"
|
|
43
|
-
> & {
|
|
44
|
-
id?: string;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Structure for data collected during a session that needs to be persisted.
|
|
49
|
-
* This is a subset of SessionState, stored within SessionData.
|
|
50
|
-
*/
|
|
51
|
-
export interface CollectedStateData<TData = Record<string, unknown>> {
|
|
52
|
-
/**
|
|
53
|
-
* User-defined schema version of the agent that wrote this state.
|
|
54
|
-
* Set from `PersistenceConfig.schemaVersion` on save; checked on load so
|
|
55
|
-
* `migrateSession` can upgrade state written by older agent deployments.
|
|
56
|
-
*/
|
|
57
|
-
schemaVersion?: number;
|
|
58
|
-
data: Partial<TData>;
|
|
59
|
-
flowHistory: SessionState<TData>["flowHistory"];
|
|
60
|
-
history?: SessionState<TData>["history"];
|
|
61
|
-
currentFlowTitle?: string;
|
|
62
|
-
currentStepDescription?: string;
|
|
63
|
-
metadata: SessionState<TData>["metadata"];
|
|
64
|
-
/** Pending directive — included only when a directive is actually present. */
|
|
65
|
-
pendingDirective?: SessionState<TData>["pendingDirective"];
|
|
66
|
-
/** Reserved for v2.x Signals. Passed through bit-identical. */
|
|
67
|
-
signals?: SessionState<TData>["signals"];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Base message data structure
|
|
72
|
-
*/
|
|
73
|
-
export interface MessageData {
|
|
74
|
-
id: string;
|
|
75
|
-
sessionId: string;
|
|
76
|
-
userId?: string;
|
|
77
|
-
role: MessageRole;
|
|
78
|
-
content: string;
|
|
79
|
-
flow?: string;
|
|
80
|
-
step?: string;
|
|
81
|
-
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
82
|
-
event?: Event; // Optional: store full event data
|
|
83
|
-
createdAt: Date;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Options for SessionRepository.update
|
|
88
|
-
*/
|
|
89
|
-
export interface SessionUpdateOptions {
|
|
90
|
-
/**
|
|
91
|
-
* Optimistic-concurrency guard. When set, the repository must reject the
|
|
92
|
-
* update with SessionConflictError if the stored session's `version`
|
|
93
|
-
* differs from this value.
|
|
94
|
-
*/
|
|
95
|
-
expectedVersion?: number;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Repository interface for sessions
|
|
100
|
-
* Implement this interface with your database of choice
|
|
101
|
-
*/
|
|
102
|
-
export interface SessionRepository<TData = Record<string, unknown>> {
|
|
103
|
-
/**
|
|
104
|
-
* Create a new session
|
|
105
|
-
*/
|
|
106
|
-
create(data: CreateSessionData<TData>): Promise<SessionData<TData>>;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Find session by ID
|
|
110
|
-
*/
|
|
111
|
-
findById(id: string): Promise<SessionData<TData> | null>;
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Find active session by user ID
|
|
115
|
-
*/
|
|
116
|
-
findActiveByUserId(userId: string): Promise<SessionData<TData> | null>;
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Find all sessions for a user
|
|
120
|
-
*/
|
|
121
|
-
findByUserId(userId: string, limit?: number): Promise<SessionData<TData>[]>;
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Update session.
|
|
125
|
-
*
|
|
126
|
-
* When `options.expectedVersion` is provided, the update is a compare-and-swap:
|
|
127
|
-
* it must throw SessionConflictError if the stored `version` differs (rows with
|
|
128
|
-
* no stored version — written by pre-2.4 — are accepted). Every successful
|
|
129
|
-
* update increments `version` by one.
|
|
130
|
-
*/
|
|
131
|
-
update(
|
|
132
|
-
id: string,
|
|
133
|
-
data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>,
|
|
134
|
-
options?: SessionUpdateOptions
|
|
135
|
-
): Promise<SessionData<TData> | null>;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Update session status
|
|
139
|
-
*/
|
|
140
|
-
updateStatus(
|
|
141
|
-
id: string,
|
|
142
|
-
status: SessionStatus,
|
|
143
|
-
completedAt?: Date
|
|
144
|
-
): Promise<SessionData<TData> | null>;
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Update collected data
|
|
148
|
-
*/
|
|
149
|
-
updateCollectedData(
|
|
150
|
-
id: string,
|
|
151
|
-
collectedData: CollectedStateData<TData>
|
|
152
|
-
): Promise<SessionData<TData> | null>;
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Update current flow and step
|
|
156
|
-
*/
|
|
157
|
-
updateFlowStep(
|
|
158
|
-
id: string,
|
|
159
|
-
flow?: string,
|
|
160
|
-
step?: string
|
|
161
|
-
): Promise<SessionData<TData> | null>;
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Increment message count
|
|
165
|
-
*/
|
|
166
|
-
incrementMessageCount(id: string): Promise<SessionData<TData> | null>;
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Delete session
|
|
170
|
-
*/
|
|
171
|
-
delete(id: string): Promise<boolean>;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Repository interface for messages
|
|
176
|
-
* Implement this interface with your database of choice
|
|
177
|
-
*/
|
|
178
|
-
export interface MessageRepository {
|
|
179
|
-
/**
|
|
180
|
-
* Create a new message
|
|
181
|
-
*/
|
|
182
|
-
create(data: Omit<MessageData, "id" | "createdAt">): Promise<MessageData>;
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Find message by ID
|
|
186
|
-
*/
|
|
187
|
-
findById(id: string): Promise<MessageData | null>;
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Find all messages for a session
|
|
191
|
-
*/
|
|
192
|
-
findBySessionId(sessionId: string, limit?: number): Promise<MessageData[]>;
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Find messages for a user
|
|
196
|
-
*/
|
|
197
|
-
findByUserId(userId: string, limit?: number): Promise<MessageData[]>;
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Delete message by ID
|
|
201
|
-
*/
|
|
202
|
-
delete(id: string): Promise<boolean>;
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Delete all messages for a session
|
|
206
|
-
*/
|
|
207
|
-
deleteBySessionId(sessionId: string): Promise<number>;
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Delete all messages for a user
|
|
211
|
-
*/
|
|
212
|
-
deleteByUserId(userId: string): Promise<number>;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Persistence adapter interface
|
|
217
|
-
* Implement this to create adapters for different databases
|
|
218
|
-
*/
|
|
219
|
-
export interface PersistenceAdapter<TData = Record<string, unknown>> {
|
|
220
|
-
/**
|
|
221
|
-
* Session repository
|
|
222
|
-
*/
|
|
223
|
-
readonly sessionRepository: SessionRepository<TData>;
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Message repository
|
|
227
|
-
*/
|
|
228
|
-
readonly messageRepository: MessageRepository;
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Initialize the adapter (create tables, indexes, etc.)
|
|
232
|
-
* Called automatically when adapter is created
|
|
233
|
-
*/
|
|
234
|
-
initialize?(): Promise<void>;
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Disconnect/cleanup resources
|
|
238
|
-
*/
|
|
239
|
-
disconnect?(): Promise<void>;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Configuration for persistence
|
|
244
|
-
*/
|
|
245
|
-
export interface PersistenceConfig<TData = Record<string, unknown>> {
|
|
246
|
-
/**
|
|
247
|
-
* Persistence adapter instance (e.g., PrismaAdapter)
|
|
248
|
-
*/
|
|
249
|
-
adapter: PersistenceAdapter<TData>;
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Whether to auto-save messages (default: true)
|
|
253
|
-
*/
|
|
254
|
-
autoSave?: boolean;
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* User ID to associate with sessions/messages
|
|
258
|
-
* Can also be provided per-call in methods
|
|
259
|
-
*/
|
|
260
|
-
userId?: string;
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Version of the user-defined agent schema. Stamped onto persisted state on
|
|
264
|
-
* save. When a loaded session carries a different (or missing) schemaVersion,
|
|
265
|
-
* `migrateSession` is invoked to upgrade it; without a migrator, a warning is
|
|
266
|
-
* logged and the state is used as-is.
|
|
267
|
-
*/
|
|
268
|
-
schemaVersion?: number;
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Migrate persisted session state written under an older schemaVersion.
|
|
272
|
-
* Receives the stored state and the version it was written with
|
|
273
|
-
* (undefined for pre-versioning rows); must return state valid for the
|
|
274
|
-
* current schemaVersion.
|
|
275
|
-
*/
|
|
276
|
-
migrateSession?: (
|
|
277
|
-
collectedData: CollectedStateData<TData>,
|
|
278
|
-
fromVersion: number | undefined
|
|
279
|
-
) => CollectedStateData<TData> | Promise<CollectedStateData<TData>>;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Options for creating a session
|
|
284
|
-
*/
|
|
285
|
-
export interface CreateSessionOptions<TData = Record<string, unknown>> {
|
|
286
|
-
userId?: string;
|
|
287
|
-
agentName?: string;
|
|
288
|
-
initialData?: Partial<TData>;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Options for saving a message
|
|
293
|
-
*/
|
|
294
|
-
export interface SaveMessageOptions {
|
|
295
|
-
sessionId: string;
|
|
296
|
-
userId?: string;
|
|
297
|
-
role: MessageRole;
|
|
298
|
-
content: string;
|
|
299
|
-
flow?: string;
|
|
300
|
-
step?: string;
|
|
301
|
-
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
302
|
-
event?: Event;
|
|
303
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt section cache configuration types.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/** Section type: static sections are cached, dynamic sections recompute every turn */
|
|
6
|
-
export type PromptSectionType = "static" | "dynamic";
|
|
7
|
-
|
|
8
|
-
/** Configuration for prompt section caching behavior */
|
|
9
|
-
export interface PromptCacheConfig {
|
|
10
|
-
/** Whether to enable section memoization (default: true) */
|
|
11
|
-
enabled?: boolean;
|
|
12
|
-
/** Keys of sections that should always recompute every turn, even if registered as static */
|
|
13
|
-
volatileKeys?: string[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Compute function that produces a section's content */
|
|
17
|
-
export type SectionCompute = () => string | null | Promise<string | null>;
|