@ckanner/flywheel 0.32.1 → 0.33.1
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 +20 -1
- package/README.md +7 -0
- package/README.zh-CN.md +5 -0
- package/THIRD_PARTY_NOTICES.md +42 -0
- package/bin/runtime.js +25 -31
- package/cordis.patch.yml +5 -0
- package/dist/bridge.mjs +421 -0
- package/dist/claude-code-pro-bridge.mjs +82 -0
- package/dist/claude-code-pro-worker.mjs +5 -0
- package/dist/client.js +4140 -0
- package/dist/codex-pro-bridge.mjs +75 -0
- package/dist/codex-pro-worker.mjs +5 -0
- package/dist/console-read.mjs +51 -0
- package/dist/control.mjs +218 -0
- package/dist/index.mjs +185 -0
- package/dist/installation.mjs +56 -0
- package/dist/machine-worker.mjs +241 -0
- package/dist/policy.mjs +91 -0
- package/dist/prewarm.mjs +136 -0
- package/dist/protocol.mjs +260 -0
- package/dist/task-association.mjs +127 -0
- package/dist/worker.mjs +52 -0
- package/dist/workspaces.mjs +42 -0
- package/docs/README.md +1 -1
- package/docs/README.zh-CN.md +1 -1
- package/docs/design.md +8 -5
- package/docs/en/configuration.md +1 -1
- package/docs/en/contributing.md +5 -6
- package/docs/en/flow-console.md +2 -2
- package/docs/en/getting-started.md +9 -2
- package/docs/en/releasing.md +132 -174
- package/docs/validation/2026-11-13-release-0.32.1.md +83 -0
- package/docs/validation/2026-11-14-release-0.33.0.md +49 -0
- package/docs/validation/2026-11-14-single-package.md +60 -0
- package/docs/validation/README.md +3 -0
- package/docs/zh-CN/configuration.md +1 -1
- package/docs/zh-CN/contributing.md +4 -5
- package/docs/zh-CN/flow-console.md +2 -2
- package/docs/zh-CN/getting-started.md +7 -3
- package/docs/zh-CN/releasing.md +97 -81
- package/native/darwin-amd64/flywheel +0 -0
- package/native/darwin-arm64/flywheel +0 -0
- package/native/linux-amd64/flywheel +0 -0
- package/native/linux-arm64/flywheel +0 -0
- package/native/manifest.json +22 -0
- package/node_modules/dsh-subagent-codex-pro/CHANGELOG.md +403 -0
- package/node_modules/dsh-subagent-codex-pro/LICENSE +21 -0
- package/node_modules/dsh-subagent-codex-pro/README.md +557 -0
- package/node_modules/dsh-subagent-codex-pro/cordis.patch.yml +30 -0
- package/node_modules/dsh-subagent-codex-pro/docs/README.zh.md +355 -0
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle-validation.md +65 -0
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle.md +144 -0
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle.zh.md +98 -0
- package/node_modules/dsh-subagent-codex-pro/docs/machine.md +194 -0
- package/node_modules/dsh-subagent-codex-pro/docs/orchestration.zh.md +86 -0
- package/node_modules/dsh-subagent-codex-pro/lib/codex-exec.js +68 -0
- package/node_modules/dsh-subagent-codex-pro/lib/codex-exec.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/dsh-types.js +15 -0
- package/node_modules/dsh-subagent-codex-pro/lib/dsh-types.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/index.js +830 -0
- package/node_modules/dsh-subagent-codex-pro/lib/index.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/jobs.js +35 -0
- package/node_modules/dsh-subagent-codex-pro/lib/jobs.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/jsonrpc.js +229 -0
- package/node_modules/dsh-subagent-codex-pro/lib/jsonrpc.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-cli.js +101 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-cli.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-local.js +122 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-local.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-recovery.js +167 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-recovery.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervision.js +141 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervision.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervisor.js +128 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervisor.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine.js +104 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/process-guardian.js +156 -0
- package/node_modules/dsh-subagent-codex-pro/lib/process-guardian.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/run.js +842 -0
- package/node_modules/dsh-subagent-codex-pro/lib/run.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/structured.js +329 -0
- package/node_modules/dsh-subagent-codex-pro/lib/structured.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/tool.js +295 -0
- package/node_modules/dsh-subagent-codex-pro/lib/tool.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/codex-exec.d.ts +88 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/codex-exec.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/dsh-types.d.ts +179 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/dsh-types.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/index.d.ts +266 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/index.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/jobs.d.ts +34 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/jobs.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/jsonrpc.d.ts +113 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/jsonrpc.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-cli.d.ts +3 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-cli.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-local.d.ts +4 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-local.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-recovery.d.ts +53 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-recovery.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-supervision.d.ts +8 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-supervision.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-supervisor.d.ts +2 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-supervisor.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine.d.ts +70 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/process-guardian.d.ts +22 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/process-guardian.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/run.d.ts +386 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/run.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/structured.d.ts +35 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/structured.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/tool.d.ts +107 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/tool.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/usage.d.ts +131 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/usage.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/wire.d.ts +321 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/wire.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/usage.js +356 -0
- package/node_modules/dsh-subagent-codex-pro/lib/usage.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/wire.js +986 -0
- package/node_modules/dsh-subagent-codex-pro/lib/wire.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/package.json +76 -0
- package/npm/install.js +59 -6
- package/package.json +74 -12
- package/plugins/dsh/LICENSE +21 -0
- package/plugins/dsh/PROTOCOL.md +609 -0
- package/plugins/dsh/README.en.md +4 -0
- package/plugins/dsh/README.md +342 -0
- package/plugins/dsh/README.zh-CN.md +279 -0
- package/plugins/dsh/THIRD_PARTY_NOTICES.md +42 -0
- package/plugins/dsh/vendor/README.md +17 -0
- package/plugins/dsh/vendor/codex-pro.json +16 -0
|
@@ -80,7 +80,7 @@ FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install
|
|
|
80
80
|
|---|---|
|
|
81
81
|
| Go 引擎 | `make quality-gate`:vet、格式、测试和覆盖率 |
|
|
82
82
|
| DSH 插件或 worker | 插件检查及适用的 Go → Node 跨进程桥接 |
|
|
83
|
-
| npm 安装或发行 | 根 npm
|
|
83
|
+
| npm 安装或发行 | 根 npm 测试、单包候选构建、安装同一个 tarball |
|
|
84
84
|
| 文档 | 链接、锚点、代码围栏、可运行示例、翻译一致性,以及受影响的内嵌/包内容 |
|
|
85
85
|
|
|
86
86
|
Claude 桥接要求 worker 的依赖树中存在精确 0.4.0 optional machine API;因未安装 peer
|
|
@@ -230,11 +230,10 @@ hash、输入、平台以及通过/失败/跳过/未运行结果。修正
|
|
|
230
230
|
|
|
231
231
|
## 发行改动
|
|
232
232
|
|
|
233
|
-
遵循[发行指南](releasing.md)
|
|
234
|
-
|
|
233
|
+
遵循[发行指南](releasing.md)。Flywheel 只发布一个完整包,包含四个平台引擎和固定的 Codex Pro runtime;
|
|
234
|
+
private DSH 源码构建区不单独发布。从最终干净源码构建一次,测试同一批 tarball;保留 source commit、tree、
|
|
235
235
|
snapshot hash 和各包 integrity,release tag 必须指向该源码。不能把 dirty 候选改称正式
|
|
236
236
|
发行,也不能为已发布版本重新构建不同字节。
|
|
237
237
|
|
|
238
|
-
使用仓库已有脚本完成候选检查、上传、registry 验证和 promotion
|
|
239
|
-
meta 包;移动 `latest` 前安装验证精确 registry 版本,最后核对六包标签和 integrity。部分
|
|
238
|
+
使用仓库已有脚本完成候选检查、上传、registry 验证和 promotion。只上传完整候选包;移动 `latest` 前安装验证精确 registry 版本,最后核对标签和 integrity。部分
|
|
240
239
|
发布失败后继续使用原候选。手动发布需要对应的明确授权,并准确记录已完成与不可用的检查。
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[文档首页](../README.zh-CN.md) · [English](../en/flow-console.md) · 简体中文
|
|
4
4
|
|
|
5
5
|
DSH 的 Flywheel 视图集中提供当前任务、流程阶段、配置、会话交互与交付。
|
|
6
|
-
CLI
|
|
6
|
+
CLI、内置引擎和 DSH 插件应保持同一版本。安装步骤见[快速开始](getting-started.md)。
|
|
7
7
|
|
|
8
8
|
## 找到任务,不必填写路径
|
|
9
9
|
|
|
@@ -26,7 +26,7 @@ Skill 已加载不代表引擎已经启动。`flywheel-task` 准备适合的契
|
|
|
26
26
|
无会话 ID 的独立终端任务需要在目标会话显式关联。
|
|
27
27
|
|
|
28
28
|
画布可见时,每五秒刷新已登记任务;已观察为运行中的任务每两秒刷新状态,失败后
|
|
29
|
-
延长到十秒。页面隐藏时跳过这些请求。刷新使用只读 Remote,不执行对话命令,也不新增聊天事件或 JSON
|
|
29
|
+
延长到十秒。页面隐藏时跳过这些请求。刷新使用只读 Remote,不执行对话命令,也不新增聊天事件或 JSON。显式修改与未知结果核对仍保留持久命令回执;既有聊天历史保持原样。会话身份与读取请求使用严格 Remote codec;读取不可用或格式不合法时保留可见错误,不回退到对话命令。
|
|
30
30
|
|
|
31
31
|
## 本次阶段与完整流程
|
|
32
32
|
|
|
@@ -3,11 +3,16 @@
|
|
|
3
3
|
[文档首页](../README.zh-CN.md) · [English](../en/getting-started.md) · 简体中文
|
|
4
4
|
|
|
5
5
|
先安装 Flywheel,配置实际要使用的后端,再运行一个小任务。本文对应当前仓库,安装时
|
|
6
|
-
应核对所选 npm 版本与本机版本;源码合并不会更新已有安装。CLI
|
|
6
|
+
应核对所选 npm 版本与本机版本;源码合并不会更新已有安装。CLI、内置引擎和 DSH 插件
|
|
7
7
|
须保持同一版本。
|
|
8
8
|
|
|
9
9
|
任务分支、契约与 PR 审阅的完整流程见[工作流指南](workflow.md)。
|
|
10
10
|
|
|
11
|
+
从 0.33 起,`@ckanner/flywheel` 一个包包含 CLI、DSH 界面/worker、内嵌技能和
|
|
12
|
+
四个平台引擎,不再需要独立平台包或首次运行下载引擎。从 0.32.x 升级前先退出 DSH,
|
|
13
|
+
再运行原来的安装命令;安装器替换旧桌面包登记,保留配置和任务历史,完成后重载 DSH。
|
|
14
|
+
历史 npm 版本继续保留。
|
|
15
|
+
|
|
11
16
|
## 1. 准备运行环境
|
|
12
17
|
|
|
13
18
|
| 依赖 | 用途 |
|
|
@@ -130,8 +135,7 @@ web 工具。原生会话视图不会恢复这些 worker 能力,也不会把
|
|
|
130
135
|
### 桌面启动器
|
|
131
136
|
|
|
132
137
|
Setup 写入 `~/.config/flywheel/npm-launcher` 和安装记录,保存绝对 Node/CLI 路径
|
|
133
|
-
及已核实的 DSH 入口。显式 `flywheelBinary`
|
|
134
|
-
查找,记录损坏或 launcher 被改动则明确失败。
|
|
138
|
+
及已核实的 DSH 入口。显式 `flywheelBinary` 优先于托管启动器;记录缺失时使用本包 CLI,记录损坏或 launcher 被改动则明确失败。
|
|
135
139
|
|
|
136
140
|
移动 Node/npm prefix,或安装原先缺失的工具后,在能找到它们的终端中保留原参数,
|
|
137
141
|
重跑 `flywheel setup --no-global`。处理冲突前先保留定制 launcher。终端 export 不会
|
package/docs/zh-CN/releasing.md
CHANGED
|
@@ -2,45 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
[文档目录](../README.zh-CN.md) · [English](../en/releasing.md) · 简体中文
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本文面向维护者;用户安装见[快速开始](getting-started.md)。源码提交、tag 或 pack 成功
|
|
6
|
+
不等于 registry 已发布。源码、安装、registry 和原生桌面结果分别记录在[验收记录](../validation/README.md)。
|
|
6
7
|
|
|
7
|
-
## 1.
|
|
8
|
+
## 1. 一个完整包
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
从 0.33 起,只发布 **`@ckanner/flywheel`**。一个 tarball 包含:
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
- `bin/`、`npm/` 中的 CLI 与显式安装器。
|
|
13
|
+
- `dist/` 中的 DSH Host、Client 和 worker;Node 模块使用 `.mjs`。
|
|
14
|
+
- `native/{darwin,linux}-{arm64,amd64}/flywheel` 中的四个平台 Go 程序。
|
|
15
|
+
- `native/manifest.json`:同一版本、平台集合、文件大小和 SHA-256 摘要。
|
|
16
|
+
- 引擎内嵌的 Skill/模板、双语文档、MIT 许可证和第三方许可说明。
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
启动器只选择并核对包内当前平台引擎,不在首次运行时下载二进制,也不借用旧平台或
|
|
19
|
+
worker 包。`plugins/dsh` 是 **private 源码/构建/测试区**,不是第二个发行目标。
|
|
20
|
+
旧四个平台包及 `@ckanner/dsh-plugin-flywheel` 保留为历史版本;新流程不上传它们的
|
|
21
|
+
新版本,也不撤销其已发布字节。
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
Codex Pro 0.9.0 继续内置[已审查源码候选](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md),
|
|
24
|
+
根目录与源码构建区锁文件都保持原 tarball integrity。Claude Code Pro 0.4.0 是外部
|
|
25
|
+
可选 peer。Provider CLI 和账号凭据不在包内。普通 npm 安装只放置文件,`install`/
|
|
26
|
+
`setup` 才执行用户设置,禁止在 postinstall 隐藏 profile 或凭据修改。
|
|
20
27
|
|
|
21
|
-
|
|
28
|
+
## 2. 源码与验证
|
|
22
29
|
|
|
23
|
-
|
|
30
|
+
使用与 workflow 相同的 **Go 1.27、Node 24.22.1、npm 12.2.1**。源码须已审查,
|
|
31
|
+
checkout 干净,`vX.Y.Z` 精确指向 HEAD。不能移动发行 tag、将 dirty 候选冒称正式
|
|
32
|
+
候选,或为已经上传的版本重新构建不同字节。
|
|
24
33
|
|
|
25
|
-
|
|
34
|
+
执行适用的[贡献检查](contributing.md):
|
|
26
35
|
|
|
27
|
-
| 范围 |
|
|
36
|
+
| 范围 | 证据 |
|
|
28
37
|
| --- | --- |
|
|
29
|
-
| Go |
|
|
30
|
-
| DSH
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
| 文档 | 链接、双语对应、包内指南和许可证 |
|
|
38
|
+
| Go 改动 | 完整 quality-gate、逐函数 100% 覆盖率和核心 race |
|
|
39
|
+
| DSH/worker | 锁定源码依赖的完整检查及真实 Go→Node 离线桥接 |
|
|
40
|
+
| npm/发行 | 根 npm 测试、完整单包构建、真实安装同一个 tarball |
|
|
41
|
+
| 原生/会话改动 | 适用的 CLI 检查及 `npm run test:sessions` |
|
|
42
|
+
| 迁移 | 全新安装、旧拆包升级、失败/回退/取消与重复 setup |
|
|
43
|
+
| 文档 | 双语指南、链接、包内文档和许可证 |
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
Claude 后端测试使用已审查的精确源码 tarball;optional peer 缺失或跳过不算通过。
|
|
46
|
+
安装测试前将 `FLYWHEEL_CLAUDE_CODE_PRO_TARBALL` 指向已核对的 tarball。
|
|
47
|
+
源码测试使用隔离 home/profile 和离线模型,不证明真实账号、模型质量或桌面布局。
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
## 3. 构建一次,测试同一个产物
|
|
40
50
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
从经过审查、工作区干净且位于发行 tag 的 checkout 执行,每步失败即停止:
|
|
51
|
+
在最终干净发行 tag checkout 执行,每步失败即停止:
|
|
44
52
|
|
|
45
53
|
```sh
|
|
46
54
|
FLYWHEEL_RELEASE_VERSION=$(node -p "require('./package.json').version")
|
|
@@ -51,70 +59,78 @@ node scripts/release-publish.js verify-candidate --directory dist-npm --source-s
|
|
|
51
59
|
FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install
|
|
52
60
|
```
|
|
53
61
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
推送经过审查的 tag 会触发 [publish.yml](https://github.com/ckanner/flywheel/blob/main/.github/workflows/publish.yml),也可在手动运行入口提供一个已有 tag。Linux 和 macOS 验证同一个候选 artifact;发布 job 刷新远端引用,并要求 tag 仍指向已验证源码。
|
|
61
|
-
|
|
62
|
-
GitHub 访问权和 npm 发布权是两项授权。六个包分别配置 trusted publisher:owner 为 `ckanner`、repository 为 `flywheel`、workflow 为 `publish.yml`;除非 workflow 改为使用 environment,否则该项留空。需要同时允许 **npm publish** 和 **npm dist-tag**。workflow 也支持已授权的 `NPM_TOKEN` 后备路径。
|
|
63
|
-
|
|
64
|
-
首次新建包需要先完成 npm 的包创建授权,才能配置该包的 trusted publisher。使用正常授权流程,不得以不同占位内容提前占用发行版本。账号设置参考 npm 官方 [trusted publisher](https://docs.npmjs.com/trusted-publishers/) 和 [dist-tag](https://docs.npmjs.com/adding-dist-tags-to-packages/) 文档;`npm whoami` 只能说明登录身份,不能证明发布权限。
|
|
65
|
-
|
|
66
|
-
发布必须明确仓库实际可见性:`public` 要求 provenance,`private` 关闭不支持的私有源码 provenance。发 npm 包不会改变仓库可见性,OIDC 身份认证与 provenance 也是不同能力。
|
|
67
|
-
|
|
68
|
-
## 5. 从私有源码本地发布
|
|
69
|
-
|
|
70
|
-
维护者可从普通 Git checkout 构建。按当前发行政策,公开仓库的新上传必须走第 4 节:发布器要求 provenance,而 npm 只能在支持的云 CI/CD 环境生成它,普通本地浏览器登录不能提供。详见 [npm provenance 前提](https://docs.npmjs.com/generating-provenance-statements/)。下面的本地上传示例仅适用于源码仓库实际为私有的情况,不得把公开仓库声明为私有来绕过要求。无需下载候选压缩包。先完成源码审查和上述门禁。Actions 无法运行时,记录维护者授权、本地真实结果和未执行检查,不能把不可用的 CI 写成通过。
|
|
71
|
-
|
|
72
|
-
在相同的干净 tag 源码及其原候选目录执行:
|
|
62
|
+
构建器获取隔离源码快照,安装根目录及 private 构建区的锁定依赖并禁用 lifecycle scripts,
|
|
63
|
+
构建插件和四个平台引擎,然后只 pack 根包一次。不复用调用方的 dist/node_modules。
|
|
64
|
+
候选 **format 2** 记录 commit、tree、snapshot、dirty 状态以及唯一 tarball 的 SHA-512;
|
|
65
|
+
验证器还打开 tarball 核对全部原生摘要、公开入口、许可证和内置 adapter 身份。
|
|
66
|
+
Linux 和 macOS 安装同一个候选,不分别重新打包。
|
|
73
67
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
npm run release:local -- --repository-visibility private
|
|
77
|
-
```
|
|
68
|
+
保留 `dist-npm/`、`candidate.json`、工具链身份和结果。上传前源码变化需要新的已审查
|
|
69
|
+
候选;上传后必须保留原字节,源码修复使用新版本。
|
|
78
70
|
|
|
79
|
-
|
|
71
|
+
## 4. GitHub Actions 自动发布
|
|
80
72
|
|
|
81
|
-
|
|
73
|
+
推送发行 tag 触发 [publish.yml](https://github.com/ckanner/flywheel/blob/main/.github/workflows/publish.yml),
|
|
74
|
+
也可手动指定精确已有 tag。构建和双 OS 检查通过后,发布 job 再核对源码与 tag。
|
|
82
75
|
|
|
83
|
-
|
|
84
|
-
2. 运行候选安装测试,再次确认源码和候选未变化。
|
|
85
|
-
3. 按平台包 → 插件 → 入口包上传到 `candidate-X-Y-Z`。
|
|
86
|
-
4. 从官方 npm registry 安装精确版本。
|
|
87
|
-
5. 再次核对源码和远端 tag,按相同顺序提升 `latest`,验证六包标签和 integrity。
|
|
76
|
+
仅为 **`@ckanner/flywheel`** 配置一个 npm Trusted Publisher:
|
|
88
77
|
|
|
89
|
-
|
|
78
|
+
| 字段 | 值 |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| Provider | GitHub Actions |
|
|
81
|
+
| Organization/user | `ckanner` |
|
|
82
|
+
| Repository | `flywheel` |
|
|
83
|
+
| Workflow filename | `publish.yml` |
|
|
84
|
+
| Environment | 留空,与 workflow 一致 |
|
|
85
|
+
| 权限 | 同时允许 `npm publish` 和 `npm dist-tag` |
|
|
90
86
|
|
|
91
|
-
|
|
87
|
+
发布 job 仅使用 OIDC 和空 npm user config,不退回存储的 `NPM_TOKEN` 或浏览器交互认证。
|
|
88
|
+
账号 2FA 策略独立保留。首次建立信任可能需要维护者安全密钥确认,这是一次性配置,
|
|
89
|
+
不是每次发版审批。npm 可能将新连接标为待验证,直到首次 CI 真正发布;保存设置或
|
|
90
|
+
`npm publish --dry-run` 都不证明自动发布已经成功。参见 [npm 官方说明](https://docs.npmjs.com/trusted-publishers/)。
|
|
92
91
|
|
|
93
|
-
|
|
92
|
+
公开源码发行要求 provenance;私有源码必须明确关闭不支持的 provenance,不能将
|
|
93
|
+
公开仓库虚称私有。Actions 被账单或其他 runner 问题阻断时,单独记录,不将本机检查
|
|
94
|
+
冒充云端通过。CI 只核对已存在版本成功,也不证明新的 OIDC 写操作已经跑通。
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
## 5. 发布与恢复
|
|
96
97
|
|
|
97
|
-
|
|
98
|
+
唯一 tarball 先使用 `candidate-X-Y-Z` 标签,确认精确 registry integrity 并完成真实
|
|
99
|
+
registry 安装后,再提升 latest,最后复核标签和摘要。只有一次包上传、一次标签提升,
|
|
100
|
+
均由 CI 身份认证,不再有六包事务。
|
|
98
101
|
|
|
99
|
-
|
|
102
|
+
只有结构化 E404 表示版本不存在。认证、传输、取消、无效 JSON 或摘要不符都明确失败。
|
|
103
|
+
已存在版本必须与候选一致,不得回退更新的 latest。可见性检查仍有 180 秒边界,只重试
|
|
104
|
+
读取、不盲目重复上传;npm 接收后仍在验证时,保留原字节,等精确版本可见再继续。
|
|
100
105
|
|
|
101
|
-
|
|
|
106
|
+
| 失败 | 恢复 |
|
|
102
107
|
| --- | --- |
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
| registry 可见性超时 |
|
|
106
|
-
|
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
108
|
+
| OIDC 授权 | 核对包、仓库、workflow 和两项允许的动作 |
|
|
109
|
+
| 上传中断 | 先读 registry 身份,再继续同一个候选 |
|
|
110
|
+
| registry 可见性超时 | 保留已接收字节,重试只读核对 |
|
|
111
|
+
| 安装或 promotion 失败 | 继续原候选,保留更高版本的标签 |
|
|
112
|
+
| 上传后要改代码 | 新版本、新审查 tag |
|
|
113
|
+
| 候选丢失 | 找回原 artifact,不假定重新构建完全一致 |
|
|
114
|
+
|
|
115
|
+
仅在明确授权且源码仓库**确实为私有**的应急场景,`npm run release:local --
|
|
116
|
+
--repository-visibility private` 保留源码、tag、候选与安装检查,并使用正常 npm
|
|
117
|
+
交互认证;必须使用 TTY。历史发行使用它自己的工具、精确源码与原 artifact 格式。
|
|
118
|
+
不得用新的单包发行器处理历史 format-1 六包候选。
|
|
119
|
+
|
|
120
|
+
## 6. 用户迁移与验收
|
|
121
|
+
|
|
122
|
+
入口仍是 `npx -y @ckanner/flywheel@latest install`。从拆包版本迁移前先等待 Flywheel 任务收尾,再退出 DSH。
|
|
123
|
+
安装器读取现有依赖,先安装并确认新的完整桌面包,再通过官方 DSH CLI 移除旧
|
|
124
|
+
`@ckanner/dsh-plugin-flywheel`,最后确认只剩新身份。保留用户配置、修改过的 skills
|
|
125
|
+
和任务历史,不写 `state.json`。
|
|
126
|
+
|
|
127
|
+
file/git 自定义来源的旧插件在更改桌面 profile 前明确失败,先前已完成的安装步骤仍保留在报告中。迁移出错保留真实局部状态;只在能确认
|
|
128
|
+
旧包仍存在、替代包确为本次新增时回退替代包。取消不启动新的回退进程;重试先重新
|
|
129
|
+
读取 profile。两种身份仍并存时不能报告完成。显式 `flywheelBinary` 与受管启动记录
|
|
130
|
+
保持原校验和优先级;没有记录时安装包可使用自己的 CLI,宿主仍需能找到 Node。
|
|
131
|
+
|
|
132
|
+
发行记录应分别列出源码、候选、registry、安装及限制。另行核对 CLI、技能、桌面包、
|
|
133
|
+
配置和重载后的原生界面。不能为宣称验收完成而中断运行中的任务;必要时明确记录重载待完成。
|
|
134
|
+
|
|
135
|
+
已有受管启动记录必须与当前包同版。单独更新 DSH 副本后,应运行该版本的 setup
|
|
136
|
+
刷新受管安装;旧记录会明确报错,不把新版界面与旧引擎混用。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocol": 1,
|
|
3
|
+
"version": "0.33.1",
|
|
4
|
+
"platforms": {
|
|
5
|
+
"darwin-arm64": {
|
|
6
|
+
"bytes": 10317010,
|
|
7
|
+
"sha256": "4efb5efab4fce7b6fd86d15d6fcc21530b4aee169613b5009e2cee452c277c9c"
|
|
8
|
+
},
|
|
9
|
+
"darwin-amd64": {
|
|
10
|
+
"bytes": 11236784,
|
|
11
|
+
"sha256": "a93e2f8802fb4a1c258dc331546e0a0e56165aec92e90e3eb64e42d88ac49b15"
|
|
12
|
+
},
|
|
13
|
+
"linux-arm64": {
|
|
14
|
+
"bytes": 10092704,
|
|
15
|
+
"sha256": "82c611cbada4d1a8b932b619cfe1fb15b30aee2e35ba3fb1da527c000c19cffc"
|
|
16
|
+
},
|
|
17
|
+
"linux-amd64": {
|
|
18
|
+
"bytes": 11014304,
|
|
19
|
+
"sha256": "7f49ac00660cf97502d27f150e7969b04cac50c894c5f8b7149a05a19f681316"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|