@tanstack/ai-worldlabs 0.0.0 → 0.1.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/LICENSE +21 -0
- package/README.md +42 -2
- package/dist/esm/adapters/world.d.ts +38 -0
- package/dist/esm/adapters/world.js +314 -0
- package/dist/esm/adapters/world.js.map +1 -0
- package/dist/esm/byok.d.ts +1 -0
- package/dist/esm/byok.js +11 -0
- package/dist/esm/byok.js.map +1 -0
- package/dist/esm/generated/client/client.gen.d.ts +2 -0
- package/dist/esm/generated/client/client.gen.js +174 -0
- package/dist/esm/generated/client/client.gen.js.map +1 -0
- package/dist/esm/generated/client/index.d.ts +10 -0
- package/dist/esm/generated/client/index.js +5 -0
- package/dist/esm/generated/client/types.gen.d.ts +120 -0
- package/dist/esm/generated/client/utils.gen.d.ts +37 -0
- package/dist/esm/generated/client/utils.gen.js +177 -0
- package/dist/esm/generated/client/utils.gen.js.map +1 -0
- package/dist/esm/generated/client.d.ts +1 -0
- package/dist/esm/generated/client.gen.d.ts +12 -0
- package/dist/esm/generated/client.gen.js +9 -0
- package/dist/esm/generated/client.gen.js.map +1 -0
- package/dist/esm/generated/client.js +5 -0
- package/dist/esm/generated/core/auth.gen.d.ts +25 -0
- package/dist/esm/generated/core/auth.gen.js +12 -0
- package/dist/esm/generated/core/auth.gen.js.map +1 -0
- package/dist/esm/generated/core/bodySerializer.gen.d.ts +25 -0
- package/dist/esm/generated/core/bodySerializer.gen.js +6 -0
- package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/esm/generated/core/params.gen.d.ts +43 -0
- package/dist/esm/generated/core/params.gen.js +9 -0
- package/dist/esm/generated/core/params.gen.js.map +1 -0
- package/dist/esm/generated/core/pathSerializer.gen.d.ts +33 -0
- package/dist/esm/generated/core/pathSerializer.gen.js +82 -0
- package/dist/esm/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/esm/generated/core/queryKeySerializer.gen.d.ts +18 -0
- package/dist/esm/generated/core/serverSentEvents.gen.d.ts +71 -0
- package/dist/esm/generated/core/serverSentEvents.gen.js +96 -0
- package/dist/esm/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/esm/generated/core/types.gen.d.ts +83 -0
- package/dist/esm/generated/core/utils.gen.d.ts +19 -0
- package/dist/esm/generated/core/utils.gen.js +78 -0
- package/dist/esm/generated/core/utils.gen.js.map +1 -0
- package/dist/esm/generated/index.d.ts +2 -0
- package/dist/esm/generated/sdk.gen.d.ts +275 -0
- package/dist/esm/generated/sdk.gen.js +79 -0
- package/dist/esm/generated/sdk.gen.js.map +1 -0
- package/dist/esm/generated/types.gen.d.ts +1610 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/model-meta.d.ts +63 -0
- package/dist/esm/model-meta.js +17 -0
- package/dist/esm/model-meta.js.map +1 -0
- package/dist/esm/utils/client.d.ts +16 -0
- package/dist/esm/utils/client.js +35 -0
- package/dist/esm/utils/client.js.map +1 -0
- package/package.json +54 -6
- package/src/adapters/world.ts +535 -0
- package/src/byok.ts +7 -0
- package/src/generated/client/client.gen.ts +301 -0
- package/src/generated/client/index.ts +27 -0
- package/src/generated/client/types.gen.ts +247 -0
- package/src/generated/client/utils.gen.ts +332 -0
- package/src/generated/client.gen.ts +26 -0
- package/src/generated/client.ts +3 -0
- package/src/generated/core/auth.gen.ts +48 -0
- package/src/generated/core/bodySerializer.gen.ts +96 -0
- package/src/generated/core/params.gen.ts +186 -0
- package/src/generated/core/pathSerializer.gen.ts +186 -0
- package/src/generated/core/queryKeySerializer.gen.ts +139 -0
- package/src/generated/core/serverSentEvents.gen.ts +265 -0
- package/src/generated/core/types.gen.ts +124 -0
- package/src/generated/core/utils.gen.ts +146 -0
- package/src/generated/index.ts +113 -0
- package/src/generated/sdk.gen.ts +531 -0
- package/src/generated/types.gen.ts +1767 -0
- package/src/index.ts +20 -0
- package/src/model-meta.ts +79 -0
- package/src/utils/client.ts +50 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export {
|
|
2
|
+
WorldLabsWorldAdapter,
|
|
3
|
+
worldlabsWorld,
|
|
4
|
+
createWorldLabsWorld,
|
|
5
|
+
} from './adapters/world'
|
|
6
|
+
export type { WorldLabsClientConfig } from './adapters/world'
|
|
7
|
+
|
|
8
|
+
export { WORLDLABS_WORLD_MODELS, isWorldLabsWorldModel } from './model-meta'
|
|
9
|
+
export type {
|
|
10
|
+
WorldLabsWorldModel,
|
|
11
|
+
WorldLabsWorldProviderOptions,
|
|
12
|
+
WorldLabsWorldModelProviderOptionsByName,
|
|
13
|
+
WorldLabsMediaRef,
|
|
14
|
+
WorldLabsLocatedImageRef,
|
|
15
|
+
} from './model-meta'
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
DEFAULT_WORLDLABS_API_URL,
|
|
19
|
+
getWorldLabsApiKeyFromEnv,
|
|
20
|
+
} from './utils/client'
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World Labs Marble model ids for `worldlabsWorld('marble-1.1')`.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const WORLDLABS_WORLD_MODELS = [
|
|
6
|
+
'marble-1.1-plus',
|
|
7
|
+
'marble-1.1',
|
|
8
|
+
'marble-1.0',
|
|
9
|
+
'marble-1.0-draft',
|
|
10
|
+
] as const
|
|
11
|
+
|
|
12
|
+
export type WorldLabsWorldModel = (typeof WORLDLABS_WORLD_MODELS)[number]
|
|
13
|
+
|
|
14
|
+
export function isWorldLabsWorldModel(
|
|
15
|
+
model: string,
|
|
16
|
+
): model is WorldLabsWorldModel {
|
|
17
|
+
return (WORLDLABS_WORLD_MODELS as ReadonlyArray<string>).includes(model)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface WorldLabsMediaRef {
|
|
21
|
+
/** Public URL for the media. */
|
|
22
|
+
uri?: string
|
|
23
|
+
/** Id from a previous media-asset upload. */
|
|
24
|
+
mediaAssetId?: string
|
|
25
|
+
/** Base64-encoded file bytes. */
|
|
26
|
+
dataBase64?: string
|
|
27
|
+
/** File extension without a dot, used with `dataBase64`. */
|
|
28
|
+
extension?: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface WorldLabsLocatedImageRef extends WorldLabsMediaRef {
|
|
32
|
+
/** Horizontal angle in degrees. 0 is front, 90 is right, 180 is back. */
|
|
33
|
+
azimuth?: number
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Provider options for World Labs world generation.
|
|
38
|
+
*
|
|
39
|
+
* `createWorld` sends these on the generate request. Image, multi-image, and
|
|
40
|
+
* video inputs select the matching World Labs prompt type. Text-only calls
|
|
41
|
+
* use `generateWorld({ prompt })`.
|
|
42
|
+
*/
|
|
43
|
+
export interface WorldLabsWorldProviderOptions {
|
|
44
|
+
/** Optional title stored on the world. Max 64 characters. */
|
|
45
|
+
displayName?: string
|
|
46
|
+
/** Random seed for generation. */
|
|
47
|
+
seed?: number
|
|
48
|
+
/** Optional tags. Max 10 tags, each up to 32 characters. */
|
|
49
|
+
tags?: Array<string>
|
|
50
|
+
/** If true, use the text prompt as-is without recaptioning. */
|
|
51
|
+
disableRecaption?: boolean
|
|
52
|
+
/**
|
|
53
|
+
* How to treat a single image as a panorama. `auto` detects equirectangular
|
|
54
|
+
* panos. `true` always treats the image as a pano. `false` treats it as a
|
|
55
|
+
* standard image.
|
|
56
|
+
*/
|
|
57
|
+
isPano?: 'auto' | true | false
|
|
58
|
+
/** Single image input. Do not combine with `images` or `video`. */
|
|
59
|
+
image?: WorldLabsMediaRef
|
|
60
|
+
/** Multiple images of the same scene. Do not combine with `image` or `video`. */
|
|
61
|
+
images?: Array<WorldLabsLocatedImageRef>
|
|
62
|
+
/** Video input. Do not combine with `image` or `images`. */
|
|
63
|
+
video?: WorldLabsMediaRef
|
|
64
|
+
/** World visibility. Default is private. */
|
|
65
|
+
permission?: {
|
|
66
|
+
public?: boolean
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* When false, return after the generate call with `status: 'waiting'` and
|
|
70
|
+
* `operationId`. Default is true: poll until the world is ready.
|
|
71
|
+
*/
|
|
72
|
+
wait?: boolean
|
|
73
|
+
/** Poll interval in milliseconds when `wait` is true. Default 2000. */
|
|
74
|
+
pollIntervalMs?: number
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export type WorldLabsWorldModelProviderOptionsByName = {
|
|
78
|
+
[M in WorldLabsWorldModel]: WorldLabsWorldProviderOptions
|
|
79
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getApiKeyFromEnv } from '@tanstack/ai-utils'
|
|
2
|
+
import { createClient, createConfig } from '../generated/client/index'
|
|
3
|
+
import type { Client } from '../generated/client/index'
|
|
4
|
+
|
|
5
|
+
export const DEFAULT_WORLDLABS_API_URL = 'https://api.worldlabs.ai'
|
|
6
|
+
|
|
7
|
+
export interface WorldLabsClientConfig {
|
|
8
|
+
apiKey?: string
|
|
9
|
+
baseUrl?: string
|
|
10
|
+
fetch?: typeof fetch
|
|
11
|
+
defaultHeaders?: Record<string, string>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function getWorldLabsApiKeyFromEnv(): string {
|
|
15
|
+
return getApiKeyFromEnv('WORLDLABS_API_KEY')
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function resolveWorldLabsApiKey(config?: WorldLabsClientConfig): string {
|
|
19
|
+
return config?.apiKey ?? getWorldLabsApiKeyFromEnv()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function resolveWorldLabsApiUrl(config?: WorldLabsClientConfig): string {
|
|
23
|
+
return (config?.baseUrl ?? DEFAULT_WORLDLABS_API_URL).replace(/\/+$/, '')
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function createWorldLabsClient(config: WorldLabsClientConfig = {}): {
|
|
27
|
+
client: Client
|
|
28
|
+
apiKey: string
|
|
29
|
+
baseUrl: string
|
|
30
|
+
} {
|
|
31
|
+
const apiKey = resolveWorldLabsApiKey(config)
|
|
32
|
+
const baseUrl = resolveWorldLabsApiUrl(config)
|
|
33
|
+
const fetchImpl = config.fetch ?? globalThis.fetch
|
|
34
|
+
if (typeof fetchImpl !== 'function') {
|
|
35
|
+
throw new Error(
|
|
36
|
+
'global fetch is not available. Pass `fetch` in the World Labs adapter config.',
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const client = createClient(
|
|
41
|
+
createConfig({
|
|
42
|
+
baseUrl,
|
|
43
|
+
auth: apiKey,
|
|
44
|
+
fetch: fetchImpl,
|
|
45
|
+
headers: config.defaultHeaders,
|
|
46
|
+
}),
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return { client, apiKey, baseUrl }
|
|
50
|
+
}
|