@tanstack/ai 0.53.0 → 0.55.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/README.md +14 -13
- package/dist/esm/activities/chat/index.js +22 -4
- package/dist/esm/activities/chat/index.js.map +1 -1
- package/dist/esm/activities/chat/messages.d.ts +21 -1
- package/dist/esm/activities/chat/messages.js +50 -1
- package/dist/esm/activities/chat/messages.js.map +1 -1
- package/dist/esm/activities/chat/stream/processor.d.ts +17 -0
- package/dist/esm/activities/chat/stream/processor.js +27 -0
- package/dist/esm/activities/chat/stream/processor.js.map +1 -1
- package/dist/esm/activities/generateLiveVideo/adapter.d.ts +69 -0
- package/dist/esm/activities/generateLiveVideo/adapter.js +23 -0
- package/dist/esm/activities/generateLiveVideo/adapter.js.map +1 -0
- package/dist/esm/activities/generateLiveVideo/index.d.ts +99 -0
- package/dist/esm/activities/generateLiveVideo/index.js +162 -0
- package/dist/esm/activities/generateLiveVideo/index.js.map +1 -0
- package/dist/esm/activities/generateVideo/index.js +3 -1
- package/dist/esm/activities/generateVideo/index.js.map +1 -1
- package/dist/esm/activities/generateWorld/adapter.d.ts +69 -0
- package/dist/esm/activities/generateWorld/adapter.js +23 -0
- package/dist/esm/activities/generateWorld/adapter.js.map +1 -0
- package/dist/esm/activities/generateWorld/index.d.ts +99 -0
- package/dist/esm/activities/generateWorld/index.js +162 -0
- package/dist/esm/activities/generateWorld/index.js.map +1 -0
- package/dist/esm/activities/index.d.ts +8 -2
- package/dist/esm/activities/index.js +11 -7
- package/dist/esm/activities/middleware/types.d.ts +1 -1
- package/dist/esm/client.d.ts +4 -2
- package/dist/esm/client.js +3 -1
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +3 -1
- package/dist/esm/middlewares/otel.js +3 -1
- package/dist/esm/middlewares/otel.js.map +1 -1
- package/dist/esm/types.d.ts +112 -0
- package/package.json +3 -3
- package/skills/ai-core/adapter-configuration/SKILL.md +91 -43
- package/skills/ai-core/adapter-configuration/references/anthropic-adapter.md +39 -21
- package/skills/ai-core/adapter-configuration/references/byteplus-adapter.md +5 -0
- package/skills/ai-core/adapter-configuration/references/gemini-adapter.md +14 -6
- package/skills/ai-core/adapter-configuration/references/grok-adapter.md +33 -25
- package/skills/ai-core/adapter-configuration/references/groq-adapter.md +7 -2
- package/skills/ai-core/adapter-configuration/references/ollama-adapter.md +25 -12
- package/skills/ai-core/adapter-configuration/references/openai-adapter.md +19 -9
- package/skills/ai-core/adapter-configuration/references/openrouter-adapter.md +34 -21
- package/skills/ai-core/ag-ui-protocol/SKILL.md +16 -10
- package/skills/ai-core/chat-experience/SKILL.md +228 -108
- package/skills/ai-core/client-persistence/SKILL.md +21 -9
- package/skills/ai-core/custom-backend-integration/SKILL.md +86 -52
- package/skills/ai-core/debug-logging/SKILL.md +100 -18
- package/skills/ai-core/locks/SKILL.md +35 -7
- package/skills/ai-core/media-generation/SKILL.md +136 -61
- package/skills/ai-core/middleware/SKILL.md +174 -69
- package/skills/ai-core/structured-outputs/SKILL.md +98 -49
- package/skills/ai-core/tool-calling/SKILL.md +245 -158
- package/src/activities/chat/index.ts +29 -7
- package/src/activities/chat/messages.ts +60 -0
- package/src/activities/chat/stream/processor.ts +31 -0
- package/src/activities/generateLiveVideo/adapter.ts +99 -0
- package/src/activities/generateLiveVideo/index.ts +339 -0
- package/src/activities/generateVideo/index.ts +3 -4
- package/src/activities/generateWorld/adapter.ts +96 -0
- package/src/activities/generateWorld/index.ts +339 -0
- package/src/activities/index.ts +44 -0
- package/src/activities/middleware/types.ts +2 -0
- package/src/client.ts +8 -0
- package/src/index.ts +8 -0
- package/src/middlewares/otel.ts +2 -0
- package/src/types.ts +128 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { WorldGenerationOptions, WorldGenerationResult } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for world generation adapter instances.
|
|
4
|
+
*
|
|
5
|
+
* @experimental World generation is an experimental feature and may change.
|
|
6
|
+
*/
|
|
7
|
+
export interface WorldAdapterConfig {
|
|
8
|
+
apiKey?: string;
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
timeout?: number;
|
|
11
|
+
maxRetries?: number;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* World adapter interface with pre-resolved generics.
|
|
16
|
+
*
|
|
17
|
+
* An adapter is created by a provider function: `provider('model')` → `adapter`.
|
|
18
|
+
* All type resolution happens at the provider call site, not in this interface.
|
|
19
|
+
*
|
|
20
|
+
* Generic parameters:
|
|
21
|
+
* - TModel: The specific model name (e.g. 'visko-orbis-stable')
|
|
22
|
+
* - TProviderOptions: Provider-specific options (already resolved)
|
|
23
|
+
*
|
|
24
|
+
* @experimental World generation is an experimental feature and may change.
|
|
25
|
+
*/
|
|
26
|
+
export interface WorldAdapter<TModel extends string = string, TProviderOptions extends object = Record<string, unknown>> {
|
|
27
|
+
/** Discriminator for adapter kind - used to determine API shape */
|
|
28
|
+
readonly kind: 'world';
|
|
29
|
+
/** Adapter name identifier */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** The model this adapter is configured for */
|
|
32
|
+
readonly model: TModel;
|
|
33
|
+
/**
|
|
34
|
+
* @internal Type-only properties for inference. Not assigned at runtime.
|
|
35
|
+
*/
|
|
36
|
+
'~types': {
|
|
37
|
+
providerOptions: TProviderOptions;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Open a world session from a prompt.
|
|
41
|
+
*
|
|
42
|
+
* Server adapters typically mint a short-lived token and return it with the
|
|
43
|
+
* prompt so a browser can connect, set the prompt, and start streaming.
|
|
44
|
+
*/
|
|
45
|
+
createWorld: (options: WorldGenerationOptions<TProviderOptions>) => Promise<WorldGenerationResult>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A WorldAdapter with any/unknown type parameters.
|
|
49
|
+
* Useful as a constraint in generic functions and interfaces.
|
|
50
|
+
*/
|
|
51
|
+
export type AnyWorldAdapter = WorldAdapter<any, any>;
|
|
52
|
+
/**
|
|
53
|
+
* Abstract base class for world generation adapters.
|
|
54
|
+
* Extend this class to implement a world adapter for a specific provider.
|
|
55
|
+
*
|
|
56
|
+
* @experimental World generation is an experimental feature and may change.
|
|
57
|
+
*/
|
|
58
|
+
export declare abstract class BaseWorldAdapter<TModel extends string = string, TProviderOptions extends object = Record<string, unknown>> implements WorldAdapter<TModel, TProviderOptions> {
|
|
59
|
+
readonly kind: "world";
|
|
60
|
+
abstract readonly name: string;
|
|
61
|
+
readonly model: TModel;
|
|
62
|
+
'~types': {
|
|
63
|
+
providerOptions: TProviderOptions;
|
|
64
|
+
};
|
|
65
|
+
protected config: WorldAdapterConfig;
|
|
66
|
+
constructor(model: TModel, config?: WorldAdapterConfig);
|
|
67
|
+
abstract createWorld(options: WorldGenerationOptions<TProviderOptions>): Promise<WorldGenerationResult>;
|
|
68
|
+
protected generateId(): string;
|
|
69
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/activities/generateWorld/adapter.ts
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for world generation adapters.
|
|
4
|
+
* Extend this class to implement a world adapter for a specific provider.
|
|
5
|
+
*
|
|
6
|
+
* @experimental World generation is an experimental feature and may change.
|
|
7
|
+
*/
|
|
8
|
+
var BaseWorldAdapter = class {
|
|
9
|
+
kind = "world";
|
|
10
|
+
model;
|
|
11
|
+
config;
|
|
12
|
+
constructor(model, config = {}) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.model = model;
|
|
15
|
+
}
|
|
16
|
+
generateId() {
|
|
17
|
+
return `${this.name}-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { BaseWorldAdapter };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/activities/generateWorld/adapter.ts"],"sourcesContent":["import type { WorldGenerationOptions, WorldGenerationResult } from '../../types'\n\n/**\n * Configuration for world generation adapter instances.\n *\n * @experimental World generation is an experimental feature and may change.\n */\nexport interface WorldAdapterConfig {\n apiKey?: string\n baseUrl?: string\n timeout?: number\n maxRetries?: number\n headers?: Record<string, string>\n}\n\n/**\n * World adapter interface with pre-resolved generics.\n *\n * An adapter is created by a provider function: `provider('model')` → `adapter`.\n * All type resolution happens at the provider call site, not in this interface.\n *\n * Generic parameters:\n * - TModel: The specific model name (e.g. 'visko-orbis-stable')\n * - TProviderOptions: Provider-specific options (already resolved)\n *\n * @experimental World generation is an experimental feature and may change.\n */\nexport interface WorldAdapter<\n TModel extends string = string,\n TProviderOptions extends object = Record<string, unknown>,\n> {\n /** Discriminator for adapter kind - used to determine API shape */\n readonly kind: 'world'\n /** Adapter name identifier */\n readonly name: string\n /** The model this adapter is configured for */\n readonly model: TModel\n\n /**\n * @internal Type-only properties for inference. Not assigned at runtime.\n */\n '~types': {\n providerOptions: TProviderOptions\n }\n\n /**\n * Open a world session from a prompt.\n *\n * Server adapters typically mint a short-lived token and return it with the\n * prompt so a browser can connect, set the prompt, and start streaming.\n */\n createWorld: (\n options: WorldGenerationOptions<TProviderOptions>,\n ) => Promise<WorldGenerationResult>\n}\n\n/**\n * A WorldAdapter with any/unknown type parameters.\n * Useful as a constraint in generic functions and interfaces.\n */\nexport type AnyWorldAdapter = WorldAdapter<any, any>\n\n/**\n * Abstract base class for world generation adapters.\n * Extend this class to implement a world adapter for a specific provider.\n *\n * @experimental World generation is an experimental feature and may change.\n */\nexport abstract class BaseWorldAdapter<\n TModel extends string = string,\n TProviderOptions extends object = Record<string, unknown>,\n> implements WorldAdapter<TModel, TProviderOptions> {\n readonly kind = 'world' as const\n abstract readonly name: string\n readonly model: TModel\n\n // Type-only property - never assigned at runtime\n declare '~types': {\n providerOptions: TProviderOptions\n }\n\n protected config: WorldAdapterConfig\n\n constructor(model: TModel, config: WorldAdapterConfig = {}) {\n this.config = config\n this.model = model\n }\n\n abstract createWorld(\n options: WorldGenerationOptions<TProviderOptions>,\n ): Promise<WorldGenerationResult>\n\n protected generateId(): string {\n return `${this.name}-${Date.now()}-${Math.random().toString(36).substring(7)}`\n }\n}\n"],"mappings":";;;;;;;AAoEA,IAAsB,mBAAtB,MAGoD;CAClD,OAAgB;CAEhB;CAOA;CAEA,YAAY,OAAe,SAA6B,CAAC,GAAG;EAC1D,KAAK,SAAS;EACd,KAAK,QAAQ;CACf;CAMA,aAA+B;EAC7B,OAAO,GAAG,KAAK,KAAK,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC;CAC7E;AACF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { DebugOption } from '../../logger/types.js';
|
|
2
|
+
import { GenerationMiddleware } from '../middleware/types.js';
|
|
3
|
+
import { WorldAdapter } from './adapter.js';
|
|
4
|
+
import { StreamChunk, WorldGenerationResult } from '../../types.js';
|
|
5
|
+
/** The adapter kind this activity handles */
|
|
6
|
+
export declare const kind: "world";
|
|
7
|
+
/**
|
|
8
|
+
* Extract provider options from a WorldAdapter via ~types.
|
|
9
|
+
*/
|
|
10
|
+
export type WorldProviderOptions<TAdapter> = TAdapter extends {
|
|
11
|
+
'~types': {
|
|
12
|
+
providerOptions: infer P extends object;
|
|
13
|
+
};
|
|
14
|
+
} ? P : object;
|
|
15
|
+
/**
|
|
16
|
+
* Options for the world generation activity.
|
|
17
|
+
* The model is extracted from the adapter's model property.
|
|
18
|
+
*
|
|
19
|
+
* @template TAdapter - The world adapter type
|
|
20
|
+
* @template TStream - Whether to stream the output
|
|
21
|
+
*
|
|
22
|
+
* @experimental World generation is an experimental feature and may change.
|
|
23
|
+
*/
|
|
24
|
+
export interface WorldActivityOptions<TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>, TStream extends boolean = false> {
|
|
25
|
+
/** The world adapter to use (must be created with a model) */
|
|
26
|
+
adapter: TAdapter & {
|
|
27
|
+
kind: typeof kind;
|
|
28
|
+
};
|
|
29
|
+
/** Natural-language description of the world or scene */
|
|
30
|
+
prompt: string;
|
|
31
|
+
/** Provider-specific options for world generation */
|
|
32
|
+
modelOptions?: WorldProviderOptions<TAdapter>;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to wrap the token result as StreamChunks for SSE transport.
|
|
35
|
+
* This is not the live video. When false or omitted, returns
|
|
36
|
+
* Promise<WorldGenerationResult>.
|
|
37
|
+
*
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
stream?: TStream;
|
|
41
|
+
/**
|
|
42
|
+
* Enable debug logging. Pass `true` to enable all categories, `false` to
|
|
43
|
+
* silence everything including errors, or a `DebugConfig` object for granular
|
|
44
|
+
* control and/or a custom `Logger`.
|
|
45
|
+
*/
|
|
46
|
+
debug?: DebugOption;
|
|
47
|
+
/**
|
|
48
|
+
* Observe-only middleware notified on start, usage, success, and error. Pass
|
|
49
|
+
* `otelMiddleware()` to emit OpenTelemetry spans, or implement the
|
|
50
|
+
* `GenerationMiddleware` contract for a custom backend.
|
|
51
|
+
*/
|
|
52
|
+
middleware?: Array<GenerationMiddleware>;
|
|
53
|
+
/** Stable conversation/thread id for correlating this run when persisted. */
|
|
54
|
+
threadId?: string;
|
|
55
|
+
/** Stable run id for correlating this run when persisted. */
|
|
56
|
+
runId?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum duration of the token mint in milliseconds.
|
|
59
|
+
* No SDK-wide default. Composed with {@link abortSignal}; the first abort wins.
|
|
60
|
+
*/
|
|
61
|
+
timeout?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Caller cancellation signal (request disconnects, job/runtime cancellation).
|
|
64
|
+
* Composed with {@link timeout} into an effective signal forwarded to the
|
|
65
|
+
* adapter. Request-specific — not stored on global provider client config.
|
|
66
|
+
*/
|
|
67
|
+
abortSignal?: AbortSignal;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result type for the world generation activity.
|
|
71
|
+
* - If stream is true: AsyncIterable<StreamChunk>
|
|
72
|
+
* - Otherwise: Promise<WorldGenerationResult>
|
|
73
|
+
*/
|
|
74
|
+
export type WorldActivityResult<TStream extends boolean = false> = TStream extends true ? AsyncIterable<StreamChunk> : Promise<WorldGenerationResult>;
|
|
75
|
+
/**
|
|
76
|
+
* World generation activity - opens a live, prompt-steerable world session.
|
|
77
|
+
*
|
|
78
|
+
* @example Mint a session token on the server
|
|
79
|
+
* ```ts
|
|
80
|
+
* import { generateWorld } from '@tanstack/ai'
|
|
81
|
+
* import { reactorWorld } from '@tanstack/ai-reactor'
|
|
82
|
+
*
|
|
83
|
+
* const world = await generateWorld({
|
|
84
|
+
* adapter: reactorWorld('visko-orbis-stable'),
|
|
85
|
+
* prompt: 'A neon cyberpunk city at night, slow aerial drift',
|
|
86
|
+
* })
|
|
87
|
+
*
|
|
88
|
+
* // Hand world.token, world.model, and world.prompt to the browser.
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @experimental World generation is an experimental feature and may change.
|
|
92
|
+
*/
|
|
93
|
+
export declare function generateWorld<TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>, TStream extends boolean = false>(options: WorldActivityOptions<TAdapter, TStream>): WorldActivityResult<TStream>;
|
|
94
|
+
/**
|
|
95
|
+
* Create typed options for the generateWorld() function without executing.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createWorldOptions<TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>, TStream extends boolean = false>(options: WorldActivityOptions<TAdapter, TStream>): WorldActivityOptions<TAdapter, TStream>;
|
|
98
|
+
export type { WorldAdapter, WorldAdapterConfig, AnyWorldAdapter, } from './adapter.js';
|
|
99
|
+
export { BaseWorldAdapter } from './adapter.js';
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { resolveDebugOption } from "../../logger/resolve.js";
|
|
2
|
+
import { streamGenerationResult } from "../stream-generation-result.js";
|
|
3
|
+
import { applyGenerationResultTransforms, createGenerationContext, runGenerationAbort, runGenerationError, runGenerationFinish, runGenerationStart, runGenerationUsage } from "../middleware/run.js";
|
|
4
|
+
import { abortReasonMessage, createActivityAbortControls, isActivityAbortError, raceWithAbort } from "../../utilities/activity-abort.js";
|
|
5
|
+
import "./adapter.js";
|
|
6
|
+
import { aiEventClient } from "@tanstack/ai-event-client";
|
|
7
|
+
//#region src/activities/generateWorld/index.ts
|
|
8
|
+
/**
|
|
9
|
+
* World Activity (Experimental)
|
|
10
|
+
*
|
|
11
|
+
* Mints a session token for a live, prompt-steerable world. Unlike
|
|
12
|
+
* generateVideo (a job that finishes with a URL), the browser then connects
|
|
13
|
+
* with the token, sets the prompt, and streams until pause/reset/close.
|
|
14
|
+
*
|
|
15
|
+
* @experimental World generation is an experimental feature and may change.
|
|
16
|
+
*/
|
|
17
|
+
/** The adapter kind this activity handles */
|
|
18
|
+
var kind = "world";
|
|
19
|
+
function createId(prefix) {
|
|
20
|
+
return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* World generation activity - opens a live, prompt-steerable world session.
|
|
24
|
+
*
|
|
25
|
+
* @example Mint a session token on the server
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { generateWorld } from '@tanstack/ai'
|
|
28
|
+
* import { reactorWorld } from '@tanstack/ai-reactor'
|
|
29
|
+
*
|
|
30
|
+
* const world = await generateWorld({
|
|
31
|
+
* adapter: reactorWorld('visko-orbis-stable'),
|
|
32
|
+
* prompt: 'A neon cyberpunk city at night, slow aerial drift',
|
|
33
|
+
* })
|
|
34
|
+
*
|
|
35
|
+
* // Hand world.token, world.model, and world.prompt to the browser.
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @experimental World generation is an experimental feature and may change.
|
|
39
|
+
*/
|
|
40
|
+
function generateWorld(options) {
|
|
41
|
+
if (options.stream) return streamGenerationResult((resolved) => runGenerateWorld({
|
|
42
|
+
...options,
|
|
43
|
+
runId: resolved.runId
|
|
44
|
+
}), options);
|
|
45
|
+
return runGenerateWorld(options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Run the core world generation logic (non-streaming).
|
|
49
|
+
*/
|
|
50
|
+
async function runGenerateWorld(options) {
|
|
51
|
+
const { adapter, stream: _stream, debug: _debug, middleware, threadId, runId, timeout, abortSignal: callerAbortSignal, ...rest } = options;
|
|
52
|
+
const model = adapter.model;
|
|
53
|
+
const requestId = createId("world");
|
|
54
|
+
const startTime = Date.now();
|
|
55
|
+
const logger = resolveDebugOption(options.debug);
|
|
56
|
+
const abortControls = createActivityAbortControls({
|
|
57
|
+
timeout,
|
|
58
|
+
abortSignal: callerAbortSignal
|
|
59
|
+
});
|
|
60
|
+
const providerName = adapter.provider ?? adapter.name ?? "unknown";
|
|
61
|
+
const mwCtx = createGenerationContext({
|
|
62
|
+
requestId,
|
|
63
|
+
activity: "world",
|
|
64
|
+
provider: adapter.name,
|
|
65
|
+
model,
|
|
66
|
+
modelOptions: rest.modelOptions,
|
|
67
|
+
threadId,
|
|
68
|
+
runId,
|
|
69
|
+
artifactInputs: { prompt: rest.prompt },
|
|
70
|
+
createId
|
|
71
|
+
});
|
|
72
|
+
await runGenerationStart(middleware, mwCtx);
|
|
73
|
+
aiEventClient.emit("world:request:started", {
|
|
74
|
+
requestId,
|
|
75
|
+
provider: adapter.name,
|
|
76
|
+
model,
|
|
77
|
+
prompt: rest.prompt,
|
|
78
|
+
timestamp: startTime,
|
|
79
|
+
...rest.modelOptions !== void 0 && { modelOptions: rest.modelOptions }
|
|
80
|
+
});
|
|
81
|
+
logger.request(`activity=generateWorld provider=${providerName}`, {
|
|
82
|
+
provider: providerName,
|
|
83
|
+
model
|
|
84
|
+
});
|
|
85
|
+
try {
|
|
86
|
+
const rawResult = await raceWithAbort(adapter.createWorld({
|
|
87
|
+
...rest,
|
|
88
|
+
model,
|
|
89
|
+
logger,
|
|
90
|
+
...abortControls.signal ? { abortSignal: abortControls.signal } : {}
|
|
91
|
+
}), abortControls.signal);
|
|
92
|
+
abortControls.clear();
|
|
93
|
+
const result = await applyGenerationResultTransforms(mwCtx, rawResult);
|
|
94
|
+
const elapsedMs = Date.now() - startTime;
|
|
95
|
+
aiEventClient.emit("world:request:completed", {
|
|
96
|
+
requestId,
|
|
97
|
+
provider: adapter.name,
|
|
98
|
+
model: result.model,
|
|
99
|
+
prompt: result.prompt,
|
|
100
|
+
status: result.status,
|
|
101
|
+
duration: elapsedMs,
|
|
102
|
+
timestamp: Date.now(),
|
|
103
|
+
...rest.modelOptions !== void 0 && { modelOptions: rest.modelOptions }
|
|
104
|
+
});
|
|
105
|
+
if (result.usage) aiEventClient.emit("world:usage", {
|
|
106
|
+
requestId,
|
|
107
|
+
model: result.model,
|
|
108
|
+
usage: result.usage,
|
|
109
|
+
timestamp: Date.now(),
|
|
110
|
+
...rest.modelOptions !== void 0 && { modelOptions: rest.modelOptions }
|
|
111
|
+
});
|
|
112
|
+
logger.output(`activity=generateWorld provider=${providerName}`, {
|
|
113
|
+
model: result.model,
|
|
114
|
+
status: result.status
|
|
115
|
+
});
|
|
116
|
+
if (result.usage) await runGenerationUsage(middleware, mwCtx, result.usage);
|
|
117
|
+
await runGenerationFinish(middleware, mwCtx, {
|
|
118
|
+
duration: elapsedMs,
|
|
119
|
+
usage: result.usage
|
|
120
|
+
});
|
|
121
|
+
return result;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
abortControls.clear();
|
|
124
|
+
const elapsedMs = Date.now() - startTime;
|
|
125
|
+
const err = error;
|
|
126
|
+
aiEventClient.emit("world:request:error", {
|
|
127
|
+
requestId,
|
|
128
|
+
provider: adapter.name,
|
|
129
|
+
model,
|
|
130
|
+
error: {
|
|
131
|
+
message: err.message,
|
|
132
|
+
name: err.name
|
|
133
|
+
},
|
|
134
|
+
duration: elapsedMs,
|
|
135
|
+
timestamp: Date.now(),
|
|
136
|
+
...rest.modelOptions !== void 0 && { modelOptions: rest.modelOptions }
|
|
137
|
+
});
|
|
138
|
+
if (isActivityAbortError(error, abortControls.signal)) await runGenerationAbort(middleware, mwCtx, {
|
|
139
|
+
reason: abortReasonMessage(error, abortControls.signal),
|
|
140
|
+
duration: elapsedMs
|
|
141
|
+
});
|
|
142
|
+
else await runGenerationError(middleware, mwCtx, {
|
|
143
|
+
error,
|
|
144
|
+
duration: elapsedMs
|
|
145
|
+
});
|
|
146
|
+
logger.errors("generateWorld activity failed", {
|
|
147
|
+
error,
|
|
148
|
+
source: "generateWorld"
|
|
149
|
+
});
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create typed options for the generateWorld() function without executing.
|
|
155
|
+
*/
|
|
156
|
+
function createWorldOptions(options) {
|
|
157
|
+
return options;
|
|
158
|
+
}
|
|
159
|
+
//#endregion
|
|
160
|
+
export { createWorldOptions, generateWorld, kind };
|
|
161
|
+
|
|
162
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/activities/generateWorld/index.ts"],"sourcesContent":["/**\n * World Activity (Experimental)\n *\n * Mints a session token for a live, prompt-steerable world. Unlike\n * generateVideo (a job that finishes with a URL), the browser then connects\n * with the token, sets the prompt, and streams until pause/reset/close.\n *\n * @experimental World generation is an experimental feature and may change.\n */\n\nimport { aiEventClient } from '@tanstack/ai-event-client'\nimport { streamGenerationResult } from '../stream-generation-result.js'\nimport { resolveDebugOption } from '../../logger/resolve'\nimport {\n applyGenerationResultTransforms,\n createGenerationContext,\n runGenerationAbort,\n runGenerationError,\n runGenerationFinish,\n runGenerationStart,\n runGenerationUsage,\n} from '../middleware/run'\nimport {\n abortReasonMessage,\n createActivityAbortControls,\n isActivityAbortError,\n raceWithAbort,\n} from '../../utilities/activity-abort'\nimport type { InternalLogger } from '../../logger/internal-logger'\nimport type { DebugOption } from '../../logger/types'\nimport type { GenerationMiddleware } from '../middleware/types'\nimport type { WorldAdapter } from './adapter'\nimport type { StreamChunk, WorldGenerationResult } from '../../types'\n\n// ===========================\n// Activity Kind\n// ===========================\n\n/** The adapter kind this activity handles */\nexport const kind = 'world' as const\n\n// ===========================\n// Type Extraction Helpers\n// ===========================\n\n/**\n * Extract provider options from a WorldAdapter via ~types.\n */\nexport type WorldProviderOptions<TAdapter> = TAdapter extends {\n '~types': { providerOptions: infer P extends object }\n}\n ? P\n : object\n\n// ===========================\n// Activity Options Type\n// ===========================\n\n/**\n * Options for the world generation activity.\n * The model is extracted from the adapter's model property.\n *\n * @template TAdapter - The world adapter type\n * @template TStream - Whether to stream the output\n *\n * @experimental World generation is an experimental feature and may change.\n */\nexport interface WorldActivityOptions<\n TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>,\n TStream extends boolean = false,\n> {\n /** The world adapter to use (must be created with a model) */\n adapter: TAdapter & { kind: typeof kind }\n /** Natural-language description of the world or scene */\n prompt: string\n /** Provider-specific options for world generation */\n modelOptions?: WorldProviderOptions<TAdapter>\n /**\n * Whether to wrap the token result as StreamChunks for SSE transport.\n * This is not the live video. When false or omitted, returns\n * Promise<WorldGenerationResult>.\n *\n * @default false\n */\n stream?: TStream\n /**\n * Enable debug logging. Pass `true` to enable all categories, `false` to\n * silence everything including errors, or a `DebugConfig` object for granular\n * control and/or a custom `Logger`.\n */\n debug?: DebugOption\n /**\n * Observe-only middleware notified on start, usage, success, and error. Pass\n * `otelMiddleware()` to emit OpenTelemetry spans, or implement the\n * `GenerationMiddleware` contract for a custom backend.\n */\n middleware?: Array<GenerationMiddleware>\n /** Stable conversation/thread id for correlating this run when persisted. */\n threadId?: string\n /** Stable run id for correlating this run when persisted. */\n runId?: string\n /**\n * Maximum duration of the token mint in milliseconds.\n * No SDK-wide default. Composed with {@link abortSignal}; the first abort wins.\n */\n timeout?: number\n /**\n * Caller cancellation signal (request disconnects, job/runtime cancellation).\n * Composed with {@link timeout} into an effective signal forwarded to the\n * adapter. Request-specific — not stored on global provider client config.\n */\n abortSignal?: AbortSignal\n}\n\n// ===========================\n// Activity Result Type\n// ===========================\n\n/**\n * Result type for the world generation activity.\n * - If stream is true: AsyncIterable<StreamChunk>\n * - Otherwise: Promise<WorldGenerationResult>\n */\nexport type WorldActivityResult<TStream extends boolean = false> =\n TStream extends true\n ? AsyncIterable<StreamChunk>\n : Promise<WorldGenerationResult>\n\nfunction createId(prefix: string): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`\n}\n\n// ===========================\n// Activity Implementation\n// ===========================\n\n/**\n * World generation activity - opens a live, prompt-steerable world session.\n *\n * @example Mint a session token on the server\n * ```ts\n * import { generateWorld } from '@tanstack/ai'\n * import { reactorWorld } from '@tanstack/ai-reactor'\n *\n * const world = await generateWorld({\n * adapter: reactorWorld('visko-orbis-stable'),\n * prompt: 'A neon cyberpunk city at night, slow aerial drift',\n * })\n *\n * // Hand world.token, world.model, and world.prompt to the browser.\n * ```\n *\n * @experimental World generation is an experimental feature and may change.\n */\nexport function generateWorld<\n TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>,\n TStream extends boolean = false,\n>(\n options: WorldActivityOptions<TAdapter, TStream>,\n): WorldActivityResult<TStream> {\n if (options.stream) {\n return streamGenerationResult(\n (resolved) => runGenerateWorld({ ...options, runId: resolved.runId }),\n options,\n ) as WorldActivityResult<TStream>\n }\n return runGenerateWorld(options) as WorldActivityResult<TStream>\n}\n\n/**\n * Run the core world generation logic (non-streaming).\n */\nasync function runGenerateWorld<\n TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>,\n>(\n options: WorldActivityOptions<TAdapter, boolean>,\n): Promise<WorldGenerationResult> {\n const {\n adapter,\n stream: _stream,\n debug: _debug,\n middleware,\n threadId,\n runId,\n timeout,\n abortSignal: callerAbortSignal,\n ...rest\n } = options\n const model = adapter.model\n const requestId = createId('world')\n const startTime = Date.now()\n const logger: InternalLogger = resolveDebugOption(options.debug)\n const abortControls = createActivityAbortControls({\n timeout,\n abortSignal: callerAbortSignal,\n })\n const providerName =\n (adapter as { name?: string; provider?: string }).provider ??\n (adapter as { name?: string }).name ??\n 'unknown'\n\n const mwCtx = createGenerationContext({\n requestId,\n activity: 'world',\n provider: adapter.name,\n model,\n modelOptions: rest.modelOptions,\n threadId,\n runId,\n artifactInputs: { prompt: rest.prompt },\n createId,\n })\n\n await runGenerationStart(middleware, mwCtx)\n\n aiEventClient.emit('world:request:started', {\n requestId,\n provider: adapter.name,\n model,\n prompt: rest.prompt,\n timestamp: startTime,\n ...(rest.modelOptions !== undefined && {\n modelOptions: rest.modelOptions as Record<string, unknown>,\n }),\n })\n\n logger.request(`activity=generateWorld provider=${providerName}`, {\n provider: providerName,\n model,\n })\n\n try {\n const rawResult = await raceWithAbort(\n adapter.createWorld({\n ...rest,\n model,\n logger,\n ...(abortControls.signal ? { abortSignal: abortControls.signal } : {}),\n }),\n abortControls.signal,\n )\n abortControls.clear()\n const result = await applyGenerationResultTransforms(mwCtx, rawResult)\n const elapsedMs = Date.now() - startTime\n\n aiEventClient.emit('world:request:completed', {\n requestId,\n provider: adapter.name,\n model: result.model,\n prompt: result.prompt,\n status: result.status,\n duration: elapsedMs,\n timestamp: Date.now(),\n ...(rest.modelOptions !== undefined && {\n modelOptions: rest.modelOptions as Record<string, unknown>,\n }),\n })\n\n if (result.usage) {\n aiEventClient.emit('world:usage', {\n requestId,\n model: result.model,\n usage: result.usage,\n timestamp: Date.now(),\n ...(rest.modelOptions !== undefined && {\n modelOptions: rest.modelOptions as Record<string, unknown>,\n }),\n })\n }\n\n logger.output(`activity=generateWorld provider=${providerName}`, {\n model: result.model,\n status: result.status,\n })\n\n if (result.usage) await runGenerationUsage(middleware, mwCtx, result.usage)\n await runGenerationFinish(middleware, mwCtx, {\n duration: elapsedMs,\n usage: result.usage,\n })\n\n return result\n } catch (error) {\n abortControls.clear()\n const elapsedMs = Date.now() - startTime\n const err = error as Error\n aiEventClient.emit('world:request:error', {\n requestId,\n provider: adapter.name,\n model,\n error: { message: err.message, name: err.name },\n duration: elapsedMs,\n timestamp: Date.now(),\n ...(rest.modelOptions !== undefined && {\n modelOptions: rest.modelOptions as Record<string, unknown>,\n }),\n })\n if (isActivityAbortError(error, abortControls.signal)) {\n await runGenerationAbort(middleware, mwCtx, {\n reason: abortReasonMessage(error, abortControls.signal),\n duration: elapsedMs,\n })\n } else {\n await runGenerationError(middleware, mwCtx, {\n error,\n duration: elapsedMs,\n })\n }\n logger.errors('generateWorld activity failed', {\n error,\n source: 'generateWorld',\n })\n throw error\n }\n}\n\n// ===========================\n// Options Factory\n// ===========================\n\n/**\n * Create typed options for the generateWorld() function without executing.\n */\nexport function createWorldOptions<\n TAdapter extends WorldAdapter<string, WorldProviderOptions<TAdapter>>,\n TStream extends boolean = false,\n>(\n options: WorldActivityOptions<TAdapter, TStream>,\n): WorldActivityOptions<TAdapter, TStream> {\n return options\n}\n\n// Re-export adapter types\nexport type {\n WorldAdapter,\n WorldAdapterConfig,\n AnyWorldAdapter,\n} from './adapter'\nexport { BaseWorldAdapter } from './adapter'\n"],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import { AnyTTSAdapter } from './generateSpeech/adapter.js';
|
|
|
7
7
|
import { AnyTranscriptionAdapter } from './generateTranscription/adapter.js';
|
|
8
8
|
import { AnyEmbeddingAdapter } from './embed/adapter.js';
|
|
9
9
|
import { AnyRerankAdapter } from './rerank/adapter.js';
|
|
10
|
+
import { AnyWorldAdapter } from './generateWorld/adapter.js';
|
|
11
|
+
import { AnyLiveVideoAdapter } from './generateLiveVideo/adapter.js';
|
|
10
12
|
export { kind as textKind, chat, type TextActivityOptions, type TextActivityResult, } from './chat/index.js';
|
|
11
13
|
export { BaseTextAdapter, type AnyTextAdapter, type TextAdapter, type TextAdapterConfig, type StructuredOutputOptions, type StructuredOutputResult, } from './chat/adapter.js';
|
|
12
14
|
export { kind as summarizeKind, summarize, type SummarizeActivityOptions, type SummarizeActivityResult, type SummarizeProviderOptions, } from './summarize/index.js';
|
|
@@ -27,7 +29,11 @@ export { kind as transcriptionKind, generateTranscription, type TranscriptionAct
|
|
|
27
29
|
export { BaseTranscriptionAdapter, type TranscriptionAdapter, type TranscriptionAdapterConfig, type AnyTranscriptionAdapter, } from './generateTranscription/adapter.js';
|
|
28
30
|
export { kind as embeddingKind, embed, type EmbedOptions, type EmbedProviderOptionsForModel, type EmbeddingInputForModel, } from './embed/index.js';
|
|
29
31
|
export { BaseEmbeddingAdapter, type EmbeddingAdapter, type EmbeddingAdapterConfig, type AnyEmbeddingAdapter, } from './embed/adapter.js';
|
|
32
|
+
export { kind as worldKind, generateWorld, type WorldActivityOptions, type WorldActivityResult, type WorldProviderOptions, } from './generateWorld/index.js';
|
|
33
|
+
export { BaseWorldAdapter, type WorldAdapter, type WorldAdapterConfig, type AnyWorldAdapter, } from './generateWorld/adapter.js';
|
|
34
|
+
export { kind as liveVideoKind, generateLiveVideo, type LiveVideoActivityOptions, type LiveVideoActivityResult, type LiveVideoProviderOptions, } from './generateLiveVideo/index.js';
|
|
35
|
+
export { BaseLiveVideoAdapter, type LiveVideoAdapter, type LiveVideoAdapterConfig, type AnyLiveVideoAdapter, } from './generateLiveVideo/adapter.js';
|
|
30
36
|
/** Union of all adapter types that can be passed to chat() */
|
|
31
|
-
export type AIAdapter = AnyTextAdapter | AnySummarizeAdapter | AnyImageAdapter | AnyAudioAdapter | AnyVideoAdapter | AnyTTSAdapter | AnyTranscriptionAdapter | AnyEmbeddingAdapter | AnyRerankAdapter;
|
|
37
|
+
export type AIAdapter = AnyTextAdapter | AnySummarizeAdapter | AnyImageAdapter | AnyAudioAdapter | AnyVideoAdapter | AnyTTSAdapter | AnyTranscriptionAdapter | AnyEmbeddingAdapter | AnyRerankAdapter | AnyWorldAdapter | AnyLiveVideoAdapter;
|
|
32
38
|
/** Union type of all adapter kinds */
|
|
33
|
-
export type AdapterKind = 'text' | 'summarize' | 'image' | 'audio' | 'video' | 'tts' | 'transcription' | 'embedding' | 'rerank';
|
|
39
|
+
export type AdapterKind = 'text' | 'summarize' | 'image' | 'audio' | 'video' | 'tts' | 'transcription' | 'embedding' | 'rerank' | 'world' | 'liveVideo';
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import { BaseTextAdapter } from "./chat/adapter.js";
|
|
2
|
-
import { chat, kind as kind$
|
|
2
|
+
import { chat, kind as kind$6 } from "./chat/index.js";
|
|
3
3
|
import { BaseSummarizeAdapter } from "./summarize/adapter.js";
|
|
4
4
|
import { ChatStreamSummarizeAdapter } from "./summarize/chat-stream-summarize.js";
|
|
5
|
-
import { kind as kind$
|
|
5
|
+
import { kind as kind$5, summarize } from "./summarize/index.js";
|
|
6
6
|
import { BaseRerankAdapter } from "./rerank/adapter.js";
|
|
7
|
-
import { createRerankOptions, kind as kind$
|
|
7
|
+
import { createRerankOptions, kind as kind$4, rerank } from "./rerank/index.js";
|
|
8
8
|
import { BaseImageAdapter } from "./generateImage/adapter.js";
|
|
9
9
|
import { generateImage, kind as kind$2 } from "./generateImage/index.js";
|
|
10
10
|
import { BaseAudioAdapter } from "./generateAudio/adapter.js";
|
|
11
11
|
import { generateAudio, kind } from "./generateAudio/index.js";
|
|
12
12
|
import { BaseVideoAdapter } from "./generateVideo/adapter.js";
|
|
13
|
-
import { generateVideo, getVideoJobStatus, kind as kind$
|
|
13
|
+
import { generateVideo, getVideoJobStatus, kind as kind$9 } from "./generateVideo/index.js";
|
|
14
14
|
import { snapToDurationOption } from "./generateVideo/snap.js";
|
|
15
15
|
import { BaseTTSAdapter } from "./generateSpeech/adapter.js";
|
|
16
|
-
import { generateSpeech, kind as kind$
|
|
16
|
+
import { generateSpeech, kind as kind$8 } from "./generateSpeech/index.js";
|
|
17
17
|
import { BaseTranscriptionAdapter } from "./generateTranscription/adapter.js";
|
|
18
|
-
import { generateTranscription, kind as kind$
|
|
18
|
+
import { generateTranscription, kind as kind$7 } from "./generateTranscription/index.js";
|
|
19
19
|
import { BaseEmbeddingAdapter } from "./embed/adapter.js";
|
|
20
20
|
import { embed, kind as kind$1 } from "./embed/index.js";
|
|
21
|
-
|
|
21
|
+
import { BaseWorldAdapter } from "./generateWorld/adapter.js";
|
|
22
|
+
import { generateWorld, kind as kind$10 } from "./generateWorld/index.js";
|
|
23
|
+
import { BaseLiveVideoAdapter } from "./generateLiveVideo/adapter.js";
|
|
24
|
+
import { generateLiveVideo, kind as kind$3 } from "./generateLiveVideo/index.js";
|
|
25
|
+
export { BaseAudioAdapter, BaseEmbeddingAdapter, BaseImageAdapter, BaseLiveVideoAdapter, BaseRerankAdapter, BaseSummarizeAdapter, BaseTTSAdapter, BaseTextAdapter, BaseTranscriptionAdapter, BaseVideoAdapter, BaseWorldAdapter, ChatStreamSummarizeAdapter, kind as audioKind, chat, createRerankOptions, embed, kind$1 as embeddingKind, generateAudio, generateImage, generateLiveVideo, generateSpeech, generateTranscription, generateVideo, generateWorld, getVideoJobStatus, kind$2 as imageKind, kind$3 as liveVideoKind, rerank, kind$4 as rerankKind, snapToDurationOption, summarize, kind$5 as summarizeKind, kind$6 as textKind, kind$7 as transcriptionKind, kind$8 as ttsKind, kind$9 as videoKind, kind$10 as worldKind };
|
|
@@ -11,7 +11,7 @@ import { TokenUsage } from '../../types.js';
|
|
|
11
11
|
* `'summarize'` produces text, not media, so it has no artifacts — a
|
|
12
12
|
* persistence middleware stores its run record and result and nothing else.
|
|
13
13
|
*/
|
|
14
|
-
export type GenerationActivity = 'chat' | 'image' | 'video' | 'audio' | 'tts' | 'transcription' | 'embedding' | 'rerank' | 'summarize';
|
|
14
|
+
export type GenerationActivity = 'chat' | 'image' | 'video' | 'audio' | 'tts' | 'transcription' | 'embedding' | 'rerank' | 'summarize' | 'world' | 'liveVideo';
|
|
15
15
|
/**
|
|
16
16
|
* Stable context passed to every {@link GenerationMiddleware} hook. Created
|
|
17
17
|
* once per activity call and shared across the hooks of that call.
|
package/dist/esm/client.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { AudioGenerationOptions, ImageGenerationOptions, TTSOptions, TranscriptionOptions, VideoGenerationOptions } from './types.js';
|
|
2
|
-
export type GenerationKind = 'image' | 'audio' | 'tts' | 'video' | 'transcription';
|
|
1
|
+
import { AudioGenerationOptions, ImageGenerationOptions, TTSOptions, TranscriptionOptions, VideoGenerationOptions, WorldGenerationOptions, LiveVideoGenerationOptions } from './types.js';
|
|
2
|
+
export type GenerationKind = 'image' | 'audio' | 'tts' | 'video' | 'transcription' | 'world' | 'liveVideo';
|
|
3
3
|
type GenerationInputByKind = {
|
|
4
4
|
image: Omit<ImageGenerationOptions, 'logger' | 'model'>;
|
|
5
5
|
audio: Omit<AudioGenerationOptions, 'logger' | 'model'>;
|
|
6
6
|
tts: Omit<TTSOptions, 'logger' | 'model'>;
|
|
7
7
|
video: Omit<VideoGenerationOptions, 'logger' | 'model'>;
|
|
8
8
|
transcription: Omit<TranscriptionOptions, 'logger' | 'model'>;
|
|
9
|
+
world: Omit<WorldGenerationOptions, 'logger' | 'model'>;
|
|
10
|
+
liveVideo: Omit<LiveVideoGenerationOptions, 'logger' | 'model'>;
|
|
9
11
|
};
|
|
10
12
|
export interface GenerationParams<TKind extends GenerationKind> {
|
|
11
13
|
input: GenerationInputByKind[TKind];
|
package/dist/esm/client.js
CHANGED
package/dist/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../../src/client.ts"],"sourcesContent":["import type {\n AudioGenerationOptions,\n ImageGenerationOptions,\n TTSOptions,\n TranscriptionOptions,\n VideoGenerationOptions,\n} from './types'\n\nexport type GenerationKind =\n | 'image'\n | 'audio'\n | 'tts'\n | 'video'\n | 'transcription'\n\ntype GenerationInputByKind = {\n image: Omit<ImageGenerationOptions, 'logger' | 'model'>\n audio: Omit<AudioGenerationOptions, 'logger' | 'model'>\n tts: Omit<TTSOptions, 'logger' | 'model'>\n video: Omit<VideoGenerationOptions, 'logger' | 'model'>\n transcription: Omit<TranscriptionOptions, 'logger' | 'model'>\n}\n\nexport interface GenerationParams<TKind extends GenerationKind> {\n input: GenerationInputByKind[TKind]\n forwardedProps: Record<string, unknown>\n threadId?: string\n runId?: string\n}\n\nconst generationKinds = [\n 'image',\n 'audio',\n 'tts',\n 'video',\n 'transcription',\n] as const satisfies ReadonlyArray<GenerationKind>\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction hasOwnKey(value: Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(value, key)\n}\n\nfunction isGenerationEnvelope(body: unknown): body is Record<string, unknown> {\n return (\n isRecord(body) &&\n (hasOwnKey(body, 'data') || hasOwnKey(body, 'forwardedProps'))\n )\n}\n\nfunction assertGenerationKind(kind: unknown): asserts kind is GenerationKind {\n if (!generationKinds.includes(kind as GenerationKind)) {\n throw new Error(\n `Unsupported generation kind: ${String(\n kind,\n )}. Expected one of ${generationKinds.join(', ')}.`,\n )\n }\n}\n\nfunction assertInputForKind(\n kind: GenerationKind,\n input: unknown,\n): asserts input is GenerationInputByKind[GenerationKind] {\n if (!isRecord(input)) {\n throw new Error(`Generation ${kind} input must be an object.`)\n }\n\n const requiredKey =\n kind === 'tts' ? 'text' : kind === 'transcription' ? 'audio' : 'prompt'\n\n if (!hasOwnKey(input, requiredKey)) {\n throw new Error(`Generation ${kind} input must include ${requiredKey}.`)\n }\n}\n\nfunction isInputForKind(kind: GenerationKind, input: unknown): boolean {\n if (!isRecord(input)) return false\n\n const requiredKey =\n kind === 'tts' ? 'text' : kind === 'transcription' ? 'audio' : 'prompt'\n\n return hasOwnKey(input, requiredKey)\n}\n\nfunction forwardedPropsFromEnvelope(\n envelope: Record<string, unknown>,\n): Record<string, unknown> {\n if (!hasOwnKey(envelope, 'forwardedProps')) {\n return {}\n }\n\n if (!isRecord(envelope.forwardedProps)) {\n throw new Error('Generation envelope forwardedProps must be an object.')\n }\n\n return envelope.forwardedProps\n}\n\nfunction optionalStringField(\n envelope: Record<string, unknown>,\n key: 'threadId' | 'runId',\n): string | undefined {\n if (!hasOwnKey(envelope, key)) {\n return undefined\n }\n\n const value = envelope[key]\n if (typeof value !== 'string') {\n throw new Error(`Generation envelope ${key} must be a string.`)\n }\n\n return value\n}\n\nfunction generationIdentityFields(envelope: Record<string, unknown>): {\n threadId?: string\n runId?: string\n} {\n const identity: {\n threadId?: string\n runId?: string\n } = {}\n const threadId = optionalStringField(envelope, 'threadId')\n const runId = optionalStringField(envelope, 'runId')\n\n if (threadId !== undefined) identity.threadId = threadId\n if (runId !== undefined) identity.runId = runId\n\n return identity\n}\n\nexport function generationParamsFromBody<TKind extends GenerationKind>(\n kind: TKind,\n body: unknown,\n): GenerationParams<TKind> {\n assertGenerationKind(kind)\n\n if (isInputForKind(kind, body)) {\n assertInputForKind(kind, body)\n return {\n input: body as GenerationInputByKind[TKind],\n forwardedProps: {},\n }\n }\n\n if (!isGenerationEnvelope(body)) {\n assertInputForKind(kind, body)\n return {\n input: body as GenerationInputByKind[TKind],\n forwardedProps: {},\n }\n }\n\n if (!hasOwnKey(body, 'data')) {\n throw new Error(`Generation ${kind} envelope must include data.`)\n }\n\n const input = body.data\n assertInputForKind(kind, input)\n\n const forwardedProps = forwardedPropsFromEnvelope(body)\n\n return {\n input: input as GenerationInputByKind[TKind],\n forwardedProps,\n ...generationIdentityFields(body),\n }\n}\n\nexport async function generationParamsFromRequest<TKind extends GenerationKind>(\n kind: TKind,\n request: Request,\n): Promise<GenerationParams<TKind>> {\n let body: unknown\n try {\n body = await request.json()\n } catch (error) {\n throw new Error('Invalid JSON request body.', { cause: error })\n }\n\n if (!isRecord(body)) {\n throw new Error('Generation request body must be a JSON object.')\n }\n\n return generationParamsFromBody(kind, body)\n}\n\nexport enum EventType {\n TEXT_MESSAGE_START = 'TEXT_MESSAGE_START',\n TEXT_MESSAGE_CONTENT = 'TEXT_MESSAGE_CONTENT',\n TEXT_MESSAGE_END = 'TEXT_MESSAGE_END',\n TEXT_MESSAGE_CHUNK = 'TEXT_MESSAGE_CHUNK',\n TOOL_CALL_START = 'TOOL_CALL_START',\n TOOL_CALL_ARGS = 'TOOL_CALL_ARGS',\n TOOL_CALL_END = 'TOOL_CALL_END',\n TOOL_CALL_CHUNK = 'TOOL_CALL_CHUNK',\n TOOL_CALL_RESULT = 'TOOL_CALL_RESULT',\n THINKING_START = 'THINKING_START',\n THINKING_END = 'THINKING_END',\n THINKING_TEXT_MESSAGE_START = 'THINKING_TEXT_MESSAGE_START',\n THINKING_TEXT_MESSAGE_CONTENT = 'THINKING_TEXT_MESSAGE_CONTENT',\n THINKING_TEXT_MESSAGE_END = 'THINKING_TEXT_MESSAGE_END',\n STATE_SNAPSHOT = 'STATE_SNAPSHOT',\n STATE_DELTA = 'STATE_DELTA',\n MESSAGES_SNAPSHOT = 'MESSAGES_SNAPSHOT',\n ACTIVITY_SNAPSHOT = 'ACTIVITY_SNAPSHOT',\n ACTIVITY_DELTA = 'ACTIVITY_DELTA',\n RAW = 'RAW',\n CUSTOM = 'CUSTOM',\n RUN_STARTED = 'RUN_STARTED',\n RUN_FINISHED = 'RUN_FINISHED',\n RUN_ERROR = 'RUN_ERROR',\n STEP_STARTED = 'STEP_STARTED',\n STEP_FINISHED = 'STEP_FINISHED',\n REASONING_START = 'REASONING_START',\n REASONING_MESSAGE_START = 'REASONING_MESSAGE_START',\n REASONING_MESSAGE_CONTENT = 'REASONING_MESSAGE_CONTENT',\n REASONING_MESSAGE_END = 'REASONING_MESSAGE_END',\n REASONING_MESSAGE_CHUNK = 'REASONING_MESSAGE_CHUNK',\n REASONING_END = 'REASONING_END',\n REASONING_ENCRYPTED_VALUE = 'REASONING_ENCRYPTED_VALUE',\n}\n\nexport {\n toolDefinition,\n type AnyClientTool,\n type ClientTool,\n type InferToolInput,\n type InferToolName,\n type InferToolOutput,\n type ApprovalCapabilityOf,\n type ApprovalSchemaConfig,\n type ApprovalSchemaOf,\n type InputSchemaOf,\n type OutputSchemaOf,\n type NoSchema,\n type ToolDefinition,\n type ToolDefinitionConfig,\n type ToolDefinitionInstance,\n} from './activities/chat/tools/tool-definition'\n\nexport {\n hashSchemaInput,\n normalizeApprovalSchema,\n type NormalizedApprovalSchema,\n type NormalizedSchemaInput,\n} from './activities/chat/tools/approval-schema'\n\nexport {\n canonicalInterruptJson,\n cloneAndDeepFreezeJson,\n digestInterruptJson,\n} from './interrupt-serialization'\n\nexport {\n convertSchemaToJsonSchema,\n isStandardSchema,\n parseWithStandardSchema,\n validateWithStandardSchema,\n} from './activities/chat/tools/schema-converter'\n\nexport {\n convertMessagesToModelMessages,\n generateMessageId,\n modelMessageToUIMessage,\n modelMessagesToUIMessages,\n normalizeToUIMessage,\n uiMessageToModelMessages,\n} from './activities/chat/messages'\n\nexport {\n BatchStrategy,\n CompositeStrategy,\n defaultJSONParser,\n ImmediateStrategy,\n parsePartialJSON,\n PartialJSONParser,\n PunctuationStrategy,\n StreamProcessor,\n WordBoundaryStrategy,\n} from './activities/chat/stream/index'\nexport type {\n ChunkRecording,\n ChunkStrategy,\n InternalToolCallState,\n JSONParser,\n ProcessorResult,\n ProcessorState,\n StreamProcessorEvents,\n StreamProcessorOptions,\n ToolCallState,\n ToolResultState,\n} from './activities/chat/stream/index'\n\nexport { uiMessagesToWire } from './utilities/ag-ui-wire'\nexport {\n mergeMetadata,\n tanstackMetadata,\n withTanstackMetadata,\n} from './utilities/merge-metadata'\nexport { fromSpecTokenUsage, toSpecTokenUsage } from './utilities/ag-ui-usage'\nexport type { SpecTokenUsage } from './utilities/ag-ui-usage'\nexport { normalizeStreamChunk } from './utilities/normalize-stream-chunk'\nexport { restoreInboundChunk } from './utilities/restore-inbound-chunk'\nexport type { AdapterYieldChunk } from './utilities/adapter-yield-chunk'\nexport { getChunkRunId, getChunkThreadId } from './utilities/chunk-ids'\nexport type { WireMessage } from './utilities/ag-ui-wire'\n\nexport type {\n AudioPart,\n ContentPart,\n ContentPartDataSource,\n ContentPartSource,\n ContentPartUrlSource,\n CustomEvent,\n DocumentPart,\n ImagePart,\n MediaInputMetadata,\n MediaInputRole,\n MediaPrompt,\n MediaPromptPart,\n MessagePart,\n ModelMessage,\n PersistedArtifactActivity,\n PersistedArtifactRef,\n PersistedArtifactRole,\n Interrupt,\n RunAgentResumeItem,\n RunErrorEvent,\n RunFinishedEvent,\n RunFinishedOutcome,\n SchemaInput,\n StreamChunk,\n StructuredOutputPart,\n TextPart,\n TanStackMessageMetadata,\n TanStackRunMetadata,\n ThinkingPart,\n ToolCall,\n ToolCallPart,\n ToolResultPart,\n UIMessage,\n UIResourcePart,\n VideoPart,\n InferSchemaType,\n} from './types'\n\n// Enumerated, not `export *` — see the matching note in `index.ts`. The\n// interrupt protocol surface is a commitment, so it is published field by\n// field.\nexport {\n INTERRUPT_BINDING_VERSION,\n canonicalizeInterruptResolutions,\n} from './interrupts'\nexport {\n defineInterrupt,\n hashInterruptDefinitionSchema,\n INTERRUPT_PAYLOAD_METADATA_KEY,\n} from './interrupt-definition'\nexport {\n INTERRUPT_CONTINUATION_METADATA_KEY,\n INTERRUPT_CONTINUATION_VERSION,\n genericInterruptContinuationFromDescriptor,\n readGenericInterruptContinuation,\n wrapGenericInterruptContinuation,\n} from './generic-interrupt-continuation'\nexport type {\n GenericInterruptContinuation,\n GenericInterruptContinuationReadResult,\n} from './generic-interrupt-continuation'\nexport type {\n GenericInterruptRequest,\n InterruptDefinition,\n} from './interrupt-definition'\nexport type {\n BatchInterruptError,\n BatchInterruptErrorCode,\n InterruptBinding,\n InterruptCorrelation,\n InterruptSubmissionError,\n ItemInterruptError,\n ItemInterruptErrorCode,\n ToolApprovalResolution,\n UnopenedInterruptBinding,\n} from './interrupts'\n\nexport {\n INTERRUPT_BINDING_METADATA_KEY,\n readInterruptBinding,\n readUnopenedInterruptBinding,\n withInterruptBinding,\n withoutInterruptBinding,\n} from './interrupt-resume'\n\nexport type {\n AudioVisualization,\n RealtimeAdapter,\n RealtimeConnection,\n RealtimeError,\n RealtimeErrorCode,\n RealtimeEvent,\n RealtimeEventHandler,\n RealtimeEventPayloads,\n RealtimeMessage,\n RealtimeMessagePart,\n RealtimeMode,\n RealtimeSessionConfig,\n RealtimeStatus,\n RealtimeToken,\n RealtimeAudioPart,\n RealtimeImagePart,\n RealtimeTextPart,\n RealtimeToolCallPart,\n RealtimeToolResultPart,\n VADConfig,\n} from './realtime/types'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["../../src/client.ts"],"sourcesContent":["import type {\n AudioGenerationOptions,\n ImageGenerationOptions,\n TTSOptions,\n TranscriptionOptions,\n VideoGenerationOptions,\n WorldGenerationOptions,\n LiveVideoGenerationOptions,\n} from './types'\n\nexport type GenerationKind =\n | 'image'\n | 'audio'\n | 'tts'\n | 'video'\n | 'transcription'\n | 'world'\n | 'liveVideo'\n\ntype GenerationInputByKind = {\n image: Omit<ImageGenerationOptions, 'logger' | 'model'>\n audio: Omit<AudioGenerationOptions, 'logger' | 'model'>\n tts: Omit<TTSOptions, 'logger' | 'model'>\n video: Omit<VideoGenerationOptions, 'logger' | 'model'>\n transcription: Omit<TranscriptionOptions, 'logger' | 'model'>\n world: Omit<WorldGenerationOptions, 'logger' | 'model'>\n liveVideo: Omit<LiveVideoGenerationOptions, 'logger' | 'model'>\n}\n\nexport interface GenerationParams<TKind extends GenerationKind> {\n input: GenerationInputByKind[TKind]\n forwardedProps: Record<string, unknown>\n threadId?: string\n runId?: string\n}\n\nconst generationKinds = [\n 'image',\n 'audio',\n 'tts',\n 'video',\n 'transcription',\n 'world',\n 'liveVideo',\n] as const satisfies ReadonlyArray<GenerationKind>\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction hasOwnKey(value: Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(value, key)\n}\n\nfunction isGenerationEnvelope(body: unknown): body is Record<string, unknown> {\n return (\n isRecord(body) &&\n (hasOwnKey(body, 'data') || hasOwnKey(body, 'forwardedProps'))\n )\n}\n\nfunction assertGenerationKind(kind: unknown): asserts kind is GenerationKind {\n if (!generationKinds.includes(kind as GenerationKind)) {\n throw new Error(\n `Unsupported generation kind: ${String(\n kind,\n )}. Expected one of ${generationKinds.join(', ')}.`,\n )\n }\n}\n\nfunction assertInputForKind(\n kind: GenerationKind,\n input: unknown,\n): asserts input is GenerationInputByKind[GenerationKind] {\n if (!isRecord(input)) {\n throw new Error(`Generation ${kind} input must be an object.`)\n }\n\n const requiredKey =\n kind === 'tts' ? 'text' : kind === 'transcription' ? 'audio' : 'prompt'\n\n if (!hasOwnKey(input, requiredKey)) {\n throw new Error(`Generation ${kind} input must include ${requiredKey}.`)\n }\n}\n\nfunction isInputForKind(kind: GenerationKind, input: unknown): boolean {\n if (!isRecord(input)) return false\n\n const requiredKey =\n kind === 'tts' ? 'text' : kind === 'transcription' ? 'audio' : 'prompt'\n\n return hasOwnKey(input, requiredKey)\n}\n\nfunction forwardedPropsFromEnvelope(\n envelope: Record<string, unknown>,\n): Record<string, unknown> {\n if (!hasOwnKey(envelope, 'forwardedProps')) {\n return {}\n }\n\n if (!isRecord(envelope.forwardedProps)) {\n throw new Error('Generation envelope forwardedProps must be an object.')\n }\n\n return envelope.forwardedProps\n}\n\nfunction optionalStringField(\n envelope: Record<string, unknown>,\n key: 'threadId' | 'runId',\n): string | undefined {\n if (!hasOwnKey(envelope, key)) {\n return undefined\n }\n\n const value = envelope[key]\n if (typeof value !== 'string') {\n throw new Error(`Generation envelope ${key} must be a string.`)\n }\n\n return value\n}\n\nfunction generationIdentityFields(envelope: Record<string, unknown>): {\n threadId?: string\n runId?: string\n} {\n const identity: {\n threadId?: string\n runId?: string\n } = {}\n const threadId = optionalStringField(envelope, 'threadId')\n const runId = optionalStringField(envelope, 'runId')\n\n if (threadId !== undefined) identity.threadId = threadId\n if (runId !== undefined) identity.runId = runId\n\n return identity\n}\n\nexport function generationParamsFromBody<TKind extends GenerationKind>(\n kind: TKind,\n body: unknown,\n): GenerationParams<TKind> {\n assertGenerationKind(kind)\n\n if (isInputForKind(kind, body)) {\n assertInputForKind(kind, body)\n return {\n input: body as GenerationInputByKind[TKind],\n forwardedProps: {},\n }\n }\n\n if (!isGenerationEnvelope(body)) {\n assertInputForKind(kind, body)\n return {\n input: body as GenerationInputByKind[TKind],\n forwardedProps: {},\n }\n }\n\n if (!hasOwnKey(body, 'data')) {\n throw new Error(`Generation ${kind} envelope must include data.`)\n }\n\n const input = body.data\n assertInputForKind(kind, input)\n\n const forwardedProps = forwardedPropsFromEnvelope(body)\n\n return {\n input: input as GenerationInputByKind[TKind],\n forwardedProps,\n ...generationIdentityFields(body),\n }\n}\n\nexport async function generationParamsFromRequest<TKind extends GenerationKind>(\n kind: TKind,\n request: Request,\n): Promise<GenerationParams<TKind>> {\n let body: unknown\n try {\n body = await request.json()\n } catch (error) {\n throw new Error('Invalid JSON request body.', { cause: error })\n }\n\n if (!isRecord(body)) {\n throw new Error('Generation request body must be a JSON object.')\n }\n\n return generationParamsFromBody(kind, body)\n}\n\nexport enum EventType {\n TEXT_MESSAGE_START = 'TEXT_MESSAGE_START',\n TEXT_MESSAGE_CONTENT = 'TEXT_MESSAGE_CONTENT',\n TEXT_MESSAGE_END = 'TEXT_MESSAGE_END',\n TEXT_MESSAGE_CHUNK = 'TEXT_MESSAGE_CHUNK',\n TOOL_CALL_START = 'TOOL_CALL_START',\n TOOL_CALL_ARGS = 'TOOL_CALL_ARGS',\n TOOL_CALL_END = 'TOOL_CALL_END',\n TOOL_CALL_CHUNK = 'TOOL_CALL_CHUNK',\n TOOL_CALL_RESULT = 'TOOL_CALL_RESULT',\n THINKING_START = 'THINKING_START',\n THINKING_END = 'THINKING_END',\n THINKING_TEXT_MESSAGE_START = 'THINKING_TEXT_MESSAGE_START',\n THINKING_TEXT_MESSAGE_CONTENT = 'THINKING_TEXT_MESSAGE_CONTENT',\n THINKING_TEXT_MESSAGE_END = 'THINKING_TEXT_MESSAGE_END',\n STATE_SNAPSHOT = 'STATE_SNAPSHOT',\n STATE_DELTA = 'STATE_DELTA',\n MESSAGES_SNAPSHOT = 'MESSAGES_SNAPSHOT',\n ACTIVITY_SNAPSHOT = 'ACTIVITY_SNAPSHOT',\n ACTIVITY_DELTA = 'ACTIVITY_DELTA',\n RAW = 'RAW',\n CUSTOM = 'CUSTOM',\n RUN_STARTED = 'RUN_STARTED',\n RUN_FINISHED = 'RUN_FINISHED',\n RUN_ERROR = 'RUN_ERROR',\n STEP_STARTED = 'STEP_STARTED',\n STEP_FINISHED = 'STEP_FINISHED',\n REASONING_START = 'REASONING_START',\n REASONING_MESSAGE_START = 'REASONING_MESSAGE_START',\n REASONING_MESSAGE_CONTENT = 'REASONING_MESSAGE_CONTENT',\n REASONING_MESSAGE_END = 'REASONING_MESSAGE_END',\n REASONING_MESSAGE_CHUNK = 'REASONING_MESSAGE_CHUNK',\n REASONING_END = 'REASONING_END',\n REASONING_ENCRYPTED_VALUE = 'REASONING_ENCRYPTED_VALUE',\n}\n\nexport {\n toolDefinition,\n type AnyClientTool,\n type ClientTool,\n type InferToolInput,\n type InferToolName,\n type InferToolOutput,\n type ApprovalCapabilityOf,\n type ApprovalSchemaConfig,\n type ApprovalSchemaOf,\n type InputSchemaOf,\n type OutputSchemaOf,\n type NoSchema,\n type ToolDefinition,\n type ToolDefinitionConfig,\n type ToolDefinitionInstance,\n} from './activities/chat/tools/tool-definition'\n\nexport {\n hashSchemaInput,\n normalizeApprovalSchema,\n type NormalizedApprovalSchema,\n type NormalizedSchemaInput,\n} from './activities/chat/tools/approval-schema'\n\nexport {\n canonicalInterruptJson,\n cloneAndDeepFreezeJson,\n digestInterruptJson,\n} from './interrupt-serialization'\n\nexport {\n convertSchemaToJsonSchema,\n isStandardSchema,\n parseWithStandardSchema,\n validateWithStandardSchema,\n} from './activities/chat/tools/schema-converter'\n\nexport {\n convertMessagesToModelMessages,\n generateMessageId,\n modelMessageToUIMessage,\n modelMessagesToUIMessages,\n normalizeToUIMessage,\n uiMessageToModelMessages,\n} from './activities/chat/messages'\n\nexport {\n BatchStrategy,\n CompositeStrategy,\n defaultJSONParser,\n ImmediateStrategy,\n parsePartialJSON,\n PartialJSONParser,\n PunctuationStrategy,\n StreamProcessor,\n WordBoundaryStrategy,\n} from './activities/chat/stream/index'\nexport type {\n ChunkRecording,\n ChunkStrategy,\n InternalToolCallState,\n JSONParser,\n ProcessorResult,\n ProcessorState,\n StreamProcessorEvents,\n StreamProcessorOptions,\n ToolCallState,\n ToolResultState,\n} from './activities/chat/stream/index'\n\nexport { uiMessagesToWire } from './utilities/ag-ui-wire'\nexport {\n mergeMetadata,\n tanstackMetadata,\n withTanstackMetadata,\n} from './utilities/merge-metadata'\nexport { fromSpecTokenUsage, toSpecTokenUsage } from './utilities/ag-ui-usage'\nexport type { SpecTokenUsage } from './utilities/ag-ui-usage'\nexport { normalizeStreamChunk } from './utilities/normalize-stream-chunk'\nexport { restoreInboundChunk } from './utilities/restore-inbound-chunk'\nexport type { AdapterYieldChunk } from './utilities/adapter-yield-chunk'\nexport { getChunkRunId, getChunkThreadId } from './utilities/chunk-ids'\nexport type { WireMessage } from './utilities/ag-ui-wire'\n\nexport type {\n AudioPart,\n ContentPart,\n ContentPartDataSource,\n ContentPartSource,\n ContentPartUrlSource,\n CustomEvent,\n DocumentPart,\n ImagePart,\n MediaInputMetadata,\n MediaInputRole,\n MediaPrompt,\n MediaPromptPart,\n MessagePart,\n ModelMessage,\n PersistedArtifactActivity,\n PersistedArtifactRef,\n PersistedArtifactRole,\n Interrupt,\n RunAgentResumeItem,\n RunErrorEvent,\n RunFinishedEvent,\n RunFinishedOutcome,\n SchemaInput,\n StreamChunk,\n StructuredOutputPart,\n TextPart,\n TanStackMessageMetadata,\n TanStackRunMetadata,\n ThinkingPart,\n ToolCall,\n ToolCallPart,\n ToolResultPart,\n UIMessage,\n UIResourcePart,\n VideoPart,\n InferSchemaType,\n} from './types'\n\n// Enumerated, not `export *` — see the matching note in `index.ts`. The\n// interrupt protocol surface is a commitment, so it is published field by\n// field.\nexport {\n INTERRUPT_BINDING_VERSION,\n canonicalizeInterruptResolutions,\n} from './interrupts'\nexport {\n defineInterrupt,\n hashInterruptDefinitionSchema,\n INTERRUPT_PAYLOAD_METADATA_KEY,\n} from './interrupt-definition'\nexport {\n INTERRUPT_CONTINUATION_METADATA_KEY,\n INTERRUPT_CONTINUATION_VERSION,\n genericInterruptContinuationFromDescriptor,\n readGenericInterruptContinuation,\n wrapGenericInterruptContinuation,\n} from './generic-interrupt-continuation'\nexport type {\n GenericInterruptContinuation,\n GenericInterruptContinuationReadResult,\n} from './generic-interrupt-continuation'\nexport type {\n GenericInterruptRequest,\n InterruptDefinition,\n} from './interrupt-definition'\nexport type {\n BatchInterruptError,\n BatchInterruptErrorCode,\n InterruptBinding,\n InterruptCorrelation,\n InterruptSubmissionError,\n ItemInterruptError,\n ItemInterruptErrorCode,\n ToolApprovalResolution,\n UnopenedInterruptBinding,\n} from './interrupts'\n\nexport {\n INTERRUPT_BINDING_METADATA_KEY,\n readInterruptBinding,\n readUnopenedInterruptBinding,\n withInterruptBinding,\n withoutInterruptBinding,\n} from './interrupt-resume'\n\nexport type {\n AudioVisualization,\n RealtimeAdapter,\n RealtimeConnection,\n RealtimeError,\n RealtimeErrorCode,\n RealtimeEvent,\n RealtimeEventHandler,\n RealtimeEventPayloads,\n RealtimeMessage,\n RealtimeMessagePart,\n RealtimeMode,\n RealtimeSessionConfig,\n RealtimeStatus,\n RealtimeToken,\n RealtimeAudioPart,\n RealtimeImagePart,\n RealtimeTextPart,\n RealtimeToolCallPart,\n RealtimeToolResultPart,\n VADConfig,\n} from './realtime/types'\n"],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { chat, summarize, rerank, generateImage, generateAudio, generateVideo, getVideoJobStatus, generateSpeech, generateTranscription, embed, } from './activities/index.js';
|
|
1
|
+
export { chat, summarize, rerank, generateImage, generateAudio, generateVideo, getVideoJobStatus, generateSpeech, generateTranscription, embed, generateWorld, generateLiveVideo, } from './activities/index.js';
|
|
2
2
|
export { createChatOptions } from './activities/chat/index.js';
|
|
3
3
|
export { createSummarizeOptions } from './activities/summarize/index.js';
|
|
4
4
|
export { createRerankOptions } from './activities/rerank/index.js';
|
|
@@ -8,7 +8,9 @@ export { createVideoOptions } from './activities/generateVideo/index.js';
|
|
|
8
8
|
export { createSpeechOptions } from './activities/generateSpeech/index.js';
|
|
9
9
|
export { createTranscriptionOptions } from './activities/generateTranscription/index.js';
|
|
10
10
|
export { createEmbedOptions } from './activities/embed/index.js';
|
|
11
|
-
export
|
|
11
|
+
export { createWorldOptions } from './activities/generateWorld/index.js';
|
|
12
|
+
export { createLiveVideoOptions } from './activities/generateLiveVideo/index.js';
|
|
13
|
+
export type { AIAdapter, ImageAdapter, AnyImageAdapter, TextAdapter, AnyTextAdapter, AnySummarizeAdapter, SummarizeAdapter, AnyAudioAdapter, AudioAdapter, AnyTTSAdapter, TTSAdapter, AnyTranscriptionAdapter, TranscriptionAdapter, AnyVideoAdapter, VideoAdapter, AnyEmbeddingAdapter, EmbeddingAdapter, AnyRerankAdapter, RerankAdapter, AnyWorldAdapter, WorldAdapter, AnyLiveVideoAdapter, LiveVideoAdapter, } from './activities/index.js';
|
|
12
14
|
export { BaseRerankAdapter } from './activities/rerank/adapter.js';
|
|
13
15
|
export { toolDefinition, type ToolDefinition, type ToolDefinitionInstance, type ToolDefinitionConfig, type ServerTool, type AnyServerTool, type ClientTool, type AnyClientTool, type InferToolName, type InferToolInput, type InferToolOutput, type ApprovalCapabilityOf, type ApprovalSchemaConfig, type ApprovalSchemaOf, type InputSchemaOf, type OutputSchemaOf, type NoSchema, } from './activities/chat/tools/tool-definition.js';
|
|
14
16
|
export { hashSchemaInput, normalizeApprovalSchema, type NormalizedApprovalSchema, type NormalizedSchemaInput, } from './activities/chat/tools/approval-schema.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -38,6 +38,8 @@ import { createSpeechOptions, generateSpeech } from "./activities/generateSpeech
|
|
|
38
38
|
import { createTranscriptionOptions, generateTranscription } from "./activities/generateTranscription/index.js";
|
|
39
39
|
import { countEmbeddingInputModalities, requireTextOnlyEmbeddingInput, resolveEmbeddingInput } from "./utilities/embedding-input.js";
|
|
40
40
|
import { createEmbedOptions, embed } from "./activities/embed/index.js";
|
|
41
|
+
import { createWorldOptions, generateWorld } from "./activities/generateWorld/index.js";
|
|
42
|
+
import { createLiveVideoOptions, generateLiveVideo } from "./activities/generateLiveVideo/index.js";
|
|
41
43
|
import { toolDefinition } from "./activities/chat/tools/tool-definition.js";
|
|
42
44
|
import { chatParamsFromRequest, chatParamsFromRequestBody, mergeAgentTools } from "./utilities/chat-params.js";
|
|
43
45
|
import { decodeWsFrame, encodeWsFrame, resumeWebSocketResponse, resumeWebSocketStream, toWebSocketResponse, toWebSocketStream } from "./stream-to-websocket.js";
|
|
@@ -59,4 +61,4 @@ import { BatchStrategy, CompositeStrategy, ImmediateStrategy, PunctuationStrateg
|
|
|
59
61
|
import { StreamProcessor, createReplayStream } from "./activities/chat/stream/processor.js";
|
|
60
62
|
import { generationParamsFromBody, generationParamsFromRequest } from "./client.js";
|
|
61
63
|
import { createModel, extendAdapter } from "./extend-adapter.js";
|
|
62
|
-
export { BaseRerankAdapter, BatchStrategy, CUSTOM_EVENT, CompositeStrategy, ConsoleLogger, DISCOVERY_TOOL_NAME, DetachableRunCapability, DuplicateToolNameError, EventType, INTERRUPT_BINDING_METADATA_KEY, INTERRUPT_BINDING_VERSION, INTERRUPT_BOUNDARY_PHASES, INTERRUPT_CONTINUATION_METADATA_KEY, INTERRUPT_CONTINUATION_VERSION, INTERRUPT_PAYLOAD_METADATA_KEY, INTERRUPT_TOOL_RESUMES, ImmediateStrategy, InMemoryRunStore, InterruptResumeValidationError, MCPDuplicateToolNameError, MetadataCapability, PartialJSONParser, PunctuationStrategy, RUN_ACCEPTED_EVENT, RUN_CANCEL_REASON, RunDetachedCapability, SkillLimitError, StandardSchemaValidationError, StreamProcessor, ToolCallManager, WordBoundaryStrategy, brandProviderTool, buildBaseUsage, canonicalInterruptJson, canonicalizeInterruptResolutions, chat, chatParamsFromRequest, chatParamsFromRequestBody, cloneAndDeepFreezeJson, combineStrategies, convertMessagesToModelMessages, convertSchemaToJsonSchema, countEmbeddingInputModalities, createAudioOptions, createCapability, createChatMiddleware, createChatOptions, createEmbedOptions, createFrozenRegistry, createImageOptions, createInterruptBinding, createModel, createRealtimeEventEmitter, createReplayStream, createRerankOptions, createSpeechOptions, createSummarizeOptions, createToolRegistry, createTranscriptionOptions, createVideoOptions, decodeWsFrame, defaultJSONParser, defineChatMiddleware, defineInterrupt, defineRunStore, detectImageMimeType, digestInterruptJson, embed, encodeWsFrame, extendAdapter, firstSentence, fromSpecTokenUsage, generateAudio, generateImage, generateMessageId, generateSpeech, generateTranscription, generateVideo, generationParamsFromBody, generationParamsFromRequest, genericInterruptContinuationFromDescriptor, getChunkRunId, getChunkThreadId, getDetachableRun, getMetadata, getProviderExecutedMetadata, getRunDetached, getVideoJobStatus, hashSchemaInput, interruptItemError, isCancelRequestedReason, isContentPart, isContentPartArray, isCustomEvent, isProviderExecutedToolCall, isRunStatus, isStandardSchema, isTerminalRunStatus, maxIterations, memoryStream, mergeAgentTools, mergeMetadata, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeApprovalSchema, normalizeStreamChunk, normalizeSystemPrompts, normalizeToUIMessage, normalizeToolResult, parsePartialJSON, parseWithStandardSchema, provideDetachableRun, provideMetadata, provideRunDetached, readGenericInterruptContinuation, readInterruptBinding, readUnopenedInterruptBinding, realtimeToken, renderLazyCatalogEntry, replayRunStream, requestRunCancel, requireTextOnlyEmbeddingInput, rerank, resolveEmbeddingInput, resolveMediaPrompt, resolveResumeRunId, resumeHttpResponse, resumeServerSentEventsResponse, resumeWebSocketResponse, resumeWebSocketStream, streamToText, summarize, toHttpResponse, toHttpStream, toServerSentEventsResponse, toServerSentEventsStream, toSpecTokenUsage, toWebSocketResponse, toWebSocketStream, toolDefinition, uiMessageToModelMessages, uiMessagesToWire, untilFinishReason, validateInterruptResumeBatch, validateWithStandardSchema, wasCancelRequested, withInterruptBinding, withTanstackMetadata, withoutInterruptBinding, wrapGenericInterruptContinuation };
|
|
64
|
+
export { BaseRerankAdapter, BatchStrategy, CUSTOM_EVENT, CompositeStrategy, ConsoleLogger, DISCOVERY_TOOL_NAME, DetachableRunCapability, DuplicateToolNameError, EventType, INTERRUPT_BINDING_METADATA_KEY, INTERRUPT_BINDING_VERSION, INTERRUPT_BOUNDARY_PHASES, INTERRUPT_CONTINUATION_METADATA_KEY, INTERRUPT_CONTINUATION_VERSION, INTERRUPT_PAYLOAD_METADATA_KEY, INTERRUPT_TOOL_RESUMES, ImmediateStrategy, InMemoryRunStore, InterruptResumeValidationError, MCPDuplicateToolNameError, MetadataCapability, PartialJSONParser, PunctuationStrategy, RUN_ACCEPTED_EVENT, RUN_CANCEL_REASON, RunDetachedCapability, SkillLimitError, StandardSchemaValidationError, StreamProcessor, ToolCallManager, WordBoundaryStrategy, brandProviderTool, buildBaseUsage, canonicalInterruptJson, canonicalizeInterruptResolutions, chat, chatParamsFromRequest, chatParamsFromRequestBody, cloneAndDeepFreezeJson, combineStrategies, convertMessagesToModelMessages, convertSchemaToJsonSchema, countEmbeddingInputModalities, createAudioOptions, createCapability, createChatMiddleware, createChatOptions, createEmbedOptions, createFrozenRegistry, createImageOptions, createInterruptBinding, createLiveVideoOptions, createModel, createRealtimeEventEmitter, createReplayStream, createRerankOptions, createSpeechOptions, createSummarizeOptions, createToolRegistry, createTranscriptionOptions, createVideoOptions, createWorldOptions, decodeWsFrame, defaultJSONParser, defineChatMiddleware, defineInterrupt, defineRunStore, detectImageMimeType, digestInterruptJson, embed, encodeWsFrame, extendAdapter, firstSentence, fromSpecTokenUsage, generateAudio, generateImage, generateLiveVideo, generateMessageId, generateSpeech, generateTranscription, generateVideo, generateWorld, generationParamsFromBody, generationParamsFromRequest, genericInterruptContinuationFromDescriptor, getChunkRunId, getChunkThreadId, getDetachableRun, getMetadata, getProviderExecutedMetadata, getRunDetached, getVideoJobStatus, hashSchemaInput, interruptItemError, isCancelRequestedReason, isContentPart, isContentPartArray, isCustomEvent, isProviderExecutedToolCall, isRunStatus, isStandardSchema, isTerminalRunStatus, maxIterations, memoryStream, mergeAgentTools, mergeMetadata, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeApprovalSchema, normalizeStreamChunk, normalizeSystemPrompts, normalizeToUIMessage, normalizeToolResult, parsePartialJSON, parseWithStandardSchema, provideDetachableRun, provideMetadata, provideRunDetached, readGenericInterruptContinuation, readInterruptBinding, readUnopenedInterruptBinding, realtimeToken, renderLazyCatalogEntry, replayRunStream, requestRunCancel, requireTextOnlyEmbeddingInput, rerank, resolveEmbeddingInput, resolveMediaPrompt, resolveResumeRunId, resumeHttpResponse, resumeServerSentEventsResponse, resumeWebSocketResponse, resumeWebSocketStream, streamToText, summarize, toHttpResponse, toHttpStream, toServerSentEventsResponse, toServerSentEventsStream, toSpecTokenUsage, toWebSocketResponse, toWebSocketStream, toolDefinition, uiMessageToModelMessages, uiMessagesToWire, untilFinishReason, validateInterruptResumeBatch, validateWithStandardSchema, wasCancelRequested, withInterruptBinding, withTanstackMetadata, withoutInterruptBinding, wrapGenericInterruptContinuation };
|
|
@@ -21,7 +21,9 @@ var OPERATION_NAME = {
|
|
|
21
21
|
transcription: "transcription",
|
|
22
22
|
embedding: "embeddings",
|
|
23
23
|
rerank: "rerank",
|
|
24
|
-
summarize: "summarize"
|
|
24
|
+
summarize: "summarize",
|
|
25
|
+
world: "world_generation",
|
|
26
|
+
liveVideo: "live_video_generation"
|
|
25
27
|
};
|
|
26
28
|
var stateByCtx = /* @__PURE__ */ new WeakMap();
|
|
27
29
|
var DEFAULT_MAX_CONTENT_LENGTH = 1e5;
|