ai-functions 0.3.0 → 2.0.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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +9 -0
- package/README.md +190 -86
- package/TODO.md +138 -0
- package/dist/ai-promise.d.ts +219 -0
- package/dist/ai-promise.d.ts.map +1 -0
- package/dist/ai-promise.js +610 -0
- package/dist/ai-promise.js.map +1 -0
- package/dist/ai.d.ts +285 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +842 -0
- package/dist/ai.js.map +1 -0
- package/dist/batch/anthropic.d.ts +23 -0
- package/dist/batch/anthropic.d.ts.map +1 -0
- package/dist/batch/anthropic.js +257 -0
- package/dist/batch/anthropic.js.map +1 -0
- package/dist/batch/bedrock.d.ts +64 -0
- package/dist/batch/bedrock.d.ts.map +1 -0
- package/dist/batch/bedrock.js +586 -0
- package/dist/batch/bedrock.js.map +1 -0
- package/dist/batch/cloudflare.d.ts +37 -0
- package/dist/batch/cloudflare.d.ts.map +1 -0
- package/dist/batch/cloudflare.js +289 -0
- package/dist/batch/cloudflare.js.map +1 -0
- package/dist/batch/google.d.ts +41 -0
- package/dist/batch/google.d.ts.map +1 -0
- package/dist/batch/google.js +360 -0
- package/dist/batch/google.js.map +1 -0
- package/dist/batch/index.d.ts +31 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/batch/index.js +31 -0
- package/dist/batch/index.js.map +1 -0
- package/dist/batch/memory.d.ts +44 -0
- package/dist/batch/memory.d.ts.map +1 -0
- package/dist/batch/memory.js +188 -0
- package/dist/batch/memory.js.map +1 -0
- package/dist/batch/openai.d.ts +37 -0
- package/dist/batch/openai.d.ts.map +1 -0
- package/dist/batch/openai.js +403 -0
- package/dist/batch/openai.js.map +1 -0
- package/dist/batch-map.d.ts +125 -0
- package/dist/batch-map.d.ts.map +1 -0
- package/dist/batch-map.js +406 -0
- package/dist/batch-map.js.map +1 -0
- package/dist/batch-queue.d.ts +273 -0
- package/dist/batch-queue.d.ts.map +1 -0
- package/dist/batch-queue.js +271 -0
- package/dist/batch-queue.js.map +1 -0
- package/dist/context.d.ts +133 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +267 -0
- package/dist/context.js.map +1 -0
- package/dist/embeddings.d.ts +123 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +170 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/eval/index.d.ts +8 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +8 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/models.d.ts +66 -0
- package/dist/eval/models.d.ts.map +1 -0
- package/dist/eval/models.js +120 -0
- package/dist/eval/models.js.map +1 -0
- package/dist/eval/runner.d.ts +64 -0
- package/dist/eval/runner.d.ts.map +1 -0
- package/dist/eval/runner.js +148 -0
- package/dist/eval/runner.js.map +1 -0
- package/dist/generate.d.ts +168 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +174 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -52
- package/dist/index.js.map +1 -1
- package/dist/primitives.d.ts +292 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +471 -0
- package/dist/primitives.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +9 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +9 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +9 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/rpc/auth.d.ts +69 -0
- package/dist/rpc/auth.d.ts.map +1 -0
- package/dist/rpc/auth.js +136 -0
- package/dist/rpc/auth.js.map +1 -0
- package/dist/rpc/client.d.ts +62 -0
- package/dist/rpc/client.d.ts.map +1 -0
- package/dist/rpc/client.js +103 -0
- package/dist/rpc/client.js.map +1 -0
- package/dist/rpc/deferred.d.ts +60 -0
- package/dist/rpc/deferred.d.ts.map +1 -0
- package/dist/rpc/deferred.js +96 -0
- package/dist/rpc/deferred.js.map +1 -0
- package/dist/rpc/index.d.ts +22 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +38 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/rpc/local.d.ts +42 -0
- package/dist/rpc/local.d.ts.map +1 -0
- package/dist/rpc/local.js +50 -0
- package/dist/rpc/local.js.map +1 -0
- package/dist/rpc/server.d.ts +165 -0
- package/dist/rpc/server.d.ts.map +1 -0
- package/dist/rpc/server.js +405 -0
- package/dist/rpc/server.js.map +1 -0
- package/dist/rpc/session.d.ts +32 -0
- package/dist/rpc/session.d.ts.map +1 -0
- package/dist/rpc/session.js +43 -0
- package/dist/rpc/session.js.map +1 -0
- package/dist/rpc/transport.d.ts +306 -0
- package/dist/rpc/transport.d.ts.map +1 -0
- package/dist/rpc/transport.js +731 -0
- package/dist/rpc/transport.js.map +1 -0
- package/dist/schema.d.ts +54 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +109 -0
- package/dist/schema.js.map +1 -0
- package/dist/template.d.ts +73 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +129 -0
- package/dist/template.js.map +1 -0
- package/dist/types.d.ts +474 -106
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -8
- package/dist/types.js.map +1 -1
- package/evalite.config.ts +19 -0
- package/evals/README.md +212 -0
- package/evals/classification.eval.ts +108 -0
- package/evals/marketing.eval.ts +370 -0
- package/evals/math.eval.ts +94 -0
- package/evals/run-evals.ts +166 -0
- package/evals/structured-output.eval.ts +143 -0
- package/evals/writing.eval.ts +117 -0
- package/examples/batch-blog-posts.ts +160 -0
- package/package.json +57 -57
- package/src/ai-promise.ts +784 -0
- package/src/ai.ts +1183 -0
- package/src/batch/anthropic.ts +375 -0
- package/src/batch/bedrock.ts +801 -0
- package/src/batch/cloudflare.ts +421 -0
- package/src/batch/google.ts +491 -0
- package/src/batch/index.ts +31 -0
- package/src/batch/memory.ts +253 -0
- package/src/batch/openai.ts +557 -0
- package/src/batch-map.ts +534 -0
- package/src/batch-queue.ts +493 -0
- package/src/context.ts +332 -0
- package/src/embeddings.ts +244 -0
- package/src/eval/index.ts +8 -0
- package/src/eval/models.ts +158 -0
- package/src/eval/runner.ts +217 -0
- package/src/generate.ts +245 -0
- package/src/index.ts +154 -0
- package/src/primitives.ts +612 -0
- package/src/providers/cloudflare.ts +15 -0
- package/src/providers/index.ts +14 -0
- package/src/schema.ts +147 -0
- package/src/template.ts +209 -0
- package/src/types.ts +540 -0
- package/test/README.md +105 -0
- package/test/ai-proxy.test.ts +192 -0
- package/test/async-iterators.test.ts +327 -0
- package/test/batch-background.test.ts +482 -0
- package/test/batch-blog-posts.test.ts +387 -0
- package/test/blog-generation.test.ts +510 -0
- package/test/browse-read.test.ts +611 -0
- package/test/core-functions.test.ts +694 -0
- package/test/decide.test.ts +393 -0
- package/test/define.test.ts +274 -0
- package/test/e2e-bedrock-manual.ts +163 -0
- package/test/e2e-bedrock.test.ts +191 -0
- package/test/e2e-flex-gateway.ts +157 -0
- package/test/e2e-flex-manual.ts +183 -0
- package/test/e2e-flex.test.ts +209 -0
- package/test/e2e-google-manual.ts +178 -0
- package/test/e2e-google.test.ts +216 -0
- package/test/embeddings.test.ts +284 -0
- package/test/evals/define-function.eval.test.ts +379 -0
- package/test/evals/primitives.eval.test.ts +384 -0
- package/test/function-types.test.ts +492 -0
- package/test/generate-core.test.ts +319 -0
- package/test/generate.test.ts +163 -0
- package/test/implicit-batch.test.ts +422 -0
- package/test/schema.test.ts +109 -0
- package/test/tagged-templates.test.ts +302 -0
- package/tsconfig.json +10 -0
- package/vitest.config.ts +42 -0
- package/LICENSE +0 -21
- package/bin/cli.js +0 -5
- package/dist/cli/index.d.ts +0 -10
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -38
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.test.d.ts +0 -2
- package/dist/cli/index.test.d.ts.map +0 -1
- package/dist/cli/index.test.js +0 -35
- package/dist/cli/index.test.js.map +0 -1
- package/dist/constants/models.d.ts +0 -10
- package/dist/constants/models.d.ts.map +0 -1
- package/dist/constants/models.js +0 -12
- package/dist/constants/models.js.map +0 -1
- package/dist/converters/index.d.ts +0 -3
- package/dist/converters/index.d.ts.map +0 -1
- package/dist/converters/index.js +0 -3
- package/dist/converters/index.js.map +0 -1
- package/dist/converters/model.d.ts +0 -4
- package/dist/converters/model.d.ts.map +0 -1
- package/dist/converters/model.js +0 -19
- package/dist/converters/model.js.map +0 -1
- package/dist/converters/schema.d.ts +0 -4
- package/dist/converters/schema.d.ts.map +0 -1
- package/dist/converters/schema.js +0 -25
- package/dist/converters/schema.js.map +0 -1
- package/dist/core/responses.d.ts +0 -5
- package/dist/core/responses.d.ts.map +0 -1
- package/dist/core/responses.js +0 -16
- package/dist/core/responses.js.map +0 -1
- package/dist/core/responses.test.d.ts +0 -2
- package/dist/core/responses.test.d.ts.map +0 -1
- package/dist/core/responses.test.js +0 -31
- package/dist/core/responses.test.js.map +0 -1
- package/dist/errors.d.ts +0 -6
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -9
- package/dist/errors.js.map +0 -1
- package/dist/examples/streaming.test.d.ts +0 -2
- package/dist/examples/streaming.test.d.ts.map +0 -1
- package/dist/examples/streaming.test.js +0 -176
- package/dist/examples/streaming.test.js.map +0 -1
- package/dist/factory/__tests__/index.test.d.ts +0 -2
- package/dist/factory/__tests__/index.test.d.ts.map +0 -1
- package/dist/factory/__tests__/index.test.js +0 -430
- package/dist/factory/__tests__/index.test.js.map +0 -1
- package/dist/factory/__tests__/list.test.d.ts +0 -2
- package/dist/factory/__tests__/list.test.d.ts.map +0 -1
- package/dist/factory/__tests__/list.test.js +0 -92
- package/dist/factory/__tests__/list.test.js.map +0 -1
- package/dist/factory/index.d.ts +0 -20
- package/dist/factory/index.d.ts.map +0 -1
- package/dist/factory/index.js +0 -287
- package/dist/factory/index.js.map +0 -1
- package/dist/factory/index.test.d.ts +0 -2
- package/dist/factory/index.test.d.ts.map +0 -1
- package/dist/factory/index.test.js +0 -287
- package/dist/factory/index.test.js.map +0 -1
- package/dist/factory/list.d.ts +0 -3
- package/dist/factory/list.d.ts.map +0 -1
- package/dist/factory/list.js +0 -221
- package/dist/factory/list.js.map +0 -1
- package/dist/factory/list.test.d.ts +0 -2
- package/dist/factory/list.test.d.ts.map +0 -1
- package/dist/factory/list.test.js +0 -84
- package/dist/factory/list.test.js.map +0 -1
- package/dist/generate/index.d.ts +0 -5
- package/dist/generate/index.d.ts.map +0 -1
- package/dist/generate/index.js +0 -17
- package/dist/generate/index.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -59
- package/dist/index.test.js.map +0 -1
- package/dist/list/await.d.ts +0 -3
- package/dist/list/await.d.ts.map +0 -1
- package/dist/list/await.js +0 -28
- package/dist/list/await.js.map +0 -1
- package/dist/list/constants.d.ts +0 -4
- package/dist/list/constants.d.ts.map +0 -1
- package/dist/list/constants.js +0 -5
- package/dist/list/constants.js.map +0 -1
- package/dist/list/create-function.d.ts +0 -3
- package/dist/list/create-function.d.ts.map +0 -1
- package/dist/list/create-function.js +0 -11
- package/dist/list/create-function.js.map +0 -1
- package/dist/list/index.d.ts +0 -4
- package/dist/list/index.d.ts.map +0 -1
- package/dist/list/index.js +0 -5
- package/dist/list/index.js.map +0 -1
- package/dist/list/prompt.d.ts +0 -3
- package/dist/list/prompt.d.ts.map +0 -1
- package/dist/list/prompt.js +0 -6
- package/dist/list/prompt.js.map +0 -1
- package/dist/list/schemas.d.ts +0 -4
- package/dist/list/schemas.d.ts.map +0 -1
- package/dist/list/schemas.js +0 -8
- package/dist/list/schemas.js.map +0 -1
- package/dist/list/stream.d.ts +0 -3
- package/dist/list/stream.d.ts.map +0 -1
- package/dist/list/stream.js +0 -33
- package/dist/list/stream.js.map +0 -1
- package/dist/list/types.d.ts +0 -11
- package/dist/list/types.d.ts.map +0 -1
- package/dist/list/types.js +0 -2
- package/dist/list/types.js.map +0 -1
- package/dist/list/validation.d.ts +0 -3
- package/dist/list/validation.d.ts.map +0 -1
- package/dist/list/validation.js +0 -12
- package/dist/list/validation.js.map +0 -1
- package/dist/providers/config.d.ts +0 -4
- package/dist/providers/config.d.ts.map +0 -1
- package/dist/providers/config.js +0 -21
- package/dist/providers/config.js.map +0 -1
- package/dist/providers/config.test.d.ts +0 -2
- package/dist/providers/config.test.d.ts.map +0 -1
- package/dist/providers/config.test.js +0 -37
- package/dist/providers/config.test.js.map +0 -1
- package/dist/proxy/constants.d.ts +0 -4
- package/dist/proxy/constants.d.ts.map +0 -1
- package/dist/proxy/constants.js +0 -5
- package/dist/proxy/constants.js.map +0 -1
- package/dist/proxy/create-function.d.ts +0 -4
- package/dist/proxy/create-function.d.ts.map +0 -1
- package/dist/proxy/create-function.js +0 -24
- package/dist/proxy/create-function.js.map +0 -1
- package/dist/proxy/create-proxy.d.ts +0 -2
- package/dist/proxy/create-proxy.d.ts.map +0 -1
- package/dist/proxy/create-proxy.js +0 -11
- package/dist/proxy/create-proxy.js.map +0 -1
- package/dist/proxy/function-generator.d.ts +0 -9
- package/dist/proxy/function-generator.d.ts.map +0 -1
- package/dist/proxy/function-generator.js +0 -29
- package/dist/proxy/function-generator.js.map +0 -1
- package/dist/proxy/index.d.ts +0 -4
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js +0 -4
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/prompt.d.ts +0 -2
- package/dist/proxy/prompt.d.ts.map +0 -1
- package/dist/proxy/prompt.js +0 -6
- package/dist/proxy/prompt.js.map +0 -1
- package/dist/proxy/types.d.ts +0 -7
- package/dist/proxy/types.d.ts.map +0 -1
- package/dist/proxy/types.js +0 -2
- package/dist/proxy/types.js.map +0 -1
- package/dist/queue/manager.d.ts +0 -5
- package/dist/queue/manager.d.ts.map +0 -1
- package/dist/queue/manager.js +0 -37
- package/dist/queue/manager.js.map +0 -1
- package/dist/queue/manager.test.d.ts +0 -2
- package/dist/queue/manager.test.d.ts.map +0 -1
- package/dist/queue/manager.test.js +0 -52
- package/dist/queue/manager.test.js.map +0 -1
- package/dist/schema-converter.d.ts +0 -4
- package/dist/schema-converter.d.ts.map +0 -1
- package/dist/schema-converter.js +0 -30
- package/dist/schema-converter.js.map +0 -1
- package/dist/stream/index.d.ts +0 -7
- package/dist/stream/index.d.ts.map +0 -1
- package/dist/stream/index.js +0 -23
- package/dist/stream/index.js.map +0 -1
- package/dist/streaming/utils.d.ts +0 -4
- package/dist/streaming/utils.d.ts.map +0 -1
- package/dist/streaming/utils.js +0 -131
- package/dist/streaming/utils.js.map +0 -1
- package/dist/streaming/utils.test.d.ts +0 -2
- package/dist/streaming/utils.test.d.ts.map +0 -1
- package/dist/streaming/utils.test.js +0 -84
- package/dist/streaming/utils.test.js.map +0 -1
- package/dist/templates/result.d.ts +0 -7
- package/dist/templates/result.d.ts.map +0 -1
- package/dist/templates/result.js +0 -40
- package/dist/templates/result.js.map +0 -1
- package/dist/templates/result.test.d.ts +0 -2
- package/dist/templates/result.test.d.ts.map +0 -1
- package/dist/templates/result.test.js +0 -75
- package/dist/templates/result.test.js.map +0 -1
- package/dist/test/setup.d.ts +0 -2
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/test/setup.js +0 -21
- package/dist/test/setup.js.map +0 -1
- package/dist/test-types.d.ts +0 -13
- package/dist/test-types.d.ts.map +0 -1
- package/dist/test-types.js +0 -55
- package/dist/test-types.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -4
- package/dist/types/index.js.map +0 -1
- package/dist/types/list.d.ts +0 -10
- package/dist/types/list.d.ts.map +0 -1
- package/dist/types/list.js +0 -2
- package/dist/types/list.js.map +0 -1
- package/dist/types/model.d.ts +0 -7
- package/dist/types/model.d.ts.map +0 -1
- package/dist/types/model.js +0 -2
- package/dist/types/model.js.map +0 -1
- package/dist/types/options.d.ts +0 -25
- package/dist/types/options.d.ts.map +0 -1
- package/dist/types/options.js +0 -2
- package/dist/types/options.js.map +0 -1
- package/dist/types/schema.d.ts +0 -5
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/schema.js +0 -2
- package/dist/types/schema.js.map +0 -1
- package/dist/utils/__tests__/request-handler.test.d.ts +0 -2
- package/dist/utils/__tests__/request-handler.test.d.ts.map +0 -1
- package/dist/utils/__tests__/request-handler.test.js +0 -134
- package/dist/utils/__tests__/request-handler.test.js.map +0 -1
- package/dist/utils/__tests__/schema.test.d.ts +0 -2
- package/dist/utils/__tests__/schema.test.d.ts.map +0 -1
- package/dist/utils/__tests__/schema.test.js +0 -49
- package/dist/utils/__tests__/schema.test.js.map +0 -1
- package/dist/utils/__tests__/stream-progress.test.d.ts +0 -2
- package/dist/utils/__tests__/stream-progress.test.d.ts.map +0 -1
- package/dist/utils/__tests__/stream-progress.test.js +0 -85
- package/dist/utils/__tests__/stream-progress.test.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/request-handler.d.ts +0 -17
- package/dist/utils/request-handler.d.ts.map +0 -1
- package/dist/utils/request-handler.js +0 -105
- package/dist/utils/request-handler.js.map +0 -1
- package/dist/utils/schema.d.ts +0 -11
- package/dist/utils/schema.d.ts.map +0 -1
- package/dist/utils/schema.js +0 -51
- package/dist/utils/schema.js.map +0 -1
- package/dist/utils/stream-progress.d.ts +0 -17
- package/dist/utils/stream-progress.d.ts.map +0 -1
- package/dist/utils/stream-progress.js +0 -86
- package/dist/utils/stream-progress.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -3
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -30
- package/dist/utils/validation.js.map +0 -1
package/dist/generate.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Generation functions with automatic model resolution and routing
|
|
3
|
+
*
|
|
4
|
+
* Wraps AI SDK generateObject and generateText with smart model routing:
|
|
5
|
+
* - Simple aliases: 'opus', 'sonnet', 'gpt-4o'
|
|
6
|
+
* - Full IDs: 'anthropic/claude-sonnet-4.5'
|
|
7
|
+
* - Auto-routes to native SDKs for openai/anthropic/google
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { generateObject as sdkGenerateObject, generateText as sdkGenerateText, streamObject as sdkStreamObject, streamText as sdkStreamText } from 'ai';
|
|
12
|
+
import { schema as convertSchema } from './schema.js';
|
|
13
|
+
/**
|
|
14
|
+
* Resolve model string to LanguageModel instance
|
|
15
|
+
* Uses ai-providers for model routing with Cloudflare AI Gateway support
|
|
16
|
+
*/
|
|
17
|
+
async function resolveModel(modelArg) {
|
|
18
|
+
// Already a LanguageModel instance
|
|
19
|
+
if (typeof modelArg !== 'string') {
|
|
20
|
+
return modelArg;
|
|
21
|
+
}
|
|
22
|
+
// Use ai-providers for model resolution
|
|
23
|
+
const { model } = await import('ai-providers');
|
|
24
|
+
return model(modelArg);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if value is a Zod schema
|
|
28
|
+
*/
|
|
29
|
+
function isZodSchema(value) {
|
|
30
|
+
return value !== null &&
|
|
31
|
+
typeof value === 'object' &&
|
|
32
|
+
'_def' in value &&
|
|
33
|
+
'parse' in value;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Convert schema to Zod if needed
|
|
37
|
+
*/
|
|
38
|
+
function resolveSchema(schemaArg) {
|
|
39
|
+
if (isZodSchema(schemaArg)) {
|
|
40
|
+
return schemaArg;
|
|
41
|
+
}
|
|
42
|
+
return convertSchema(schemaArg);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generate a typed object from a prompt using AI
|
|
46
|
+
*
|
|
47
|
+
* Automatically resolves model aliases and routes to the best provider.
|
|
48
|
+
* Supports both Zod schemas and simplified schema syntax.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { generateObject } from 'ai-functions'
|
|
53
|
+
*
|
|
54
|
+
* // Simplified schema syntax
|
|
55
|
+
* const { object } = await generateObject({
|
|
56
|
+
* model: 'sonnet',
|
|
57
|
+
* schema: {
|
|
58
|
+
* recipe: {
|
|
59
|
+
* name: 'What is the recipe name?',
|
|
60
|
+
* type: 'food | drink | dessert',
|
|
61
|
+
* ingredients: ['List all ingredients'],
|
|
62
|
+
* steps: ['List all cooking steps'],
|
|
63
|
+
* },
|
|
64
|
+
* },
|
|
65
|
+
* prompt: 'Generate a lasagna recipe.',
|
|
66
|
+
* })
|
|
67
|
+
*
|
|
68
|
+
* // Zod schema also works
|
|
69
|
+
* import { z } from 'zod'
|
|
70
|
+
* const { object } = await generateObject({
|
|
71
|
+
* model: 'sonnet',
|
|
72
|
+
* schema: z.object({
|
|
73
|
+
* name: z.string(),
|
|
74
|
+
* ingredients: z.array(z.string()),
|
|
75
|
+
* }),
|
|
76
|
+
* prompt: 'Generate a lasagna recipe.',
|
|
77
|
+
* })
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export async function generateObject(options) {
|
|
81
|
+
const model = await resolveModel(options.model);
|
|
82
|
+
const schema = resolveSchema(options.schema);
|
|
83
|
+
// Use 'as any' to handle AI SDK v4 API variance
|
|
84
|
+
return sdkGenerateObject({
|
|
85
|
+
...options,
|
|
86
|
+
model,
|
|
87
|
+
schema,
|
|
88
|
+
output: 'object'
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate text from a prompt using AI
|
|
93
|
+
*
|
|
94
|
+
* Automatically resolves model aliases and routes to the best provider.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { generateText } from 'ai-functions'
|
|
99
|
+
*
|
|
100
|
+
* const { text } = await generateText({
|
|
101
|
+
* model: 'opus', // → anthropic/claude-opus-4.5
|
|
102
|
+
* prompt: 'Write a haiku about programming.',
|
|
103
|
+
* })
|
|
104
|
+
*
|
|
105
|
+
* // With tools
|
|
106
|
+
* const { text, toolResults } = await generateText({
|
|
107
|
+
* model: 'gpt-4o', // → openai/gpt-4o
|
|
108
|
+
* prompt: 'What is the weather in San Francisco?',
|
|
109
|
+
* tools: { ... },
|
|
110
|
+
* maxSteps: 5,
|
|
111
|
+
* })
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export async function generateText(options) {
|
|
115
|
+
const model = await resolveModel(options.model);
|
|
116
|
+
return sdkGenerateText({
|
|
117
|
+
...options,
|
|
118
|
+
model
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Stream a typed object from a prompt using AI
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import { streamObject } from 'ai-functions'
|
|
127
|
+
*
|
|
128
|
+
* const { partialObjectStream } = streamObject({
|
|
129
|
+
* model: 'sonnet',
|
|
130
|
+
* schema: { story: 'Write a creative story' },
|
|
131
|
+
* prompt: 'Write a short story.',
|
|
132
|
+
* })
|
|
133
|
+
*
|
|
134
|
+
* for await (const partial of partialObjectStream) {
|
|
135
|
+
* console.log(partial.story)
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export async function streamObject(options) {
|
|
140
|
+
const model = await resolveModel(options.model);
|
|
141
|
+
const schema = resolveSchema(options.schema);
|
|
142
|
+
// Use 'as any' to handle AI SDK API variance
|
|
143
|
+
return sdkStreamObject({
|
|
144
|
+
...options,
|
|
145
|
+
model,
|
|
146
|
+
schema,
|
|
147
|
+
output: 'object'
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Stream text from a prompt using AI
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* import { streamText } from 'ai-functions'
|
|
156
|
+
*
|
|
157
|
+
* const { textStream } = streamText({
|
|
158
|
+
* model: 'gemini', // → google/gemini-2.5-flash
|
|
159
|
+
* prompt: 'Explain quantum computing.',
|
|
160
|
+
* })
|
|
161
|
+
*
|
|
162
|
+
* for await (const chunk of textStream) {
|
|
163
|
+
* process.stdout.write(chunk)
|
|
164
|
+
* }
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export async function streamText(options) {
|
|
168
|
+
const model = await resolveModel(options.model);
|
|
169
|
+
return sdkStreamText({
|
|
170
|
+
...options,
|
|
171
|
+
model
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,IAAI,iBAAiB,EACnC,YAAY,IAAI,eAAe,EAC/B,YAAY,IAAI,eAAe,EAC/B,UAAU,IAAI,aAAa,EAM5B,MAAM,IAAI,CAAA;AACX,OAAO,EAAE,MAAM,IAAI,aAAa,EAAqB,MAAM,aAAa,CAAA;AA+CxE;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC5C,mCAAmC;IACnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI;QACnB,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACf,OAAO,IAAI,KAAK,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,SAAoB;IACzC,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,aAAa,CAAC,SAAyB,CAAC,CAAA;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAmB,CAAC,CAAA;IACzD,gDAAgD;IAChD,OAAO,iBAAiB,CAAC;QACvB,GAAG,OAAO;QACV,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;KACV,CAAqC,CAAA;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,eAAe,CAAC;QACrB,GAAG,OAAO;QACV,KAAK;KACmC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAmB,CAAC,CAAA;IACzD,6CAA6C;IAC7C,OAAO,eAAe,CAAC;QACrB,GAAG,OAAO;QACV,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;KACV,CAA+C,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,aAAa,CAAC;QACnB,GAAG,OAAO;QACV,KAAK;KACiC,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ai-functions - Core AI primitives for building intelligent applications
|
|
3
|
+
*
|
|
4
|
+
* This is the foundational package that all other primitives depend on.
|
|
5
|
+
* It provides:
|
|
6
|
+
* - RPC primitives via rpc.do
|
|
7
|
+
* - AI function types and interfaces
|
|
8
|
+
* - Core AI() and ai() constructors
|
|
9
|
+
* - Embedding utilities from AI SDK
|
|
10
|
+
* - Cloudflare Workers AI provider (default for embeddings)
|
|
11
|
+
* - Tagged template literal support for all functions
|
|
12
|
+
* - Async iterator support for list/extract
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
export * from 'rpc.do';
|
|
17
|
+
export * from './types.js';
|
|
18
|
+
export * from './ai.js';
|
|
19
|
+
export * from './embeddings.js';
|
|
20
|
+
export { generateObject, generateText, streamObject, streamText } from './generate.js';
|
|
21
|
+
export { schema, type SimpleSchema } from './schema.js';
|
|
22
|
+
export * from './providers/index.js';
|
|
23
|
+
export { parseTemplate, createTemplateFunction, createChainablePromise, createStreamableList, withBatch, type FunctionOptions, type TemplateFunction, type BatchableFunction, type StreamableList, type ChainablePromise, } from './template.js';
|
|
24
|
+
export { AIPromise, isAIPromise, getRawPromise, createTextPromise, createObjectPromise, createListPromise, createListsPromise, createBooleanPromise, createExtractPromise, createAITemplateFunction, parseTemplateWithDependencies, AI_PROMISE_SYMBOL, RAW_PROMISE_SYMBOL, type AIPromiseOptions, } from './ai-promise.js';
|
|
25
|
+
export { generate, type GenerateType, type GenerateOptions, ai as aiPrompt, // Renamed to avoid conflict with AIProxy from ai.ts
|
|
26
|
+
write, code, list, lists, extract, summarize, is, diagram, slides, image, video, do, research, read, browse, decide, ask, approve, review, type HumanOptions, type HumanResult, } from './primitives.js';
|
|
27
|
+
export { BatchQueue, createBatch, withBatch as withBatchQueue, registerBatchAdapter, getBatchAdapter, isBatchMode, deferToBatch, BATCH_MODE_SYMBOL, type BatchMode as BatchQueueMode, type BatchProvider, type BatchStatus, type BatchItem, type BatchJob, type BatchResult, type BatchSubmitResult, type BatchAdapter, type BatchQueueOptions, type DeferredOptions, } from './batch-queue.js';
|
|
28
|
+
export { BatchMapPromise, createBatchMap, isBatchMapPromise, BATCH_MAP_SYMBOL, type CapturedOperation, type BatchMapOptions, } from './batch-map.js';
|
|
29
|
+
export { configure, getContext, withContext, getGlobalContext, resetContext, getModel, getProvider, getBatchMode, getBatchThreshold, shouldUseBatchAPI, type ExecutionContext, type BatchMode, } from './context.js';
|
|
5
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,cAAc,QAAQ,CAAA;AAGtB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAGvB,cAAc,iBAAiB,CAAA;AAG/B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGtF,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,cAAc,sBAAsB,CAAA;AAGpC,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAEL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,eAAe,EAGpB,EAAE,IAAI,QAAQ,EAAE,oDAAoD;AACpE,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EAGL,EAAE,EACF,QAAQ,EAGR,IAAI,EACJ,MAAM,EAGN,MAAM,EAGN,GAAG,EACH,OAAO,EACP,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,IAAI,cAAc,EAC3B,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,KAAK,SAAS,IAAI,cAAc,EAChC,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,53 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ai-functions - Core AI primitives for building intelligent applications
|
|
3
|
+
*
|
|
4
|
+
* This is the foundational package that all other primitives depend on.
|
|
5
|
+
* It provides:
|
|
6
|
+
* - RPC primitives via rpc.do
|
|
7
|
+
* - AI function types and interfaces
|
|
8
|
+
* - Core AI() and ai() constructors
|
|
9
|
+
* - Embedding utilities from AI SDK
|
|
10
|
+
* - Cloudflare Workers AI provider (default for embeddings)
|
|
11
|
+
* - Tagged template literal support for all functions
|
|
12
|
+
* - Async iterator support for list/extract
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
// Re-export RPC primitives from rpc.do
|
|
17
|
+
export * from 'rpc.do';
|
|
18
|
+
// Export AI function types and interfaces
|
|
19
|
+
export * from './types.js';
|
|
20
|
+
export * from './ai.js';
|
|
21
|
+
// Export embedding utilities
|
|
22
|
+
export * from './embeddings.js';
|
|
23
|
+
// Export generation functions with smart model routing
|
|
24
|
+
export { generateObject, generateText, streamObject, streamText } from './generate.js';
|
|
25
|
+
// Export simplified schema helper
|
|
26
|
+
export { schema } from './schema.js';
|
|
27
|
+
// Export providers
|
|
28
|
+
export * from './providers/index.js';
|
|
29
|
+
// Export template utilities
|
|
30
|
+
export { parseTemplate, createTemplateFunction, createChainablePromise, createStreamableList, withBatch, } from './template.js';
|
|
31
|
+
// Export AIPromise utilities for promise pipelining
|
|
32
|
+
export { AIPromise, isAIPromise, getRawPromise, createTextPromise, createObjectPromise, createListPromise, createListsPromise, createBooleanPromise, createExtractPromise, createAITemplateFunction, parseTemplateWithDependencies, AI_PROMISE_SYMBOL, RAW_PROMISE_SYMBOL, } from './ai-promise.js';
|
|
33
|
+
// Export AI primitives
|
|
34
|
+
export {
|
|
35
|
+
// Core generate primitive
|
|
36
|
+
generate,
|
|
37
|
+
// Generative functions
|
|
38
|
+
ai as aiPrompt, // Renamed to avoid conflict with AIProxy from ai.ts
|
|
39
|
+
write, code, list, lists, extract, summarize, is, diagram, slides, image, video,
|
|
40
|
+
// Agentic functions
|
|
41
|
+
do, research,
|
|
42
|
+
// Web functions
|
|
43
|
+
read, browse,
|
|
44
|
+
// Decision functions
|
|
45
|
+
decide,
|
|
46
|
+
// Human-in-the-loop functions
|
|
47
|
+
ask, approve, review, } from './primitives.js';
|
|
48
|
+
// Export batch processing
|
|
49
|
+
export { BatchQueue, createBatch, withBatch as withBatchQueue, registerBatchAdapter, getBatchAdapter, isBatchMode, deferToBatch, BATCH_MODE_SYMBOL, } from './batch-queue.js';
|
|
50
|
+
// Export batch map for automatic batching
|
|
51
|
+
export { BatchMapPromise, createBatchMap, isBatchMapPromise, BATCH_MAP_SYMBOL, } from './batch-map.js';
|
|
52
|
+
// Export execution context
|
|
53
|
+
export { configure, getContext, withContext, getGlobalContext, resetContext, getModel, getProvider, getBatchMode, getBatchThreshold, shouldUseBatchAPI, } from './context.js';
|
|
53
54
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,uCAAuC;AACvC,cAAc,QAAQ,CAAA;AAEtB,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAEvB,6BAA6B;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,uDAAuD;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEtF,kCAAkC;AAClC,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAA;AAEvD,mBAAmB;AACnB,cAAc,sBAAsB,CAAA;AAEpC,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,GAMV,MAAM,eAAe,CAAA;AAEtB,oDAAoD;AACpD,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAA;AAExB,uBAAuB;AACvB,OAAO;AACL,0BAA0B;AAC1B,QAAQ;AAIR,uBAAuB;AACvB,EAAE,IAAI,QAAQ,EAAE,oDAAoD;AACpE,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK;AAEL,oBAAoB;AACpB,EAAE,EACF,QAAQ;AAER,gBAAgB;AAChB,IAAI,EACJ,MAAM;AAEN,qBAAqB;AACrB,MAAM;AAEN,8BAA8B;AAC9B,GAAG,EACH,OAAO,EACP,MAAM,GAGP,MAAM,iBAAiB,CAAA;AAExB,0BAA0B;AAC1B,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,IAAI,cAAc,EAC3B,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,GAWlB,MAAM,kBAAkB,CAAA;AAEzB,0CAA0C;AAC1C,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,gBAAgB,CAAA;AAEvB,2BAA2B;AAC3B,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAGlB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Function Primitives with Promise Pipelining
|
|
3
|
+
*
|
|
4
|
+
* All functions return AIPromise for:
|
|
5
|
+
* - Dynamic schema inference from destructuring
|
|
6
|
+
* - Promise pipelining without await
|
|
7
|
+
* - Magical .map() for batch processing
|
|
8
|
+
* - Dependency graph resolution
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // No await needed until the end!
|
|
13
|
+
* const { summary, keyPoints, conclusion } = ai`write about ${topic}`
|
|
14
|
+
* const isValid = is`${conclusion} is solid given ${keyPoints}`
|
|
15
|
+
* const improved = ai`improve ${conclusion} using ${keyPoints}`
|
|
16
|
+
*
|
|
17
|
+
* // Batch processing with map
|
|
18
|
+
* const ideas = list`startup ideas`
|
|
19
|
+
* const evaluated = await ideas.map(idea => ({
|
|
20
|
+
* idea,
|
|
21
|
+
* viable: is`${idea} is viable`,
|
|
22
|
+
* market: ai`market size for ${idea}`,
|
|
23
|
+
* }))
|
|
24
|
+
*
|
|
25
|
+
* // Only await at the end
|
|
26
|
+
* if (await isValid) {
|
|
27
|
+
* console.log(await improved)
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @packageDocumentation
|
|
32
|
+
*/
|
|
33
|
+
import { AIPromise } from './ai-promise.js';
|
|
34
|
+
import type { SimpleSchema } from './schema.js';
|
|
35
|
+
import type { HumanChannel } from './types.js';
|
|
36
|
+
export type GenerateType = 'text' | 'json' | 'code' | 'list' | 'lists' | 'markdown' | 'yaml' | 'diagram' | 'slides' | 'boolean' | 'summary' | 'extract';
|
|
37
|
+
export interface GenerateOptions {
|
|
38
|
+
/** Model to use */
|
|
39
|
+
model?: string;
|
|
40
|
+
/** System prompt */
|
|
41
|
+
system?: string;
|
|
42
|
+
/** Temperature (0-2) */
|
|
43
|
+
temperature?: number;
|
|
44
|
+
/** Max tokens */
|
|
45
|
+
maxTokens?: number;
|
|
46
|
+
/** Schema for JSON output */
|
|
47
|
+
schema?: SimpleSchema;
|
|
48
|
+
/** Language for code generation */
|
|
49
|
+
language?: string;
|
|
50
|
+
/** Format for diagrams */
|
|
51
|
+
format?: 'mermaid' | 'svg' | 'ascii';
|
|
52
|
+
/** Number of slides for presentations */
|
|
53
|
+
slides?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Core generate primitive - all other functions use this under the hood
|
|
57
|
+
*/
|
|
58
|
+
export declare function generate(type: GenerateType, prompt: string, options?: GenerateOptions): Promise<unknown>;
|
|
59
|
+
/**
|
|
60
|
+
* General-purpose AI function with dynamic schema inference
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* // Simple text generation
|
|
65
|
+
* const text = await ai`write a poem about ${topic}`
|
|
66
|
+
*
|
|
67
|
+
* // Dynamic schema from destructuring - no await needed!
|
|
68
|
+
* const { summary, keyPoints, conclusion } = ai`write about ${topic}`
|
|
69
|
+
* console.log(await summary)
|
|
70
|
+
*
|
|
71
|
+
* // Chain with other functions
|
|
72
|
+
* const isValid = is`${conclusion} is solid`
|
|
73
|
+
* const improved = ai`improve ${conclusion}`
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare const ai: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<unknown>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<unknown>);
|
|
77
|
+
/**
|
|
78
|
+
* Generate text content
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* const post = await write`blog post about ${topic}`
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare const write: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
86
|
+
/**
|
|
87
|
+
* Generate code
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const code = await code`email validation function`
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export declare const code: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
95
|
+
/**
|
|
96
|
+
* Generate a list of items with .map() support
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* // Simple list
|
|
101
|
+
* const ideas = await list`startup ideas`
|
|
102
|
+
*
|
|
103
|
+
* // With map - batch processes in ONE call!
|
|
104
|
+
* const evaluated = await list`startup ideas`.map(idea => ({
|
|
105
|
+
* idea,
|
|
106
|
+
* viable: is`${idea} is viable`,
|
|
107
|
+
* market: ai`market size for ${idea}`,
|
|
108
|
+
* }))
|
|
109
|
+
*
|
|
110
|
+
* // Async iteration
|
|
111
|
+
* for await (const idea of list`startup ideas`) {
|
|
112
|
+
* console.log(idea)
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare const list: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string[]>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string[]>);
|
|
117
|
+
/**
|
|
118
|
+
* Generate multiple named lists with dynamic schema
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```ts
|
|
122
|
+
* // Destructuring infers the schema!
|
|
123
|
+
* const { pros, cons } = await lists`pros and cons of ${topic}`
|
|
124
|
+
*
|
|
125
|
+
* // No await - pipeline with other functions
|
|
126
|
+
* const { benefits, risks, costs } = lists`analysis of ${project}`
|
|
127
|
+
* const summary = ai`summarize: benefits=${benefits}, risks=${risks}`
|
|
128
|
+
* console.log(await summary)
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare const lists: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Record<string, string[]>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Record<string, string[]>>);
|
|
132
|
+
/**
|
|
133
|
+
* Extract structured data with dynamic schema
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* // Dynamic schema from destructuring
|
|
138
|
+
* const { name, email, phone } = await extract`contact info from ${document}`
|
|
139
|
+
*
|
|
140
|
+
* // As array
|
|
141
|
+
* const emails = await extract`email addresses from ${text}`
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare const extract: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<unknown[]>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<unknown[]>);
|
|
145
|
+
/**
|
|
146
|
+
* Summarize text
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```ts
|
|
150
|
+
* const summary = await summarize`${longArticle}`
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export declare const summarize: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
154
|
+
/**
|
|
155
|
+
* Check if something is true/false
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* // Simple check
|
|
160
|
+
* const isColor = await is`${topic} a color`
|
|
161
|
+
*
|
|
162
|
+
* // Pipeline - no await needed!
|
|
163
|
+
* const { conclusion } = ai`write about ${topic}`
|
|
164
|
+
* const isValid = is`${conclusion} is well-argued`
|
|
165
|
+
* if (await isValid) { ... }
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare const is: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<boolean>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<boolean>);
|
|
169
|
+
/**
|
|
170
|
+
* Generate a diagram
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* const diagram = await diagram`user authentication flow`
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export declare const diagram: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
178
|
+
/**
|
|
179
|
+
* Generate presentation slides
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```ts
|
|
183
|
+
* const slides = await slides`quarterly review`
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare const slides: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
187
|
+
/**
|
|
188
|
+
* Generate an image
|
|
189
|
+
*/
|
|
190
|
+
export declare const image: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Buffer<ArrayBufferLike>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Buffer<ArrayBufferLike>>);
|
|
191
|
+
/**
|
|
192
|
+
* Generate a video
|
|
193
|
+
*/
|
|
194
|
+
export declare const video: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Buffer<ArrayBufferLike>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Buffer<ArrayBufferLike>>);
|
|
195
|
+
/**
|
|
196
|
+
* Execute a task
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```ts
|
|
200
|
+
* const { summary, actions } = await do`send welcome email to ${user}`
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
declare function doImpl(promptOrStrings: string | TemplateStringsArray, ...args: unknown[]): AIPromise<{
|
|
204
|
+
summary: string;
|
|
205
|
+
actions: string[];
|
|
206
|
+
}>;
|
|
207
|
+
export { doImpl as do };
|
|
208
|
+
/**
|
|
209
|
+
* Conduct research on a topic
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```ts
|
|
213
|
+
* const { summary, findings, sources } = await research`${competitor} vs our product`
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
export declare const research: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<{
|
|
217
|
+
summary: string;
|
|
218
|
+
findings: string[];
|
|
219
|
+
sources: string[];
|
|
220
|
+
}>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<{
|
|
221
|
+
summary: string;
|
|
222
|
+
findings: string[];
|
|
223
|
+
sources: string[];
|
|
224
|
+
}>);
|
|
225
|
+
/**
|
|
226
|
+
* Read a URL and convert to markdown
|
|
227
|
+
*/
|
|
228
|
+
export declare const read: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
|
|
229
|
+
/**
|
|
230
|
+
* Browse a URL with browser automation
|
|
231
|
+
*/
|
|
232
|
+
export declare function browse(urlOrStrings: string | TemplateStringsArray, ...args: unknown[]): Promise<{
|
|
233
|
+
do: (action: string) => Promise<void>;
|
|
234
|
+
extract: (query: string) => Promise<unknown>;
|
|
235
|
+
screenshot: () => Promise<Buffer>;
|
|
236
|
+
close: () => Promise<void>;
|
|
237
|
+
}>;
|
|
238
|
+
/**
|
|
239
|
+
* LLM as judge - compare options and pick the best
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```ts
|
|
243
|
+
* const winner = await decide`higher click-through rate`(headlineA, headlineB)
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
export declare function decide(criteriaOrStrings: string | TemplateStringsArray, ...templateArgs: unknown[]): <T>(...options: T[]) => AIPromise<T>;
|
|
247
|
+
export interface HumanOptions extends GenerateOptions {
|
|
248
|
+
channel?: HumanChannel;
|
|
249
|
+
assignee?: string;
|
|
250
|
+
timeout?: number;
|
|
251
|
+
webhook?: string;
|
|
252
|
+
}
|
|
253
|
+
export interface HumanResult<T = unknown> {
|
|
254
|
+
pending: boolean;
|
|
255
|
+
requestId: string;
|
|
256
|
+
response?: T;
|
|
257
|
+
respondedBy?: string;
|
|
258
|
+
respondedAt?: Date;
|
|
259
|
+
artifacts?: {
|
|
260
|
+
slackBlocks?: unknown[];
|
|
261
|
+
emailHtml?: string;
|
|
262
|
+
webComponent?: string;
|
|
263
|
+
smsText?: string;
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Ask a human for input
|
|
268
|
+
*/
|
|
269
|
+
export declare const ask: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<string>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<string>>);
|
|
270
|
+
/**
|
|
271
|
+
* Request human approval
|
|
272
|
+
*/
|
|
273
|
+
export declare const approve: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<{
|
|
274
|
+
approved: boolean;
|
|
275
|
+
notes?: string;
|
|
276
|
+
}>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<{
|
|
277
|
+
approved: boolean;
|
|
278
|
+
notes?: string;
|
|
279
|
+
}>>);
|
|
280
|
+
/**
|
|
281
|
+
* Request human review
|
|
282
|
+
*/
|
|
283
|
+
export declare const review: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<{
|
|
284
|
+
rating?: number;
|
|
285
|
+
feedback: string;
|
|
286
|
+
approved?: boolean;
|
|
287
|
+
}>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<{
|
|
288
|
+
rating?: number;
|
|
289
|
+
feedback: string;
|
|
290
|
+
approved?: boolean;
|
|
291
|
+
}>>);
|
|
292
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EACL,SAAS,EAIV,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,UAAU,GACV,MAAM,GACN,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,CAAA;AAEb,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;IACpC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC,CA8BlB;AA+ID;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,6KAA8C,CAAA;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,2KAA2C,CAAA;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,2KAEf,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,IAAI,+KAA6C,CAAA;AAE9D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,+MAA8D,CAAA;AAEhF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,iLAAiD,CAAA;AAErE;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,2KAEpB,CAAA;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,EAAE,6KAA+C,CAAA;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,2KAElB,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,2KAEjB,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,6MAA2C,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,KAAK,6MAA2C,CAAA;AAM7D;;;;;;;GAOG;AACH,iBAAS,MAAM,CACb,eAAe,EAAE,MAAM,GAAG,oBAAoB,EAC9C,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,SAAS,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6BnD;AAED,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAA;AAEvB;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;aAAuC,MAAM;cAAY,MAAM,EAAE;aAAW,MAAM,EAAE;;aAA7C,MAAM;cAAY,MAAM,EAAE;aAAW,MAAM,EAAE;GAEvG,CAAA;AAMF;;GAEG;AACH,eAAO,MAAM,IAAI,2KAA2C,CAAA;AAE5D;;GAEG;AACH,wBAAsB,MAAM,CAC1B,YAAY,EAAE,MAAM,GAAG,oBAAoB,EAC3C,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;IACT,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5C,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B,CAAC,CAQD;AAMD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,iBAAiB,EAAE,MAAM,GAAG,oBAAoB,EAChD,GAAG,YAAY,EAAE,OAAO,EAAE,GACzB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAwCtC;AAMD,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,SAAS,CAAC,EAAE;QACV,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;GAEG;AACH,eAAO,MAAM,GAAG,qMAEd,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;cAAoD,OAAO;YAAU,MAAM;;cAAvB,OAAO;YAAU,MAAM;IAE7F,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM;aAAmD,MAAM;cAAY,MAAM;eAAa,OAAO;;aAA5C,MAAM;cAAY,MAAM;eAAa,OAAO;IAEhH,CAAA"}
|