@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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -2
  3. package/dist/esm/adapters/world.d.ts +38 -0
  4. package/dist/esm/adapters/world.js +314 -0
  5. package/dist/esm/adapters/world.js.map +1 -0
  6. package/dist/esm/byok.d.ts +1 -0
  7. package/dist/esm/byok.js +11 -0
  8. package/dist/esm/byok.js.map +1 -0
  9. package/dist/esm/generated/client/client.gen.d.ts +2 -0
  10. package/dist/esm/generated/client/client.gen.js +174 -0
  11. package/dist/esm/generated/client/client.gen.js.map +1 -0
  12. package/dist/esm/generated/client/index.d.ts +10 -0
  13. package/dist/esm/generated/client/index.js +5 -0
  14. package/dist/esm/generated/client/types.gen.d.ts +120 -0
  15. package/dist/esm/generated/client/utils.gen.d.ts +37 -0
  16. package/dist/esm/generated/client/utils.gen.js +177 -0
  17. package/dist/esm/generated/client/utils.gen.js.map +1 -0
  18. package/dist/esm/generated/client.d.ts +1 -0
  19. package/dist/esm/generated/client.gen.d.ts +12 -0
  20. package/dist/esm/generated/client.gen.js +9 -0
  21. package/dist/esm/generated/client.gen.js.map +1 -0
  22. package/dist/esm/generated/client.js +5 -0
  23. package/dist/esm/generated/core/auth.gen.d.ts +25 -0
  24. package/dist/esm/generated/core/auth.gen.js +12 -0
  25. package/dist/esm/generated/core/auth.gen.js.map +1 -0
  26. package/dist/esm/generated/core/bodySerializer.gen.d.ts +25 -0
  27. package/dist/esm/generated/core/bodySerializer.gen.js +6 -0
  28. package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -0
  29. package/dist/esm/generated/core/params.gen.d.ts +43 -0
  30. package/dist/esm/generated/core/params.gen.js +9 -0
  31. package/dist/esm/generated/core/params.gen.js.map +1 -0
  32. package/dist/esm/generated/core/pathSerializer.gen.d.ts +33 -0
  33. package/dist/esm/generated/core/pathSerializer.gen.js +82 -0
  34. package/dist/esm/generated/core/pathSerializer.gen.js.map +1 -0
  35. package/dist/esm/generated/core/queryKeySerializer.gen.d.ts +18 -0
  36. package/dist/esm/generated/core/serverSentEvents.gen.d.ts +71 -0
  37. package/dist/esm/generated/core/serverSentEvents.gen.js +96 -0
  38. package/dist/esm/generated/core/serverSentEvents.gen.js.map +1 -0
  39. package/dist/esm/generated/core/types.gen.d.ts +83 -0
  40. package/dist/esm/generated/core/utils.gen.d.ts +19 -0
  41. package/dist/esm/generated/core/utils.gen.js +78 -0
  42. package/dist/esm/generated/core/utils.gen.js.map +1 -0
  43. package/dist/esm/generated/index.d.ts +2 -0
  44. package/dist/esm/generated/sdk.gen.d.ts +275 -0
  45. package/dist/esm/generated/sdk.gen.js +79 -0
  46. package/dist/esm/generated/sdk.gen.js.map +1 -0
  47. package/dist/esm/generated/types.gen.d.ts +1610 -0
  48. package/dist/esm/index.d.ts +5 -0
  49. package/dist/esm/index.js +4 -0
  50. package/dist/esm/model-meta.d.ts +63 -0
  51. package/dist/esm/model-meta.js +17 -0
  52. package/dist/esm/model-meta.js.map +1 -0
  53. package/dist/esm/utils/client.d.ts +16 -0
  54. package/dist/esm/utils/client.js +35 -0
  55. package/dist/esm/utils/client.js.map +1 -0
  56. package/package.json +54 -6
  57. package/src/adapters/world.ts +535 -0
  58. package/src/byok.ts +7 -0
  59. package/src/generated/client/client.gen.ts +301 -0
  60. package/src/generated/client/index.ts +27 -0
  61. package/src/generated/client/types.gen.ts +247 -0
  62. package/src/generated/client/utils.gen.ts +332 -0
  63. package/src/generated/client.gen.ts +26 -0
  64. package/src/generated/client.ts +3 -0
  65. package/src/generated/core/auth.gen.ts +48 -0
  66. package/src/generated/core/bodySerializer.gen.ts +96 -0
  67. package/src/generated/core/params.gen.ts +186 -0
  68. package/src/generated/core/pathSerializer.gen.ts +186 -0
  69. package/src/generated/core/queryKeySerializer.gen.ts +139 -0
  70. package/src/generated/core/serverSentEvents.gen.ts +265 -0
  71. package/src/generated/core/types.gen.ts +124 -0
  72. package/src/generated/core/utils.gen.ts +146 -0
  73. package/src/generated/index.ts +113 -0
  74. package/src/generated/sdk.gen.ts +531 -0
  75. package/src/generated/types.gen.ts +1767 -0
  76. package/src/index.ts +20 -0
  77. package/src/model-meta.ts +79 -0
  78. 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
+ }