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/ai.d.ts
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI() and ai() - Core AI function constructors
|
|
3
|
+
*
|
|
4
|
+
* These provide the main entry points for AI-powered functions,
|
|
5
|
+
* with full RPC promise pipelining support via rpc.do.
|
|
6
|
+
*/
|
|
7
|
+
type RpcPromise<T> = Promise<T>;
|
|
8
|
+
/**
|
|
9
|
+
* Base class for RPC service targets
|
|
10
|
+
* This is a placeholder for services that want to expose methods over RPC
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class RpcTarget {
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Options for RPC session (connection to remote AI service)
|
|
16
|
+
*/
|
|
17
|
+
export interface RPCSessionOptions {
|
|
18
|
+
/** WebSocket URL for RPC connection */
|
|
19
|
+
wsUrl?: string;
|
|
20
|
+
/** HTTP URL for RPC fallback */
|
|
21
|
+
httpUrl?: string;
|
|
22
|
+
/** Authentication token */
|
|
23
|
+
token?: string;
|
|
24
|
+
}
|
|
25
|
+
import type { SimpleSchema } from './schema.js';
|
|
26
|
+
import type { LanguageModel } from 'ai';
|
|
27
|
+
import type { AIClient, AIFunctionDefinition, AIGenerateOptions, AIGenerateResult, JSONSchema, ImageOptions, ImageResult, VideoOptions, VideoResult, WriteOptions, ListResult, ListsResult, FunctionDefinition, DefinedFunction, CodeFunctionDefinition, GenerativeFunctionDefinition, AgenticFunctionDefinition, HumanFunctionDefinition, FunctionRegistry } from './types.js';
|
|
28
|
+
/**
|
|
29
|
+
* Options for creating an AI RPC client instance
|
|
30
|
+
*/
|
|
31
|
+
export interface AIClientOptions extends RPCSessionOptions {
|
|
32
|
+
/** Default model to use */
|
|
33
|
+
model?: string;
|
|
34
|
+
/** Default temperature */
|
|
35
|
+
temperature?: number;
|
|
36
|
+
/** Default max tokens */
|
|
37
|
+
maxTokens?: number;
|
|
38
|
+
/** Custom functions available to the AI */
|
|
39
|
+
functions?: AIFunctionDefinition[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Options for AI schema functions (subset of generateObject options)
|
|
43
|
+
*/
|
|
44
|
+
export interface AISchemaOptions {
|
|
45
|
+
/** Model to use (string alias or LanguageModel) */
|
|
46
|
+
model?: string | LanguageModel;
|
|
47
|
+
/** System prompt */
|
|
48
|
+
system?: string;
|
|
49
|
+
/** Generation mode */
|
|
50
|
+
mode?: 'auto' | 'json' | 'tool';
|
|
51
|
+
/** Temperature (0-2) */
|
|
52
|
+
temperature?: number;
|
|
53
|
+
/** Top P sampling */
|
|
54
|
+
topP?: number;
|
|
55
|
+
/** Top K sampling */
|
|
56
|
+
topK?: number;
|
|
57
|
+
/** Presence penalty */
|
|
58
|
+
presencePenalty?: number;
|
|
59
|
+
/** Frequency penalty */
|
|
60
|
+
frequencyPenalty?: number;
|
|
61
|
+
/** Max tokens to generate */
|
|
62
|
+
maxTokens?: number;
|
|
63
|
+
/** Max retries on failure */
|
|
64
|
+
maxRetries?: number;
|
|
65
|
+
/** Abort signal */
|
|
66
|
+
abortSignal?: AbortSignal;
|
|
67
|
+
/** Custom headers */
|
|
68
|
+
headers?: Record<string, string>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Schema-based functions
|
|
72
|
+
*/
|
|
73
|
+
type SchemaFunctions<T extends Record<string, SimpleSchema>> = {
|
|
74
|
+
[K in keyof T]: (prompt?: string, options?: AISchemaOptions) => Promise<InferSimpleSchemaResult<T[K]>>;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Create AI functions from schemas
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* const ai = AI({
|
|
82
|
+
* storyBrand: {
|
|
83
|
+
* hero: 'Who is the customer?',
|
|
84
|
+
* problem: {
|
|
85
|
+
* internal: 'What internal problem do they face?',
|
|
86
|
+
* external: 'What external challenge exists?',
|
|
87
|
+
* philosophical: 'Why is this wrong?',
|
|
88
|
+
* },
|
|
89
|
+
* guide: 'Who helps them? (the brand)',
|
|
90
|
+
* plan: ['What are the steps to success?'],
|
|
91
|
+
* callToAction: 'What should they do?',
|
|
92
|
+
* success: 'What does success look like?',
|
|
93
|
+
* failure: 'What happens if they fail?',
|
|
94
|
+
* },
|
|
95
|
+
* recipe: {
|
|
96
|
+
* name: 'Recipe name',
|
|
97
|
+
* type: 'food | drink | dessert',
|
|
98
|
+
* servings: 'How many servings? (number)',
|
|
99
|
+
* ingredients: ['List all ingredients'],
|
|
100
|
+
* steps: ['Cooking steps in order'],
|
|
101
|
+
* },
|
|
102
|
+
* })
|
|
103
|
+
*
|
|
104
|
+
* // Call the generated functions
|
|
105
|
+
* const brand = await ai.storyBrand('Acme Corp sells widgets')
|
|
106
|
+
* const dinner = await ai.recipe('Italian pasta for 4 people')
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function AI<T extends Record<string, SimpleSchema>>(schemas: T, defaultOptions?: AISchemaOptions): SchemaFunctions<T>;
|
|
110
|
+
/**
|
|
111
|
+
* Create an AI RPC client instance
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* // Connect to remote AI service
|
|
116
|
+
* const ai = AI({ wsUrl: 'wss://ai.example.com/rpc' })
|
|
117
|
+
*
|
|
118
|
+
* // Use promise pipelining - single round trip!
|
|
119
|
+
* const result = ai.generate({ prompt: 'Hello' })
|
|
120
|
+
* const upper = result.text.map(t => t.toUpperCase())
|
|
121
|
+
* console.log(await upper)
|
|
122
|
+
*
|
|
123
|
+
* // Dynamic function calling
|
|
124
|
+
* const summary = await ai.summarize({ text: longText })
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function AI(options: AIClientOptions): AIClient & Record<string, (...args: unknown[]) => RpcPromise<unknown>>;
|
|
128
|
+
/**
|
|
129
|
+
* Infer result type from simple schema
|
|
130
|
+
*/
|
|
131
|
+
type InferSimpleSchemaResult<T> = T extends string ? string : T extends [string] ? string[] : T extends {
|
|
132
|
+
[K: string]: SimpleSchema;
|
|
133
|
+
} ? {
|
|
134
|
+
[K in keyof T]: InferSimpleSchemaResult<T[K]>;
|
|
135
|
+
} : unknown;
|
|
136
|
+
/**
|
|
137
|
+
* Helper to create a function that supports both regular calls and tagged template literals
|
|
138
|
+
* @example
|
|
139
|
+
* const fn = withTemplate((prompt) => doSomething(prompt))
|
|
140
|
+
* fn('hello') // regular call
|
|
141
|
+
* fn`hello ${name}` // tagged template literal
|
|
142
|
+
*/
|
|
143
|
+
export declare function withTemplate<TArgs extends unknown[], TReturn>(fn: (prompt: string, ...args: TArgs) => TReturn): ((prompt: string, ...args: TArgs) => TReturn) & ((strings: TemplateStringsArray, ...values: unknown[]) => TReturn);
|
|
144
|
+
/**
|
|
145
|
+
* Configure the default AI client
|
|
146
|
+
*/
|
|
147
|
+
export declare function configureAI(options: AIClientOptions): void;
|
|
148
|
+
/**
|
|
149
|
+
* Base class for implementing AI services
|
|
150
|
+
*
|
|
151
|
+
* Extend this class to create your own AI service implementation.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* class MyAIService extends AIServiceTarget {
|
|
156
|
+
* async generate(options: AIGenerateOptions): Promise<AIGenerateResult> {
|
|
157
|
+
* // Your implementation
|
|
158
|
+
* }
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare abstract class AIServiceTarget extends RpcTarget implements AIClient {
|
|
163
|
+
abstract generate(options: AIGenerateOptions): RpcPromise<AIGenerateResult>;
|
|
164
|
+
abstract do(action: string, context?: unknown): RpcPromise<unknown>;
|
|
165
|
+
abstract is(value: unknown, type: string | JSONSchema): RpcPromise<boolean>;
|
|
166
|
+
abstract code(prompt: string, language?: string): RpcPromise<string>;
|
|
167
|
+
abstract decide<T extends string>(options: T[], context?: string): RpcPromise<T>;
|
|
168
|
+
abstract diagram(description: string, format?: 'mermaid' | 'svg' | 'ascii'): RpcPromise<string>;
|
|
169
|
+
abstract image(prompt: string, options?: ImageOptions): RpcPromise<ImageResult>;
|
|
170
|
+
abstract video(prompt: string, options?: VideoOptions): RpcPromise<VideoResult>;
|
|
171
|
+
abstract write(prompt: string, options?: WriteOptions): RpcPromise<string>;
|
|
172
|
+
abstract list(prompt: string): RpcPromise<ListResult>;
|
|
173
|
+
abstract lists(prompt: string): RpcPromise<ListsResult>;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Standalone function for defining AI functions
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* import { defineFunction } from 'ai-functions'
|
|
181
|
+
*
|
|
182
|
+
* const summarize = defineFunction({
|
|
183
|
+
* type: 'generative',
|
|
184
|
+
* name: 'summarize',
|
|
185
|
+
* args: { text: 'Text to summarize' },
|
|
186
|
+
* output: 'string',
|
|
187
|
+
* promptTemplate: 'Summarize: {{text}}',
|
|
188
|
+
* })
|
|
189
|
+
*
|
|
190
|
+
* const result = await summarize.call({ text: 'Long article...' })
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export declare function defineFunction<TArgs, TReturn>(definition: FunctionDefinition<TArgs, TReturn>): DefinedFunction<TArgs, TReturn>;
|
|
194
|
+
/**
|
|
195
|
+
* Global function registry
|
|
196
|
+
*
|
|
197
|
+
* Note: This is in-memory only. For persistence, use mdxai or mdxdb packages.
|
|
198
|
+
*/
|
|
199
|
+
export declare const functions: FunctionRegistry;
|
|
200
|
+
/**
|
|
201
|
+
* Auto-define a function based on its name and arguments, or define with explicit definition
|
|
202
|
+
*
|
|
203
|
+
* When called with (name, args), uses AI to analyze and determine:
|
|
204
|
+
* - What type of function it should be (code, generative, agentic, human)
|
|
205
|
+
* - What it should return
|
|
206
|
+
* - How it should be implemented
|
|
207
|
+
*
|
|
208
|
+
* When called with a FunctionDefinition, creates the function directly.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```ts
|
|
212
|
+
* // Auto-define from name and example args
|
|
213
|
+
* const planTrip = await define('planTrip', { destination: 'Tokyo', travelers: 2 })
|
|
214
|
+
*
|
|
215
|
+
* // Or define explicitly
|
|
216
|
+
* const summarize = define.generative({
|
|
217
|
+
* name: 'summarize',
|
|
218
|
+
* args: { text: 'Text to summarize' },
|
|
219
|
+
* output: 'string',
|
|
220
|
+
* })
|
|
221
|
+
*
|
|
222
|
+
* // Or with full definition
|
|
223
|
+
* const fn = defineFunction({
|
|
224
|
+
* type: 'generative',
|
|
225
|
+
* name: 'translate',
|
|
226
|
+
* args: { text: 'Text', lang: 'Target language' },
|
|
227
|
+
* output: 'string',
|
|
228
|
+
* })
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
declare function autoDefineImpl(name: string, args: Record<string, unknown>): Promise<DefinedFunction>;
|
|
232
|
+
/**
|
|
233
|
+
* Define functions - auto-define or use typed helpers
|
|
234
|
+
*/
|
|
235
|
+
export declare const define: typeof autoDefineImpl & {
|
|
236
|
+
/**
|
|
237
|
+
* Define a code generation function
|
|
238
|
+
*/
|
|
239
|
+
code: <TArgs, TReturn>(definition: Omit<CodeFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
|
|
240
|
+
/**
|
|
241
|
+
* Define a generative function
|
|
242
|
+
*/
|
|
243
|
+
generative: <TArgs, TReturn>(definition: Omit<GenerativeFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
|
|
244
|
+
/**
|
|
245
|
+
* Define an agentic function
|
|
246
|
+
*/
|
|
247
|
+
agentic: <TArgs, TReturn>(definition: Omit<AgenticFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
|
|
248
|
+
/**
|
|
249
|
+
* Define a human-in-the-loop function
|
|
250
|
+
*/
|
|
251
|
+
human: <TArgs, TReturn>(definition: Omit<HumanFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Type for the AI proxy with auto-define capability
|
|
255
|
+
*/
|
|
256
|
+
export interface AIProxy {
|
|
257
|
+
/** Function registry */
|
|
258
|
+
functions: FunctionRegistry;
|
|
259
|
+
/** Define functions */
|
|
260
|
+
define: typeof define;
|
|
261
|
+
/** Define a function with full definition */
|
|
262
|
+
defineFunction: typeof defineFunction;
|
|
263
|
+
/** Dynamic function calls */
|
|
264
|
+
[key: string]: unknown;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Default AI instance with auto-define capability
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```ts
|
|
271
|
+
* import { ai } from 'ai-functions'
|
|
272
|
+
*
|
|
273
|
+
* // Auto-define and call
|
|
274
|
+
* const result = await ai.summarize({ text: 'Long article...' })
|
|
275
|
+
*
|
|
276
|
+
* // Access functions registry
|
|
277
|
+
* ai.functions.list()
|
|
278
|
+
*
|
|
279
|
+
* // Define explicitly
|
|
280
|
+
* ai.define.generative({ name: 'translate', ... })
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
export declare const ai: AIProxy;
|
|
284
|
+
export {};
|
|
285
|
+
//# sourceMappingURL=ai.d.ts.map
|
package/dist/ai.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,KAAK,UAAU,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;AAE/B;;;GAGG;AACH,8BAAsB,SAAS;CAE9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EAEtB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EAGvB,gBAAgB,EAEjB,MAAM,YAAY,CAAA;AAGnB;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAA;IAC9B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAC/B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI;KAC5D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACvD,OAAO,EAAE,CAAC,EACV,cAAc,CAAC,EAAE,eAAe,GAC/B,eAAe,CAAC,CAAC,CAAC,CAAA;AAErB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,EAAE,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;AAqDpH;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC9C,MAAM,GACN,CAAC,SAAS,CAAC,MAAM,CAAC,GAClB,MAAM,EAAE,GACR,CAAC,SAAS;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GACvC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACjD,OAAO,CAAA;AA6aX;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAC3D,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GAC9C,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAYpH;AAKD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAE1D;AAwBD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,eAAgB,SAAQ,SAAU,YAAW,QAAQ;IACzE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAC3E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACpE,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/F,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;IAC/E,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC;IAC/E,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IAC1E,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;IACrD,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAC3C,UAAU,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,GAC7C,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAEjC;AAqCD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAiD,CAAA;AA2KzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,iBAAe,cAAc,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;WACI,KAAK,EAAE,OAAO,cACP,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KAC/D,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;IAMlC;;OAEG;iBACU,KAAK,EAAE,OAAO,cACb,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KACrE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;IAMlC;;OAEG;cACO,KAAK,EAAE,OAAO,cACV,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KAClE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;IAMlC;;OAEG;YACK,KAAK,EAAE,OAAO,cACR,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KAChE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;CAKlC,CAAA;AA0EF;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,wBAAwB;IACxB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,uBAAuB;IACvB,MAAM,EAAE,OAAO,MAAM,CAAA;IACrB,6CAA6C;IAC7C,cAAc,EAAE,OAAO,cAAc,CAAA;IACrC,6BAA6B;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,EAAE,OAAyB,CAAA"}
|