@falai/agent 3.4.5 → 4.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -34
- package/dist/cjs/core/Agent.d.ts +22 -378
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +104 -1178
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
- package/dist/cjs/core/CompactionEngine.js +5 -3
- package/dist/cjs/core/CompactionEngine.js.map +1 -1
- package/dist/cjs/core/FlowSpec.d.ts +136 -0
- package/dist/cjs/core/FlowSpec.d.ts.map +1 -0
- package/dist/cjs/core/FlowSpec.js +522 -0
- package/dist/cjs/core/FlowSpec.js.map +1 -0
- package/dist/cjs/core/Migrate.d.ts +38 -0
- package/dist/cjs/core/Migrate.d.ts.map +1 -0
- package/dist/cjs/core/Migrate.js +270 -0
- package/dist/cjs/core/Migrate.js.map +1 -0
- package/dist/cjs/core/Prompt.d.ts +54 -0
- package/dist/cjs/core/Prompt.d.ts.map +1 -0
- package/dist/cjs/core/Prompt.js +143 -0
- package/dist/cjs/core/Prompt.js.map +1 -0
- package/dist/cjs/core/Runner.d.ts +160 -0
- package/dist/cjs/core/Runner.d.ts.map +1 -0
- package/dist/cjs/core/Runner.js +1131 -0
- package/dist/cjs/core/Runner.js.map +1 -0
- package/dist/cjs/core/Speak.d.ts +37 -0
- package/dist/cjs/core/Speak.d.ts.map +1 -0
- package/dist/cjs/core/Speak.js +364 -0
- package/dist/cjs/core/Speak.js.map +1 -0
- package/dist/cjs/core/Understand.d.ts +28 -0
- package/dist/cjs/core/Understand.d.ts.map +1 -0
- package/dist/cjs/core/Understand.js +353 -0
- package/dist/cjs/core/Understand.js.map +1 -0
- package/dist/cjs/core/contracts.d.ts +122 -0
- package/dist/cjs/core/contracts.d.ts.map +1 -0
- package/dist/cjs/core/contracts.js +11 -0
- package/dist/cjs/core/contracts.js.map +1 -0
- package/dist/cjs/core/falai.d.ts +57 -0
- package/dist/cjs/core/falai.d.ts.map +1 -0
- package/dist/cjs/core/falai.js +43 -0
- package/dist/cjs/core/falai.js.map +1 -0
- package/dist/cjs/core/predicate.d.ts +9 -0
- package/dist/cjs/core/predicate.d.ts.map +1 -0
- package/dist/cjs/core/predicate.js +58 -0
- package/dist/cjs/core/predicate.js.map +1 -0
- package/dist/cjs/index.d.ts +26 -31
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +46 -68
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/persistence/MemoryStore.d.ts +15 -0
- package/dist/cjs/persistence/MemoryStore.d.ts.map +1 -0
- package/dist/cjs/persistence/MemoryStore.js +39 -0
- package/dist/cjs/persistence/MemoryStore.js.map +1 -0
- package/dist/cjs/persistence/MongoStore.d.ts +42 -0
- package/dist/cjs/persistence/MongoStore.d.ts.map +1 -0
- package/dist/cjs/persistence/MongoStore.js +60 -0
- package/dist/cjs/persistence/MongoStore.js.map +1 -0
- package/dist/cjs/persistence/OpenSearchStore.d.ts +86 -0
- package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -0
- package/dist/cjs/persistence/OpenSearchStore.js +120 -0
- package/dist/cjs/persistence/OpenSearchStore.js.map +1 -0
- package/dist/cjs/persistence/PostgresStore.d.ts +41 -0
- package/dist/cjs/persistence/PostgresStore.d.ts.map +1 -0
- package/dist/cjs/persistence/PostgresStore.js +58 -0
- package/dist/cjs/persistence/PostgresStore.js.map +1 -0
- package/dist/cjs/persistence/PrismaStore.d.ts +65 -0
- package/dist/cjs/persistence/PrismaStore.d.ts.map +1 -0
- package/dist/cjs/persistence/PrismaStore.js +95 -0
- package/dist/cjs/persistence/PrismaStore.js.map +1 -0
- package/dist/cjs/persistence/RedisStore.d.ts +34 -0
- package/dist/cjs/persistence/RedisStore.d.ts.map +1 -0
- package/dist/cjs/persistence/RedisStore.js +61 -0
- package/dist/cjs/persistence/RedisStore.js.map +1 -0
- package/dist/cjs/persistence/SQLiteStore.d.ts +45 -0
- package/dist/cjs/persistence/SQLiteStore.d.ts.map +1 -0
- package/dist/cjs/persistence/SQLiteStore.js +74 -0
- package/dist/cjs/persistence/SQLiteStore.js.map +1 -0
- package/dist/cjs/persistence/sessionRow.d.ts +14 -0
- package/dist/cjs/persistence/sessionRow.d.ts.map +1 -0
- package/dist/cjs/persistence/sessionRow.js +50 -0
- package/dist/cjs/persistence/sessionRow.js.map +1 -0
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +8 -3
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +4 -3
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +4 -3
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +4 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +2 -4
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.js +33 -10
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +153 -383
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js +1 -1
- package/dist/cjs/types/ai.d.ts +32 -1
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/compaction.d.ts +3 -1
- package/dist/cjs/types/compaction.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +9 -12
- package/dist/cjs/types/errors.d.ts.map +1 -1
- package/dist/cjs/types/errors.js +14 -17
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/types/flow.d.ts +265 -513
- package/dist/cjs/types/flow.d.ts.map +1 -1
- package/dist/cjs/types/flow.js +7 -1
- package/dist/cjs/types/flow.js.map +1 -1
- package/dist/cjs/types/history.d.ts +7 -18
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/history.js.map +1 -1
- package/dist/cjs/types/index.d.ts +9 -15
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +4 -14
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/session.d.ts +94 -64
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/session.js +5 -1
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/cjs/types/tool.d.ts +37 -207
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/types/tool.js +5 -14
- package/dist/cjs/types/tool.js.map +1 -1
- package/dist/cjs/utils/clock.d.ts +28 -0
- package/dist/cjs/utils/clock.d.ts.map +1 -0
- package/dist/cjs/utils/clock.js +64 -0
- package/dist/cjs/utils/clock.js.map +1 -0
- package/dist/cjs/utils/duration.d.ts +11 -0
- package/dist/cjs/utils/duration.d.ts.map +1 -0
- package/dist/cjs/utils/duration.js +31 -0
- package/dist/cjs/utils/duration.js.map +1 -0
- package/dist/cjs/utils/history.d.ts +4 -1
- package/dist/cjs/utils/history.d.ts.map +1 -1
- package/dist/cjs/utils/history.js +2 -2
- package/dist/cjs/utils/history.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +4 -10
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +14 -61
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/json.d.ts +2 -0
- package/dist/cjs/utils/json.d.ts.map +1 -1
- package/dist/cjs/utils/json.js +5 -0
- package/dist/cjs/utils/json.js.map +1 -1
- package/dist/cjs/utils/outcomes.d.ts +48 -0
- package/dist/cjs/utils/outcomes.d.ts.map +1 -0
- package/dist/cjs/utils/outcomes.js +51 -0
- package/dist/cjs/utils/outcomes.js.map +1 -0
- package/dist/cjs/utils/schema.d.ts +50 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +138 -0
- package/dist/cjs/utils/schema.js.map +1 -0
- package/dist/cjs/utils/streamingMessage.d.ts +3 -2
- package/dist/cjs/utils/streamingMessage.d.ts.map +1 -1
- package/dist/cjs/utils/streamingMessage.js +38 -4
- package/dist/cjs/utils/streamingMessage.js.map +1 -1
- package/dist/cjs/utils/template.d.ts +13 -149
- package/dist/cjs/utils/template.d.ts.map +1 -1
- package/dist/cjs/utils/template.js +31 -363
- package/dist/cjs/utils/template.js.map +1 -1
- package/dist/cjs/utils/usage.d.ts +19 -0
- package/dist/cjs/utils/usage.d.ts.map +1 -0
- package/dist/cjs/utils/usage.js +35 -0
- package/dist/cjs/utils/usage.js.map +1 -0
- package/dist/core/Agent.d.ts +22 -378
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +107 -1181
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/CompactionEngine.d.ts.map +1 -1
- package/dist/core/CompactionEngine.js +5 -3
- package/dist/core/CompactionEngine.js.map +1 -1
- package/dist/core/FlowSpec.d.ts +136 -0
- package/dist/core/FlowSpec.d.ts.map +1 -0
- package/dist/core/FlowSpec.js +516 -0
- package/dist/core/FlowSpec.js.map +1 -0
- package/dist/core/Migrate.d.ts +38 -0
- package/dist/core/Migrate.d.ts.map +1 -0
- package/dist/core/Migrate.js +264 -0
- package/dist/core/Migrate.js.map +1 -0
- package/dist/core/Prompt.d.ts +54 -0
- package/dist/core/Prompt.d.ts.map +1 -0
- package/dist/core/Prompt.js +133 -0
- package/dist/core/Prompt.js.map +1 -0
- package/dist/core/Runner.d.ts +160 -0
- package/dist/core/Runner.d.ts.map +1 -0
- package/dist/core/Runner.js +1127 -0
- package/dist/core/Runner.js.map +1 -0
- package/dist/core/Speak.d.ts +37 -0
- package/dist/core/Speak.d.ts.map +1 -0
- package/dist/core/Speak.js +360 -0
- package/dist/core/Speak.js.map +1 -0
- package/dist/core/Understand.d.ts +28 -0
- package/dist/core/Understand.d.ts.map +1 -0
- package/dist/core/Understand.js +349 -0
- package/dist/core/Understand.js.map +1 -0
- package/dist/core/contracts.d.ts +122 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +10 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/falai.d.ts +57 -0
- package/dist/core/falai.d.ts.map +1 -0
- package/dist/core/falai.js +40 -0
- package/dist/core/falai.js.map +1 -0
- package/dist/core/predicate.d.ts +9 -0
- package/dist/core/predicate.d.ts.map +1 -0
- package/dist/core/predicate.js +54 -0
- package/dist/core/predicate.js.map +1 -0
- package/dist/index.d.ts +26 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/persistence/MemoryStore.d.ts +15 -0
- package/dist/persistence/MemoryStore.d.ts.map +1 -0
- package/dist/persistence/MemoryStore.js +35 -0
- package/dist/persistence/MemoryStore.js.map +1 -0
- package/dist/persistence/MongoStore.d.ts +42 -0
- package/dist/persistence/MongoStore.d.ts.map +1 -0
- package/dist/persistence/MongoStore.js +56 -0
- package/dist/persistence/MongoStore.js.map +1 -0
- package/dist/persistence/OpenSearchStore.d.ts +86 -0
- package/dist/persistence/OpenSearchStore.d.ts.map +1 -0
- package/dist/persistence/OpenSearchStore.js +116 -0
- package/dist/persistence/OpenSearchStore.js.map +1 -0
- package/dist/persistence/PostgresStore.d.ts +41 -0
- package/dist/persistence/PostgresStore.d.ts.map +1 -0
- package/dist/persistence/PostgresStore.js +54 -0
- package/dist/persistence/PostgresStore.js.map +1 -0
- package/dist/persistence/PrismaStore.d.ts +65 -0
- package/dist/persistence/PrismaStore.d.ts.map +1 -0
- package/dist/persistence/PrismaStore.js +91 -0
- package/dist/persistence/PrismaStore.js.map +1 -0
- package/dist/persistence/RedisStore.d.ts +34 -0
- package/dist/persistence/RedisStore.d.ts.map +1 -0
- package/dist/persistence/RedisStore.js +57 -0
- package/dist/persistence/RedisStore.js.map +1 -0
- package/dist/persistence/SQLiteStore.d.ts +45 -0
- package/dist/persistence/SQLiteStore.d.ts.map +1 -0
- package/dist/persistence/SQLiteStore.js +70 -0
- package/dist/persistence/SQLiteStore.js.map +1 -0
- package/dist/persistence/sessionRow.d.ts +14 -0
- package/dist/persistence/sessionRow.d.ts.map +1 -0
- package/dist/persistence/sessionRow.js +45 -0
- package/dist/persistence/sessionRow.js.map +1 -0
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +8 -3
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +4 -3
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +4 -3
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.d.ts +4 -0
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +2 -4
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/ProviderAdapter.d.ts +1 -1
- package/dist/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/providers/ProviderAdapter.js +34 -11
- package/dist/providers/ProviderAdapter.js.map +1 -1
- package/dist/types/agent.d.ts +153 -383
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +1 -1
- package/dist/types/ai.d.ts +32 -1
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/compaction.d.ts +3 -1
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/errors.d.ts +9 -12
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +12 -15
- package/dist/types/errors.js.map +1 -1
- package/dist/types/flow.d.ts +265 -513
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/flow.js +7 -1
- package/dist/types/flow.js.map +1 -1
- package/dist/types/history.d.ts +7 -18
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/history.js.map +1 -1
- package/dist/types/index.d.ts +9 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -7
- package/dist/types/index.js.map +1 -1
- package/dist/types/session.d.ts +94 -64
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +5 -1
- package/dist/types/session.js.map +1 -1
- package/dist/types/tool.d.ts +37 -207
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/types/tool.js +6 -13
- package/dist/types/tool.js.map +1 -1
- package/dist/utils/clock.d.ts +28 -0
- package/dist/utils/clock.d.ts.map +1 -0
- package/dist/utils/clock.js +59 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/duration.d.ts +11 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +26 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/history.d.ts +4 -1
- package/dist/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +2 -2
- package/dist/utils/history.js.map +1 -1
- package/dist/utils/index.d.ts +4 -10
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -21
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +4 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/outcomes.d.ts +48 -0
- package/dist/utils/outcomes.d.ts.map +1 -0
- package/dist/utils/outcomes.js +48 -0
- package/dist/utils/outcomes.js.map +1 -0
- package/dist/utils/schema.d.ts +50 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +129 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/streamingMessage.d.ts +3 -2
- package/dist/utils/streamingMessage.d.ts.map +1 -1
- package/dist/utils/streamingMessage.js +38 -4
- package/dist/utils/streamingMessage.js.map +1 -1
- package/dist/utils/template.d.ts +13 -149
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +28 -355
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/usage.d.ts +19 -0
- package/dist/utils/usage.d.ts.map +1 -0
- package/dist/utils/usage.js +31 -0
- package/dist/utils/usage.js.map +1 -0
- package/docs/README.md +37 -19
- package/docs/concepts/architecture.md +117 -239
- package/docs/concepts/collection.md +170 -0
- package/docs/concepts/pipeline.md +132 -378
- package/docs/concepts/runs-and-waits.md +192 -0
- package/docs/guides/actions-and-events.md +276 -0
- package/docs/guides/branching.md +119 -208
- package/docs/guides/compaction.md +63 -158
- package/docs/guides/conditions.md +164 -128
- package/docs/guides/error-handling.md +168 -164
- package/docs/guides/flow-control.md +210 -349
- package/docs/guides/flows-from-json.md +224 -0
- package/docs/guides/instructions.md +125 -161
- package/docs/guides/persistence.md +182 -206
- package/docs/guides/streaming.md +50 -114
- package/docs/guides/testing.md +284 -0
- package/docs/guides/triggers.md +401 -0
- package/docs/migration/README.md +8 -15
- package/docs/migration/v1-to-v2.md +1 -1
- package/docs/migration/v2-3-to-v2-4.md +2 -2
- package/docs/migration/v2-6-to-v2-7.md +4 -4
- package/docs/migration/v3-to-v4.md +452 -0
- package/docs/reference/actions-events-conditions.md +396 -0
- package/docs/reference/agent.md +244 -0
- package/docs/reference/branches.md +75 -203
- package/docs/reference/errors.md +188 -144
- package/docs/reference/fields.md +125 -0
- package/docs/reference/flow-spec.md +248 -0
- package/docs/reference/flow.md +104 -192
- package/docs/reference/instruction.md +83 -137
- package/docs/reference/outcomes.md +273 -0
- package/docs/reference/providers.md +525 -302
- package/docs/reference/session.md +210 -0
- package/docs/reference/step.md +194 -312
- package/docs/reference/stores.md +496 -0
- package/docs/reference/tool.md +162 -231
- package/docs/reference/trigger.md +180 -0
- package/docs/rfc/v4-one-flow.md +477 -0
- package/docs/start/01-install.md +59 -44
- package/docs/start/02-first-agent.md +97 -147
- package/docs/start/03-collect-data.md +78 -183
- package/docs/start/04-add-tools.md +159 -227
- package/docs/start/05-go-to-production.md +167 -164
- package/examples/01-quickstart.ts +26 -16
- package/examples/02-fields.ts +75 -0
- package/examples/03-tools.ts +79 -119
- package/examples/04-instructions.ts +60 -87
- package/examples/05-branches.ts +78 -0
- package/examples/06-triggers-and-waits.ts +148 -0
- package/examples/07-streaming.ts +34 -60
- package/examples/08-store-and-migration.ts +97 -0
- package/examples/09-flows-from-json.ts +107 -0
- package/package.json +9 -6
- package/src/core/Agent.ts +116 -1512
- package/src/core/CompactionEngine.ts +7 -4
- package/src/core/FlowSpec.ts +712 -0
- package/src/core/Migrate.ts +256 -0
- package/src/core/Prompt.ts +156 -0
- package/src/core/Runner.ts +1181 -0
- package/src/core/Speak.ts +451 -0
- package/src/core/Understand.ts +422 -0
- package/src/core/contracts.ts +111 -0
- package/src/core/falai.ts +86 -0
- package/src/core/predicate.ts +56 -0
- package/src/index.ts +119 -147
- package/src/persistence/MemoryStore.ts +37 -0
- package/src/persistence/MongoStore.ts +89 -0
- package/src/persistence/OpenSearchStore.ts +153 -0
- package/src/persistence/PostgresStore.ts +89 -0
- package/src/persistence/PrismaStore.ts +127 -0
- package/src/persistence/RedisStore.ts +90 -0
- package/src/persistence/SQLiteStore.ts +103 -0
- package/src/persistence/sessionRow.ts +45 -0
- package/src/providers/DeepSeekProvider.ts +8 -3
- package/src/providers/GeminiProvider.ts +4 -3
- package/src/providers/OpenAICompatibleProvider.ts +6 -0
- package/src/providers/OpenRouterProvider.ts +2 -4
- package/src/providers/ProviderAdapter.ts +36 -8
- package/src/types/agent.ts +124 -397
- package/src/types/ai.ts +33 -1
- package/src/types/compaction.ts +3 -1
- package/src/types/errors.ts +13 -16
- package/src/types/flow.ts +249 -550
- package/src/types/history.ts +7 -20
- package/src/types/index.ts +87 -139
- package/src/types/session.ts +135 -70
- package/src/types/tool.ts +42 -267
- package/src/utils/clock.ts +70 -0
- package/src/utils/duration.ts +33 -0
- package/src/utils/history.ts +3 -2
- package/src/utils/index.ts +8 -66
- package/src/utils/json.ts +5 -0
- package/src/utils/outcomes.ts +56 -0
- package/src/utils/schema.ts +145 -0
- package/src/utils/streamingMessage.ts +34 -4
- package/src/utils/template.ts +32 -423
- package/src/utils/usage.ts +37 -0
- package/dist/adapters/MemoryAdapter.d.ts +0 -47
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js +0 -204
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts +0 -97
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js +0 -196
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts +0 -169
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js +0 -471
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts +0 -85
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js +0 -308
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts +0 -115
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js +0 -406
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts +0 -72
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js +0 -286
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts +0 -86
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js +0 -337
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -17
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -11
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/sessionRow.d.ts +0 -22
- package/dist/adapters/sessionRow.d.ts.map +0 -1
- package/dist/adapters/sessionRow.js +0 -48
- package/dist/adapters/sessionRow.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts +0 -47
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js +0 -208
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts +0 -97
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js +0 -200
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts +0 -169
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +0 -475
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +0 -85
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +0 -312
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts +0 -115
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js +0 -410
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts +0 -72
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js +0 -290
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +0 -86
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +0 -341
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.d.ts +0 -17
- package/dist/cjs/adapters/index.d.ts.map +0 -1
- package/dist/cjs/adapters/index.js +0 -21
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/sessionRow.d.ts +0 -22
- package/dist/cjs/adapters/sessionRow.d.ts.map +0 -1
- package/dist/cjs/adapters/sessionRow.js +0 -52
- package/dist/cjs/adapters/sessionRow.js.map +0 -1
- package/dist/cjs/constants/index.d.ts +0 -1
- package/dist/cjs/constants/index.d.ts.map +0 -1
- package/dist/cjs/constants/index.js +0 -4
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +0 -97
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +0 -1
- package/dist/cjs/core/AutoChainExecutor.js +0 -288
- package/dist/cjs/core/AutoChainExecutor.js.map +0 -1
- package/dist/cjs/core/BranchEvaluator.d.ts +0 -55
- package/dist/cjs/core/BranchEvaluator.d.ts.map +0 -1
- package/dist/cjs/core/BranchEvaluator.js +0 -125
- package/dist/cjs/core/BranchEvaluator.js.map +0 -1
- package/dist/cjs/core/DirectiveChainTracker.d.ts +0 -49
- package/dist/cjs/core/DirectiveChainTracker.d.ts.map +0 -1
- package/dist/cjs/core/DirectiveChainTracker.js +0 -121
- package/dist/cjs/core/DirectiveChainTracker.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -26
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -144
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/Flow.d.ts +0 -183
- package/dist/cjs/core/Flow.d.ts.map +0 -1
- package/dist/cjs/core/Flow.js +0 -551
- package/dist/cjs/core/Flow.js.map +0 -1
- package/dist/cjs/core/FlowRouter.d.ts +0 -183
- package/dist/cjs/core/FlowRouter.d.ts.map +0 -1
- package/dist/cjs/core/FlowRouter.js +0 -1047
- package/dist/cjs/core/FlowRouter.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts +0 -114
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js +0 -336
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -47
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -397
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +0 -48
- package/dist/cjs/core/PromptSectionCache.d.ts.map +0 -1
- package/dist/cjs/core/PromptSectionCache.js +0 -108
- package/dist/cjs/core/PromptSectionCache.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -43
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -235
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/ResponseGenerationError.d.ts +0 -30
- package/dist/cjs/core/ResponseGenerationError.d.ts.map +0 -1
- package/dist/cjs/core/ResponseGenerationError.js +0 -35
- package/dist/cjs/core/ResponseGenerationError.js.map +0 -1
- package/dist/cjs/core/ResponseModal.d.ts +0 -305
- package/dist/cjs/core/ResponseModal.d.ts.map +0 -1
- package/dist/cjs/core/ResponseModal.js +0 -1414
- package/dist/cjs/core/ResponseModal.js.map +0 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +0 -220
- package/dist/cjs/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/cjs/core/ResponsePipeline.js +0 -1040
- package/dist/cjs/core/ResponsePipeline.js.map +0 -1
- package/dist/cjs/core/SessionFinalizer.d.ts +0 -34
- package/dist/cjs/core/SessionFinalizer.d.ts.map +0 -1
- package/dist/cjs/core/SessionFinalizer.js +0 -88
- package/dist/cjs/core/SessionFinalizer.js.map +0 -1
- package/dist/cjs/core/SessionManager.d.ts +0 -112
- package/dist/cjs/core/SessionManager.d.ts.map +0 -1
- package/dist/cjs/core/SessionManager.js +0 -308
- package/dist/cjs/core/SessionManager.js.map +0 -1
- package/dist/cjs/core/SignalCoordinator.d.ts +0 -103
- package/dist/cjs/core/SignalCoordinator.d.ts.map +0 -1
- package/dist/cjs/core/SignalCoordinator.js +0 -207
- package/dist/cjs/core/SignalCoordinator.js.map +0 -1
- package/dist/cjs/core/SignalEvaluator.d.ts +0 -86
- package/dist/cjs/core/SignalEvaluator.d.ts.map +0 -1
- package/dist/cjs/core/SignalEvaluator.js +0 -319
- package/dist/cjs/core/SignalEvaluator.js.map +0 -1
- package/dist/cjs/core/SignalProcessor.d.ts +0 -152
- package/dist/cjs/core/SignalProcessor.d.ts.map +0 -1
- package/dist/cjs/core/SignalProcessor.js +0 -505
- package/dist/cjs/core/SignalProcessor.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -184
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -599
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/StepLifecycle.d.ts +0 -43
- package/dist/cjs/core/StepLifecycle.d.ts.map +0 -1
- package/dist/cjs/core/StepLifecycle.js +0 -180
- package/dist/cjs/core/StepLifecycle.js.map +0 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +0 -142
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/StreamingToolExecutor.js +0 -490
- package/dist/cjs/core/StreamingToolExecutor.js.map +0 -1
- package/dist/cjs/core/ToolLoopExecutor.d.ts +0 -133
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolLoopExecutor.js +0 -568
- package/dist/cjs/core/ToolLoopExecutor.js.map +0 -1
- package/dist/cjs/core/ToolManager.d.ts +0 -250
- package/dist/cjs/core/ToolManager.d.ts.map +0 -1
- package/dist/cjs/core/ToolManager.js +0 -1104
- package/dist/cjs/core/ToolManager.js.map +0 -1
- package/dist/cjs/core/createAgent.d.ts +0 -35
- package/dist/cjs/core/createAgent.d.ts.map +0 -1
- package/dist/cjs/core/createAgent.js +0 -39
- package/dist/cjs/core/createAgent.js.map +0 -1
- package/dist/cjs/core/flow-namespace.d.ts +0 -64
- package/dist/cjs/core/flow-namespace.d.ts.map +0 -1
- package/dist/cjs/core/flow-namespace.js +0 -182
- package/dist/cjs/core/flow-namespace.js.map +0 -1
- package/dist/cjs/core/toolGates.d.ts +0 -24
- package/dist/cjs/core/toolGates.d.ts.map +0 -1
- package/dist/cjs/core/toolGates.js +0 -52
- package/dist/cjs/core/toolGates.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts +0 -254
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js +0 -7
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/prompt-cache.d.ts +0 -15
- package/dist/cjs/types/prompt-cache.d.ts.map +0 -1
- package/dist/cjs/types/prompt-cache.js +0 -6
- package/dist/cjs/types/prompt-cache.js.map +0 -1
- package/dist/cjs/types/signals.d.ts +0 -263
- package/dist/cjs/types/signals.d.ts.map +0 -1
- package/dist/cjs/types/signals.js +0 -11
- package/dist/cjs/types/signals.js.map +0 -1
- package/dist/cjs/types/template.d.ts +0 -84
- package/dist/cjs/types/template.d.ts.map +0 -1
- package/dist/cjs/types/template.js +0 -3
- package/dist/cjs/types/template.js.map +0 -1
- package/dist/cjs/utils/condition.d.ts +0 -63
- package/dist/cjs/utils/condition.d.ts.map +0 -1
- package/dist/cjs/utils/condition.js +0 -239
- package/dist/cjs/utils/condition.js.map +0 -1
- package/dist/cjs/utils/event.d.ts +0 -6
- package/dist/cjs/utils/event.d.ts.map +0 -1
- package/dist/cjs/utils/event.js +0 -20
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.d.ts +0 -33
- package/dist/cjs/utils/id.d.ts.map +0 -1
- package/dist/cjs/utils/id.js +0 -84
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/serialize.d.ts +0 -36
- package/dist/cjs/utils/serialize.d.ts.map +0 -1
- package/dist/cjs/utils/serialize.js +0 -77
- package/dist/cjs/utils/serialize.js.map +0 -1
- package/dist/cjs/utils/session.d.ts +0 -124
- package/dist/cjs/utils/session.d.ts.map +0 -1
- package/dist/cjs/utils/session.js +0 -396
- package/dist/cjs/utils/session.js.map +0 -1
- package/dist/constants/index.d.ts +0 -2
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -4
- package/dist/constants/index.js.map +0 -1
- package/dist/core/AutoChainExecutor.d.ts +0 -97
- package/dist/core/AutoChainExecutor.d.ts.map +0 -1
- package/dist/core/AutoChainExecutor.js +0 -284
- package/dist/core/AutoChainExecutor.js.map +0 -1
- package/dist/core/BranchEvaluator.d.ts +0 -55
- package/dist/core/BranchEvaluator.d.ts.map +0 -1
- package/dist/core/BranchEvaluator.js +0 -121
- package/dist/core/BranchEvaluator.js.map +0 -1
- package/dist/core/DirectiveChainTracker.d.ts +0 -49
- package/dist/core/DirectiveChainTracker.d.ts.map +0 -1
- package/dist/core/DirectiveChainTracker.js +0 -117
- package/dist/core/DirectiveChainTracker.js.map +0 -1
- package/dist/core/Events.d.ts +0 -26
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -137
- package/dist/core/Events.js.map +0 -1
- package/dist/core/Flow.d.ts +0 -183
- package/dist/core/Flow.d.ts.map +0 -1
- package/dist/core/Flow.js +0 -547
- package/dist/core/Flow.js.map +0 -1
- package/dist/core/FlowRouter.d.ts +0 -183
- package/dist/core/FlowRouter.d.ts.map +0 -1
- package/dist/core/FlowRouter.js +0 -1043
- package/dist/core/FlowRouter.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts +0 -114
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js +0 -332
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -47
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -393
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/PromptSectionCache.d.ts +0 -48
- package/dist/core/PromptSectionCache.d.ts.map +0 -1
- package/dist/core/PromptSectionCache.js +0 -104
- package/dist/core/PromptSectionCache.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -43
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -231
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/ResponseGenerationError.d.ts +0 -30
- package/dist/core/ResponseGenerationError.d.ts.map +0 -1
- package/dist/core/ResponseGenerationError.js +0 -31
- package/dist/core/ResponseGenerationError.js.map +0 -1
- package/dist/core/ResponseModal.d.ts +0 -305
- package/dist/core/ResponseModal.d.ts.map +0 -1
- package/dist/core/ResponseModal.js +0 -1410
- package/dist/core/ResponseModal.js.map +0 -1
- package/dist/core/ResponsePipeline.d.ts +0 -220
- package/dist/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/core/ResponsePipeline.js +0 -1035
- package/dist/core/ResponsePipeline.js.map +0 -1
- package/dist/core/SessionFinalizer.d.ts +0 -34
- package/dist/core/SessionFinalizer.d.ts.map +0 -1
- package/dist/core/SessionFinalizer.js +0 -84
- package/dist/core/SessionFinalizer.js.map +0 -1
- package/dist/core/SessionManager.d.ts +0 -112
- package/dist/core/SessionManager.d.ts.map +0 -1
- package/dist/core/SessionManager.js +0 -301
- package/dist/core/SessionManager.js.map +0 -1
- package/dist/core/SignalCoordinator.d.ts +0 -103
- package/dist/core/SignalCoordinator.d.ts.map +0 -1
- package/dist/core/SignalCoordinator.js +0 -203
- package/dist/core/SignalCoordinator.js.map +0 -1
- package/dist/core/SignalEvaluator.d.ts +0 -86
- package/dist/core/SignalEvaluator.d.ts.map +0 -1
- package/dist/core/SignalEvaluator.js +0 -312
- package/dist/core/SignalEvaluator.js.map +0 -1
- package/dist/core/SignalProcessor.d.ts +0 -152
- package/dist/core/SignalProcessor.d.ts.map +0 -1
- package/dist/core/SignalProcessor.js +0 -498
- package/dist/core/SignalProcessor.js.map +0 -1
- package/dist/core/Step.d.ts +0 -184
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -594
- package/dist/core/Step.js.map +0 -1
- package/dist/core/StepLifecycle.d.ts +0 -43
- package/dist/core/StepLifecycle.d.ts.map +0 -1
- package/dist/core/StepLifecycle.js +0 -176
- package/dist/core/StepLifecycle.js.map +0 -1
- package/dist/core/StreamingToolExecutor.d.ts +0 -142
- package/dist/core/StreamingToolExecutor.d.ts.map +0 -1
- package/dist/core/StreamingToolExecutor.js +0 -483
- package/dist/core/StreamingToolExecutor.js.map +0 -1
- package/dist/core/ToolLoopExecutor.d.ts +0 -133
- package/dist/core/ToolLoopExecutor.d.ts.map +0 -1
- package/dist/core/ToolLoopExecutor.js +0 -564
- package/dist/core/ToolLoopExecutor.js.map +0 -1
- package/dist/core/ToolManager.d.ts +0 -250
- package/dist/core/ToolManager.d.ts.map +0 -1
- package/dist/core/ToolManager.js +0 -1098
- package/dist/core/ToolManager.js.map +0 -1
- package/dist/core/createAgent.d.ts +0 -35
- package/dist/core/createAgent.d.ts.map +0 -1
- package/dist/core/createAgent.js +0 -36
- package/dist/core/createAgent.js.map +0 -1
- package/dist/core/flow-namespace.d.ts +0 -64
- package/dist/core/flow-namespace.d.ts.map +0 -1
- package/dist/core/flow-namespace.js +0 -179
- package/dist/core/flow-namespace.js.map +0 -1
- package/dist/core/toolGates.d.ts +0 -24
- package/dist/core/toolGates.d.ts.map +0 -1
- package/dist/core/toolGates.js +0 -49
- package/dist/core/toolGates.js.map +0 -1
- package/dist/types/persistence.d.ts +0 -254
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js +0 -6
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/prompt-cache.d.ts +0 -15
- package/dist/types/prompt-cache.d.ts.map +0 -1
- package/dist/types/prompt-cache.js +0 -5
- package/dist/types/prompt-cache.js.map +0 -1
- package/dist/types/signals.d.ts +0 -263
- package/dist/types/signals.d.ts.map +0 -1
- package/dist/types/signals.js +0 -10
- package/dist/types/signals.js.map +0 -1
- package/dist/types/template.d.ts +0 -84
- package/dist/types/template.d.ts.map +0 -1
- package/dist/types/template.js +0 -2
- package/dist/types/template.js.map +0 -1
- package/dist/utils/condition.d.ts +0 -63
- package/dist/utils/condition.d.ts.map +0 -1
- package/dist/utils/condition.js +0 -230
- package/dist/utils/condition.js.map +0 -1
- package/dist/utils/event.d.ts +0 -6
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js +0 -17
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts +0 -33
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js +0 -77
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/serialize.d.ts +0 -36
- package/dist/utils/serialize.d.ts.map +0 -1
- package/dist/utils/serialize.js +0 -72
- package/dist/utils/serialize.js.map +0 -1
- package/dist/utils/session.d.ts +0 -124
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -379
- package/dist/utils/session.js.map +0 -1
- package/docs/concepts/directives.md +0 -369
- package/docs/reference/adapters.md +0 -543
- package/docs/reference/create-agent.md +0 -216
- package/docs/reference/directive.md +0 -242
- package/docs/reference/signals.md +0 -368
- package/examples/02-data-extraction.ts +0 -90
- package/examples/05-branching.ts +0 -140
- package/examples/06-flow-control.ts +0 -103
- package/examples/08-persistence.ts +0 -98
- package/examples/09-signals.ts +0 -144
- package/src/adapters/MemoryAdapter.ts +0 -281
- package/src/adapters/MongoAdapter.ts +0 -341
- package/src/adapters/OpenSearchAdapter.ts +0 -693
- package/src/adapters/PostgreSQLAdapter.ts +0 -487
- package/src/adapters/PrismaAdapter.ts +0 -617
- package/src/adapters/RedisAdapter.ts +0 -439
- package/src/adapters/SQLiteAdapter.ts +0 -496
- package/src/adapters/index.ts +0 -43
- package/src/adapters/sessionRow.ts +0 -57
- package/src/constants/index.ts +0 -2
- package/src/core/AutoChainExecutor.ts +0 -397
- package/src/core/BranchEvaluator.ts +0 -161
- package/src/core/DirectiveChainTracker.ts +0 -144
- package/src/core/Events.ts +0 -164
- package/src/core/Flow.ts +0 -665
- package/src/core/FlowRouter.ts +0 -1540
- package/src/core/PersistenceManager.ts +0 -446
- package/src/core/PromptComposer.ts +0 -448
- package/src/core/PromptSectionCache.ts +0 -125
- package/src/core/ResponseEngine.ts +0 -338
- package/src/core/ResponseGenerationError.ts +0 -53
- package/src/core/ResponseModal.ts +0 -1902
- package/src/core/ResponsePipeline.ts +0 -1404
- package/src/core/SessionFinalizer.ts +0 -108
- package/src/core/SessionManager.ts +0 -372
- package/src/core/SignalCoordinator.ts +0 -263
- package/src/core/SignalEvaluator.ts +0 -404
- package/src/core/SignalProcessor.ts +0 -663
- package/src/core/Step.ts +0 -782
- package/src/core/StepLifecycle.ts +0 -242
- package/src/core/StreamingToolExecutor.ts +0 -609
- package/src/core/ToolLoopExecutor.ts +0 -749
- package/src/core/ToolManager.ts +0 -1379
- package/src/core/createAgent.ts +0 -40
- package/src/core/flow-namespace.ts +0 -227
- package/src/core/toolGates.ts +0 -72
- package/src/types/persistence.ts +0 -303
- package/src/types/prompt-cache.ts +0 -17
- package/src/types/signals.ts +0 -338
- package/src/types/template.ts +0 -98
- package/src/utils/condition.ts +0 -296
- package/src/utils/event.ts +0 -16
- package/src/utils/id.ts +0 -91
- package/src/utils/serialize.ts +0 -86
- package/src/utils/session.ts +0 -501
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading stored session blobs.
|
|
3
|
+
*
|
|
4
|
+
* `assertSession` is the v4 shape check every store runs on load.
|
|
5
|
+
* `migrateSession` lifts a 3.x `SessionState` into a v4 `Session` once, at
|
|
6
|
+
* the host's choke point (design §10). Both fail loudly: a row that is
|
|
7
|
+
* neither a v4 session nor a recognisable 3.x blob throws
|
|
8
|
+
* `InvalidSessionError` and never comes back as a fresh conversation, which
|
|
9
|
+
* would silently re-ask every field and re-fire every once-flow.
|
|
10
|
+
*/
|
|
11
|
+
import { isRecord } from "../utils/json.js";
|
|
12
|
+
/** A stored row that cannot be read as a session. */
|
|
13
|
+
export class InvalidSessionError extends Error {
|
|
14
|
+
constructor(sessionId, why) {
|
|
15
|
+
super(`[InvalidSessionError] stored session "${sessionId}" is unreadable: ${why}. ` +
|
|
16
|
+
`Repair or delete the row; it is never replaced by a fresh conversation.`);
|
|
17
|
+
this.sessionId = sessionId;
|
|
18
|
+
this.name = "InvalidSessionError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const isWhole = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
22
|
+
/** Short description of a value for error messages. */
|
|
23
|
+
function describe(value) {
|
|
24
|
+
if (value === undefined)
|
|
25
|
+
return "missing";
|
|
26
|
+
if (value === null)
|
|
27
|
+
return "null";
|
|
28
|
+
if (Array.isArray(value))
|
|
29
|
+
return "a list";
|
|
30
|
+
if (typeof value === "string")
|
|
31
|
+
return `"${value}"`;
|
|
32
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
33
|
+
return String(value);
|
|
34
|
+
return typeof value === "object" ? "an object" : `a ${typeof value}`;
|
|
35
|
+
}
|
|
36
|
+
// ── v4 ──────────────────────────────────────────────────────────────────
|
|
37
|
+
const RUN_STATUS = new Set(["running", "asking", "waiting", "suspended"]);
|
|
38
|
+
/**
|
|
39
|
+
* A v4 blob back to a `Session`, holding only the session keys (a store's
|
|
40
|
+
* own `createdAt`/`updatedAt` are dropped). Throws `InvalidSessionError`
|
|
41
|
+
* when the shape is off.
|
|
42
|
+
*/
|
|
43
|
+
export function assertSession(blob, sessionId) {
|
|
44
|
+
const bad = (why) => new InvalidSessionError(sessionId, why);
|
|
45
|
+
if (!isRecord(blob))
|
|
46
|
+
throw bad(`expected an object, got ${describe(blob)}`);
|
|
47
|
+
if (blob.v !== 4)
|
|
48
|
+
throw bad(`v is ${describe(blob.v)}, expected 4`);
|
|
49
|
+
if (blob.id !== sessionId)
|
|
50
|
+
throw bad(`id is ${describe(blob.id)}, expected "${sessionId}"`);
|
|
51
|
+
const { version, data, runs, claims, inputs, metadata, history, lastUserAt, lastAssistantAt } = blob;
|
|
52
|
+
if (!isWhole(version))
|
|
53
|
+
throw bad(`version is ${describe(version)}, expected a whole number`);
|
|
54
|
+
if (!isRecord(data))
|
|
55
|
+
throw bad(`data is ${describe(data)}, expected an object`);
|
|
56
|
+
if (!Array.isArray(runs))
|
|
57
|
+
throw bad(`runs is ${describe(runs)}, expected a list`);
|
|
58
|
+
if (!isRecord(claims) || !Object.values(claims).every((c) => isRecord(c) && typeof c.at === "string")) {
|
|
59
|
+
throw bad("claims is not a map of { at }");
|
|
60
|
+
}
|
|
61
|
+
if (!Array.isArray(inputs) || !inputs.every((i) => typeof i === "string"))
|
|
62
|
+
throw bad("inputs is not a list of ids");
|
|
63
|
+
if (!isRecord(metadata))
|
|
64
|
+
throw bad(`metadata is ${describe(metadata)}, expected an object`);
|
|
65
|
+
if (history !== undefined && !Array.isArray(history))
|
|
66
|
+
throw bad(`history is ${describe(history)}, expected a list`);
|
|
67
|
+
if (lastUserAt !== undefined && typeof lastUserAt !== "string")
|
|
68
|
+
throw bad("lastUserAt is not text");
|
|
69
|
+
if (lastAssistantAt !== undefined && typeof lastAssistantAt !== "string")
|
|
70
|
+
throw bad("lastAssistantAt is not text");
|
|
71
|
+
const session = {
|
|
72
|
+
id: sessionId,
|
|
73
|
+
v: 4,
|
|
74
|
+
version,
|
|
75
|
+
data: data,
|
|
76
|
+
runs: runs.map((run, i) => checkRun(run, i, bad)),
|
|
77
|
+
claims: claims,
|
|
78
|
+
inputs,
|
|
79
|
+
metadata,
|
|
80
|
+
};
|
|
81
|
+
if (lastUserAt !== undefined)
|
|
82
|
+
session.lastUserAt = lastUserAt;
|
|
83
|
+
if (lastAssistantAt !== undefined)
|
|
84
|
+
session.lastAssistantAt = lastAssistantAt;
|
|
85
|
+
if (history !== undefined)
|
|
86
|
+
session.history = history;
|
|
87
|
+
return session;
|
|
88
|
+
}
|
|
89
|
+
function checkRun(raw, index, bad) {
|
|
90
|
+
const at = `runs[${index}]`;
|
|
91
|
+
if (!isRecord(raw))
|
|
92
|
+
throw bad(`${at} is ${describe(raw)}, expected an object`);
|
|
93
|
+
const text = (key) => {
|
|
94
|
+
const value = raw[key];
|
|
95
|
+
if (typeof value !== "string")
|
|
96
|
+
throw bad(`${at}.${key} is ${describe(value)}, expected text`);
|
|
97
|
+
return value;
|
|
98
|
+
};
|
|
99
|
+
const record = (key) => {
|
|
100
|
+
const value = raw[key];
|
|
101
|
+
if (!isRecord(value))
|
|
102
|
+
throw bad(`${at}.${key} is ${describe(value)}, expected an object`);
|
|
103
|
+
return value;
|
|
104
|
+
};
|
|
105
|
+
const status = text("status");
|
|
106
|
+
if (!RUN_STATUS.has(status))
|
|
107
|
+
throw bad(`${at}.status is "${status}"`);
|
|
108
|
+
const { stepId, hop, outcomes, input, waiting, suspendedAt } = raw;
|
|
109
|
+
if (stepId !== null && typeof stepId !== "string")
|
|
110
|
+
throw bad(`${at}.stepId is ${describe(stepId)}, expected text or null`);
|
|
111
|
+
if (!isWhole(hop))
|
|
112
|
+
throw bad(`${at}.hop is ${describe(hop)}, expected a whole number`);
|
|
113
|
+
if (!Array.isArray(outcomes))
|
|
114
|
+
throw bad(`${at}.outcomes is ${describe(outcomes)}, expected a list`);
|
|
115
|
+
const trigger = record("trigger");
|
|
116
|
+
if (typeof trigger.kind !== "string" || typeof trigger.key !== "string")
|
|
117
|
+
throw bad(`${at}.trigger needs kind and key`);
|
|
118
|
+
if (waiting !== undefined && !isRecord(waiting))
|
|
119
|
+
throw bad(`${at}.waiting is ${describe(waiting)}, expected an object`);
|
|
120
|
+
// ponytail: outcomes, waiting and the asked/visits counters are trusted below
|
|
121
|
+
// the keys checked here; every writer is this package. Upgrade: a full schema check.
|
|
122
|
+
const run = {
|
|
123
|
+
id: text("id"),
|
|
124
|
+
flowId: text("flowId"),
|
|
125
|
+
anchor: text("anchor"),
|
|
126
|
+
dedupeKey: text("dedupeKey"),
|
|
127
|
+
stepId,
|
|
128
|
+
status: status,
|
|
129
|
+
trigger: trigger,
|
|
130
|
+
hop,
|
|
131
|
+
startedAt: text("startedAt"),
|
|
132
|
+
asked: record("asked"),
|
|
133
|
+
visits: record("visits"),
|
|
134
|
+
outcomes: outcomes,
|
|
135
|
+
};
|
|
136
|
+
if (input !== undefined)
|
|
137
|
+
run.input = input;
|
|
138
|
+
if (waiting !== undefined)
|
|
139
|
+
run.waiting = waiting;
|
|
140
|
+
if (typeof suspendedAt === "string")
|
|
141
|
+
run.suspendedAt = suspendedAt;
|
|
142
|
+
return run;
|
|
143
|
+
}
|
|
144
|
+
// ── 3.x → 4 ─────────────────────────────────────────────────────────────
|
|
145
|
+
/**
|
|
146
|
+
* A stored blob to a v4 `Session`. A v4 blob passes through `assertSession`.
|
|
147
|
+
* A 3.x `SessionState` becomes: `data` verbatim; `currentFlow`/`currentStep`
|
|
148
|
+
* one run at the same step; every fired signal and every completed flow a
|
|
149
|
+
* `once` claim, so nothing re-fires; `pendingDirective` dropped; `metadata`
|
|
150
|
+
* kept with its dates as ISO text. Anything else throws `InvalidSessionError`.
|
|
151
|
+
*/
|
|
152
|
+
export function migrateSession(blob, options) {
|
|
153
|
+
const { sessionId } = options;
|
|
154
|
+
const bad = (why) => new InvalidSessionError(sessionId, why);
|
|
155
|
+
if (!isRecord(blob))
|
|
156
|
+
throw bad(`expected an object, got ${describe(blob)}`);
|
|
157
|
+
if ("v" in blob)
|
|
158
|
+
return assertSession(blob, sessionId);
|
|
159
|
+
return fromLegacy(blob, options, bad);
|
|
160
|
+
}
|
|
161
|
+
function fromLegacy(blob, options, bad) {
|
|
162
|
+
const { sessionId, flowIdOf } = options;
|
|
163
|
+
const { data, metadata, history, flowHistory, signals } = blob;
|
|
164
|
+
if (!isRecord(data))
|
|
165
|
+
throw bad(`data is ${describe(data)}, expected an object; not a 3.x session either`);
|
|
166
|
+
if (metadata !== undefined && !isRecord(metadata))
|
|
167
|
+
throw bad(`metadata is ${describe(metadata)}, expected an object`);
|
|
168
|
+
if (history !== undefined && !Array.isArray(history))
|
|
169
|
+
throw bad(`history is ${describe(history)}, expected a list`);
|
|
170
|
+
if (flowHistory !== undefined && !Array.isArray(flowHistory))
|
|
171
|
+
throw bad(`flowHistory is ${describe(flowHistory)}, expected a list`);
|
|
172
|
+
if (signals !== undefined && !isRecord(signals))
|
|
173
|
+
throw bad(`signals is ${describe(signals)}, expected an object`);
|
|
174
|
+
const triggers = signals?.triggers ?? {};
|
|
175
|
+
if (!isRecord(triggers))
|
|
176
|
+
throw bad(`signals.triggers is ${describe(triggers)}, expected an object`);
|
|
177
|
+
const fallback = (options.now ?? new Date()).toISOString();
|
|
178
|
+
const claimKey = (key) => `${flowIdOf(key)}:${sessionId}:`;
|
|
179
|
+
const claims = {};
|
|
180
|
+
for (const [i, entry] of (flowHistory ?? []).entries()) {
|
|
181
|
+
if (!isRecord(entry) || typeof entry.flowId !== "string")
|
|
182
|
+
throw bad(`flowHistory[${i}] is not a flow entry`);
|
|
183
|
+
if (entry.completed === true) {
|
|
184
|
+
claims[claimKey(entry.flowId)] = { at: toIso(entry.exitedAt) ?? toIso(entry.enteredAt) ?? fallback };
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const [key, state] of Object.entries(triggers)) {
|
|
188
|
+
if (!isRecord(state))
|
|
189
|
+
throw bad(`signals.triggers.${key} is not a trigger state`);
|
|
190
|
+
claims[claimKey(key)] = { at: toIso(state.lastTriggeredAt) ?? toIso(state.firstTriggeredAt) ?? fallback };
|
|
191
|
+
}
|
|
192
|
+
const runs = [];
|
|
193
|
+
const flowRef = legacyRef(blob.currentFlow, "currentFlow", bad);
|
|
194
|
+
const stepRef = legacyRef(blob.currentStep, "currentStep", bad);
|
|
195
|
+
if (flowRef) {
|
|
196
|
+
const flowId = flowIdOf(flowRef.id);
|
|
197
|
+
const startedAt = toIso(flowRef.enteredAt) ?? fallback;
|
|
198
|
+
const stepId = stepRef?.id ?? null;
|
|
199
|
+
runs.push({
|
|
200
|
+
id: `${flowId}#legacy`,
|
|
201
|
+
flowId,
|
|
202
|
+
anchor: sessionId,
|
|
203
|
+
dedupeKey: `${flowId}:${sessionId}:`,
|
|
204
|
+
stepId,
|
|
205
|
+
// A flow entered before its first step is a fresh run; at a step it is asking there.
|
|
206
|
+
status: stepId === null ? "running" : "asking",
|
|
207
|
+
trigger: { kind: "message", key: "legacy" },
|
|
208
|
+
hop: 0,
|
|
209
|
+
startedAt,
|
|
210
|
+
asked: {},
|
|
211
|
+
visits: {},
|
|
212
|
+
outcomes: [],
|
|
213
|
+
});
|
|
214
|
+
// Invariant I5: a run never exists without its claim.
|
|
215
|
+
claims[`${flowId}:${sessionId}:`] = { at: startedAt };
|
|
216
|
+
}
|
|
217
|
+
const session = {
|
|
218
|
+
id: sessionId,
|
|
219
|
+
v: 4,
|
|
220
|
+
// A migrated session has no v4 row yet: 0 makes the host's first save an insert.
|
|
221
|
+
version: 0,
|
|
222
|
+
data: data,
|
|
223
|
+
runs,
|
|
224
|
+
claims,
|
|
225
|
+
inputs: [],
|
|
226
|
+
metadata: recordDatesToIso(metadata ?? {}),
|
|
227
|
+
};
|
|
228
|
+
if (history !== undefined)
|
|
229
|
+
session.history = history;
|
|
230
|
+
return session;
|
|
231
|
+
}
|
|
232
|
+
/** `currentFlow`/`currentStep` as 3.x wrote them: `{ id, enteredAt? }` in the blob, a bare id in a row. */
|
|
233
|
+
function legacyRef(value, name, bad) {
|
|
234
|
+
if (value === undefined || value === null)
|
|
235
|
+
return undefined;
|
|
236
|
+
if (typeof value === "string")
|
|
237
|
+
return value ? { id: value } : undefined;
|
|
238
|
+
if (isRecord(value) && typeof value.id === "string")
|
|
239
|
+
return { id: value.id, enteredAt: value.enteredAt };
|
|
240
|
+
throw bad(`${name} is ${describe(value)}, expected { id } or text`);
|
|
241
|
+
}
|
|
242
|
+
/** A Date, ISO text or epoch number as ISO text; anything else is nothing. */
|
|
243
|
+
function toIso(value) {
|
|
244
|
+
if (value instanceof Date)
|
|
245
|
+
return Number.isNaN(value.getTime()) ? undefined : value.toISOString();
|
|
246
|
+
if (typeof value === "number" || (typeof value === "string" && /^\d{4}-\d{2}-\d{2}/.test(value))) {
|
|
247
|
+
const ms = new Date(value).getTime();
|
|
248
|
+
return Number.isNaN(ms) ? undefined : new Date(ms).toISOString();
|
|
249
|
+
}
|
|
250
|
+
return undefined;
|
|
251
|
+
}
|
|
252
|
+
function recordDatesToIso(record) {
|
|
253
|
+
return Object.fromEntries(Object.entries(record).map(([key, value]) => [key, datesToIso(value)]));
|
|
254
|
+
}
|
|
255
|
+
function datesToIso(value) {
|
|
256
|
+
if (value instanceof Date)
|
|
257
|
+
return toIso(value) ?? null;
|
|
258
|
+
if (Array.isArray(value))
|
|
259
|
+
return value.map(datesToIso);
|
|
260
|
+
if (isRecord(value))
|
|
261
|
+
return recordDatesToIso(value);
|
|
262
|
+
return value;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=Migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt sections shared by the understand and speak calls.
|
|
3
|
+
*
|
|
4
|
+
* Each function returns one markdown section or `null` when there is nothing
|
|
5
|
+
* to say; `joinSections` drops the nulls. Templates are rendered against the
|
|
6
|
+
* turn's scope. Instruction `if` predicates are judged by the caller (they
|
|
7
|
+
* need the runtime); only `when` reaches the prompt, as text for the model.
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentOptions } from "../types/agent.js";
|
|
10
|
+
import type { FieldDef, Instruction } from "../types/flow.js";
|
|
11
|
+
import { type TemplateScope } from "../utils/template.js";
|
|
12
|
+
export declare function joinSections(...parts: Array<string | null | undefined>): string;
|
|
13
|
+
/** Who the agent is: name, persona, goal. */
|
|
14
|
+
export declare function identitySection(options: Pick<AgentOptions, "name" | "persona" | "goal">, scope: TemplateScope): string;
|
|
15
|
+
/**
|
|
16
|
+
* Split the prompt's opening into the half that repeats every turn and the
|
|
17
|
+
* half that does not.
|
|
18
|
+
*
|
|
19
|
+
* The stable half goes out as a system message so a provider can cache it: on
|
|
20
|
+
* Anthropic that block is the one thing carrying a `cache_control` marker, and
|
|
21
|
+
* a cache read is a tenth the price of the tokens it replaces. Sent as part of
|
|
22
|
+
* the trailing user turn — which is where the whole prompt used to go — it sat
|
|
23
|
+
* behind text that changes every turn, so nothing was ever cached and both
|
|
24
|
+
* calls of every turn re-billed the identity and the knowledge base in full.
|
|
25
|
+
*
|
|
26
|
+
* The line is drawn at "does this text interpolate", not at "is this identity".
|
|
27
|
+
* `persona` and `goal` render through the turn's scope, so a persona that
|
|
28
|
+
* mentions a collected field changes the moment that field lands: cached, it
|
|
29
|
+
* would pay the write every turn and never read. Those go back inline.
|
|
30
|
+
*/
|
|
31
|
+
export declare function stablePrefix(options: Pick<AgentOptions, "name" | "persona" | "goal" | "knowledgeBase">, scope: TemplateScope): {
|
|
32
|
+
system: string | null;
|
|
33
|
+
inline: string | null;
|
|
34
|
+
};
|
|
35
|
+
/** Any JSON the agent should know, as nested bullets. */
|
|
36
|
+
export declare function knowledgeSection(knowledge: Record<string, unknown> | undefined): string | null;
|
|
37
|
+
export interface InstructionGroup<C = unknown, D = unknown> {
|
|
38
|
+
/** `[Always]`, `[In: Triagem]`, `[Step: quem]`. */
|
|
39
|
+
caption: string;
|
|
40
|
+
/** Already filtered by their `if`. */
|
|
41
|
+
items: Instruction<C, D>[];
|
|
42
|
+
}
|
|
43
|
+
/** Behavioural statements with their kind and AI-judged `when`. */
|
|
44
|
+
export declare function instructionsSection<C, D>(groups: InstructionGroup<C, D>[], scope: TemplateScope): string | null;
|
|
45
|
+
/** Collected fields the model must treat as settled. */
|
|
46
|
+
export declare function factsSection(fields: Record<string, FieldDef>, data: Record<string, unknown>): string | null;
|
|
47
|
+
/** One line describing a field for the model: slug, type, options, description. */
|
|
48
|
+
export declare function describeField(slug: string, def: FieldDef): string;
|
|
49
|
+
/**
|
|
50
|
+
* The fields a talk step still needs, each with how to ask for it. `asks`
|
|
51
|
+
* holds the step's own wording; the field's `ask` is the fallback.
|
|
52
|
+
*/
|
|
53
|
+
export declare function pendingSection(pending: string[], fields: Record<string, FieldDef>, asks: Partial<Record<string, string>>, scope: TemplateScope): string | null;
|
|
54
|
+
//# sourceMappingURL=Prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../src/core/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAE/E;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAC7B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,EACxD,KAAK,EAAE,aAAa,GACnB,MAAM,CAKR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC,EAC1E,KAAK,EAAE,aAAa,GACnB;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAMlD;AAMD,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAG9F;AA6BD,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACxD,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAC5B;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAY/G;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAQ3G;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,CAIjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACrC,KAAK,EAAE,aAAa,GACnB,MAAM,GAAG,IAAI,CAaf"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt sections shared by the understand and speak calls.
|
|
3
|
+
*
|
|
4
|
+
* Each function returns one markdown section or `null` when there is nothing
|
|
5
|
+
* to say; `joinSections` drops the nulls. Templates are rendered against the
|
|
6
|
+
* turn's scope. Instruction `if` predicates are judged by the caller (they
|
|
7
|
+
* need the runtime); only `when` reaches the prompt, as text for the model.
|
|
8
|
+
*/
|
|
9
|
+
import { isKnown } from "../utils/schema.js";
|
|
10
|
+
import { render } from "../utils/template.js";
|
|
11
|
+
export function joinSections(...parts) {
|
|
12
|
+
return parts.filter((p) => typeof p === "string" && p.trim() !== "").join("\n\n").trim();
|
|
13
|
+
}
|
|
14
|
+
/** Who the agent is: name, persona, goal. */
|
|
15
|
+
export function identitySection(options, scope) {
|
|
16
|
+
const lines = ["## Identity", `You are "${options.name}". Always refer to yourself by this name.`];
|
|
17
|
+
if (options.persona)
|
|
18
|
+
lines.push(render(options.persona, scope));
|
|
19
|
+
if (options.goal)
|
|
20
|
+
lines.push(`Your goal: ${render(options.goal, scope)}`);
|
|
21
|
+
return lines.join("\n");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Split the prompt's opening into the half that repeats every turn and the
|
|
25
|
+
* half that does not.
|
|
26
|
+
*
|
|
27
|
+
* The stable half goes out as a system message so a provider can cache it: on
|
|
28
|
+
* Anthropic that block is the one thing carrying a `cache_control` marker, and
|
|
29
|
+
* a cache read is a tenth the price of the tokens it replaces. Sent as part of
|
|
30
|
+
* the trailing user turn — which is where the whole prompt used to go — it sat
|
|
31
|
+
* behind text that changes every turn, so nothing was ever cached and both
|
|
32
|
+
* calls of every turn re-billed the identity and the knowledge base in full.
|
|
33
|
+
*
|
|
34
|
+
* The line is drawn at "does this text interpolate", not at "is this identity".
|
|
35
|
+
* `persona` and `goal` render through the turn's scope, so a persona that
|
|
36
|
+
* mentions a collected field changes the moment that field lands: cached, it
|
|
37
|
+
* would pay the write every turn and never read. Those go back inline.
|
|
38
|
+
*/
|
|
39
|
+
export function stablePrefix(options, scope) {
|
|
40
|
+
const identity = identitySection(options, scope);
|
|
41
|
+
const knowledge = knowledgeSection(options.knowledgeBase);
|
|
42
|
+
const varies = isTemplated(options.persona) || isTemplated(options.goal);
|
|
43
|
+
if (varies)
|
|
44
|
+
return { system: knowledge, inline: identity };
|
|
45
|
+
return { system: joinSections(identity, knowledge) || null, inline: null };
|
|
46
|
+
}
|
|
47
|
+
function isTemplated(text) {
|
|
48
|
+
return typeof text === "string" && text.includes("{{");
|
|
49
|
+
}
|
|
50
|
+
/** Any JSON the agent should know, as nested bullets. */
|
|
51
|
+
export function knowledgeSection(knowledge) {
|
|
52
|
+
if (!knowledge || Object.keys(knowledge).length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
return ["## Knowledge base", ...formatObject(knowledge, 0)].join("\n");
|
|
55
|
+
}
|
|
56
|
+
function formatObject(value, depth) {
|
|
57
|
+
const pad = " ".repeat(depth);
|
|
58
|
+
const lines = [];
|
|
59
|
+
for (const [key, item] of Object.entries(value)) {
|
|
60
|
+
if (item !== null && typeof item === "object" && !Array.isArray(item)) {
|
|
61
|
+
lines.push(`${pad}- ${key}:`);
|
|
62
|
+
lines.push(...formatObject(item, depth + 1));
|
|
63
|
+
}
|
|
64
|
+
else if (Array.isArray(item) && item.some((i) => i !== null && typeof i === "object")) {
|
|
65
|
+
lines.push(`${pad}- ${key}:`);
|
|
66
|
+
for (const i of item) {
|
|
67
|
+
lines.push(...(i !== null && typeof i === "object"
|
|
68
|
+
? formatObject(i, depth + 1)
|
|
69
|
+
: [`${pad} - ${scalar(i)}`]));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
lines.push(`${pad}- ${key}: ${Array.isArray(item) ? item.map(scalar).join(", ") : scalar(item)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return lines;
|
|
77
|
+
}
|
|
78
|
+
function scalar(value) {
|
|
79
|
+
return typeof value === "string" ? value : JSON.stringify(value);
|
|
80
|
+
}
|
|
81
|
+
/** Behavioural statements with their kind and AI-judged `when`. */
|
|
82
|
+
export function instructionsSection(groups, scope) {
|
|
83
|
+
const lines = [];
|
|
84
|
+
for (const group of groups) {
|
|
85
|
+
for (const item of group.items) {
|
|
86
|
+
const text = render(item.prompt, scope).trim();
|
|
87
|
+
if (!text)
|
|
88
|
+
continue;
|
|
89
|
+
const when = item.when === undefined ? [] : Array.isArray(item.when) ? item.when : [item.when];
|
|
90
|
+
const condition = when.length ? ` (apply only when: ${when.join(" OR ")})` : "";
|
|
91
|
+
lines.push(`- [${item.kind ?? "should"}] ${group.caption} ${text}${condition}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return lines.length ? ["## Instructions", ...lines].join("\n") : null;
|
|
95
|
+
}
|
|
96
|
+
/** Collected fields the model must treat as settled. */
|
|
97
|
+
export function factsSection(fields, data) {
|
|
98
|
+
const known = Object.keys(fields).filter((slug) => isKnown(data[slug]));
|
|
99
|
+
if (known.length === 0)
|
|
100
|
+
return null;
|
|
101
|
+
return [
|
|
102
|
+
"## Already known",
|
|
103
|
+
"These are settled. Never ask for them again; acknowledge and move on.",
|
|
104
|
+
...known.map((slug) => `- ${slug}: ${JSON.stringify(data[slug])}`),
|
|
105
|
+
].join("\n");
|
|
106
|
+
}
|
|
107
|
+
/** One line describing a field for the model: slug, type, options, description. */
|
|
108
|
+
export function describeField(slug, def) {
|
|
109
|
+
const options = def.enum ? ` [${def.enum.map(String).join(" | ")}]` : "";
|
|
110
|
+
const description = def.description ? `: ${def.description}` : "";
|
|
111
|
+
return `${slug} (${def.type})${options}${description}`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The fields a talk step still needs, each with how to ask for it. `asks`
|
|
115
|
+
* holds the step's own wording; the field's `ask` is the fallback.
|
|
116
|
+
*/
|
|
117
|
+
export function pendingSection(pending, fields, asks, scope) {
|
|
118
|
+
if (pending.length === 0)
|
|
119
|
+
return null;
|
|
120
|
+
const lines = pending.map((slug) => {
|
|
121
|
+
const def = fields[slug];
|
|
122
|
+
if (!def)
|
|
123
|
+
return `- ${slug}`;
|
|
124
|
+
const ask = asks[slug] ?? def.ask;
|
|
125
|
+
return `- ${describeField(slug, def)}${ask ? `\n How to ask: ${render(ask, scope)}` : ""}`;
|
|
126
|
+
});
|
|
127
|
+
return [
|
|
128
|
+
"## Still to collect",
|
|
129
|
+
"Ask for these, in this order, at the pace the step prompt sets. When the customer's message already answers one, take the value and do not ask again.",
|
|
130
|
+
...lines,
|
|
131
|
+
].join("\n");
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=Prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../src/core/Prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner: the code half of a turn. Load, Ingest, Decide, Run, Settle and
|
|
3
|
+
* Return (design §4) with one applier, `advance`. Zero provider calls live
|
|
4
|
+
* here: the Agent asks `understandRequest` and `advance` what to judge and
|
|
5
|
+
* what to speak, spends the calls, and hands the plain results back to
|
|
6
|
+
* `decide` and `settle`.
|
|
7
|
+
*
|
|
8
|
+
* begin ─▶ understandRequest ─(Understand)─▶ decide ─▶ advance ─(Speak)─▶ settle ─▶ finish
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentOptions, TurnInput, TurnResult } from "../types/agent.js";
|
|
11
|
+
import type { TokenUsage } from "../types/ai.js";
|
|
12
|
+
import type { Run, Session, StepOutcome } from "../types/session.js";
|
|
13
|
+
import type { IdleRequest, InputKind, SpeakOutcome, SpeakRequest, TalkRequest, UnderstandRequest, Understanding } from "./contracts.js";
|
|
14
|
+
/** What started the turn, already narrowed. */
|
|
15
|
+
export type What = {
|
|
16
|
+
kind: "message";
|
|
17
|
+
text: string;
|
|
18
|
+
id?: string;
|
|
19
|
+
at: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: "wake";
|
|
22
|
+
key: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "event";
|
|
25
|
+
name: string;
|
|
26
|
+
payload: unknown;
|
|
27
|
+
key: string;
|
|
28
|
+
hop: number;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "start";
|
|
31
|
+
flow: string;
|
|
32
|
+
input: unknown;
|
|
33
|
+
key: string;
|
|
34
|
+
hop: number;
|
|
35
|
+
};
|
|
36
|
+
/** The mutable per-turn state. `session` is a deep copy; the input is never touched. */
|
|
37
|
+
export interface Turn<C = unknown, D = unknown> {
|
|
38
|
+
readonly input: TurnInput<C, D>;
|
|
39
|
+
readonly what: What;
|
|
40
|
+
readonly kind: InputKind;
|
|
41
|
+
/** Message id, wake key, event key or start key: the trigger key of runs started this turn. */
|
|
42
|
+
readonly triggerKey: string;
|
|
43
|
+
readonly session: Session<D>;
|
|
44
|
+
readonly original?: Session<D>;
|
|
45
|
+
readonly now: Date;
|
|
46
|
+
readonly nowIso: string;
|
|
47
|
+
readonly context: C;
|
|
48
|
+
readonly silenced?: string;
|
|
49
|
+
/** The host gate allows the understand call even though the assistant cannot speak. */
|
|
50
|
+
readonly understandAllowed: boolean;
|
|
51
|
+
/** Set by a short-circuit: the input is a no-op and nothing is saved. */
|
|
52
|
+
ignored: boolean;
|
|
53
|
+
messages: TurnResult<D>["messages"];
|
|
54
|
+
schedule: TurnResult<D>["schedule"];
|
|
55
|
+
outcomes: StepOutcome[];
|
|
56
|
+
started: TurnResult<D>["started"];
|
|
57
|
+
ended: TurnResult<D>["ended"];
|
|
58
|
+
skipped: TurnResult<D>["skipped"];
|
|
59
|
+
llmCalls: number;
|
|
60
|
+
usage?: TokenUsage;
|
|
61
|
+
/** The run holding the floor this turn: resolved in Ingest, routed in Decide, or the asker. */
|
|
62
|
+
floorRunId?: string;
|
|
63
|
+
/** A run took or resumed the floor in Ingest: routing is skipped. */
|
|
64
|
+
floorFromIngest: boolean;
|
|
65
|
+
/** True while Ingest runs, so a child chained there counts as taking the floor in Ingest. */
|
|
66
|
+
ingesting: boolean;
|
|
67
|
+
/** Runs that emitted a `say` or an action `spoke: true` this turn. */
|
|
68
|
+
spokeBy: Set<string>;
|
|
69
|
+
/** The assistant produced output this turn (say, spoke, ai message). */
|
|
70
|
+
spoke: boolean;
|
|
71
|
+
/** A short `wait` waiting to ride on the next message. */
|
|
72
|
+
afterMs: number;
|
|
73
|
+
talk?: TalkRequest<C, D>;
|
|
74
|
+
/** Speak already happened (or was skipped): a talk step reached now waits for the next message. */
|
|
75
|
+
speakDone: boolean;
|
|
76
|
+
/** Runs still to move this phase; `follow` appends children. */
|
|
77
|
+
queue: Run[];
|
|
78
|
+
}
|
|
79
|
+
export declare class Runner<C = unknown, D = unknown> {
|
|
80
|
+
private readonly options;
|
|
81
|
+
private readonly flows;
|
|
82
|
+
constructor(options: AgentOptions<C, D>);
|
|
83
|
+
begin(input: TurnInput<C, D>): Turn<C, D>;
|
|
84
|
+
private ingest;
|
|
85
|
+
/** The lead wrote: every run parked on a timer `wait` with `else` takes `else`, oldest first. */
|
|
86
|
+
private resolveReplyWaits;
|
|
87
|
+
/** Honoured only by the run whose `waiting.key` equals it (I3). */
|
|
88
|
+
private runWake;
|
|
89
|
+
/** `silence:<flowId>:<sessionId>:<lastAssistantAtMs>`, honoured only while the blob still shows that silence. */
|
|
90
|
+
private silenceWake;
|
|
91
|
+
private ignore;
|
|
92
|
+
private takeFloor;
|
|
93
|
+
private startRun;
|
|
94
|
+
/** Always-claims keep the last 50 per flow and anchor; once/cooldown keys (empty nonce) are never pruned. */
|
|
95
|
+
private pruneAlwaysClaims;
|
|
96
|
+
private anchorOf;
|
|
97
|
+
private claimAt;
|
|
98
|
+
private repeatAllows;
|
|
99
|
+
/** A run as it would be if started now, for trigger-level predicates. */
|
|
100
|
+
private draftRun;
|
|
101
|
+
private holds;
|
|
102
|
+
private leadWroteSince;
|
|
103
|
+
private snap;
|
|
104
|
+
private stepOf;
|
|
105
|
+
private stepKey;
|
|
106
|
+
private scope;
|
|
107
|
+
private asker;
|
|
108
|
+
private outcome;
|
|
109
|
+
understandRequest(turn: Turn<C, D>): UnderstandRequest<C, D> | null;
|
|
110
|
+
/** The host's history for this turn; the session's own (playground) is the fallback. */
|
|
111
|
+
private historyOf;
|
|
112
|
+
/** The asker, or the run that took the floor in Ingest. */
|
|
113
|
+
private floorRun;
|
|
114
|
+
/** `message` flows with a non-empty list passing `if` and `repeat`, in flow order. */
|
|
115
|
+
private eligibleMessageFlows;
|
|
116
|
+
private messageFlows;
|
|
117
|
+
/** Every `mention` flow with its trigger, in flow order. `if` and `repeat` are judged at start, when `extract` is in hand. */
|
|
118
|
+
private mentionFlows;
|
|
119
|
+
decide(turn: Turn<C, D>, understanding: Understanding | null): void;
|
|
120
|
+
private fireBranch;
|
|
121
|
+
/** Validate a raw extracted value and write it; unknown or invalid values leave an outcome line instead. */
|
|
122
|
+
private writeField;
|
|
123
|
+
advance(turn: Turn<C, D>): Promise<TalkRequest<C, D> | IdleRequest<C, D> | null>;
|
|
124
|
+
/**
|
|
125
|
+
* Everything Speak needs for this turn's one speaker. Instructions are agent,
|
|
126
|
+
* then flow, then step (idle: agent, then idle), each already judged by its
|
|
127
|
+
* `if`; tools are the step's list, else the flow's, else every agent tool.
|
|
128
|
+
*/
|
|
129
|
+
speakRequest(turn: Turn<C, D>, talk: TalkRequest<C, D> | IdleRequest<C, D>): SpeakRequest<C, D>;
|
|
130
|
+
private speaker;
|
|
131
|
+
private drain;
|
|
132
|
+
private move;
|
|
133
|
+
/** `while` (default: the trigger's `if`) with fresh context; silence runs add "no lead message since the run started". */
|
|
134
|
+
private premiseHolds;
|
|
135
|
+
private execute;
|
|
136
|
+
/** The step `then` leads to, when it is a step of this flow. */
|
|
137
|
+
private peek;
|
|
138
|
+
private reportMaxAsks;
|
|
139
|
+
private follow;
|
|
140
|
+
/** Start a child flow that holds the floor and moves in this same phase. */
|
|
141
|
+
private chain;
|
|
142
|
+
private jump;
|
|
143
|
+
/** Entering a step is what mints a new visit, and with it new action and message keys (I4). */
|
|
144
|
+
private enter;
|
|
145
|
+
private finishFlow;
|
|
146
|
+
private endRun;
|
|
147
|
+
private park;
|
|
148
|
+
/** When nobody asks, the most recently suspended run returns to asking. */
|
|
149
|
+
private resumeSuspended;
|
|
150
|
+
settle(turn: Turn<C, D>, outcome: SpeakOutcome | null): Promise<void>;
|
|
151
|
+
private applySpoken;
|
|
152
|
+
/** The provider failed: park the talk step under a retry wake, or stop trying. */
|
|
153
|
+
private deferTalk;
|
|
154
|
+
/** When to try again, or `null` when trying again cannot help. */
|
|
155
|
+
private retryAt;
|
|
156
|
+
/** The assistant spoke last: every silence flow passing `if` and `repeat` gets a wake. */
|
|
157
|
+
private armSilence;
|
|
158
|
+
finish(turn: Turn<C, D>): TurnResult<D>;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=Runner.d.ts.map
|