@falai/agent 3.4.4 → 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
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Understand: the one call that judges the lead's message (design §4.3).
|
|
4
|
+
*
|
|
5
|
+
* Runner decides who is eligible and what is pending; this module turns that
|
|
6
|
+
* into one prompt, one envelope schema and at most one provider call, then
|
|
7
|
+
* hands back raw values keyed by their real ids. It never writes session
|
|
8
|
+
* data: Runner validates, coerces and applies.
|
|
9
|
+
*
|
|
10
|
+
* Two shortcuts cost zero calls: a single eligible message flow with nothing
|
|
11
|
+
* else to judge starts outright, and a turn with nothing AI-conditioned
|
|
12
|
+
* returns an empty Understanding.
|
|
13
|
+
*
|
|
14
|
+
* The envelope is built for two kinds of provider at once. Gemini enforces
|
|
15
|
+
* the schema, so every section is a closed object with every property
|
|
16
|
+
* required and nullable. GLM follows it by prompt only, so the prompt
|
|
17
|
+
* restates the shape with a skeleton and the parser tolerates missing keys,
|
|
18
|
+
* wrong scalar types and stray text around the JSON.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.Understand = exports.UNDERSTAND_SCHEMA_NAME = void 0;
|
|
22
|
+
const json_js_1 = require("../utils/json.js");
|
|
23
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
24
|
+
const schema_js_1 = require("../utils/schema.js");
|
|
25
|
+
const template_js_1 = require("../utils/template.js");
|
|
26
|
+
const usage_js_1 = require("../utils/usage.js");
|
|
27
|
+
const Prompt_js_1 = require("./Prompt.js");
|
|
28
|
+
exports.UNDERSTAND_SCHEMA_NAME = "understand";
|
|
29
|
+
const SECTIONS = ["flows", "mentions", "extract", "branches", "fields"];
|
|
30
|
+
/** Gemini rejects any other character in a property name. */
|
|
31
|
+
const SAFE_KEY = /^[a-zA-Z0-9_-]+$/;
|
|
32
|
+
class Understand {
|
|
33
|
+
constructor(options) {
|
|
34
|
+
this.options = options;
|
|
35
|
+
}
|
|
36
|
+
async run(req) {
|
|
37
|
+
const candidates = candidateFlows(req);
|
|
38
|
+
const onlyRouting = req.mentionFlows.length === 0 && req.branches.length === 0 && Object.keys(req.fields).length === 0;
|
|
39
|
+
if (onlyRouting && candidates.length <= 1) {
|
|
40
|
+
// One eligible flow and nobody on the floor: it starts, no scoring.
|
|
41
|
+
// Otherwise there is nothing to compare or extract.
|
|
42
|
+
const only = candidates[0];
|
|
43
|
+
return only && !req.floor ? { ...empty(0), flows: { [only.id]: 100 } } : empty(0);
|
|
44
|
+
}
|
|
45
|
+
const aliases = new Aliases();
|
|
46
|
+
const jsonSchema = buildEnvelope(req, candidates, aliases);
|
|
47
|
+
const { system, turn: prompt } = this.buildPrompt(req, candidates, aliases, jsonSchema);
|
|
48
|
+
// Provider failures propagate: in this phase the turn throws and the host retries the input.
|
|
49
|
+
const out = await this.options.provider.generateMessage({
|
|
50
|
+
prompt,
|
|
51
|
+
...(system ? { system } : {}),
|
|
52
|
+
history: req.history,
|
|
53
|
+
context: req.context,
|
|
54
|
+
parameters: { jsonSchema, schemaName: exports.UNDERSTAND_SCHEMA_NAME },
|
|
55
|
+
});
|
|
56
|
+
const reply = usable(out.structured) ? out.structured : (0, json_js_1.extractEmbeddedJSONObject)(out.message);
|
|
57
|
+
if (!usable(reply)) {
|
|
58
|
+
logger_js_1.logger.warn(`[Understand] The reply had no usable structure, so nothing was judged this turn. ` +
|
|
59
|
+
`Reply started with: ${out.message.slice(0, 200)}`);
|
|
60
|
+
return empty(1, (0, usage_js_1.readUsage)(out.metadata));
|
|
61
|
+
}
|
|
62
|
+
return { ...parseReply(reply, aliases), ...usageOf(out.metadata) };
|
|
63
|
+
}
|
|
64
|
+
buildPrompt(req, candidates, aliases, schema) {
|
|
65
|
+
const scope = { data: req.data, context: req.context };
|
|
66
|
+
const t = (text) => (0, template_js_1.render)(text, scope);
|
|
67
|
+
const data = (0, json_js_1.isRecord)(req.data) ? req.data : {};
|
|
68
|
+
const { system, inline } = (0, Prompt_js_1.stablePrefix)(this.options, scope);
|
|
69
|
+
return {
|
|
70
|
+
system,
|
|
71
|
+
turn: (0, Prompt_js_1.joinSections)(inline, taskSection(), floorSection(req, this.options.fields, data, t), (0, Prompt_js_1.factsSection)(this.options.fields, data), flowsSection(candidates, aliases, t), mentionsSection(req.mentionFlows, aliases, t), branchesSection(req.branches, aliases, t), fieldsSection(req.fields, aliases), messageSection(req.text), outputSection(schema)),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Understand = Understand;
|
|
76
|
+
// ── Candidates and keys ─────────────────────────────────────────────────
|
|
77
|
+
/** The floor's flow first, then the eligible message flows, each id once. */
|
|
78
|
+
function candidateFlows(req) {
|
|
79
|
+
const seen = new Map();
|
|
80
|
+
for (const flow of [...(req.floor ? [req.floor.flow] : []), ...req.messageFlows]) {
|
|
81
|
+
if (!seen.has(flow.id))
|
|
82
|
+
seen.set(flow.id, flow);
|
|
83
|
+
}
|
|
84
|
+
return [...seen.values()];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Envelope property names for ids the schema cannot carry. A safe id keeps
|
|
88
|
+
* its own name; anything else (run ids carry `#`, `:` and `/`) gets a short
|
|
89
|
+
* alias, mapped back when the reply is parsed.
|
|
90
|
+
*/
|
|
91
|
+
class Aliases {
|
|
92
|
+
constructor() {
|
|
93
|
+
this.byReal = new Map();
|
|
94
|
+
this.byAlias = new Map();
|
|
95
|
+
this.n = 0;
|
|
96
|
+
}
|
|
97
|
+
of(real, prefix = "k") {
|
|
98
|
+
const seen = this.byReal.get(real);
|
|
99
|
+
if (seen)
|
|
100
|
+
return seen;
|
|
101
|
+
const alias = SAFE_KEY.test(real) && !this.byAlias.has(real) ? real : this.fresh(prefix);
|
|
102
|
+
this.byAlias.set(alias, real);
|
|
103
|
+
this.byReal.set(real, alias);
|
|
104
|
+
return alias;
|
|
105
|
+
}
|
|
106
|
+
/** Unknown aliases come back as they are; Runner drops keys it does not know. */
|
|
107
|
+
real(alias) {
|
|
108
|
+
return this.byAlias.get(alias) ?? alias;
|
|
109
|
+
}
|
|
110
|
+
fresh(prefix) {
|
|
111
|
+
let alias;
|
|
112
|
+
do
|
|
113
|
+
alias = `${prefix}${++this.n}`;
|
|
114
|
+
while (this.byAlias.has(alias));
|
|
115
|
+
return alias;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function branchKey(branch) {
|
|
119
|
+
return `${branch.runId}/${branch.stepId}/${branch.index}`;
|
|
120
|
+
}
|
|
121
|
+
// ── Envelope ────────────────────────────────────────────────────────────
|
|
122
|
+
function buildEnvelope(req, candidates, aliases) {
|
|
123
|
+
const properties = {};
|
|
124
|
+
if (candidates.length) {
|
|
125
|
+
properties.flows = (0, schema_js_1.toWireSchema)(keyed(candidates.map((f) => aliases.of(f.id, "f")), { type: "integer", description: "0-100 fit of the message to this flow" }), { nullable: true });
|
|
126
|
+
}
|
|
127
|
+
if (req.mentionFlows.length) {
|
|
128
|
+
properties.mentions = (0, schema_js_1.toWireSchema)(keyed(req.mentionFlows.map((f) => aliases.of(f.id, "f")), { type: "boolean", description: "The customer brought this up" }), { nullable: true });
|
|
129
|
+
const extract = {};
|
|
130
|
+
for (const flow of req.mentionFlows) {
|
|
131
|
+
const defs = extractDefs(flow);
|
|
132
|
+
if (defs)
|
|
133
|
+
extract[aliases.of(flow.id, "f")] = (0, schema_js_1.toWireSchema)(defs, { nullable: true });
|
|
134
|
+
}
|
|
135
|
+
if (Object.keys(extract).length) {
|
|
136
|
+
properties.extract = { type: "object", properties: extract, required: Object.keys(extract), additionalProperties: false };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (req.branches.length) {
|
|
140
|
+
properties.branches = (0, schema_js_1.toWireSchema)(keyed(req.branches.map((b) => aliases.of(branchKey(b), "q")), { type: "boolean", description: "The answer to this question" }), { nullable: true });
|
|
141
|
+
}
|
|
142
|
+
if (Object.keys(req.fields).length) {
|
|
143
|
+
const defs = {};
|
|
144
|
+
for (const [slug, def] of Object.entries(req.fields))
|
|
145
|
+
defs[aliases.of(slug, "d")] = def;
|
|
146
|
+
properties.fields = (0, schema_js_1.toWireSchema)(defs, { nullable: true });
|
|
147
|
+
}
|
|
148
|
+
return { type: "object", properties, required: Object.keys(properties), additionalProperties: false };
|
|
149
|
+
}
|
|
150
|
+
function keyed(keys, def) {
|
|
151
|
+
return Object.fromEntries(keys.map((key) => [key, def]));
|
|
152
|
+
}
|
|
153
|
+
/** The mention trigger's `extract` definitions, when the flow has any. */
|
|
154
|
+
function extractDefs(flow) {
|
|
155
|
+
for (const trigger of flow.on ?? []) {
|
|
156
|
+
if ("mention" in trigger && trigger.extract && Object.keys(trigger.extract).length)
|
|
157
|
+
return trigger.extract;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
// ── Prompt sections ─────────────────────────────────────────────────────
|
|
162
|
+
function taskSection() {
|
|
163
|
+
return [
|
|
164
|
+
"## Task",
|
|
165
|
+
"Judge the customer's latest message, quoted below, against the conversation so far. " +
|
|
166
|
+
"Only the customer's own words count as evidence: never treat the assistant's questions or guesses as something the customer said. " +
|
|
167
|
+
'Answer with one JSON object in the shape given under "Output".',
|
|
168
|
+
].join("\n");
|
|
169
|
+
}
|
|
170
|
+
function floorSection(req, fields, data, t) {
|
|
171
|
+
if (!req.floor)
|
|
172
|
+
return null;
|
|
173
|
+
const { run, flow } = req.floor;
|
|
174
|
+
const lines = [
|
|
175
|
+
"## Current flow",
|
|
176
|
+
`The customer is mid-conversation in "${flow.name}" (${flow.id})${flow.description ? `: ${t(flow.description)}` : "."}`,
|
|
177
|
+
];
|
|
178
|
+
const step = flow.steps.find((s) => s.id === run.stepId);
|
|
179
|
+
if (step && ("collect" in step || "prompt" in step)) {
|
|
180
|
+
lines.push(`Current step: ${step.id}${step.prompt ? ` — ${t(step.prompt)}` : ""}`);
|
|
181
|
+
const pending = (0, schema_js_1.pendingFields)(step, data, run.asked);
|
|
182
|
+
if (pending.length) {
|
|
183
|
+
lines.push("This step is waiting for:");
|
|
184
|
+
lines.push(...pending.map((slug) => `- ${fields[slug] ? (0, Prompt_js_1.describeField)(slug, fields[slug]) : slug}`));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
lines.push("The customer may continue here or switch to something else. Score the current flow below like any other.");
|
|
188
|
+
return lines.join("\n");
|
|
189
|
+
}
|
|
190
|
+
function flowsSection(candidates, aliases, t) {
|
|
191
|
+
if (candidates.length === 0)
|
|
192
|
+
return null;
|
|
193
|
+
const lines = [
|
|
194
|
+
"## Flows the customer may want",
|
|
195
|
+
"Score every flow from 0 to 100 by how well the message fits it. Score all of them, the current flow included.",
|
|
196
|
+
];
|
|
197
|
+
candidates.forEach((flow, i) => {
|
|
198
|
+
lines.push(`${i + 1}. ${aliases.of(flow.id, "f")} — ${flow.name}${flow.description ? `: ${t(flow.description)}` : ""}`);
|
|
199
|
+
const phrases = triggerPhrases(flow, "message");
|
|
200
|
+
if (phrases.length)
|
|
201
|
+
lines.push(` The customer: ${phrases.map(t).join("; ")}`);
|
|
202
|
+
});
|
|
203
|
+
lines.push("", "Scoring rules:", "- 90-100: explicit keywords + clear intent", "- 70-89: strong contextual evidence + relevant keywords", "- 50-69: moderate relevance", "- 30-49: weak connection or ambiguous", "- 0-29: minimal/none");
|
|
204
|
+
return lines.join("\n");
|
|
205
|
+
}
|
|
206
|
+
function mentionsSection(flows, aliases, t) {
|
|
207
|
+
if (flows.length === 0)
|
|
208
|
+
return null;
|
|
209
|
+
const lines = [
|
|
210
|
+
"## Things the customer may mention",
|
|
211
|
+
"For each item, answer true when the customer's message clearly brings it up, false otherwise. " +
|
|
212
|
+
"Be conservative: true needs clear, explicit evidence in the message. The phrases under an item are alternatives; one match is enough.",
|
|
213
|
+
];
|
|
214
|
+
for (const flow of flows) {
|
|
215
|
+
lines.push(`- ${aliases.of(flow.id, "f")} — ${flow.name}${flow.description ? `: ${t(flow.description)}` : ""}`);
|
|
216
|
+
const phrases = triggerPhrases(flow, "mention");
|
|
217
|
+
if (phrases.length)
|
|
218
|
+
lines.push(` Counts when: ${phrases.map(t).join("; ")}`);
|
|
219
|
+
const defs = extractDefs(flow);
|
|
220
|
+
if (defs) {
|
|
221
|
+
lines.push(" When true, also extract:");
|
|
222
|
+
lines.push(...Object.entries(defs).map(([name, def]) => ` - ${describeParam(name, def)}`));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return lines.join("\n");
|
|
226
|
+
}
|
|
227
|
+
function branchesSection(branches, aliases, t) {
|
|
228
|
+
if (branches.length === 0)
|
|
229
|
+
return null;
|
|
230
|
+
return [
|
|
231
|
+
"## Questions about this message",
|
|
232
|
+
"Answer each question with true or false, judging the customer's message in the context of the conversation.",
|
|
233
|
+
...branches.map((b) => `- ${aliases.of(branchKey(b), "q")}: ${t(b.when)}`),
|
|
234
|
+
].join("\n");
|
|
235
|
+
}
|
|
236
|
+
function fieldsSection(fields, aliases) {
|
|
237
|
+
const entries = Object.entries(fields);
|
|
238
|
+
if (entries.length === 0)
|
|
239
|
+
return null;
|
|
240
|
+
return [
|
|
241
|
+
"## Details the customer may have given",
|
|
242
|
+
"Report a value only when the customer actually gave it in this message. " +
|
|
243
|
+
"Never guess and never infer it from the assistant's words. Use null when the customer did not give it.",
|
|
244
|
+
...entries.map(([slug, def]) => `- ${(0, Prompt_js_1.describeField)(aliases.of(slug, "d"), def)}`),
|
|
245
|
+
].join("\n");
|
|
246
|
+
}
|
|
247
|
+
function messageSection(text) {
|
|
248
|
+
return ["## Customer's latest message", '"""', text, '"""'].join("\n");
|
|
249
|
+
}
|
|
250
|
+
const OUTPUT_LINES = {
|
|
251
|
+
flows: "- flows: one integer from 0 to 100 per flow id listed above",
|
|
252
|
+
mentions: "- mentions: true or false per item id",
|
|
253
|
+
extract: "- extract: per item id, an object with the values pulled from the message; null values when the item was not brought up",
|
|
254
|
+
branches: "- branches: true or false per question id",
|
|
255
|
+
fields: "- fields: one value per detail, null when the customer did not give it",
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* What the skeleton shows in each section: a score of 0, a "no" answer, and
|
|
259
|
+
* null for anything extracted, so a prompt-only model never reads a
|
|
260
|
+
* placeholder as a default value.
|
|
261
|
+
*/
|
|
262
|
+
const PLACEHOLDER = { flows: 0, mentions: false, extract: null, branches: false, fields: null };
|
|
263
|
+
function outputSection(schema) {
|
|
264
|
+
const present = SECTIONS.filter((s) => schema.properties?.[s] !== undefined);
|
|
265
|
+
const skeleton = Object.fromEntries(present.map((s) => [s, fill(schema.properties?.[s] ?? {}, PLACEHOLDER[s])]));
|
|
266
|
+
return [
|
|
267
|
+
"## Output",
|
|
268
|
+
"Return exactly one JSON object and nothing else: no prose before or after, no code fence. " +
|
|
269
|
+
"Every key below is required; use null where you have nothing to report.",
|
|
270
|
+
...present.map((s) => OUTPUT_LINES[s]),
|
|
271
|
+
"Shape, with placeholder values:",
|
|
272
|
+
JSON.stringify(skeleton),
|
|
273
|
+
].join("\n");
|
|
274
|
+
}
|
|
275
|
+
/** The schema's shape with one placeholder at every leaf. */
|
|
276
|
+
function fill(schema, placeholder) {
|
|
277
|
+
const type = Array.isArray(schema.type) ? schema.type[0] : schema.type;
|
|
278
|
+
if (type !== "object")
|
|
279
|
+
return placeholder;
|
|
280
|
+
return Object.fromEntries(Object.entries(schema.properties ?? {}).map(([k, v]) => [k, fill(v, placeholder)]));
|
|
281
|
+
}
|
|
282
|
+
function triggerPhrases(flow, kind) {
|
|
283
|
+
const phrases = [];
|
|
284
|
+
for (const trigger of flow.on ?? []) {
|
|
285
|
+
if (kind === "message" && "message" in trigger)
|
|
286
|
+
phrases.push(...trigger.message);
|
|
287
|
+
if (kind === "mention" && "mention" in trigger)
|
|
288
|
+
phrases.push(...trigger.mention);
|
|
289
|
+
}
|
|
290
|
+
return phrases;
|
|
291
|
+
}
|
|
292
|
+
function describeParam(name, def) {
|
|
293
|
+
if (def.type === "array")
|
|
294
|
+
return `${name} (list of ${def.items.type})${def.description ? `: ${def.description}` : ""}`;
|
|
295
|
+
return (0, Prompt_js_1.describeField)(name, def);
|
|
296
|
+
}
|
|
297
|
+
// ── Reply parsing ───────────────────────────────────────────────────────
|
|
298
|
+
function empty(llmCalls, usage) {
|
|
299
|
+
return { flows: {}, mentions: {}, extract: {}, branches: {}, fields: {}, llmCalls, ...(usage ? { usage } : {}) };
|
|
300
|
+
}
|
|
301
|
+
/** `{ usage }` when the provider counted, `{}` when it did not — `exactOptionalPropertyTypes`. */
|
|
302
|
+
function usageOf(metadata) {
|
|
303
|
+
const usage = (0, usage_js_1.readUsage)(metadata);
|
|
304
|
+
return usage ? { usage } : {};
|
|
305
|
+
}
|
|
306
|
+
/** A reply is usable when it is an object carrying at least one envelope section. */
|
|
307
|
+
function usable(value) {
|
|
308
|
+
return (0, json_js_1.isRecord)(value) && SECTIONS.some((s) => s in value);
|
|
309
|
+
}
|
|
310
|
+
function entries(value) {
|
|
311
|
+
return (0, json_js_1.isRecord)(value) ? Object.entries(value) : [];
|
|
312
|
+
}
|
|
313
|
+
function parseReply(reply, aliases) {
|
|
314
|
+
const flows = {};
|
|
315
|
+
for (const [key, raw] of entries(reply.flows)) {
|
|
316
|
+
const n = score(raw);
|
|
317
|
+
if (n !== undefined)
|
|
318
|
+
flows[aliases.real(key)] = n;
|
|
319
|
+
}
|
|
320
|
+
const extract = {};
|
|
321
|
+
for (const [key, raw] of entries(reply.extract)) {
|
|
322
|
+
if ((0, json_js_1.isRecord)(raw))
|
|
323
|
+
extract[aliases.real(key)] = given(raw);
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
flows,
|
|
327
|
+
mentions: booleans(reply.mentions, aliases),
|
|
328
|
+
extract,
|
|
329
|
+
branches: booleans(reply.branches, aliases),
|
|
330
|
+
fields: given(Object.fromEntries(entries(reply.fields).map(([k, v]) => [aliases.real(k), v]))),
|
|
331
|
+
llmCalls: 1,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
/** A finite number, or a numeric string, clamped to 0-100. Anything else is dropped. */
|
|
335
|
+
function score(raw) {
|
|
336
|
+
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw.trim()) : NaN;
|
|
337
|
+
return Number.isFinite(n) ? Math.min(100, Math.max(0, n)) : undefined;
|
|
338
|
+
}
|
|
339
|
+
/** Booleans, with `sim`/`yes`/`true` strings accepted through the shared coercion table. */
|
|
340
|
+
function booleans(value, aliases) {
|
|
341
|
+
const out = {};
|
|
342
|
+
for (const [key, raw] of entries(value)) {
|
|
343
|
+
const coerced = (0, schema_js_1.coerceField)({ type: "boolean" }, raw);
|
|
344
|
+
if (coerced.ok && typeof coerced.value === "boolean")
|
|
345
|
+
out[aliases.real(key)] = coerced.value;
|
|
346
|
+
}
|
|
347
|
+
return out;
|
|
348
|
+
}
|
|
349
|
+
/** Raw values the customer gave: `null`, `undefined` and `''` mean nothing was given. */
|
|
350
|
+
function given(value) {
|
|
351
|
+
return Object.fromEntries(Object.entries(value).filter(([, v]) => (0, schema_js_1.isKnown)(v)));
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=Understand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Understand.js","sourceRoot":"","sources":["../../../src/core/Understand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The seams between the turn's phases. Runner decides who is eligible and
|
|
3
|
+
* what is pending; Understand and Speak turn that into at most one provider
|
|
4
|
+
* call each and hand back plain data for Runner to apply.
|
|
5
|
+
*
|
|
6
|
+
* Runner (code) ──UnderstandRequest──▶ Understand (≤1 call) ──Understanding──▶ Runner
|
|
7
|
+
* Runner (code) ──SpeakRequest──────▶ Speak (≤1 call + tools) ──SpeakOutcome──▶ Runner
|
|
8
|
+
*/
|
|
9
|
+
import type { TokenUsage } from "../types/ai.js";
|
|
10
|
+
import type { Idle } from "../types/agent.js";
|
|
11
|
+
import type { FieldDef, Flow, Instruction, StepBase, TalkStep } from "../types/flow.js";
|
|
12
|
+
import type { History } from "../types/history.js";
|
|
13
|
+
import type { Run, StepOutcomeCode } from "../types/session.js";
|
|
14
|
+
import type { Tool } from "../types/tool.js";
|
|
15
|
+
export type InputKind = "message" | "wake" | "event" | "start";
|
|
16
|
+
/** Everything the understand call may judge this turn. Runner filters by `if` and `repeat` first. */
|
|
17
|
+
export interface UnderstandRequest<C = unknown, D = unknown> {
|
|
18
|
+
text: string;
|
|
19
|
+
history: History;
|
|
20
|
+
context: C;
|
|
21
|
+
data: Partial<D>;
|
|
22
|
+
/** The run holding the floor, always a candidate whatever its trigger. */
|
|
23
|
+
floor?: {
|
|
24
|
+
run: Run;
|
|
25
|
+
flow: Flow<C, D>;
|
|
26
|
+
};
|
|
27
|
+
/** Eligible `message` flows, in flow order. `[]` triggers (catch-alls) are excluded. */
|
|
28
|
+
messageFlows: Flow<C, D>[];
|
|
29
|
+
/** Eligible `mention` flows with a non-empty `mention[]`, in flow order. */
|
|
30
|
+
mentionFlows: Flow<C, D>[];
|
|
31
|
+
/** `when` branches of the asking step. */
|
|
32
|
+
branches: Array<{
|
|
33
|
+
runId: string;
|
|
34
|
+
stepId: string;
|
|
35
|
+
index: number;
|
|
36
|
+
when: string;
|
|
37
|
+
}>;
|
|
38
|
+
/** Pending fields harvestable from any text (`extract: 'anywhere'`). */
|
|
39
|
+
fields: Record<string, FieldDef>;
|
|
40
|
+
}
|
|
41
|
+
/** The judged result. Raw values: Runner validates and writes them. */
|
|
42
|
+
export interface Understanding {
|
|
43
|
+
/** flowId → 0–100 fit of the lead's message to the flow. */
|
|
44
|
+
flows: Record<string, number>;
|
|
45
|
+
/** flowId → the lead mentioned it. */
|
|
46
|
+
mentions: Record<string, boolean>;
|
|
47
|
+
/** flowId → values extracted for a mention trigger's `extract` schema. */
|
|
48
|
+
extract: Record<string, Record<string, unknown>>;
|
|
49
|
+
/** `${runId}/${stepId}/${index}` → the branch condition holds. */
|
|
50
|
+
branches: Record<string, boolean>;
|
|
51
|
+
/** field → raw value the lead gave, or nothing. */
|
|
52
|
+
fields: Record<string, unknown>;
|
|
53
|
+
llmCalls: number;
|
|
54
|
+
usage?: TokenUsage;
|
|
55
|
+
}
|
|
56
|
+
/** A talk step queued to speak, with its pending fields already computed. */
|
|
57
|
+
export interface TalkRequest<C = unknown, D = unknown> {
|
|
58
|
+
run: Run;
|
|
59
|
+
flow: Flow<C, D>;
|
|
60
|
+
step: StepBase<D> & TalkStep<C, D>;
|
|
61
|
+
/** `step.collect` minus known minus at `maxAsks`, in order. */
|
|
62
|
+
pending: string[];
|
|
63
|
+
}
|
|
64
|
+
/** No run holds the floor; the idle speaker answers. */
|
|
65
|
+
export interface IdleRequest<C = unknown, D = unknown> {
|
|
66
|
+
idle: Exclude<Idle<C, D>, "silent">;
|
|
67
|
+
}
|
|
68
|
+
export interface SpeakRequest<C = unknown, D = unknown> {
|
|
69
|
+
talk: TalkRequest<C, D> | IdleRequest<C, D>;
|
|
70
|
+
/** What started this turn. A wake has no text: the assistant speaks first. */
|
|
71
|
+
input: {
|
|
72
|
+
kind: InputKind;
|
|
73
|
+
text?: string;
|
|
74
|
+
};
|
|
75
|
+
context: C;
|
|
76
|
+
data: Partial<D>;
|
|
77
|
+
history: History;
|
|
78
|
+
now: Date;
|
|
79
|
+
/** Already filtered by their `if`; `when` stays for the prompt. */
|
|
80
|
+
instructions: Instruction<C, D>[];
|
|
81
|
+
tools: Tool<C, D>[];
|
|
82
|
+
}
|
|
83
|
+
export interface Spoken {
|
|
84
|
+
message: string;
|
|
85
|
+
/** Raw envelope values for the pending fields. Runner validates and writes them. */
|
|
86
|
+
fields: Record<string, unknown>;
|
|
87
|
+
/** Data patches returned by tools, merged in call order. */
|
|
88
|
+
data: Record<string, unknown>;
|
|
89
|
+
toolCalls: Array<{
|
|
90
|
+
toolName: string;
|
|
91
|
+
arguments: Record<string, unknown>;
|
|
92
|
+
}>;
|
|
93
|
+
llmCalls: number;
|
|
94
|
+
usage?: TokenUsage;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Why a speak call failed, and whether a later wake could still fix it. A kind
|
|
98
|
+
* no wake can fix — wrong key, a prompt past the context window, a spent
|
|
99
|
+
* balance with no stated reset — ends the step instead of re-running two model
|
|
100
|
+
* calls against the same wall every fifteen minutes.
|
|
101
|
+
*/
|
|
102
|
+
export interface Deferral {
|
|
103
|
+
code: StepOutcomeCode;
|
|
104
|
+
retryable: boolean;
|
|
105
|
+
/** When the provider said its limit reopens. Beats the backoff ladder. */
|
|
106
|
+
resetAtMs?: number;
|
|
107
|
+
}
|
|
108
|
+
/** `deferred` is the provider failing; Runner re-parks the step under a retry wake, or ends it. */
|
|
109
|
+
export type SpeakOutcome = {
|
|
110
|
+
spoken: Spoken;
|
|
111
|
+
} | {
|
|
112
|
+
deferred: Deferral;
|
|
113
|
+
llmCalls: number;
|
|
114
|
+
usage?: TokenUsage;
|
|
115
|
+
};
|
|
116
|
+
export type SpeakStreamChunk = {
|
|
117
|
+
delta: string;
|
|
118
|
+
} | {
|
|
119
|
+
done: true;
|
|
120
|
+
outcome: SpeakOutcome;
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/core/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The seams between the turn's phases. Runner decides who is eligible and
|
|
4
|
+
* what is pending; Understand and Speak turn that into at most one provider
|
|
5
|
+
* call each and hand back plain data for Runner to apply.
|
|
6
|
+
*
|
|
7
|
+
* Runner (code) ──UnderstandRequest──▶ Understand (≤1 call) ──Understanding──▶ Runner
|
|
8
|
+
* Runner (code) ──SpeakRequest──────▶ Speak (≤1 call + tools) ──SpeakOutcome──▶ Runner
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/core/contracts.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `falai()` carries the one explicit generic an app writes: its context type.
|
|
3
|
+
* Everything else is inferred from values.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* const f = falai<LeadContext>().fields({
|
|
7
|
+
* nome: { type: 'string', ask: 'Pergunte o nome de um jeito leve.' },
|
|
8
|
+
* });
|
|
9
|
+
* const agent = f.agent({ name: 'Ana', provider, flows: [f.flow({ ... })] });
|
|
10
|
+
* const r = await agent.turn({ sessionId: 'demo', context, message: 'oi' });
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* `f.fields(...)` binds the collected-data type, so every `collect`, `ask`,
|
|
14
|
+
* `clearOnStart` and action `ctx.set` downstream is checked against the
|
|
15
|
+
* field slugs. Action, event and condition names inside flows stay strings:
|
|
16
|
+
* they are checked when the agent is built, the same way JSON specs are.
|
|
17
|
+
*/
|
|
18
|
+
import type { AgentOptions } from "../types/agent.js";
|
|
19
|
+
import type { Action, ActionCtx, ActionResult, Condition, EventDef, FieldDefs, Flow, InferData, InferParams, ParamDefs, PredCtx } from "../types/flow.js";
|
|
20
|
+
import { Agent } from "./Agent.js";
|
|
21
|
+
import { type FlowSpec } from "./FlowSpec.js";
|
|
22
|
+
/** The toolkit once fields are bound. `D` is the collected-data type. */
|
|
23
|
+
export interface Falai<C, D, F extends FieldDefs> {
|
|
24
|
+
/** The field definitions, as given. */
|
|
25
|
+
readonly fields: F;
|
|
26
|
+
/** A host action; `params` is typed from `parameters`. */
|
|
27
|
+
action<const P extends ParamDefs>(def: {
|
|
28
|
+
description?: string;
|
|
29
|
+
parameters: P;
|
|
30
|
+
run: (params: InferParams<P>, ctx: ActionCtx<C, D>) => ActionResult | Promise<ActionResult>;
|
|
31
|
+
}): Action<C, D, InferParams<P>>;
|
|
32
|
+
/** A host event; `P` is its payload type. */
|
|
33
|
+
event<P = undefined>(def?: {
|
|
34
|
+
direction?: "inbound" | "outbound";
|
|
35
|
+
}): EventDef<P>;
|
|
36
|
+
/** A host condition JSON predicates may name. */
|
|
37
|
+
condition<Arg>(check: (ctx: PredCtx<C, D>, arg: Arg) => boolean): Condition<C, D, Arg>;
|
|
38
|
+
/** A flow; returns it unchanged, typed. */
|
|
39
|
+
flow(def: Flow<C, D>): Flow<C, D>;
|
|
40
|
+
/** A stored flow (JSON) as a typed flow. The agent validates it when built. */
|
|
41
|
+
fromSpec(spec: FlowSpec): Flow<C, D>;
|
|
42
|
+
/** The agent; `fields` come from the toolkit. */
|
|
43
|
+
agent(options: Omit<AgentOptions<C, D>, "fields">): Agent<C, D>;
|
|
44
|
+
}
|
|
45
|
+
/** The toolkit before fields are bound: loose data, plus `fields()` to bind them. */
|
|
46
|
+
export interface FalaiRoot<C> extends Omit<Falai<C, InferData<FieldDefs>, FieldDefs>, "fields"> {
|
|
47
|
+
fields<const F extends FieldDefs>(defs: F): Falai<C, InferData<F>, F>;
|
|
48
|
+
}
|
|
49
|
+
/** The collected-data type of a bound toolkit: `type Data = DataOf<typeof f>`. */
|
|
50
|
+
export type DataOf<T extends {
|
|
51
|
+
fields: FieldDefs;
|
|
52
|
+
}> = InferData<T["fields"]>;
|
|
53
|
+
/**
|
|
54
|
+
* Start here. Pass the host context type; `falai()` alone means no context.
|
|
55
|
+
*/
|
|
56
|
+
export declare function falai<C = undefined>(): FalaiRoot<C>;
|
|
57
|
+
//# sourceMappingURL=falai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"falai.d.ts","sourceRoot":"","sources":["../../../src/core/falai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,eAAe,CAAC;AAExD,yEAAyE;AACzE,MAAM,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,SAAS;IAC9C,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,0DAA0D;IAC1D,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,CAAC,CAAC;QACd,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;KAC7F,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChF,iDAAiD;IACjD,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvF,2CAA2C;IAC3C,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,iDAAiD;IACjD,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACjE;AAED,qFAAqF;AACrF,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC7F,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACvE;AAED,kFAAkF;AAClF,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAc7E;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAKnD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `falai()` carries the one explicit generic an app writes: its context type.
|
|
4
|
+
* Everything else is inferred from values.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const f = falai<LeadContext>().fields({
|
|
8
|
+
* nome: { type: 'string', ask: 'Pergunte o nome de um jeito leve.' },
|
|
9
|
+
* });
|
|
10
|
+
* const agent = f.agent({ name: 'Ana', provider, flows: [f.flow({ ... })] });
|
|
11
|
+
* const r = await agent.turn({ sessionId: 'demo', context, message: 'oi' });
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* `f.fields(...)` binds the collected-data type, so every `collect`, `ask`,
|
|
15
|
+
* `clearOnStart` and action `ctx.set` downstream is checked against the
|
|
16
|
+
* field slugs. Action, event and condition names inside flows stay strings:
|
|
17
|
+
* they are checked when the agent is built, the same way JSON specs are.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.falai = falai;
|
|
21
|
+
const Agent_js_1 = require("./Agent.js");
|
|
22
|
+
const FlowSpec_js_1 = require("./FlowSpec.js");
|
|
23
|
+
function toolkit(fields) {
|
|
24
|
+
return {
|
|
25
|
+
fields,
|
|
26
|
+
action: (def) => def,
|
|
27
|
+
event: (def = {}) => def,
|
|
28
|
+
condition: (check) => ({ check }),
|
|
29
|
+
flow: (def) => def,
|
|
30
|
+
fromSpec: (spec) => (0, FlowSpec_js_1.fromSpec)(spec),
|
|
31
|
+
agent: (options) => new Agent_js_1.Agent({ ...options, fields }),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Start here. Pass the host context type; `falai()` alone means no context.
|
|
36
|
+
*/
|
|
37
|
+
function falai() {
|
|
38
|
+
return {
|
|
39
|
+
...toolkit({}),
|
|
40
|
+
fields: (defs) => toolkit(defs),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=falai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"falai.js","sourceRoot":"","sources":["../../../src/core/falai.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAgEH,sBAKC;AArDD,yCAAmC;AACnC,+CAAwD;AAgCxD,SAAS,OAAO,CAA4B,MAAS;IACnD,OAAO;QACL,MAAM;QACN,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;QACpB,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG;QACxB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAO,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,gBAAK,CAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK;IACnB,OAAO;QACL,GAAG,OAAO,CAAqC,EAAE,CAAC;QAClD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code predicates: a function runs as is; a `ConditionSpec` is AND over its
|
|
3
|
+
* keys, with `equals`, `known` and `silenced` built in and every other key
|
|
4
|
+
* looked up in the agent's conditions.
|
|
5
|
+
*/
|
|
6
|
+
import type { ConditionMap, Pred, PredCtx } from "../types/flow.js";
|
|
7
|
+
export declare function evaluate<C, D, P>(pred: Pred<C, D, P>, ctx: PredCtx<C, D, P>, conditions: ConditionMap<C, D>): boolean;
|
|
8
|
+
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
9
|
+
//# sourceMappingURL=predicate.d.ts.map
|