ai-functions 0.3.0 → 0.4.0
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/.turbo/turbo-test.log +105 -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/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/schema.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplified schema syntax for AI generation
|
|
3
|
+
*
|
|
4
|
+
* Converts human-readable schema definitions to Zod schemas:
|
|
5
|
+
* - 'description' → z.string().describe('description')
|
|
6
|
+
* - 'description (number)' → z.number().describe('description')
|
|
7
|
+
* - 'description (boolean)' → z.boolean().describe('description')
|
|
8
|
+
* - 'description (integer)' → z.number().int().describe('description')
|
|
9
|
+
* - 'description (date)' → z.string().datetime().describe('description')
|
|
10
|
+
* - 'opt1 | opt2 | opt3' → z.enum(['opt1', 'opt2', 'opt3'])
|
|
11
|
+
* - ['description'] → z.array(z.string()).describe('description')
|
|
12
|
+
* - { nested } → z.object() recursively
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
/**
|
|
18
|
+
* Check if value is a Zod schema
|
|
19
|
+
*/
|
|
20
|
+
function isZodSchema(value) {
|
|
21
|
+
return value !== null &&
|
|
22
|
+
typeof value === 'object' &&
|
|
23
|
+
'_def' in value &&
|
|
24
|
+
'parse' in value;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convert a simplified schema to a Zod schema
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { schema } from 'ai-functions'
|
|
32
|
+
* import { z } from 'zod'
|
|
33
|
+
*
|
|
34
|
+
* // These are equivalent:
|
|
35
|
+
* const simple = schema({
|
|
36
|
+
* name: 'What is the recipe name?',
|
|
37
|
+
* ingredients: ['List all ingredients'],
|
|
38
|
+
* steps: ['List all cooking steps'],
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* const zod = z.object({
|
|
42
|
+
* name: z.string().describe('What is the recipe name?'),
|
|
43
|
+
* ingredients: z.array(z.string()).describe('List all ingredients'),
|
|
44
|
+
* steps: z.array(z.string()).describe('List all cooking steps'),
|
|
45
|
+
* })
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function schema(input) {
|
|
49
|
+
return convertToZod(input);
|
|
50
|
+
}
|
|
51
|
+
function convertToZod(input) {
|
|
52
|
+
// Already a Zod schema - pass through
|
|
53
|
+
if (isZodSchema(input)) {
|
|
54
|
+
return input;
|
|
55
|
+
}
|
|
56
|
+
// String handling
|
|
57
|
+
if (typeof input === 'string') {
|
|
58
|
+
// Enum syntax: 'option1 | option2 | option3'
|
|
59
|
+
if (input.includes(' | ')) {
|
|
60
|
+
const options = input.split(' | ').map(s => s.trim());
|
|
61
|
+
return z.enum(options);
|
|
62
|
+
}
|
|
63
|
+
// Type hint syntax: 'description (type)'
|
|
64
|
+
const typeMatch = input.match(/^(.+?)\s*\((number|boolean|integer|date)\)$/i);
|
|
65
|
+
if (typeMatch) {
|
|
66
|
+
const [, description, type] = typeMatch;
|
|
67
|
+
const desc = description.trim();
|
|
68
|
+
switch (type.toLowerCase()) {
|
|
69
|
+
case 'number':
|
|
70
|
+
return z.number().describe(desc);
|
|
71
|
+
case 'integer':
|
|
72
|
+
return z.number().int().describe(desc);
|
|
73
|
+
case 'boolean':
|
|
74
|
+
return z.boolean().describe(desc);
|
|
75
|
+
case 'date':
|
|
76
|
+
return z.string().datetime().describe(desc);
|
|
77
|
+
default:
|
|
78
|
+
return z.string().describe(desc);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Regular string description → z.string().describe()
|
|
82
|
+
return z.string().describe(input);
|
|
83
|
+
}
|
|
84
|
+
// Array with single element → z.array().describe()
|
|
85
|
+
if (Array.isArray(input) && input.length === 1) {
|
|
86
|
+
const [desc] = input;
|
|
87
|
+
// [string] → z.array(z.string()).describe(string)
|
|
88
|
+
if (typeof desc === 'string') {
|
|
89
|
+
return z.array(z.string()).describe(desc);
|
|
90
|
+
}
|
|
91
|
+
// [number] → z.array(z.number()) - number as type indicator
|
|
92
|
+
if (typeof desc === 'number') {
|
|
93
|
+
return z.array(z.number());
|
|
94
|
+
}
|
|
95
|
+
// [SimpleSchema] → z.array(converted)
|
|
96
|
+
return z.array(convertToZod(desc));
|
|
97
|
+
}
|
|
98
|
+
// Object → z.object() with recursive conversion
|
|
99
|
+
if (typeof input === 'object' && input !== null) {
|
|
100
|
+
const shape = {};
|
|
101
|
+
for (const [key, value] of Object.entries(input)) {
|
|
102
|
+
shape[key] = convertToZod(value);
|
|
103
|
+
}
|
|
104
|
+
return z.object(shape);
|
|
105
|
+
}
|
|
106
|
+
// Fallback - shouldn't reach here
|
|
107
|
+
return z.unknown();
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tagged template literal utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides support for tagged template syntax across all AI functions:
|
|
5
|
+
* - fn`prompt ${variable}` - template literal syntax
|
|
6
|
+
* - Objects/arrays auto-convert to YAML
|
|
7
|
+
* - Options chaining: fn`prompt`({ model: '...' })
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Common options for all AI functions
|
|
13
|
+
*/
|
|
14
|
+
export interface FunctionOptions {
|
|
15
|
+
/** Model to use (e.g., 'claude-opus-4-5', 'gpt-5-1', 'gemini-3-pro') */
|
|
16
|
+
model?: string;
|
|
17
|
+
/** Thinking level: 'none', 'low', 'medium', 'high', or token budget number */
|
|
18
|
+
thinking?: 'none' | 'low' | 'medium' | 'high' | number;
|
|
19
|
+
/** Temperature (0-2) */
|
|
20
|
+
temperature?: number;
|
|
21
|
+
/** Maximum tokens to generate */
|
|
22
|
+
maxTokens?: number;
|
|
23
|
+
/** System prompt */
|
|
24
|
+
system?: string;
|
|
25
|
+
/** Processing mode */
|
|
26
|
+
mode?: 'default' | 'background';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a tagged template literal into a prompt string
|
|
30
|
+
* Objects and arrays are converted to YAML for readability
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseTemplate(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
33
|
+
/**
|
|
34
|
+
* Result type that is both a Promise and can be called with options
|
|
35
|
+
*/
|
|
36
|
+
export type ChainablePromise<T> = Promise<T> & {
|
|
37
|
+
(options?: FunctionOptions): Promise<T>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Create a chainable promise that supports both await and options chaining
|
|
41
|
+
*/
|
|
42
|
+
export declare function createChainablePromise<T>(executor: (options?: FunctionOptions) => Promise<T>, defaultOptions?: FunctionOptions): ChainablePromise<T>;
|
|
43
|
+
/**
|
|
44
|
+
* Template function signature
|
|
45
|
+
*/
|
|
46
|
+
export type TemplateFunction<T> = {
|
|
47
|
+
(strings: TemplateStringsArray, ...values: unknown[]): ChainablePromise<T>;
|
|
48
|
+
(prompt: string, options?: FunctionOptions): Promise<T>;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Create a function that supports both tagged templates and regular calls
|
|
52
|
+
*/
|
|
53
|
+
export declare function createTemplateFunction<T>(handler: (prompt: string, options?: FunctionOptions) => Promise<T>): TemplateFunction<T>;
|
|
54
|
+
/**
|
|
55
|
+
* Create a function with batch support
|
|
56
|
+
*/
|
|
57
|
+
export interface BatchableFunction<T, TInput = string> extends TemplateFunction<T> {
|
|
58
|
+
batch: (inputs: TInput[]) => Promise<T[]>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Add batch capability to a template function
|
|
62
|
+
*/
|
|
63
|
+
export declare function withBatch<T, TInput = string>(fn: TemplateFunction<T>, batchHandler: (inputs: TInput[]) => Promise<T[]>): BatchableFunction<T, TInput>;
|
|
64
|
+
/**
|
|
65
|
+
* Create an async iterable from a streaming generator
|
|
66
|
+
*/
|
|
67
|
+
export declare function createAsyncIterable<T>(items: T[] | (() => AsyncGenerator<T>)): AsyncIterable<T>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a result that is both a Promise (resolves to array) and AsyncIterable (streams items)
|
|
70
|
+
*/
|
|
71
|
+
export type StreamableList<T> = Promise<T[]> & AsyncIterable<T>;
|
|
72
|
+
export declare function createStreamableList<T>(getItems: () => Promise<T[]>, streamItems?: () => AsyncGenerator<T>): StreamableList<T>;
|
|
73
|
+
//# sourceMappingURL=template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;IACtD,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,GAAG,YAAY,CAAA;CAChC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAgBzF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IAC7C,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACxC,CAAA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EACnD,cAAc,CAAC,EAAE,eAAe,GAC/B,gBAAgB,CAAC,CAAC,CAAC,CAerB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACxD,CAAA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GACjE,gBAAgB,CAAC,CAAC,CAAC,CAgBrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAChF,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CAC1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAC1C,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACvB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,GAC/C,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAI9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,GACrC,aAAa,CAAC,CAAC,CAAC,CAalB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAC5B,WAAW,CAAC,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,GACpC,cAAc,CAAC,CAAC,CAAC,CA+CnB"}
|
package/dist/template.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tagged template literal utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides support for tagged template syntax across all AI functions:
|
|
5
|
+
* - fn`prompt ${variable}` - template literal syntax
|
|
6
|
+
* - Objects/arrays auto-convert to YAML
|
|
7
|
+
* - Options chaining: fn`prompt`({ model: '...' })
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { stringify } from 'yaml';
|
|
12
|
+
/**
|
|
13
|
+
* Parse a tagged template literal into a prompt string
|
|
14
|
+
* Objects and arrays are converted to YAML for readability
|
|
15
|
+
*/
|
|
16
|
+
export function parseTemplate(strings, ...values) {
|
|
17
|
+
return strings.reduce((result, str, i) => {
|
|
18
|
+
const value = values[i];
|
|
19
|
+
if (value === undefined) {
|
|
20
|
+
return result + str;
|
|
21
|
+
}
|
|
22
|
+
// Convert objects/arrays to YAML
|
|
23
|
+
if (typeof value === 'object' && value !== null) {
|
|
24
|
+
const yaml = stringify(value).trim();
|
|
25
|
+
return result + str + '\n' + yaml;
|
|
26
|
+
}
|
|
27
|
+
// Primitives use toString()
|
|
28
|
+
return result + str + String(value);
|
|
29
|
+
}, '');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a chainable promise that supports both await and options chaining
|
|
33
|
+
*/
|
|
34
|
+
export function createChainablePromise(executor, defaultOptions) {
|
|
35
|
+
// Create the base promise
|
|
36
|
+
const basePromise = executor(defaultOptions);
|
|
37
|
+
// Create a function that accepts options
|
|
38
|
+
const chainable = ((options) => {
|
|
39
|
+
return executor({ ...defaultOptions, ...options });
|
|
40
|
+
});
|
|
41
|
+
// Make it thenable
|
|
42
|
+
chainable.then = basePromise.then.bind(basePromise);
|
|
43
|
+
chainable.catch = basePromise.catch.bind(basePromise);
|
|
44
|
+
chainable.finally = basePromise.finally.bind(basePromise);
|
|
45
|
+
return chainable;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a function that supports both tagged templates and regular calls
|
|
49
|
+
*/
|
|
50
|
+
export function createTemplateFunction(handler) {
|
|
51
|
+
function templateFn(promptOrStrings, ...args) {
|
|
52
|
+
// Tagged template literal
|
|
53
|
+
if (Array.isArray(promptOrStrings) && 'raw' in promptOrStrings) {
|
|
54
|
+
const prompt = parseTemplate(promptOrStrings, ...args);
|
|
55
|
+
return createChainablePromise((options) => handler(prompt, options));
|
|
56
|
+
}
|
|
57
|
+
// Regular function call
|
|
58
|
+
return handler(promptOrStrings, args[0]);
|
|
59
|
+
}
|
|
60
|
+
return templateFn;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Add batch capability to a template function
|
|
64
|
+
*/
|
|
65
|
+
export function withBatch(fn, batchHandler) {
|
|
66
|
+
const batchable = fn;
|
|
67
|
+
batchable.batch = batchHandler;
|
|
68
|
+
return batchable;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create an async iterable from a streaming generator
|
|
72
|
+
*/
|
|
73
|
+
export function createAsyncIterable(items) {
|
|
74
|
+
if (Array.isArray(items)) {
|
|
75
|
+
return {
|
|
76
|
+
async *[Symbol.asyncIterator]() {
|
|
77
|
+
for (const item of items) {
|
|
78
|
+
yield item;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
[Symbol.asyncIterator]: items,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function createStreamableList(getItems, streamItems) {
|
|
88
|
+
const promise = getItems();
|
|
89
|
+
const asyncIterator = streamItems
|
|
90
|
+
? streamItems
|
|
91
|
+
: async function* () {
|
|
92
|
+
const items = await promise;
|
|
93
|
+
for (const item of items) {
|
|
94
|
+
yield item;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
// Create a proper Promise-like object with async iterator
|
|
98
|
+
const result = Object.create(null);
|
|
99
|
+
// Add Promise methods
|
|
100
|
+
Object.defineProperty(result, 'then', {
|
|
101
|
+
value: promise.then.bind(promise),
|
|
102
|
+
writable: false,
|
|
103
|
+
enumerable: false,
|
|
104
|
+
});
|
|
105
|
+
Object.defineProperty(result, 'catch', {
|
|
106
|
+
value: promise.catch.bind(promise),
|
|
107
|
+
writable: false,
|
|
108
|
+
enumerable: false,
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(result, 'finally', {
|
|
111
|
+
value: promise.finally.bind(promise),
|
|
112
|
+
writable: false,
|
|
113
|
+
enumerable: false,
|
|
114
|
+
});
|
|
115
|
+
// Add async iterator
|
|
116
|
+
Object.defineProperty(result, Symbol.asyncIterator, {
|
|
117
|
+
value: asyncIterator,
|
|
118
|
+
writable: false,
|
|
119
|
+
enumerable: false,
|
|
120
|
+
});
|
|
121
|
+
// Add Symbol.toStringTag for Promise compatibility
|
|
122
|
+
Object.defineProperty(result, Symbol.toStringTag, {
|
|
123
|
+
value: 'Promise',
|
|
124
|
+
writable: false,
|
|
125
|
+
enumerable: false,
|
|
126
|
+
});
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|