@xmaxai/sdk 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 (38) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +201 -0
  4. package/dist/chunk-67XSD3QJ.js +2673 -0
  5. package/dist/chunk-67XSD3QJ.js.map +1 -0
  6. package/dist/chunk-74ZZWUPI.js +992 -0
  7. package/dist/chunk-74ZZWUPI.js.map +1 -0
  8. package/dist/chunk-EGNRAZ5U.js +432 -0
  9. package/dist/chunk-EGNRAZ5U.js.map +1 -0
  10. package/dist/chunk-PLU2YVAS.js +414 -0
  11. package/dist/chunk-PLU2YVAS.js.map +1 -0
  12. package/dist/experimental/index.cjs +3897 -0
  13. package/dist/experimental/index.cjs.map +1 -0
  14. package/dist/experimental/index.d.cts +2 -0
  15. package/dist/experimental/index.d.ts +2 -0
  16. package/dist/experimental/index.js +5 -0
  17. package/dist/experimental/index.js.map +1 -0
  18. package/dist/index-BIUk_kvb.d.ts +350 -0
  19. package/dist/index-Dai62Sos.d.cts +350 -0
  20. package/dist/index.cjs +5109 -0
  21. package/dist/index.cjs.map +1 -0
  22. package/dist/index.d.cts +235 -0
  23. package/dist/index.d.ts +235 -0
  24. package/dist/index.js +359 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/local-publish-diagnostics-ABLL56IT.js +79 -0
  27. package/dist/local-publish-diagnostics-ABLL56IT.js.map +1 -0
  28. package/dist/react/index.cjs +4304 -0
  29. package/dist/react/index.cjs.map +1 -0
  30. package/dist/react/index.d.cts +112 -0
  31. package/dist/react/index.d.ts +112 -0
  32. package/dist/react/index.js +817 -0
  33. package/dist/react/index.js.map +1 -0
  34. package/dist/rtc-manager-gYDkADGw.d.cts +412 -0
  35. package/dist/rtc-manager-gYDkADGw.d.ts +412 -0
  36. package/dist/video-file-stream-UXJ6TNIB.js +4 -0
  37. package/dist/video-file-stream-UXJ6TNIB.js.map +1 -0
  38. package/package.json +82 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,40 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@xmaxai/sdk` will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ - 双区域发布:同一套源码构建出 `@xmaxai/sdk`(国内,默认 `https://cloud.xmax.22duck.cn/open/api/v1`)与 `@xmaxai/sdk-global`(海外,默认 `https://api.xmax.cloud/open/api/v1`)。
13
+ - 构建时区域开关 `XMAX_SDK_REGION`(`cn` | `global`),经 tsup 内联注入默认 `baseUrl`。
14
+ - `XMAX_OPEN_API_BASE_URLS` 常量与 `XmaxSdkRegion` 类型。
15
+ - `build:cn` / `build:global` / `publish:cn` / `publish:global` / `publish:all` 脚本及 `scripts/publish-sdk.mjs`。
16
+
17
+ ### Changed
18
+
19
+ - `XMAX_OPEN_API_PRODUCTION_BASE_URL` 现按构建区域解析(默认 `cn`),不再硬编码单一地址。
20
+
21
+ ## [0.1.0] - 2026-07-01
22
+
23
+ ### Added
24
+
25
+ - Initial public release preparation: MIT license, semver, npm metadata.
26
+ - `XMAX_OPEN_API_PRODUCTION_BASE_URL` constant for explicit production API endpoint configuration.
27
+ - `@xmaxai/sdk/experimental` subpath for `createXmaxClient`, drag, and related APIs.
28
+ - Unit tests for RTC event builders, video size utilities, and HTTP client request handling.
29
+ - Inline SVG icons for built-in error toasts (no host static assets required).
30
+
31
+ ### Changed
32
+
33
+ - **`baseUrl` is optional** on `createXmaxClient` (defaults to `XMAX_OPEN_API_PRODUCTION_BASE_URL`). Required on `XmaxOpenClient`.
34
+ - Default React model aligned to `x2.0` (matches provider implementation and platform demos).
35
+ - README documents all three API surfaces: imperative, React, and experimental Realtime.
36
+
37
+ ### Deprecated
38
+
39
+ - Importing `createXmaxClient`, `RealtimeSession`, and drag utilities from the main entry. Use `@xmaxai/sdk/experimental` instead.
40
+ - `DEFAULT_BASE_URL` alias — use `XMAX_OPEN_API_PRODUCTION_BASE_URL`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 XMAX
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,201 @@
1
+ # @xmaxai/sdk
2
+
3
+ 面向 Xmax Open Platform 的浏览器端 SDK。公开 API 以 **headless Realtime 客户端**(`createXmaxClient`)为主:负责 session 生命周期、火山 RTC 进房推流、远端渲染绑定,以及 start/stop 信令。
4
+
5
+ 本包以浏览器环境为主要运行场景(依赖 `fetch` / `AbortController` / `File` / DOM / `HTMLCanvasElement.captureStream`)。
6
+
7
+ > SDK **不包含 UI**(参考图选择器、prompt 输入框、视频布局等由宿主应用自行实现)。
8
+
9
+ ## 安装
10
+
11
+ 本 SDK 按接入区域发布为两个包,**API 完全一致**,仅内置的默认接口地址不同:
12
+
13
+ | 包名 | 区域 | 默认接口 |
14
+ |------|------|----------|
15
+ | `@xmaxai/sdk` | 国内 | `https://cloud.xmax.22duck.cn/open/api/v1` |
16
+ | `@xmaxai/sdk-global` | 海外 | `https://api.xmax.cloud/open/api/v1` |
17
+
18
+ ```bash
19
+ # 国内
20
+ npm install @xmaxai/sdk
21
+ # 海外
22
+ npm install @xmaxai/sdk-global
23
+ ```
24
+
25
+ > 两个包由同一套源码构建(构建时通过 `XMAX_SDK_REGION` 注入默认地址),无需维护两份代码。任意包都可通过 `baseUrl` 显式覆盖默认地址。
26
+
27
+ ## 包入口
28
+
29
+ | 入口 | 说明 |
30
+ |------|------|
31
+ | `@xmaxai/sdk/experimental` | **推荐** — `createXmaxClient`、`models` |
32
+ | `@xmaxai/sdk` | HTTP Client、`RtcManager`、房间事件等底层 API |
33
+
34
+ ## 快速开始
35
+
36
+ 与平台 Playground 相同的调用方式:获取摄像头 → `createXmaxClient` → `connect`,通过 `initialState` 传入 **prompt** 和 **参考图 URL**。
37
+
38
+ `baseUrl` 已内置生产环境默认值,一般无需传入;仅在 staging / 私有部署时覆盖。
39
+
40
+ ```ts
41
+ import { createXmaxClient, models } from "@xmaxai/sdk/experimental";
42
+
43
+ const model = models.realtime("x2.0");
44
+
45
+ const stream = await navigator.mediaDevices.getUserMedia({
46
+ video: {
47
+ frameRate: model.fps,
48
+ width: model.width,
49
+ height: model.height,
50
+ },
51
+ });
52
+
53
+ const client = createXmaxClient({
54
+ apiKey: "<YOUR_XMAX_API_KEY>",
55
+ });
56
+
57
+ const localElement = document.querySelector("#video-input") as HTMLElement;
58
+ const remoteElement = document.querySelector("#video-output") as HTMLElement;
59
+
60
+ const realtimeClient = await client.realtime.connect(stream, {
61
+ model,
62
+ localElement,
63
+ remoteElement,
64
+ mirror: "auto",
65
+ initialState: {
66
+ prompt: { text: "<YOUR_PROMPT>" },
67
+ image: "<YOUR_REF_IMAGE_URL>",
68
+ autoStart: true,
69
+ },
70
+ });
71
+
72
+ await realtimeClient.setPrompt("<YOUR_PROMPT>");
73
+
74
+ await realtimeClient.setRefImage("<YOUR_REF_IMAGE_URL>");
75
+ await realtimeClient.restart();
76
+
77
+ await realtimeClient.stop();
78
+ await realtimeClient.disconnect();
79
+ ```
80
+
81
+ ### 流程说明
82
+
83
+ - `createXmaxClient({ apiKey })` 即可,`baseUrl` 默认指向官方生产 Open API。
84
+ - `connect()` 自动完成:createSession → heartbeat → join RTC → 推流 →(`autoStart: true` 时)发送 start。
85
+ - `initialState.prompt` 传 `{ text: string }`;`initialState.image` 传参考图 URL。
86
+ - 宿主自行提供 `#video-input` / `#video-output` 容器元素。
87
+ - 未传 `onError` 时,API/RTC 错误会弹出内置 toast;传入 `onError` 则完全覆盖。
88
+
89
+ ### 自定义 baseUrl(可选)
90
+
91
+ ```ts
92
+ import {
93
+ createXmaxClient,
94
+ XMAX_OPEN_API_PRODUCTION_BASE_URL,
95
+ } from "@xmaxai/sdk/experimental";
96
+
97
+ const client = createXmaxClient({
98
+ apiKey: "<YOUR_XMAX_API_KEY>",
99
+ baseUrl: XMAX_OPEN_API_PRODUCTION_BASE_URL, // 或自定义前缀,如 https://your-host/open/api/v1
100
+ });
101
+ ```
102
+
103
+ ---
104
+
105
+ ## API 参考
106
+
107
+ ### createXmaxClient
108
+
109
+ ```ts
110
+ createXmaxClient({
111
+ apiKey: string, // 必填
112
+ baseUrl?: string, // 可选,默认内置生产环境地址
113
+ authToken?: string,
114
+ heartbeatIntervalMs?: number,
115
+ onError?: (message, error?) => void,
116
+ onLog?: (entry) => void,
117
+ })
118
+ ```
119
+
120
+ ### client.realtime.connect
121
+
122
+ ```ts
123
+ client.realtime.connect(stream, {
124
+ model: RealtimeModel, // models.realtime("x2.0")
125
+ localElement?: HTMLElement,
126
+ remoteElement?: HTMLElement,
127
+ mirror?: "auto" | boolean,
128
+ initialState?: {
129
+ prompt?: string | { text: string },
130
+ image?: string,
131
+ autoStart?: boolean,
132
+ },
133
+ size?: [number, number],
134
+ mobile?: boolean,
135
+ })
136
+ ```
137
+
138
+ When `remoteElement` is provided, drag is enabled by default after generation starts. Pass `drag: false` to disable.
139
+
140
+ ### RealtimeSession 主要方法
141
+
142
+ | 方法 | 说明 |
143
+ |------|------|
144
+ | `setPrompt(prompt)` | 更新 prompt 并重新生成 |
145
+ | `setRefImage(url \| File)` | 设置参考图 |
146
+ | `restart(options?)` | 用当前 prompt / 参考图重新生成 |
147
+ | `sendTracks(tracks)` | 发送拖拽轨迹(通常由内置 drag 自动调用) |
148
+ | `stop()` | 停止当前生成 |
149
+ | `disconnect()` | 断开 session 并离开 RTC |
150
+
151
+ ---
152
+
153
+ ## 安全建议
154
+
155
+ - `apiKey` / `authToken` 属于敏感信息,避免写入前端日志。
156
+ - 生产环境建议通过后端签发短期令牌或 API 代理,避免在浏览器暴露高权限密钥。
157
+ - COS STS 临时密钥会在上传期间存在于浏览器内存,请确保 STS 权限最小化。
158
+
159
+ ## 依赖说明
160
+
161
+ | 依赖 | 用途 |
162
+ |------|------|
163
+ | `@volcengine/rtc` | 火山引擎 Web RTC |
164
+ | `cos-js-sdk-v5` | 腾讯云 COS 直传 |
165
+
166
+ ## 开发与构建
167
+
168
+ ```bash
169
+ pnpm -C packages/open-sdk install
170
+ pnpm -C packages/open-sdk test
171
+ pnpm -C packages/open-sdk build # 默认按国内(cn)地址构建
172
+ pnpm -C packages/open-sdk typecheck
173
+ ```
174
+
175
+ ### 双区域构建 / 发布
176
+
177
+ 一套源码 → 两个 npm 包。区域通过环境变量 `XMAX_SDK_REGION`(`cn` | `global`)在构建时注入。
178
+
179
+ ```bash
180
+ # 仅构建
181
+ pnpm -C packages/open-sdk run build:cn # → 国内默认地址
182
+ pnpm -C packages/open-sdk run build:global # → 海外默认地址
183
+
184
+ # 发布(会自动切换包名 + 以对应区域重新构建测试)
185
+ pnpm -C packages/open-sdk run publish:cn # 发布 @xmaxai/sdk
186
+ pnpm -C packages/open-sdk run publish:global # 发布 @xmaxai/sdk-global
187
+ pnpm -C packages/open-sdk run publish:all # 两个都发
188
+
189
+ # 透传 npm 参数,例如预演 / 打 tag
190
+ node packages/open-sdk/scripts/publish-sdk.mjs global --dry-run
191
+ ```
192
+
193
+ > `publish-sdk.mjs` 会临时改写 `package.json` 的 `name` 后调用 `npm publish`,发布结束(含失败)都会还原为默认名。`package.json` 中 `publishConfig.provenance` 需在带 OIDC 的 CI 环境才生效,本地发布如报 provenance 相关错误可临时关闭。
194
+
195
+ ## 变更记录
196
+
197
+ 见 [CHANGELOG.md](./CHANGELOG.md)。
198
+
199
+ ## License
200
+
201
+ [MIT](./LICENSE)