@falai/agent 3.4.5 → 4.0.0-alpha.10
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 +29 -378
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +113 -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 +573 -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 +149 -0
- package/dist/cjs/core/Prompt.js.map +1 -0
- package/dist/cjs/core/Runner.d.ts +171 -0
- package/dist/cjs/core/Runner.d.ts.map +1 -0
- package/dist/cjs/core/Runner.js +1158 -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 +373 -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 +357 -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 +11 -6
- 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/providers/ZaiProvider.d.ts +6 -4
- package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/ZaiProvider.js +6 -4
- package/dist/cjs/providers/ZaiProvider.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +163 -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/phrases.d.ts +25 -0
- package/dist/cjs/utils/phrases.d.ts.map +1 -0
- package/dist/cjs/utils/phrases.js +38 -0
- package/dist/cjs/utils/phrases.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 +22 -150
- package/dist/cjs/utils/template.d.ts.map +1 -1
- package/dist/cjs/utils/template.js +64 -359
- 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 +29 -378
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +116 -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 +567 -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 +139 -0
- package/dist/core/Prompt.js.map +1 -0
- package/dist/core/Runner.d.ts +171 -0
- package/dist/core/Runner.d.ts.map +1 -0
- package/dist/core/Runner.js +1154 -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 +369 -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 +353 -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 +11 -6
- 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/providers/ZaiProvider.d.ts +6 -4
- package/dist/providers/ZaiProvider.d.ts.map +1 -1
- package/dist/providers/ZaiProvider.js +6 -4
- package/dist/providers/ZaiProvider.js.map +1 -1
- package/dist/types/agent.d.ts +163 -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/phrases.d.ts +25 -0
- package/dist/utils/phrases.d.ts.map +1 -0
- package/dist/utils/phrases.js +35 -0
- package/dist/utils/phrases.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 +22 -150
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +61 -351
- 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 +170 -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 +457 -0
- package/docs/reference/actions-events-conditions.md +396 -0
- package/docs/reference/agent.md +248 -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 +200 -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 +181 -163
- 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 +149 -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 +11 -6
- package/src/core/Agent.ts +126 -1512
- package/src/core/CompactionEngine.ts +7 -4
- package/src/core/FlowSpec.ts +778 -0
- package/src/core/Migrate.ts +256 -0
- package/src/core/Prompt.ts +162 -0
- package/src/core/Runner.ts +1214 -0
- package/src/core/Speak.ts +460 -0
- package/src/core/Understand.ts +423 -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 +120 -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 +46 -13
- package/src/providers/ZaiProvider.ts +6 -4
- package/src/types/agent.ts +135 -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 +88 -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/phrases.ts +40 -0
- package/src/utils/schema.ts +145 -0
- package/src/utils/streamingMessage.ts +34 -4
- package/src/utils/template.ts +63 -418
- 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
|
+
/**
|
|
2
|
+
* Understand: the one call that judges the lead's message (design §4.3).
|
|
3
|
+
*
|
|
4
|
+
* Runner decides who is eligible and what is pending; this module turns that
|
|
5
|
+
* into one prompt, one envelope schema and at most one provider call, then
|
|
6
|
+
* hands back raw values keyed by their real ids. It never writes session
|
|
7
|
+
* data: Runner validates, coerces and applies.
|
|
8
|
+
*
|
|
9
|
+
* Two shortcuts cost zero calls: a single eligible message flow with nothing
|
|
10
|
+
* else to judge starts outright, and a turn with nothing AI-conditioned
|
|
11
|
+
* returns an empty Understanding.
|
|
12
|
+
*
|
|
13
|
+
* The envelope is built for two kinds of provider at once. Gemini enforces
|
|
14
|
+
* the schema, so every section is a closed object with every property
|
|
15
|
+
* required and nullable. GLM follows it by prompt only, so the prompt
|
|
16
|
+
* restates the shape with a skeleton and the parser tolerates missing keys,
|
|
17
|
+
* wrong scalar types and stray text around the JSON.
|
|
18
|
+
*/
|
|
19
|
+
import { extractEmbeddedJSONObject, isRecord } from "../utils/json.js";
|
|
20
|
+
import { logger } from "../utils/logger.js";
|
|
21
|
+
import { splitPhrases } from "../utils/phrases.js";
|
|
22
|
+
import { coerceField, isKnown, pendingFields, toWireSchema } from "../utils/schema.js";
|
|
23
|
+
import { render } from "../utils/template.js";
|
|
24
|
+
import { readUsage } from "../utils/usage.js";
|
|
25
|
+
import { describeField, factsSection, joinSections, stablePrefix } from "./Prompt.js";
|
|
26
|
+
export const UNDERSTAND_SCHEMA_NAME = "understand";
|
|
27
|
+
const SECTIONS = ["flows", "mentions", "extract", "branches", "fields"];
|
|
28
|
+
/** Gemini rejects any other character in a property name. */
|
|
29
|
+
const SAFE_KEY = /^[a-zA-Z0-9_-]+$/;
|
|
30
|
+
export class Understand {
|
|
31
|
+
constructor(options) {
|
|
32
|
+
this.options = options;
|
|
33
|
+
}
|
|
34
|
+
async run(req) {
|
|
35
|
+
const candidates = candidateFlows(req);
|
|
36
|
+
const onlyRouting = req.mentionFlows.length === 0 && req.branches.length === 0 && Object.keys(req.fields).length === 0;
|
|
37
|
+
// Nothing to compare or extract: no candidates, or only the floor's own flow. A lone
|
|
38
|
+
// candidate with nobody on the floor is here because the runner wants it scored.
|
|
39
|
+
if (onlyRouting && candidates.length <= (req.floor ? 1 : 0))
|
|
40
|
+
return empty(0);
|
|
41
|
+
const aliases = new Aliases();
|
|
42
|
+
const jsonSchema = buildEnvelope(req, candidates, aliases);
|
|
43
|
+
const { system, turn: prompt } = this.buildPrompt(req, candidates, aliases, jsonSchema);
|
|
44
|
+
// Provider failures propagate: in this phase the turn throws and the host retries the input.
|
|
45
|
+
const out = await this.options.provider.generateMessage({
|
|
46
|
+
prompt,
|
|
47
|
+
...(system ? { system } : {}),
|
|
48
|
+
history: req.history,
|
|
49
|
+
context: req.context,
|
|
50
|
+
parameters: { jsonSchema, schemaName: UNDERSTAND_SCHEMA_NAME },
|
|
51
|
+
});
|
|
52
|
+
const reply = usable(out.structured) ? out.structured : extractEmbeddedJSONObject(out.message);
|
|
53
|
+
if (!usable(reply)) {
|
|
54
|
+
logger.warn(`[Understand] The reply had no usable structure, so nothing was judged this turn. ` +
|
|
55
|
+
`Reply started with: ${out.message.slice(0, 200)}`);
|
|
56
|
+
return empty(1, readUsage(out.metadata));
|
|
57
|
+
}
|
|
58
|
+
return { ...parseReply(reply, aliases), ...usageOf(out.metadata) };
|
|
59
|
+
}
|
|
60
|
+
buildPrompt(req, candidates, aliases, schema) {
|
|
61
|
+
const scope = { data: req.data, context: req.context };
|
|
62
|
+
const t = (text) => render(text, scope);
|
|
63
|
+
const data = isRecord(req.data) ? req.data : {};
|
|
64
|
+
const { system, inline } = stablePrefix(this.options, scope);
|
|
65
|
+
return {
|
|
66
|
+
system,
|
|
67
|
+
turn: joinSections(inline, taskSection(), floorSection(req, this.options.fields, data, t), 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)),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// ── Candidates and keys ─────────────────────────────────────────────────
|
|
72
|
+
/** The floor's flow first, then the eligible message flows, each id once. */
|
|
73
|
+
function candidateFlows(req) {
|
|
74
|
+
const seen = new Map();
|
|
75
|
+
for (const flow of [...(req.floor ? [req.floor.flow] : []), ...req.messageFlows]) {
|
|
76
|
+
if (!seen.has(flow.id))
|
|
77
|
+
seen.set(flow.id, flow);
|
|
78
|
+
}
|
|
79
|
+
return [...seen.values()];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Envelope property names for ids the schema cannot carry. A safe id keeps
|
|
83
|
+
* its own name; anything else (run ids carry `#`, `:` and `/`) gets a short
|
|
84
|
+
* alias, mapped back when the reply is parsed.
|
|
85
|
+
*/
|
|
86
|
+
class Aliases {
|
|
87
|
+
constructor() {
|
|
88
|
+
this.byReal = new Map();
|
|
89
|
+
this.byAlias = new Map();
|
|
90
|
+
this.n = 0;
|
|
91
|
+
}
|
|
92
|
+
of(real, prefix = "k") {
|
|
93
|
+
const seen = this.byReal.get(real);
|
|
94
|
+
if (seen)
|
|
95
|
+
return seen;
|
|
96
|
+
const alias = SAFE_KEY.test(real) && !this.byAlias.has(real) ? real : this.fresh(prefix);
|
|
97
|
+
this.byAlias.set(alias, real);
|
|
98
|
+
this.byReal.set(real, alias);
|
|
99
|
+
return alias;
|
|
100
|
+
}
|
|
101
|
+
/** Unknown aliases come back as they are; Runner drops keys it does not know. */
|
|
102
|
+
real(alias) {
|
|
103
|
+
return this.byAlias.get(alias) ?? alias;
|
|
104
|
+
}
|
|
105
|
+
fresh(prefix) {
|
|
106
|
+
let alias;
|
|
107
|
+
do
|
|
108
|
+
alias = `${prefix}${++this.n}`;
|
|
109
|
+
while (this.byAlias.has(alias));
|
|
110
|
+
return alias;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function branchKey(branch) {
|
|
114
|
+
return `${branch.runId}/${branch.stepId}/${branch.index}`;
|
|
115
|
+
}
|
|
116
|
+
// ── Envelope ────────────────────────────────────────────────────────────
|
|
117
|
+
function buildEnvelope(req, candidates, aliases) {
|
|
118
|
+
const properties = {};
|
|
119
|
+
if (candidates.length) {
|
|
120
|
+
properties.flows = toWireSchema(keyed(candidates.map((f) => aliases.of(f.id, "f")), { type: "integer", description: "0-100 fit of the message to this flow" }), { nullable: true });
|
|
121
|
+
}
|
|
122
|
+
if (req.mentionFlows.length) {
|
|
123
|
+
properties.mentions = toWireSchema(keyed(req.mentionFlows.map((f) => aliases.of(f.id, "f")), { type: "boolean", description: "The customer brought this up" }), { nullable: true });
|
|
124
|
+
const extract = {};
|
|
125
|
+
for (const flow of req.mentionFlows) {
|
|
126
|
+
const defs = extractDefs(flow);
|
|
127
|
+
if (defs)
|
|
128
|
+
extract[aliases.of(flow.id, "f")] = toWireSchema(defs, { nullable: true });
|
|
129
|
+
}
|
|
130
|
+
if (Object.keys(extract).length) {
|
|
131
|
+
properties.extract = { type: "object", properties: extract, required: Object.keys(extract), additionalProperties: false };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (req.branches.length) {
|
|
135
|
+
properties.branches = toWireSchema(keyed(req.branches.map((b) => aliases.of(branchKey(b), "q")), { type: "boolean", description: "The answer to this question" }), { nullable: true });
|
|
136
|
+
}
|
|
137
|
+
if (Object.keys(req.fields).length) {
|
|
138
|
+
const defs = {};
|
|
139
|
+
for (const [slug, def] of Object.entries(req.fields))
|
|
140
|
+
defs[aliases.of(slug, "d")] = def;
|
|
141
|
+
properties.fields = toWireSchema(defs, { nullable: true });
|
|
142
|
+
}
|
|
143
|
+
return { type: "object", properties, required: Object.keys(properties), additionalProperties: false };
|
|
144
|
+
}
|
|
145
|
+
function keyed(keys, def) {
|
|
146
|
+
return Object.fromEntries(keys.map((key) => [key, def]));
|
|
147
|
+
}
|
|
148
|
+
/** The mention trigger's `extract` definitions, when the flow has any. */
|
|
149
|
+
function extractDefs(flow) {
|
|
150
|
+
for (const trigger of flow.on ?? []) {
|
|
151
|
+
if ("mention" in trigger && trigger.extract && Object.keys(trigger.extract).length)
|
|
152
|
+
return trigger.extract;
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
// ── Prompt sections ─────────────────────────────────────────────────────
|
|
157
|
+
function taskSection() {
|
|
158
|
+
return [
|
|
159
|
+
"## Task",
|
|
160
|
+
"Judge the customer's latest message, quoted below, against the conversation so far. " +
|
|
161
|
+
"Only the customer's own words count as evidence: never treat the assistant's questions or guesses as something the customer said. " +
|
|
162
|
+
'Answer with one JSON object in the shape given under "Output".',
|
|
163
|
+
].join("\n");
|
|
164
|
+
}
|
|
165
|
+
function floorSection(req, fields, data, t) {
|
|
166
|
+
if (!req.floor)
|
|
167
|
+
return null;
|
|
168
|
+
const { run, flow } = req.floor;
|
|
169
|
+
const lines = [
|
|
170
|
+
"## Current flow",
|
|
171
|
+
`The customer is mid-conversation in "${flow.name}" (${flow.id})${flow.description ? `: ${t(flow.description)}` : "."}`,
|
|
172
|
+
];
|
|
173
|
+
const step = flow.steps.find((s) => s.id === run.stepId);
|
|
174
|
+
if (step && ("collect" in step || "prompt" in step)) {
|
|
175
|
+
lines.push(`Current step: ${step.id}${step.prompt ? ` — ${t(step.prompt)}` : ""}`);
|
|
176
|
+
const pending = pendingFields(step, data, run.asked);
|
|
177
|
+
if (pending.length) {
|
|
178
|
+
lines.push("This step is waiting for:");
|
|
179
|
+
lines.push(...pending.map((slug) => `- ${fields[slug] ? describeField(slug, fields[slug]) : slug}`));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
lines.push("The customer may continue here or switch to something else. Score the current flow below like any other.");
|
|
183
|
+
return lines.join("\n");
|
|
184
|
+
}
|
|
185
|
+
function flowsSection(candidates, aliases, t) {
|
|
186
|
+
if (candidates.length === 0)
|
|
187
|
+
return null;
|
|
188
|
+
const lines = [
|
|
189
|
+
"## Flows the customer may want",
|
|
190
|
+
"Score every flow from 0 to 100 by how well the message fits it. Score all of them, the current flow included.",
|
|
191
|
+
];
|
|
192
|
+
candidates.forEach((flow, i) => {
|
|
193
|
+
lines.push(`${i + 1}. ${aliases.of(flow.id, "f")} — ${flow.name}${flow.description ? `: ${t(flow.description)}` : ""}`);
|
|
194
|
+
const { counts, excludes } = splitPhrases(triggerPhrases(flow, "message"));
|
|
195
|
+
if (counts.length)
|
|
196
|
+
lines.push(` The customer: ${counts.map(t).join("; ")}`);
|
|
197
|
+
if (excludes.length)
|
|
198
|
+
lines.push(` Score 0 when: ${excludes.map(t).join("; ")}`);
|
|
199
|
+
});
|
|
200
|
+
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");
|
|
201
|
+
return lines.join("\n");
|
|
202
|
+
}
|
|
203
|
+
function mentionsSection(flows, aliases, t) {
|
|
204
|
+
if (flows.length === 0)
|
|
205
|
+
return null;
|
|
206
|
+
const lines = [
|
|
207
|
+
"## Things the customer may mention",
|
|
208
|
+
"For each item, answer true when the customer's message clearly brings it up, false otherwise. " +
|
|
209
|
+
"Be conservative: true needs clear, explicit evidence in the message. The phrases under an item are alternatives; one match is enough. " +
|
|
210
|
+
"A 'Does not count when' line overrides a match: if one of those fits, answer false.",
|
|
211
|
+
];
|
|
212
|
+
for (const flow of flows) {
|
|
213
|
+
lines.push(`- ${aliases.of(flow.id, "f")} — ${flow.name}${flow.description ? `: ${t(flow.description)}` : ""}`);
|
|
214
|
+
const { counts, excludes } = splitPhrases(triggerPhrases(flow, "mention"));
|
|
215
|
+
if (counts.length)
|
|
216
|
+
lines.push(` Counts when: ${counts.map(t).join("; ")}`);
|
|
217
|
+
if (excludes.length)
|
|
218
|
+
lines.push(` Does not count when: ${excludes.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]) => `- ${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 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 = 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 isRecord(value) && SECTIONS.some((s) => s in value);
|
|
309
|
+
}
|
|
310
|
+
function entries(value) {
|
|
311
|
+
return 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 (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 = 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]) => 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,10 @@
|
|
|
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
|
+
export {};
|
|
10
|
+
//# 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,40 @@
|
|
|
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 { Agent } from "./Agent.js";
|
|
19
|
+
import { fromSpec } from "./FlowSpec.js";
|
|
20
|
+
function toolkit(fields) {
|
|
21
|
+
return {
|
|
22
|
+
fields,
|
|
23
|
+
action: (def) => def,
|
|
24
|
+
event: (def = {}) => def,
|
|
25
|
+
condition: (check) => ({ check }),
|
|
26
|
+
flow: (def) => def,
|
|
27
|
+
fromSpec: (spec) => fromSpec(spec),
|
|
28
|
+
agent: (options) => new Agent({ ...options, fields }),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start here. Pass the host context type; `falai()` alone means no context.
|
|
33
|
+
*/
|
|
34
|
+
export function falai() {
|
|
35
|
+
return {
|
|
36
|
+
...toolkit({}),
|
|
37
|
+
fields: (defs) => toolkit(defs),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=falai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"falai.js","sourceRoot":"","sources":["../../src/core/falai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAiB,QAAQ,EAAE,MAAM,eAAe,CAAC;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,QAAQ,CAAO,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate.d.ts","sourceRoot":"","sources":["../../src/core/predicate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGpE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9B,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACnB,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,OAAO,CA8BT;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CASzD"}
|