dsh-openwrite 0.2.26 → 0.2.27
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 +8 -4
- package/docs/CLOSED_ISSUE_FOLLOWUPS.md +33 -0
- package/docs/ISSUES_105_113.md +4 -1
- package/docs/OPENCODE_GO.md +24 -18
- package/docs/RELEASE_ACCEPTANCE.md +18 -0
- package/package.json +1 -1
- package/packages/openwrite-bridge/lib/contracts-generated.js +9 -0
- package/packages/openwrite-bridge/lib/managed-runtime.d.ts +1 -0
- package/packages/openwrite-bridge/lib/managed-runtime.js +19 -1
- package/packages/studio-panel/lib/client.js +550 -494
- package/packages/studio-panel/lib/client.js.map +1 -1
- package/packages/studio-panel/lib/types/client/dto.d.ts +2 -0
- package/packages/studio-panel/lib/types/client/locales.d.ts +1 -1
- package/preset-definition.mjs +1 -1
- package/release/{openwrite-5.8.14-py3-none-any.whl → openwrite-5.8.16-py3-none-any.whl} +0 -0
- package/release/runtime-manifest.json +4 -4
- package/release/source.json +3 -3
package/README.md
CHANGED
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
这是 [OpenWrite](https://github.com/LiPu-jpg/Openwrite/tree/native-core) 的 dsh 插件版本。
|
|
28
28
|
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供 Agent 与交互界面,OpenWrite Core 提供小说领域能力;人物、设定、大纲、正文和评审保存在本地作品目录。
|
|
29
29
|
|
|
30
|
+
## 0.2.27
|
|
31
|
+
|
|
32
|
+
工作台新增 OpenCode Go Console 认证,捆绑 Core 5.8.16,自动读取本机官方 CLI 的有效凭据和工作区信息;不必手工复制会过期的 Console 令牌。评审首次调用遵守模型输出预算,补充旧会话永久别名和跨平台回归。真实工作台连接测试、流式写作及 Go 安全评审已通过。见 [OpenCode Go 接入](docs/OPENCODE_GO.md) 和 [旧报告复核与待办](docs/CLOSED_ISSUE_FOLLOWUPS.md)。正式发行状态、各平台验收和安装包校验值见 [发布验收](docs/RELEASE_ACCEPTANCE.md)。
|
|
33
|
+
|
|
30
34
|
## 0.2.26 更新
|
|
31
35
|
|
|
32
36
|
本版捆绑 Core **5.8.14**,包含旧会话恢复、精确 DSH `0.2.1-rc.3` 兼容、
|
|
@@ -36,12 +40,12 @@ Android/ARM 外部 Studio 诊断,以及连载写作可靠性、完整上下文
|
|
|
36
40
|
|
|
37
41
|
## 快速安装
|
|
38
42
|
|
|
39
|
-
**0.2.
|
|
43
|
+
**0.2.27 标准插件包**兼容精确 dsh 版本 **0.1.2-rc.1 / 0.1.5-alpha.1 / 0.2.0-rc.2 / 0.2.1-rc.2 / 0.2.1-rc.3**。五个版本均已完成 Web 工作台渲染与 DoG 数据读取验证,Windows Electron 桌面端启动/恢复链路尚未实机复测。可下载版本、各平台验收结果和 SHA-256 以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/latest) 附件为准;验收方法见 [发布验收](docs/RELEASE_ACCEPTANCE.md)。商城所需的精确预览版兼容性、验证范围和安装限制见 [DSH STORE 接入](docs/DSH_STORE.md)。
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
正式发行状态以 [npm 版本列表](https://www.npmjs.com/package/dsh-openwrite?activeTab=versions) 和 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/latest) 为准。以下是 0.2.27 精确版本的安装命令;发布时两处使用同一份验收产物:
|
|
42
46
|
|
|
43
47
|
```sh
|
|
44
|
-
dsh plugin --profile web add -w https://github.com/LiPu-jpg/Openwrite/releases/download/v0.2.
|
|
48
|
+
dsh plugin --profile web add -w https://github.com/LiPu-jpg/Openwrite/releases/download/v0.2.27/dsh-openwrite-0.2.27.tgz
|
|
45
49
|
dsh web
|
|
46
50
|
```
|
|
47
51
|
|
|
@@ -71,7 +75,7 @@ dsh web
|
|
|
71
75
|
|
|
72
76
|
### dsh 0.2 桌面端升级
|
|
73
77
|
|
|
74
|
-
`0.2.
|
|
78
|
+
`0.2.27`(Core 5.8.16)包含 Go 工作台认证、评审输出预算及后台重试补漏,并保留 #105–#113 与 #103/#104 的既有修复;原始场景仍待验证的条目见 [#123](https://github.com/LiPu-jpg/Openwrite/issues/123)。升级前完全退出 dsh/桌面客户端;安装后重新启动并刷新浏览器。原有作品、凭据和会话继续保留,历史版本预设用于恢复旧会话。受限平台使用外部 Studio,OpenCode Go 的服务商使用范围和配置要求见上述文档。
|
|
75
79
|
|
|
76
80
|
`0.2.25`(Core 5.8.12)已在 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.25) 与 [npm](https://www.npmjs.com/package/dsh-openwrite/v/0.2.25) 发布,新增连载体检、分段续写、共享术语/范本、章组审计和漂移裁决,并修复验收与任务可观测性。范围、离线升级工具及宿主侧限制见 [#98–#100 实现说明](docs/ISSUES_98_100.md),完整验收见 [发布验收](docs/RELEASE_ACCEPTANCE.md#025)。
|
|
77
81
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 已关闭报告复核与后续验证
|
|
2
|
+
|
|
3
|
+
2026-10-26 复核重点为 #105–#114,以及 #65、#76、#88–#100 的相关修复。
|
|
4
|
+
“源码合并”“回归通过”“原始环境通过”“正式发布”分别记录,不以 issue 关闭代替四项证据。
|
|
5
|
+
|
|
6
|
+
## 本次补漏(0.2.27 / Core 5.8.16)
|
|
7
|
+
|
|
8
|
+
- #69:旧实现首次评审仍把 24000 输出上限压到 4096,只有成功返回 reasoning usage 后才抬高后续预算。安全门和单项评审可能直接失败。现在从首次调用使用配置上限,同时遵守上下文限制;达到上限后按检查项拆分,不重复相同上限的请求。显式较小预算的重试会重新预留输入空间。完整 Core 1478 passed / 32 skipped。
|
|
9
|
+
- #109 B-13:新增真实 HTTP 预览、应用、撤销及精确字节校验,覆盖 LF / CRLF、行中 `> `、结束标题保留和不换行空格造成的真实不匹配;工具层覆盖 edits 数组与 JSON 字符串的逐字透传。以上均通过,原报告失败仍待脱敏最小复现,不能声称原问题已被证实修复。
|
|
10
|
+
- #105:永久兼容列表补充 0.2.26/27,发布测试要求每个新版本身份进入永久列表,避免迁移旧会话而没有旧目录后失效。预设生命周期、停机升级和运行时测试加入原生安装矩阵,包括 Windows Node。该自动化不替代 Electron 历史会话人工验收。
|
|
11
|
+
- 运行时:跨平台回归发现自动恢复耗尽后的手动重试可能复用尚未清理的旧启动 promise,返回失效连接。现在等待旧启动结束后重新准备;并发重试共享新连接,后来发生的取消优先。五项可控时序回归在旧实现上失败,修复后通过。
|
|
12
|
+
- #114:本版包含 Core 5.8.15 的工作台 Console 认证、自动工作区头与请求前凭据更新。此前真实工作台连接/流式写作通过;此次真实 Go 安全评审首次请求 max_tokens=24000,流式调用 4.424 秒通过,没有写入作者正文或作品配置。
|
|
13
|
+
|
|
14
|
+
## 保留的未完成工作
|
|
15
|
+
|
|
16
|
+
统一跟踪:[issue #123](https://github.com/LiPu-jpg/Openwrite/issues/123)。
|
|
17
|
+
|
|
18
|
+
| 来源 | 已有证据 | 尚待完成 |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| #98.1 | 独立停机旁路升级工具已发布;宿主候选补丁通过 Windows/Linux 专项 CI。 | [fork PR #1](https://github.com/LiPu-jpg/deepseek-harness/pull/1) 尚未成为正式宿主;[上游讨论](https://github.com/deepseek-ai/deepseek-harness/discussions/10745) 继续跟踪。原生安装命令不受插件工具保护。 |
|
|
21
|
+
| #105 | 稳定 ID、永久别名、目录保留、原日志与自定义预设保护回归通过。 | 报告者 Windows Electron 历史会话完整恢复的实机验收。 |
|
|
22
|
+
| #109 B-13 | 字面匹配及两层传输回归通过。 | 原始失败文件片段、完整参数和行尾/空格信息的最小复现。 |
|
|
23
|
+
| #111 | 不支持平台返回明确错误并提供外部 Studio 配置;原报告接受此降级方向。 | Android/Termux 真机与外部 Studio 实测;当前没有 Android 原生运行时。 |
|
|
24
|
+
|
|
25
|
+
新增的 [#121](https://github.com/LiPu-jpg/Openwrite/issues/121)、[#122](https://github.com/LiPu-jpg/Openwrite/issues/122) 属于独立反馈,保持打开,本次发布不将其列为已解决。
|
|
26
|
+
|
|
27
|
+
## 后续关闭条件
|
|
28
|
+
|
|
29
|
+
1. 记录原始失败版本、平台、实际工具入口与最小复现;未复现时明确写待复现。
|
|
30
|
+
2. 检查 tool schema、参数序列化、HTTP、应用服务、核心逻辑和实际模型请求,按问题涉及的完整路径验收。
|
|
31
|
+
3. 为复现增加会在旧实现上失败的行为回归;用量、预算和部分完成状态必须如实报告。
|
|
32
|
+
4. 记录已合并提交及用户可安装的版本;只合并源码时标待发布。
|
|
33
|
+
5. 实机验收或上游依赖没有完成时保留独立跟踪,汇总 issue 的关闭不自动完成这些待办。
|
package/docs/ISSUES_105_113.md
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# 升级恢复与宿主兼容修复(0.2.26)
|
|
2
2
|
|
|
3
3
|
- #105:0.2 宿主的新会话使用稳定 ID `openwrite`。为历史 `openwrite-0-2-1` 至
|
|
4
|
-
`openwrite-0-2-
|
|
4
|
+
`openwrite-0-2-27`、当前版本及现存版本目录注册兼容定义;已有同 ID 自定义定义优先。
|
|
5
5
|
会话日志与缓存不改写。0.1 所需的版本目录在宿主退出后保留,避免下次恢复悬空引用。
|
|
6
6
|
历史兼容项会出现在宿主预设列表中,这是当前 registry 无 alias API 的限制。
|
|
7
|
+
0.2.27 补充 0.2.26/27 的永久别名,并用发布门禁要求新版本身份进入永久列表,
|
|
8
|
+
避免迁移会话但未复制旧预设目录后再次失效。
|
|
7
9
|
- #106 / #107 / #108 / #110 / #112 / #113:根包、bridge、panel、DoG 的精确兼容声明、
|
|
8
10
|
peer 和 lock 元数据同步加入 `0.2.1-rc.3`,保留旧宿主构建基线;发布矩阵加入该版本。
|
|
9
11
|
- #111:不支持的平台返回 `RUNTIME_PLATFORM_UNSUPPORTED`(503),包含平台与下一步;
|
|
@@ -13,3 +15,4 @@
|
|
|
13
15
|
DSH `0.2.1-rc.3` 隔离 Web 浏览器验收通过:版本闸门、客户端激活、预设选择、作品导航、
|
|
14
16
|
工作台三页签、实际渲染、DoG 快照与其他插件共存;模型调用 0。
|
|
15
17
|
未在 Windows Electron 或 Android 真机复测;完整发布状态与制品验收以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.26) 和 [发布验收](RELEASE_ACCEPTANCE.md) 为准。
|
|
18
|
+
未完成的原始场景验收与宿主发布统一保留在 [#123](https://github.com/LiPu-jpg/Openwrite/issues/123)。
|
package/docs/OPENCODE_GO.md
CHANGED
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
# OpenCode Go:DeepSeek V4.1 Flash
|
|
2
2
|
|
|
3
|
-
#114
|
|
4
|
-
按 [OpenCode Go 官方文档](https://opencode.ai/v2/docs/console/go/)(2026-10-26 核对):
|
|
3
|
+
#114 的底层请求和工作台认证接入分两步完成。0.2.26(Core 5.8.14)仅补充客户端/会话请求头;工作台的 Console 认证、工作区与续期接入从 Core 5.8.15 开始,正式插件版本以 npm/Release 为准。
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
## 工作台:使用已有 Console 登录
|
|
6
|
+
|
|
7
|
+
1. 在 **Studio 后端所在电脑**安装官方 OpenCode CLI 并登录 OpenCode Console。已验证 CLI 1.18.15 的 `opencode console login`;官方 V2 对应 `opencode auth login opencode`,以当前 CLI 提示为准。浏览器授权由用户按页面范围确认。
|
|
8
|
+
2. 打开「任务 → 模型」,在认证方式选择 **本机 OpenCode Console(Go)**。界面填入官方 Go Chat 地址与 `deepseek-v4.1-flash`,无需复制 API Key。
|
|
9
|
+
3. 工作区 ID 留空会跟随 CLI 当前工作区;可填写 ID 固定到指定工作区。若 CLI 切换到其他工作区,固定档案会拒绝请求,而非悄悄换账户/工作区。
|
|
10
|
+
4. 保存并运行连接测试,成功后再把档案选为写作/评审/研究等任务路由。
|
|
11
|
+
|
|
12
|
+
远程/外部 Studio 使用的是远程后端的 CLI 登录,不是浏览器所在电脑的登录。CLI 不存在、未登录、配置读取失败或工作区不匹配时,工作台提供对应登录/工作区提示。
|
|
13
|
+
|
|
14
|
+
每次模型请求通过 `opencode debug config --pure` 读取 Go 凭据与 `x-opencode-org-id`,官方 CLI 负责令牌续期;OpenWrite 不把 Console 令牌复制到模型档案、浏览器 DTO 或日志。普通、流式、连接测试及图检索调用均携带真实 `OpenWrite/<版本>` 和客户端内稳定的 `x-opencode-session`。Console 认证只允许官方 Go HTTPS Chat 接口,不能通过编辑 Base URL 把令牌发送给其他站点。
|
|
15
|
+
|
|
16
|
+
## 手工 API Key
|
|
17
|
+
|
|
18
|
+
| 字段 | 值 |
|
|
7
19
|
| --- | --- |
|
|
8
20
|
| Provider / 协议适配器 | `openai` |
|
|
9
21
|
| API format | `chat` |
|
|
10
22
|
| Base URL | `https://opencode.ai/inference/go/openai/v1` |
|
|
11
23
|
| Model ID | `deepseek-v4.1-flash` |
|
|
12
|
-
|
|
|
24
|
+
| 认证方式 | API Key |
|
|
25
|
+
| Go 工作区 ID | 账户级凭据需要填写对应工作区 ID |
|
|
26
|
+
|
|
27
|
+
不要把 OpenCode 的 `opencode-go/` 模型选择前缀放入原始 API Model ID。完整 `/chat/completions` 地址会被 Core 规范化为 API 根路径;旧 `/zen/go/v1` 地址继续兼容。
|
|
13
28
|
|
|
14
|
-
|
|
15
|
-
完整 `/chat/completions` 地址也会被 Core 规范化为 API 根路径;旧 `/zen/go/v1`
|
|
16
|
-
地址仅作为原有配置保留,不作为当前官方地址推荐。
|
|
29
|
+
`401 api_key_expired` 表示旧 Key 过期,普通网页登录不能续期该 Key。对于 Console 登录,请使用上述工作台认证方式;`403 Workspace selection is required` 表示账户级凭据缺少 `x-opencode-org-id`,仅填写 URL/模型/Key 不够。
|
|
17
30
|
|
|
18
|
-
|
|
19
|
-
`x-opencode-session`,符合官方客户端标识说明;不会冒充其他应用,也不发送作品路径。
|
|
20
|
-
这覆盖 OpenWrite Core 的模型调用,DSH 对话模型另由宿主自己的适配器处理。
|
|
31
|
+
## 实测与边界
|
|
21
32
|
|
|
22
|
-
|
|
23
|
-
Go 面向编码客户端,服务端的用途、地区、权限或额度策略仍可能拒绝请求;若订阅不适用写作,
|
|
24
|
-
应选用服务商允许的 API 产品。这里不会尝试绕过服务端限制。
|
|
33
|
+
2026-10-26 使用用户授权的 Go 订阅验证:0.2.26 底层手工补齐 Console 工作区请求头后,普通与流式小说生成均 HTTP 200;去掉工作区头时为 HTTP 403。补齐后的工作台 API 保存 Console 档案、测试连接返回 `OK`,经保存档案的实际流式写作也成功;没有手工传入 Key 或请求头,作者正文与作品配置哈希未变,Console 令牌未写入模型凭据文件。
|
|
25
34
|
|
|
26
|
-
|
|
27
|
-
认证、授权、模型不存在及限流分别保留对应错误码。若仍失败,反馈脱敏错误码、HTTP 状态、
|
|
28
|
-
所用 API 路径和模型名即可,不需要提供 API Key。
|
|
35
|
+
自动回归覆盖每次请求读取更新凭据、64 KiB 以上 CLI 配置、超时/缺失/工作区错误的脱敏、错误目标站点拦截、普通 Key 工作区、图检索、连接测试、档案迁移及前端保存/测试。
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
未执行收费请求,也不保证特定账户的授权状态。该修复是否已发布,以 npm/Release 为准。
|
|
37
|
+
[官方 Go 文档](https://opencode.ai/v2/docs/console/go/)要求 DeepSeek 所用工作区 Privacy → Regions 允许 Global。Go 面向编码客户端,本次短文实测通过不保证服务商未来接受所有小说任务;仍需遵守账号用途、地区与额度规则。此接入覆盖 OpenWrite Core 模型调用,DSH 聊天适配器属于宿主,未在此修改。
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
# 发布验收记录
|
|
2
2
|
|
|
3
|
+
## 0.2.27(待发布)
|
|
4
|
+
|
|
5
|
+
捆绑 Core 5.8.16,来源 [PR #124](https://github.com/LiPu-jpg/Openwrite/pull/124),源码提交 `27ec8b3bea0a3f8754f5701a7b21c23a9328d6b7`。wheel 从该提交的干净归档构建,496 个打包源文件与提交逐字节一致,SHA-256 为 `8be4dc5e3feb2d0faf91a1e0763f05ff338c237912edd8c066aaad118ec41ec4`。
|
|
6
|
+
|
|
7
|
+
本地 Core 全量 1478 passed / 32 skipped;HTTP 行中锚点的 LF/CRLF 预览、应用、撤销与不匹配保护通过。预设生命周期、停机升级与 managed runtime 组合 32 passed(含五项手动重试/取消回归),并加入六组原生安装矩阵。真实 OpenCode Go 流式安全评审 1 次成功,首次 max_tokens=24000、耗时 4.424 秒;此前工作台 Console 档案保存、连接测试及流式写作也成功。CI 本身不调用模型,真实模型记录与其独立,不能把 CI 的 modelCalls:0 解释成真实模型验收。
|
|
8
|
+
|
|
9
|
+
发布和各平台安装报告将在完整 CI 完成并下载核对后补充。[未完成验收与上游依赖](CLOSED_ISSUE_FOLLOWUPS.md) 继续由 [#123](https://github.com/LiPu-jpg/Openwrite/issues/123) 跟踪。
|
|
10
|
+
|
|
3
11
|
## CI 运行范围
|
|
4
12
|
|
|
5
13
|
仅修改 README.md 或 docs 下的 Markdown 文档时,跳过插件维护与跨平台发布验收。预设、技能、脚本、依赖、资源和工作流变更仍触发检查;混合文档与代码的提交也照常检查。开发分支通过 PR 检查,避免同一提交在分支 push 与 PR 上重复执行;主分支合并后保留验收,两个工作流均可手动触发。发布必须使用完整验收通过的产物,跳过检查不能作为发布通过的证据。
|
|
6
14
|
|
|
7
15
|
新建作品的验收请求最多等待 60 秒(原为 15 秒),保留成功耗时和失败诊断;不重试写请求,超时仍失败。此调整容纳慢速运行器,不代表初始化耗时问题已被修复。
|
|
8
16
|
|
|
17
|
+
## 0.2.26
|
|
18
|
+
|
|
19
|
+
[GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.26) 与 [npm `dsh-openwrite@0.2.26`](https://www.npmjs.com/package/dsh-openwrite/v/0.2.26) 均已发布,npm `latest` 已更新到 0.2.26。使用 [完整发布 CI](https://github.com/LiPu-jpg/Openwrite/actions/runs/40323278858) 的原始 `validated-release` 产物,没有重新打包;[离线契约](https://github.com/LiPu-jpg/Openwrite/actions/runs/40323278881) 也通过,共 16 项检查全部成功。发布 PR [#118](https://github.com/LiPu-jpg/Openwrite/pull/118) 已合并,合并后的 [主分支发布 CI](https://github.com/LiPu-jpg/Openwrite/actions/runs/40324223823) 和 [插件检查](https://github.com/LiPu-jpg/Openwrite/actions/runs/40324223804) 同样全部通过。
|
|
20
|
+
|
|
21
|
+
包 SHA-256:`d8cd9926a9b4d749f320028313046f0b14a55dbab68d7626d18f13d49740eccd`,大小 10,159,927 字节;GitHub 附件服务端 digest、公开地址无认证重新下载的完整包,以及官方 npm registry 无认证重新下载的完整包,均与 CI 包一致;npm 的 SHA-1 与 SHA-512 integrity 也已核对。来源提交为 CI 测试合并提交 `7522b6cb3b7f37ebaf267519c6051389413aa089`,源码 tree `9e2a2d746f44af554af9192458eb9d8318a6049d` 与主分支合并提交 `e8805b2bcc43bec74af0e9ae364137146c7edf96` 一致。Core 5.8.14 wheel SHA-256:`b96637d9cad364d280122bae9dd59e42be811cd43389ddb704ff4dc110f0acc0`。
|
|
22
|
+
|
|
23
|
+
8 份原生安装/源码报告和 5 份精确宿主客户端报告全部通过,覆盖 Linux、macOS arm64/x64、Windows、Node 22.19/24/26、GitHub 源码安装、alpha 兼容,以及 DSH `0.1.2-rc.1` / `0.1.5-alpha.1` / `0.2.0-rc.2` / `0.2.1-rc.2` / `0.2.1-rc.3` 的 Web 工作台、预设、DoG 与其他插件共存。发布包的各平台/alpha 安装及客户端报告均绑定同一 SHA-256;源码安装单独固定来源 Commit。
|
|
24
|
+
|
|
25
|
+
此前 Core 全量 1451 passed / 32 skipped,前端 307 passed;版本升级后的预设生命周期与离线升级回归 8 passed。真实付费模型调用、Android 原生和 Windows Electron 手工升级/恢复未执行,不能计为通过。修复范围与限制见 [升级恢复](ISSUES_105_113.md)、[连载报告](ISSUE_109_REPAIRS.md)、[OpenCode Go](OPENCODE_GO.md)。
|
|
26
|
+
|
|
9
27
|
## 0.2.25
|
|
10
28
|
|
|
11
29
|
[GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.25) 与 [npm `dsh-openwrite@0.2.25`](https://www.npmjs.com/package/dsh-openwrite/v/0.2.25) 均已发布,npm `latest` 已更新到 0.2.25。使用 [PR 完整发布 CI](https://github.com/LiPu-jpg/Openwrite/actions/runs/39893387812) 验收通过的原始产物,没有重新打包。该运行的来源提交为 `1c04d97c9571f09f9a49567c95b7c38c0507ddbc`,源码 tree `3db86dcdb88f69fd6d92f5881fee0db3c2f0bd8c` 与主分支合并提交 `f0785f2c331f2d090450b1e127e5750c64dc4487` 一致。包 SHA-256 为 `ca73ca424844ddee62f37c2725591bf44ff7701f25d1d12693fa270ee0c26049`;官方 registry 无认证下载的完整 10,141,143 字节与 CI 包一致,GitHub Release 的服务端附件 digest 也一致。
|
package/package.json
CHANGED
|
@@ -726,6 +726,12 @@ const SCHEMAS = {
|
|
|
726
726
|
"secret"
|
|
727
727
|
],
|
|
728
728
|
"properties": {
|
|
729
|
+
"auth_source": {
|
|
730
|
+
"enum": [
|
|
731
|
+
"api_key",
|
|
732
|
+
"opencode_console"
|
|
733
|
+
]
|
|
734
|
+
},
|
|
729
735
|
"capabilities": {
|
|
730
736
|
"properties": {
|
|
731
737
|
"chat": {
|
|
@@ -772,6 +778,9 @@ const SCHEMAS = {
|
|
|
772
778
|
]
|
|
773
779
|
},
|
|
774
780
|
"type": "array"
|
|
781
|
+
},
|
|
782
|
+
"workspace_id": {
|
|
783
|
+
"type": "string"
|
|
775
784
|
}
|
|
776
785
|
},
|
|
777
786
|
"required": [
|
|
@@ -173,6 +173,7 @@ export class ManagedRuntime {
|
|
|
173
173
|
connection;
|
|
174
174
|
closed = false;
|
|
175
175
|
allowRevive = true;
|
|
176
|
+
cancelEpoch = 0;
|
|
176
177
|
generation = 0;
|
|
177
178
|
restartAttempts = 0;
|
|
178
179
|
recovered = false;
|
|
@@ -197,8 +198,24 @@ export class ManagedRuntime {
|
|
|
197
198
|
return Promise.reject(new Error('OpenWrite was removed'));
|
|
198
199
|
if (this.connection)
|
|
199
200
|
return this.verifyConnection(this.connection);
|
|
200
|
-
if (this.pending)
|
|
201
|
+
if (this.pending) {
|
|
202
|
+
if (['error', 'cancelled', 'stopped'].includes(this.state.phase)) {
|
|
203
|
+
// A ready child can exit while prepare is still saving active.json.
|
|
204
|
+
// The terminal state is visible before that promise settles; returning
|
|
205
|
+
// it would hand a manual retry the dead connection or its old error.
|
|
206
|
+
const prior = this.pending;
|
|
207
|
+
const epoch = this.cancelEpoch;
|
|
208
|
+
const retry = () => {
|
|
209
|
+
if (epoch !== this.cancelEpoch)
|
|
210
|
+
throw new Error('Setup was cancelled; retry when ready');
|
|
211
|
+
if (this.pending === prior)
|
|
212
|
+
this.pending = undefined;
|
|
213
|
+
return this.ensure();
|
|
214
|
+
};
|
|
215
|
+
return prior.then(retry, retry);
|
|
216
|
+
}
|
|
201
217
|
return this.pending;
|
|
218
|
+
}
|
|
202
219
|
this.allowRevive = true;
|
|
203
220
|
if (this.state.phase === 'error' || this.state.phase === 'cancelled' || this.state.phase === 'stopped') {
|
|
204
221
|
this.restartAttempts = 0;
|
|
@@ -261,6 +278,7 @@ export class ManagedRuntime {
|
|
|
261
278
|
}
|
|
262
279
|
}
|
|
263
280
|
async cancel() {
|
|
281
|
+
this.cancelEpoch += 1;
|
|
264
282
|
this.allowRevive = false;
|
|
265
283
|
this.controller?.abort();
|
|
266
284
|
await this.pending?.catch(() => { });
|