ai-functions 2.1.1 → 2.3.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 +1 -4
- package/CHANGELOG.md +68 -1
- package/README.md +397 -157
- package/dist/ai-promise.d.ts +50 -3
- package/dist/ai-promise.d.ts.map +1 -1
- package/dist/ai-promise.js +410 -51
- package/dist/ai-promise.js.map +1 -1
- package/dist/ai-schemas.d.ts +56 -0
- package/dist/ai-schemas.d.ts.map +1 -0
- package/dist/ai-schemas.js +53 -0
- package/dist/ai-schemas.js.map +1 -0
- package/dist/ai.d.ts +16 -242
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +54 -837
- package/dist/ai.js.map +1 -1
- package/dist/batch/anthropic.d.ts +6 -4
- package/dist/batch/anthropic.d.ts.map +1 -1
- package/dist/batch/anthropic.js +83 -145
- package/dist/batch/anthropic.js.map +1 -1
- package/dist/batch/bedrock.d.ts +8 -30
- package/dist/batch/bedrock.d.ts.map +1 -1
- package/dist/batch/bedrock.js +155 -338
- package/dist/batch/bedrock.js.map +1 -1
- package/dist/batch/cloudflare.d.ts +8 -20
- package/dist/batch/cloudflare.d.ts.map +1 -1
- package/dist/batch/cloudflare.js +68 -189
- package/dist/batch/cloudflare.js.map +1 -1
- package/dist/batch/google.d.ts +6 -20
- package/dist/batch/google.d.ts.map +1 -1
- package/dist/batch/google.js +70 -238
- package/dist/batch/google.js.map +1 -1
- package/dist/batch/index.d.ts +4 -1
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +4 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/batch/memory.d.ts +1 -1
- package/dist/batch/memory.d.ts.map +1 -1
- package/dist/batch/memory.js +14 -10
- package/dist/batch/memory.js.map +1 -1
- package/dist/batch/openai.d.ts +11 -14
- package/dist/batch/openai.d.ts.map +1 -1
- package/dist/batch/openai.js +52 -156
- package/dist/batch/openai.js.map +1 -1
- package/dist/batch/provider.d.ts +111 -0
- package/dist/batch/provider.d.ts.map +1 -0
- package/dist/batch/provider.js +233 -0
- package/dist/batch/provider.js.map +1 -0
- package/dist/batch-map.d.ts.map +1 -1
- package/dist/batch-map.js +23 -17
- package/dist/batch-map.js.map +1 -1
- package/dist/batch-queue.d.ts +65 -0
- package/dist/batch-queue.d.ts.map +1 -1
- package/dist/batch-queue.js +169 -14
- package/dist/batch-queue.js.map +1 -1
- package/dist/budget.d.ts +272 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +513 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache.d.ts +295 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +433 -0
- package/dist/cache.js.map +1 -0
- package/dist/context.d.ts +42 -8
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +64 -62
- package/dist/context.js.map +1 -1
- package/dist/digital-objects-registry.d.ts +229 -0
- package/dist/digital-objects-registry.d.ts.map +1 -0
- package/dist/digital-objects-registry.js +617 -0
- package/dist/digital-objects-registry.js.map +1 -0
- package/dist/embeddings.d.ts +2 -2
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/eval/runner.d.ts +10 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +41 -35
- package/dist/eval/runner.js.map +1 -1
- package/dist/eval-log/in-memory.d.ts +34 -0
- package/dist/eval-log/in-memory.d.ts.map +1 -0
- package/dist/eval-log/in-memory.js +84 -0
- package/dist/eval-log/in-memory.js.map +1 -0
- package/dist/eval-log/index.d.ts +29 -0
- package/dist/eval-log/index.d.ts.map +1 -0
- package/dist/eval-log/index.js +39 -0
- package/dist/eval-log/index.js.map +1 -0
- package/dist/eval-log/types.d.ts +101 -0
- package/dist/eval-log/types.d.ts.map +1 -0
- package/dist/eval-log/types.js +16 -0
- package/dist/eval-log/types.js.map +1 -0
- package/dist/function-registry.d.ts +116 -0
- package/dist/function-registry.d.ts.map +1 -0
- package/dist/function-registry.js +546 -0
- package/dist/function-registry.js.map +1 -0
- package/dist/generate.d.ts +9 -3
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +18 -22
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +35 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -42
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +118 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +187 -0
- package/dist/logger.js.map +1 -0
- package/dist/middleware/budget.d.ts +84 -0
- package/dist/middleware/budget.d.ts.map +1 -0
- package/dist/middleware/budget.js +110 -0
- package/dist/middleware/budget.js.map +1 -0
- package/dist/middleware/cache.d.ts +103 -0
- package/dist/middleware/cache.d.ts.map +1 -0
- package/dist/middleware/cache.js +228 -0
- package/dist/middleware/cache.js.map +1 -0
- package/dist/middleware/embed-cache.d.ts +99 -0
- package/dist/middleware/embed-cache.d.ts.map +1 -0
- package/dist/middleware/embed-cache.js +128 -0
- package/dist/middleware/embed-cache.js.map +1 -0
- package/dist/middleware/index.d.ts +11 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/trace.d.ts +103 -0
- package/dist/middleware/trace.d.ts.map +1 -0
- package/dist/middleware/trace.js +176 -0
- package/dist/middleware/trace.js.map +1 -0
- package/dist/primitives.d.ts +120 -1
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +398 -26
- package/dist/primitives.js.map +1 -1
- package/dist/retry.d.ts +368 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +646 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -10
- package/dist/schema.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +285 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +6 -1
- package/dist/template.js.map +1 -1
- package/dist/tool-orchestration.d.ts +453 -0
- package/dist/tool-orchestration.d.ts.map +1 -0
- package/dist/tool-orchestration.js +763 -0
- package/dist/tool-orchestration.js.map +1 -0
- package/dist/type-guards.d.ts +28 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +29 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/types.d.ts +135 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +36 -1
- package/dist/types.js.map +1 -1
- package/dist/wrap-for-v3.d.ts +80 -0
- package/dist/wrap-for-v3.d.ts.map +1 -0
- package/dist/wrap-for-v3.js +89 -0
- package/dist/wrap-for-v3.js.map +1 -0
- package/examples/00-quickstart.ts +232 -0
- package/examples/01-rag-chatbot.ts +212 -0
- package/examples/02-multi-agent-research.ts +290 -0
- package/examples/03-email-classification.ts +379 -0
- package/examples/04-content-moderation.ts +400 -0
- package/examples/05-document-extraction.ts +455 -0
- package/examples/06-streaming-chat-nextjs.ts +437 -0
- package/examples/07-cloudflare-worker.ts +483 -0
- package/examples/08-batch-processing.ts +491 -0
- package/examples/09-budget-constrained.ts +527 -0
- package/examples/10-tool-orchestration.ts +565 -0
- package/examples/11-retry-resilience.ts +403 -0
- package/examples/12-caching-strategies.ts +422 -0
- package/examples/README.md +145 -0
- package/package.json +10 -6
- package/src/ai-promise.ts +528 -99
- package/src/ai-schemas.ts +122 -0
- package/src/ai.ts +69 -1153
- package/src/batch/anthropic.ts +96 -161
- package/src/batch/bedrock.ts +203 -454
- package/src/batch/cloudflare.ts +99 -282
- package/src/batch/google.ts +91 -297
- package/src/batch/index.ts +4 -1
- package/src/batch/memory.ts +15 -10
- package/src/batch/openai.ts +65 -193
- package/src/batch/provider.ts +336 -0
- package/src/batch-map.ts +29 -24
- package/src/batch-queue.ts +200 -11
- package/src/budget.ts +740 -0
- package/src/cache.ts +681 -0
- package/src/context.ts +122 -76
- package/src/digital-objects-registry.ts +750 -0
- package/src/errors.ts +37 -0
- package/src/eval/runner.ts +63 -38
- package/src/eval-log/in-memory.ts +90 -0
- package/src/eval-log/index.ts +46 -0
- package/src/eval-log/types.ts +110 -0
- package/src/function-registry.ts +671 -0
- package/src/generate.ts +33 -33
- package/src/index.ts +325 -49
- package/src/logger.ts +232 -0
- package/src/middleware/budget.ts +171 -0
- package/src/middleware/cache.ts +299 -0
- package/src/middleware/embed-cache.ts +195 -0
- package/src/middleware/index.ts +23 -0
- package/src/middleware/trace.ts +248 -0
- package/src/primitives.ts +589 -62
- package/src/retry.ts +902 -0
- package/src/schema.ts +8 -17
- package/src/telemetry.ts +403 -0
- package/src/template.ts +8 -4
- package/src/tool-orchestration.ts +1173 -0
- package/src/type-guards.ts +31 -0
- package/src/types.ts +164 -25
- package/src/wrap-for-v3.ts +105 -0
- package/test/ai-promise.test.ts +1080 -0
- package/test/ai-proxy.test.ts +1 -1
- package/test/backward-compat.test.ts +147 -0
- package/test/batch-autosubmit-errors.test.ts +610 -0
- package/test/batch-blog-posts.test.ts +87 -129
- package/test/budget-tracking.test.ts +800 -0
- package/test/cache.test.ts +712 -0
- package/test/context-isolation.test.ts +687 -0
- package/test/core-functions.test.ts +183 -579
- package/test/decide.test.ts +154 -322
- package/test/define.test.ts +211 -8
- package/test/digital-objects-registry.test.ts +760 -0
- package/test/embedding-cache-middleware.test.ts +140 -0
- package/test/evals/deterministic.eval.test.ts +376 -0
- package/test/generate-core.test.ts +140 -229
- package/test/implicit-batch.test.ts +22 -65
- package/test/json-parse-error-handling.test.ts +463 -0
- package/test/retry-policy-integration.test.ts +117 -0
- package/test/retry.test.ts +1016 -0
- package/test/schema.test.ts +55 -19
- package/test/streaming.test.ts +316 -0
- package/test/template.test.ts +1164 -0
- package/test/tool-orchestration.test.ts +1040 -0
- package/test/wrap-for-v3.test.ts +612 -0
- package/vitest.config.js +6 -0
- package/vitest.config.ts +20 -0
- package/dist/rpc/auth.d.ts +0 -69
- package/dist/rpc/auth.d.ts.map +0 -1
- package/dist/rpc/auth.js +0 -136
- package/dist/rpc/auth.js.map +0 -1
- package/dist/rpc/client.d.ts +0 -62
- package/dist/rpc/client.d.ts.map +0 -1
- package/dist/rpc/client.js +0 -103
- package/dist/rpc/client.js.map +0 -1
- package/dist/rpc/deferred.d.ts +0 -60
- package/dist/rpc/deferred.d.ts.map +0 -1
- package/dist/rpc/deferred.js +0 -96
- package/dist/rpc/deferred.js.map +0 -1
- package/dist/rpc/index.d.ts +0 -22
- package/dist/rpc/index.d.ts.map +0 -1
- package/dist/rpc/index.js +0 -38
- package/dist/rpc/index.js.map +0 -1
- package/dist/rpc/local.d.ts +0 -42
- package/dist/rpc/local.d.ts.map +0 -1
- package/dist/rpc/local.js +0 -50
- package/dist/rpc/local.js.map +0 -1
- package/dist/rpc/server.d.ts +0 -165
- package/dist/rpc/server.d.ts.map +0 -1
- package/dist/rpc/server.js +0 -405
- package/dist/rpc/server.js.map +0 -1
- package/dist/rpc/session.d.ts +0 -32
- package/dist/rpc/session.d.ts.map +0 -1
- package/dist/rpc/session.js +0 -43
- package/dist/rpc/session.js.map +0 -1
- package/dist/rpc/transport.d.ts +0 -306
- package/dist/rpc/transport.d.ts.map +0 -1
- package/dist/rpc/transport.js +0 -731
- package/dist/rpc/transport.js.map +0 -1
- package/src/batch/anthropic.js +0 -256
- package/src/batch/bedrock.js +0 -584
- package/src/batch/cloudflare.js +0 -287
- package/src/batch/google.js +0 -359
- package/src/batch/index.js +0 -30
- package/src/batch/memory.js +0 -187
- package/src/batch/openai.js +0 -402
- package/src/eval/index.js +0 -7
- package/src/eval/models.js +0 -119
- package/src/eval/runner.js +0 -147
- package/test/schema.test.js +0 -96
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* traceMiddleware — emit per-call trace events for `wrapLanguageModel`
|
|
3
|
+
*
|
|
4
|
+
* Wraps `doGenerate` / `doStream` and emits a {@link TraceEvent} on every
|
|
5
|
+
* completion. The sink is opaque (caller supplies `emit`) so this primitive
|
|
6
|
+
* works equally well piping into:
|
|
7
|
+
*
|
|
8
|
+
* - the v3 cascade-walker InvocationEvent stream (round 16+ work to add
|
|
9
|
+
* `'persona-trace'` / `'cascade-trace'` to the union),
|
|
10
|
+
* - an {@link import('../eval-log/index.js').EvalLogStore} for fixture
|
|
11
|
+
* replay,
|
|
12
|
+
* - OpenTelemetry / Datadog / Honeycomb adapters that map the event into
|
|
13
|
+
* a span.
|
|
14
|
+
*
|
|
15
|
+
* **Emit-error tolerance:** if the supplied `emit` throws, we *swallow* the
|
|
16
|
+
* error (with a one-time `console.warn`) so a flaky trace sink can never
|
|
17
|
+
* break the wrapped LLM call. This matches the Evalite v0.19 trace
|
|
18
|
+
* middleware behaviour.
|
|
19
|
+
*
|
|
20
|
+
* Composition note: install **last** so the event sees the final outcome
|
|
21
|
+
* (post-cache, post-budget). The event's `costUsd` field is best-effort —
|
|
22
|
+
* the trace middleware doesn't have direct access to the budget tracker, so
|
|
23
|
+
* the caller can pass a `getCostUsd` resolver if they want costs in the
|
|
24
|
+
* event payload.
|
|
25
|
+
*
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Helpers
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Flatten the structured V3 prompt into a single string for cheap storage.
|
|
33
|
+
* Walks system / user / assistant / tool messages and concatenates their
|
|
34
|
+
* text parts. Non-text parts (files, tool results) are summarised with a
|
|
35
|
+
* short marker so the trace doesn't grow unboundedly.
|
|
36
|
+
*/
|
|
37
|
+
function stringifyPrompt(params) {
|
|
38
|
+
const out = [];
|
|
39
|
+
for (const msg of params.prompt) {
|
|
40
|
+
if (msg.role === 'system') {
|
|
41
|
+
out.push(`[system] ${msg.content}`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (typeof msg.content === 'string') {
|
|
45
|
+
out.push(`[${msg.role}] ${msg.content}`);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (Array.isArray(msg.content)) {
|
|
49
|
+
const parts = [];
|
|
50
|
+
for (const part of msg.content) {
|
|
51
|
+
if (part.type === 'text')
|
|
52
|
+
parts.push(part.text);
|
|
53
|
+
else
|
|
54
|
+
parts.push(`[${part.type}]`);
|
|
55
|
+
}
|
|
56
|
+
out.push(`[${msg.role}] ${parts.join(' ')}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return out.join('\n');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Flatten the V3 generate result content into a single string. Walks the
|
|
63
|
+
* `content` array (text, reasoning, tool-call, etc.) and concatenates text
|
|
64
|
+
* parts; non-text parts get short summaries.
|
|
65
|
+
*/
|
|
66
|
+
function stringifyContent(content) {
|
|
67
|
+
const parts = [];
|
|
68
|
+
for (const part of content) {
|
|
69
|
+
if (part.type === 'text')
|
|
70
|
+
parts.push(part.text);
|
|
71
|
+
else if (part.type === 'reasoning')
|
|
72
|
+
parts.push(`[reasoning] ${part.text}`);
|
|
73
|
+
else
|
|
74
|
+
parts.push(`[${part.type}]`);
|
|
75
|
+
}
|
|
76
|
+
return parts.join('');
|
|
77
|
+
}
|
|
78
|
+
let _hasWarnedEmit = false;
|
|
79
|
+
async function safeEmit(emit, event) {
|
|
80
|
+
try {
|
|
81
|
+
await emit(event);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
if (!_hasWarnedEmit) {
|
|
85
|
+
_hasWarnedEmit = true;
|
|
86
|
+
// eslint-disable-next-line no-console
|
|
87
|
+
console.warn(`[ai-functions/traceMiddleware] emit() threw — subsequent emit errors will be silenced. ${err instanceof Error ? err.message : String(err)}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// Middleware
|
|
93
|
+
// ============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Build a trace middleware for `wrapLanguageModel`. Emits a
|
|
96
|
+
* {@link TraceEvent} on every successful `doGenerate` / `doStream`
|
|
97
|
+
* completion. Errors from `emit` are swallowed (one-time warn) so a flaky
|
|
98
|
+
* trace sink can never break the wrapped LLM call.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* import { wrapLanguageModel } from 'ai'
|
|
103
|
+
* import { traceMiddleware, getEvalLogStore } from 'ai-functions'
|
|
104
|
+
*
|
|
105
|
+
* const store = getEvalLogStore()
|
|
106
|
+
* const model = wrapLanguageModel({
|
|
107
|
+
* model: openai('gpt-4o'),
|
|
108
|
+
* middleware: traceMiddleware({
|
|
109
|
+
* kind: 'cascade-trace',
|
|
110
|
+
* emit: (event) => store.record({ ...event, costUsd: event.costUsd ?? 0 }),
|
|
111
|
+
* }),
|
|
112
|
+
* })
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export function traceMiddleware(options) {
|
|
116
|
+
const { emit, kind = 'eval-trace', getCostUsd, tags } = options;
|
|
117
|
+
return {
|
|
118
|
+
specificationVersion: 'v3',
|
|
119
|
+
async wrapGenerate({ doGenerate, params, model }) {
|
|
120
|
+
const start = Date.now();
|
|
121
|
+
const result = await doGenerate();
|
|
122
|
+
const durationMs = Date.now() - start;
|
|
123
|
+
const modelId = model.modelId;
|
|
124
|
+
const event = {
|
|
125
|
+
kind,
|
|
126
|
+
model: modelId,
|
|
127
|
+
prompt: stringifyPrompt(params),
|
|
128
|
+
response: stringifyContent(result.content),
|
|
129
|
+
usage: result.usage,
|
|
130
|
+
durationMs,
|
|
131
|
+
...(getCostUsd !== undefined ? { costUsd: getCostUsd(modelId, result.usage) } : {}),
|
|
132
|
+
...(tags !== undefined ? { tags } : {}),
|
|
133
|
+
};
|
|
134
|
+
await safeEmit(emit, event);
|
|
135
|
+
return result;
|
|
136
|
+
},
|
|
137
|
+
async wrapStream({ doStream, params, model }) {
|
|
138
|
+
const start = Date.now();
|
|
139
|
+
const result = await doStream();
|
|
140
|
+
const modelId = model.modelId;
|
|
141
|
+
let finalUsage;
|
|
142
|
+
const collected = [];
|
|
143
|
+
const transformedStream = result.stream.pipeThrough(new TransformStream({
|
|
144
|
+
transform(chunk, controller) {
|
|
145
|
+
if (chunk.type === 'text-delta')
|
|
146
|
+
collected.push(chunk.delta);
|
|
147
|
+
else if (chunk.type === 'finish')
|
|
148
|
+
finalUsage = chunk.usage;
|
|
149
|
+
controller.enqueue(chunk);
|
|
150
|
+
},
|
|
151
|
+
flush() {
|
|
152
|
+
const durationMs = Date.now() - start;
|
|
153
|
+
const event = {
|
|
154
|
+
kind,
|
|
155
|
+
model: modelId,
|
|
156
|
+
prompt: stringifyPrompt(params),
|
|
157
|
+
response: collected.join(''),
|
|
158
|
+
usage: finalUsage,
|
|
159
|
+
durationMs,
|
|
160
|
+
...(getCostUsd !== undefined ? { costUsd: getCostUsd(modelId, finalUsage) } : {}),
|
|
161
|
+
...(tags !== undefined ? { tags } : {}),
|
|
162
|
+
};
|
|
163
|
+
// Fire-and-forget — TransformStream.flush is sync; we don't
|
|
164
|
+
// await safeEmit so a slow sink doesn't block stream close.
|
|
165
|
+
void safeEmit(emit, event);
|
|
166
|
+
},
|
|
167
|
+
}));
|
|
168
|
+
const wrapped = {
|
|
169
|
+
...result,
|
|
170
|
+
stream: transformedStream,
|
|
171
|
+
};
|
|
172
|
+
return wrapped;
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/middleware/trace.ts"],"names":[],"mappings":"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"}
|
package/dist/primitives.d.ts
CHANGED
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import { AIPromise } from './ai-promise.js';
|
|
34
34
|
import type { SimpleSchema } from './schema.js';
|
|
35
|
-
import type { HumanChannel } from './types.js';
|
|
35
|
+
import type { AgenticFunctionDefinition, CodeFunctionDefinition, DefinedFunction, FunctionRegistry, GenerativeFunctionDefinition, HumanChannel, HumanFunctionDefinition } from './types.js';
|
|
36
|
+
import { defineFunction } from './function-registry.js';
|
|
36
37
|
export type GenerateType = 'text' | 'json' | 'code' | 'list' | 'lists' | 'markdown' | 'yaml' | 'diagram' | 'slides' | 'boolean' | 'summary' | 'extract';
|
|
37
38
|
export interface GenerateOptions {
|
|
38
39
|
/** Model to use */
|
|
@@ -306,4 +307,122 @@ export declare const review: ((strings: TemplateStringsArray, ...values: unknown
|
|
|
306
307
|
feedback: string;
|
|
307
308
|
approved?: boolean;
|
|
308
309
|
}>>);
|
|
310
|
+
/**
|
|
311
|
+
* Auto-define a function based on its name and arguments, or define with explicit definition
|
|
312
|
+
*
|
|
313
|
+
* When called with (name, args), uses AI to analyze and determine:
|
|
314
|
+
* - What type of function it should be (code, generative, agentic, human)
|
|
315
|
+
* - What it should return
|
|
316
|
+
* - How it should be implemented
|
|
317
|
+
*
|
|
318
|
+
* When called with a FunctionDefinition, creates the function directly.
|
|
319
|
+
*
|
|
320
|
+
* @example
|
|
321
|
+
* ```ts
|
|
322
|
+
* // Auto-define from name and example args
|
|
323
|
+
* const planTrip = await define('planTrip', { destination: 'Tokyo', travelers: 2 })
|
|
324
|
+
*
|
|
325
|
+
* // Or define explicitly
|
|
326
|
+
* const summarize = define.generative({
|
|
327
|
+
* name: 'summarize',
|
|
328
|
+
* args: { text: 'Text to summarize' },
|
|
329
|
+
* output: 'string',
|
|
330
|
+
* })
|
|
331
|
+
*
|
|
332
|
+
* // Or with full definition
|
|
333
|
+
* const fn = defineFunction({
|
|
334
|
+
* type: 'generative',
|
|
335
|
+
* name: 'translate',
|
|
336
|
+
* args: { text: 'Text', lang: 'Target language' },
|
|
337
|
+
* output: 'string',
|
|
338
|
+
* })
|
|
339
|
+
* ```
|
|
340
|
+
*/
|
|
341
|
+
declare function autoDefineImpl(name: string, args: Record<string, unknown>): Promise<DefinedFunction>;
|
|
342
|
+
/**
|
|
343
|
+
* Define functions - auto-define or use typed helpers
|
|
344
|
+
*/
|
|
345
|
+
export declare const define: typeof autoDefineImpl & {
|
|
346
|
+
/**
|
|
347
|
+
* Define a **deterministic** code function (a handler — no LLM at call time).
|
|
348
|
+
*
|
|
349
|
+
* Supply a `handler` (canonical) or an inline `code` body. To have a model
|
|
350
|
+
* *author* code instead, use {@link generateCode} or `define.generative`.
|
|
351
|
+
*/
|
|
352
|
+
code: <TOutput, TInput>(definition: Omit<CodeFunctionDefinition<TOutput, TInput>, "type">) => DefinedFunction<TOutput, TInput>;
|
|
353
|
+
/**
|
|
354
|
+
* Define a generative function
|
|
355
|
+
*/
|
|
356
|
+
generative: <TOutput, TInput>(definition: Omit<GenerativeFunctionDefinition<TOutput, TInput>, "type">) => DefinedFunction<TOutput, TInput>;
|
|
357
|
+
/**
|
|
358
|
+
* Define an agentic function
|
|
359
|
+
*/
|
|
360
|
+
agentic: <TOutput, TInput>(definition: Omit<AgenticFunctionDefinition<TOutput, TInput>, "type">) => DefinedFunction<TOutput, TInput>;
|
|
361
|
+
/**
|
|
362
|
+
* Define a human-in-the-loop function
|
|
363
|
+
*/
|
|
364
|
+
human: <TOutput, TInput>(definition: Omit<HumanFunctionDefinition<TOutput, TInput>, "type">) => DefinedFunction<TOutput, TInput>;
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* Type for the AI proxy with auto-define capability
|
|
368
|
+
*/
|
|
369
|
+
export interface AIProxy {
|
|
370
|
+
/** Function registry */
|
|
371
|
+
functions: FunctionRegistry;
|
|
372
|
+
/** Define functions */
|
|
373
|
+
define: typeof define;
|
|
374
|
+
/** Define a function with full definition */
|
|
375
|
+
defineFunction: typeof defineFunction;
|
|
376
|
+
/** Dynamic function calls */
|
|
377
|
+
[key: string]: unknown;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Create a smart AI client that auto-defines functions on first call
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* ```ts
|
|
384
|
+
* const ai = createSmartAI()
|
|
385
|
+
*
|
|
386
|
+
* // First call - auto-defines the function
|
|
387
|
+
* const trip = await ai.planTrip({
|
|
388
|
+
* destination: 'Tokyo',
|
|
389
|
+
* dates: { start: '2024-03-01', end: '2024-03-10' },
|
|
390
|
+
* travelers: 2,
|
|
391
|
+
* })
|
|
392
|
+
*
|
|
393
|
+
* // Second call - uses cached definition (in-memory)
|
|
394
|
+
* const trip2 = await ai.planTrip({
|
|
395
|
+
* destination: 'Paris',
|
|
396
|
+
* dates: { start: '2024-06-01', end: '2024-06-07' },
|
|
397
|
+
* travelers: 4,
|
|
398
|
+
* })
|
|
399
|
+
*
|
|
400
|
+
* // Access registry and define
|
|
401
|
+
* console.log(ai.functions.list()) // ['planTrip']
|
|
402
|
+
* ai.define.generative({ name: 'summarize', ... })
|
|
403
|
+
* ```
|
|
404
|
+
*/
|
|
405
|
+
export declare function createSmartAI(): AIProxy;
|
|
406
|
+
/**
|
|
407
|
+
* Default AI proxy instance with auto-define capability.
|
|
408
|
+
*
|
|
409
|
+
* This is the smart proxy `aiProxy` (re-exported from index.ts as `aiProxy`).
|
|
410
|
+
* It is intentionally distinct from the `ai` template-tag primitive above —
|
|
411
|
+
* see `ai` (line ~354) for the template function used like `ai\`...\``.
|
|
412
|
+
*
|
|
413
|
+
* @example
|
|
414
|
+
* ```ts
|
|
415
|
+
* import { aiProxy } from 'ai-functions'
|
|
416
|
+
*
|
|
417
|
+
* // Auto-define and call
|
|
418
|
+
* const result = await aiProxy.summarize({ text: 'Long article...' })
|
|
419
|
+
*
|
|
420
|
+
* // Access functions registry
|
|
421
|
+
* aiProxy.functions.list()
|
|
422
|
+
*
|
|
423
|
+
* // Define explicitly
|
|
424
|
+
* aiProxy.define.generative({ name: 'translate', ... })
|
|
425
|
+
* ```
|
|
426
|
+
*/
|
|
427
|
+
export declare const aiProxy: AIProxy;
|
|
309
428
|
//# sourceMappingURL=primitives.d.ts.map
|
package/dist/primitives.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
|