@eddyskywalker/dsh-chatgpt-subscription 0.30.0 → 0.31.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/CHANGELOG.md +27 -0
- package/lib/client.js +2905 -194
- package/lib/client.js.map +1 -1
- package/lib/index.js +3829 -553
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/minimax-code/MinimaxCodeSection.d.ts.map +1 -1
- package/lib/types/client/minimax-code/MinimaxVideoDocumentBody.d.ts +69 -0
- package/lib/types/client/minimax-code/MinimaxVideoDocumentBody.d.ts.map +1 -0
- package/lib/types/client/minimax-code/MinimaxVideoToolView.d.ts +83 -0
- package/lib/types/client/minimax-code/MinimaxVideoToolView.d.ts.map +1 -0
- package/lib/types/client/minimax-code/VideoFormDialog.d.ts +90 -0
- package/lib/types/client/minimax-code/VideoFormDialog.d.ts.map +1 -0
- package/lib/types/client/minimax-code/VideoSettingsSections.d.ts +73 -0
- package/lib/types/client/minimax-code/VideoSettingsSections.d.ts.map +1 -0
- package/lib/types/client/minimax-code/commands-contract.d.ts +35 -0
- package/lib/types/client/minimax-code/commands-contract.d.ts.map +1 -0
- package/lib/types/client/minimax-code/document-preview.d.ts +45 -0
- package/lib/types/client/minimax-code/document-preview.d.ts.map +1 -0
- package/lib/types/client/minimax-code/locales.d.ts +206 -2
- package/lib/types/client/minimax-code/locales.d.ts.map +1 -1
- package/lib/types/client/minimax-code/styles.d.ts.map +1 -1
- package/lib/types/client/minimax-code/video-command-host.d.ts +61 -0
- package/lib/types/client/minimax-code/video-command-host.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-command.d.ts +126 -0
- package/lib/types/client/minimax-code/video-command.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-contract.d.ts +172 -0
- package/lib/types/client/minimax-code/video-contract.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-defaults-store.d.ts +61 -0
- package/lib/types/client/minimax-code/video-defaults-store.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-form-rules.d.ts +288 -0
- package/lib/types/client/minimax-code/video-form-rules.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-media.d.ts +61 -0
- package/lib/types/client/minimax-code/video-media.d.ts.map +1 -0
- package/lib/types/client/minimax-code/video-slots.d.ts +87 -0
- package/lib/types/client/minimax-code/video-slots.d.ts.map +1 -0
- package/lib/types/host/minimax-code/client.d.ts.map +1 -1
- package/lib/types/host/minimax-code/iso-bmff-duration.d.ts +84 -0
- package/lib/types/host/minimax-code/iso-bmff-duration.d.ts.map +1 -0
- package/lib/types/host/minimax-code/matrix-client.d.ts +168 -0
- package/lib/types/host/minimax-code/matrix-client.d.ts.map +1 -0
- package/lib/types/host/minimax-code/media-store.d.ts +153 -0
- package/lib/types/host/minimax-code/media-store.d.ts.map +1 -0
- package/lib/types/host/minimax-code/routes.d.ts.map +1 -1
- package/lib/types/host/minimax-code/video-history.d.ts +240 -0
- package/lib/types/host/minimax-code/video-history.d.ts.map +1 -0
- package/lib/types/host/minimax-code/video-submit-rules.d.ts +40 -0
- package/lib/types/host/minimax-code/video-submit-rules.d.ts.map +1 -0
- package/lib/types/host/minimax-code/video-tool.d.ts +757 -0
- package/lib/types/host/minimax-code/video-tool.d.ts.map +1 -0
- package/lib/types/host/progress-updates/index.d.ts +6 -0
- package/lib/types/host/progress-updates/index.d.ts.map +1 -1
- package/lib/types/host/progress-updates/projection.d.ts +214 -0
- package/lib/types/host/progress-updates/projection.d.ts.map +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +13 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.31.0 - 2026-10-20
|
|
6
|
+
- **[minimax-code] 视频生成现在能带素材、选比例:首/尾帧、参考图/视频/音频、任意比例与 AIGC 水印**
|
|
7
|
+
- **为什么能带素材**:上游那套媒体工具走的**不是**平台 API Key,而是**订阅网关** —— 和我们 Messages 线路同一个 origin、同一把订阅令牌、四个请求头。所以生成视频不需要额外配 Key。
|
|
8
|
+
- **最容易错的地方**:**参数名 ≠ 发给服务端的字段名**。`inputImagePath` 上线是 `input_image`、`referenceImagePaths` 是 `reference_images` —— 照参数名直接发,全部会失败。映射在媒体准备层里写明。
|
|
9
|
+
- **比例是联动的,不是照抄**:给了首/尾帧 → 服务端**强制** `adaptive`(用户给的值会被改写);有参考媒体 → 缺省 `adaptive`;纯文本 → 缺省 `16:9`,且**`adaptive` 会被本地拒绝**(纯文本没有可自适应的对象,发出去只是白花一次计费的请求)。
|
|
10
|
+
- **两处刻意偏离上游**:① H3 家族缺省分辨率是 `2K`——但**只在 `2K` 属于该模型合法集时才下发**(H3-Max 实测只收 `480P`/`768P`,照抄会让每个省略分辨率的 H3-Max 调用都变成「必然被拒的计费提交」);② 参考视频的时长**本地文件自己从容器读**(`mvhd` box),**不引入 ffmpeg 依赖**、也不要求用户填——只有公网 URL 才需要,因为服务端不下载它、算不出长度。
|
|
11
|
+
- **重复提交会被拒**:生成是**计费的**,而模型可能在一轮里调两次同一个工具。同一会话同一轮里的**同一份 body** 只发一次(请求**发出前**就记下,所以失败的那次也不会被重发成第二次扣费)。**但没有会话标识时这个防护不启用**——键会退化成「只有 body」,两个不同的生成会被误判成重复,**误杀比漏杀更糟**。
|
|
12
|
+
- **文件上传**:本地素材走我们**已经实测跑通**的那条通道(预签名 PUT → `cdn_url`),并带上上游实测的 `category`。第三方公网 URL **本地就拒绝**——实测两个能取到正确 MP4 字节的独立主机,服务端一律拒绝(原话 `video_info.url could not be used as a media source`)。
|
|
13
|
+
- **验证**:全部用 mock 单测(本轮**没有跑真实生成**)。上游契约逐行比对自 `MiniMax-AI/minimax-code` 的 `tool-defs.ts` / `submit-video-generation.ts` / `file-transfer.ts`。
|
|
14
|
+
- **[minimax-code] 视频工具终于有了用户能碰到的入口:`/video` 命令 + 设置页的默认参数与生成历史**
|
|
15
|
+
- **之前只能用自然语言触发**,模型自己决定调不调;而参数并不显然(比例会被改写、每个模型的时长与分辨率合法集不同)。
|
|
16
|
+
- **`/video`**:斜杠菜单里列出**实测合法**的预设档,再加一行「自定义…」打开完整表单(提示词/模型/比例/时长/分辨率/首帧/末帧/参考图/参考视频与时长/参考音频/水印)。**只填进输入框、不直接发送** —— 用户得先看见联动把它的参数改成了什么。
|
|
17
|
+
- **只在 minimax-code 线路上出现**:斜杠菜单的可见性判据读会话的 `modelSelection` 投影(宿主自己就是这么读当前模型的),别的线路上**菜单里根本没有这一行**;工具本身还有一道 provider 门禁。
|
|
18
|
+
- **参数联动在表单层就处理完**:给了首帧 → 比例选择器**消失**,只显示强制值和理由;纯文本 → `adaptive` 根本不在选项里;换了模型 → 时长与分辨率收窄到该模型的实测合法集。
|
|
19
|
+
- **设置页**新增两格:**默认参数**(存浏览器,纯 UI 起手值)与**生成历史**(存宿主,因为写它的是工具执行;沿用仓库惯例走平台加密后端,**只存路径与数字、不存视频内容**)。
|
|
20
|
+
- **两处「源码里有、产品里没有」的修复**:`remote.workspaceFiles` 是独立服务名不是 `remote` 的属性(照属性读会被 Cordis 的属性守卫抛错 → 每次读视频都失败);`documentPreviews` 由宿主 `reflect.provide` 且**晚于本插件激活**(照 `apply` 瞬间抓一次 → 侧边栏预览视频从来不会生效)。
|
|
21
|
+
- **[进展更新] 面板记录改为从会话日志投影折叠:重开对话、刷新页面、宿主重启之后历史还在**
|
|
22
|
+
- **现象**:右侧栏「进展更新」面板的记录**完全没有持久化** —— 进展只活在一个进程内的环形缓冲里([`store.ts`](../src/host/progress-updates/store.ts) 的 `MAX_UPDATES = 50`),[`index.ts`](../src/host/progress-updates/index.ts) 按会话分桶存进一个 `Map`,卸载时 `stores.clear()`。重开对话、刷新页面、宿主重启,面板就空了。
|
|
23
|
+
- **数据其实一直在**:`progress_update` 的每次调用都是一条会话事件,早已被 DSH 持久化。注意它有**两种形状**:原生调用落 `tool/call`(`arguments` 是模型吐出的 JSON 原文),而 PTC 模式(模型只看得见 `run_code`,把 `progress_update` 当子调用发出去)落 `tool/ptc-dispatch`(`arguments` 是**已解析的对象**,且那一条 `tool/call` 的 `name` 是 `run_code`)。丢的只是"从日志里把它读回来"这一步。
|
|
24
|
+
- **改法(新增 [`projection.ts`](../src/host/progress-updates/projection.ts))**:登记一个会话投影单元,把日志里的 `progress_update` 折叠成一条条进展,**日志成为唯一真源**。`apply` 认**两种**形状(`tool/call` + `tool/ptc-dispatch`,都要求 `name === 'progress_update'`),各按自己的参数形状取 `{ title, message }`,`at` 取事件时刻;其余任何情况(两种都不是、不是这个工具、参数不是合法 JSON / 不是对象、`message` 不是字符串、缺 `seq`/`time`)**一律返回同一个 state 引用且绝不抛错** —— 这是日志重放路径,抛一次就毁掉整条折叠链。
|
|
25
|
+
- **折叠语义变了就 +1**:`stateVersion` 因此是 **2**。缓存按 `(sessionId, key, ver, seq, val)` 落盘,而上一版按"只认 `tool/call`"的语义已经写进了一份 `{ver:1, seq:…, val:{updates:[]}}` 的空数组;版本不升的话它会被当成有效 checkpoint 续用,面板会一直空着。
|
|
26
|
+
- **id 用 seq,还带上会话 id**:`pu-<seq>-<sessionId>`。时间戳会随重放时的时钟漂移,seq 不会,同一段日志重放两次得到逐字相同的 id(客户端 `sameList` 按 id 比较,面板也拿 id 当 React key)。后缀解决另一半问题 —— 读值要合并整棵委派树,而 seq 在每个会话里都从 0 开始,只带 seq 会让根会话与子会话的第一条进展撞 id。
|
|
27
|
+
- **改法([`index.ts`](../src/host/progress-updates/index.ts) 的 `updatesOf`)**:**先投影、后内存**。投影路径用 `sessions.get(id)` 拿到会话对象,再用 `sessionProjections.stateOf(session, 'progressUpdates')`(没有就退 `snapshot` 的 wire 切面)读值;**整棵委派树共用一份进展**的语义照旧保留 —— 沿 `header.parentSession` 把 `sessions.list()` 里活跃的子孙找回来(深度上限 16,与 `nudge.ts` 的 lineage 走法同一个数),按 `at` 升序合并后仍按 `MAX_UPDATES` 截断。会话/投影服务缺席、会话还没 attach、投影登记被拒 —— 都**安静回退**到内存 `Map`,行为与今天完全一致。
|
|
28
|
+
- **内存 `Map` 没有删**:它同时承担催促计数(`roundsSinceUpdate`/`nudges`)与降级路径;HTTP 路由、催促逻辑、工具注册、提示词分节一个字没动,客户端取数通道也仍是原来的 2 秒轮询。
|
|
29
|
+
- **兼容性**:`@deepseek-ai/dsh-session-projection` **不在** peerDependencies 里,运行时**不 import** 它 —— 投影定义按结构化类型自己声明(同 `nudge.ts` 的 `NudgeSessionLookup` / `TurnBoundaryLookup`),服务只经 `ctx.get('sessionProjections')` 读取,缺席就降级。`zod` 因此进 `dependencies`(`4.4.3`,与 DSH 侧一致):它在 `lib/index.js` 里保持为一条裸的 `import { z } from "zod"`,由包的 `dependencies` 在安装时解析(tsdown 默认把 `dependencies` 里的包外部化,不会被内联进 bundle)。`package-lock.json` 同步声明了这条依赖(CI 跑的是 `npm ci`)—— 只动了这两行,没有整份重生成:那份锁文件本来就停在 0.26.1 且带着两条早已不在 `package.json` 里的 devDependencies,顺手重写会把它一并对齐,超出这次改动的范围。
|
|
30
|
+
- **验证**:`npm run typecheck` 0 错误;`npm test` **4079 passed / 7 skipped**;`npm run build` 通过。除单测外还拿**真实会话日志**重放过一遍:解压 `session.v4.jsonl.zstd`(509 个 zstd 帧)后确认 `tool/call` 全是 `run_code`、`progress_update` 全在 `tool/ptc-dispatch` 里,按新 `apply` 重放折出 10 条,与对话流里看到的进展行一一对上。新增两份测试 30 例:[`test/progress-updates-projection.test.ts`](../test/progress-updates-projection.test.ts)(折叠字段、无关事件返回同一引用、坏 JSON / 缺字段不抛错、`MAX_UPDATES` 截断、重放 id 稳定、schema 与合并)与 [`test/progress-updates-projection-source.test.ts`](../test/progress-updates-projection-source.test.ts)(投影优先、委派树合并、无投影服务时照常挂载并走内存、会话未 attach 时回退、登记被拒时降级)。
|
|
31
|
+
|
|
5
32
|
## 0.30.0 - 2026-10-20
|
|
6
33
|
- **[minimax-code] 请求的模型与实际回答的模型不一致时,这一轮立刻失败——而不是替用户按最贵档付费**
|
|
7
34
|
- **现象**:这条路由**不拒绝**它路由不了的模型 id。2026-10-20 实测:乱写串与空串都回 HTTP 200,实际由 `MiniMax-M3` 代答;同一个乱写 id 带 `reasoningEffort:'none'` 重发,回答的 M3 真的少了 thinking 块——是**真替换**,不是把名字写回去的壳。
|