@orion-agents/orion-code 0.2.2 → 0.3.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 +82 -0
- package/README.md +89 -14
- package/README.zh-CN.md +77 -14
- package/bin/orion +15 -4
- package/dist/cli.js +51 -172
- package/dist/cli.js.map +1 -1
- package/dist/commands/model-command-handlers.d.ts +2 -2
- package/dist/commands/model-command-handlers.d.ts.map +1 -1
- package/dist/commands/model-command-handlers.js +113 -32
- package/dist/commands/model-command-handlers.js.map +1 -1
- package/dist/commands/session-command-handlers.d.ts.map +1 -1
- package/dist/commands/session-command-handlers.js +106 -15
- package/dist/commands/session-command-handlers.js.map +1 -1
- package/dist/commands/types.d.ts +13 -3
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/core/tool-artifacts.d.ts +2 -0
- package/dist/core/tool-artifacts.d.ts.map +1 -1
- package/dist/core/tool-artifacts.js +27 -1
- package/dist/core/tool-artifacts.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/runtime/agent-loop.d.ts.map +1 -1
- package/dist/runtime/agent-loop.js +3 -3
- package/dist/runtime/agent-loop.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +32 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +241 -27
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +4 -0
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/agent-runtime-runner.d.ts +2 -1
- package/dist/runtime/agent-runtime-runner.d.ts.map +1 -1
- package/dist/runtime/durable-tool-receipt-reader.d.ts +32 -0
- package/dist/runtime/durable-tool-receipt-reader.d.ts.map +1 -0
- package/dist/runtime/durable-tool-receipt-reader.js +130 -0
- package/dist/runtime/durable-tool-receipt-reader.js.map +1 -0
- package/dist/runtime/legacy-thread-materializer.d.ts +31 -0
- package/dist/runtime/legacy-thread-materializer.d.ts.map +1 -1
- package/dist/runtime/legacy-thread-materializer.js +71 -17
- package/dist/runtime/legacy-thread-materializer.js.map +1 -1
- package/dist/runtime/orion-runtime-v1.d.ts +2 -0
- package/dist/runtime/orion-runtime-v1.d.ts.map +1 -1
- package/dist/runtime/orion-runtime-v1.js +7 -1
- package/dist/runtime/orion-runtime-v1.js.map +1 -1
- package/dist/runtime/orion-session-runner.d.ts +7 -2
- package/dist/runtime/orion-session-runner.d.ts.map +1 -1
- package/dist/runtime/orion-session-runner.js +16 -6
- package/dist/runtime/orion-session-runner.js.map +1 -1
- package/dist/runtime/product-bootstrap.d.ts +22 -0
- package/dist/runtime/product-bootstrap.d.ts.map +1 -0
- package/dist/runtime/product-bootstrap.js +374 -0
- package/dist/runtime/product-bootstrap.js.map +1 -0
- package/dist/runtime/product-orion-runtime.d.ts +2 -1
- package/dist/runtime/product-orion-runtime.d.ts.map +1 -1
- package/dist/runtime/product-orion-runtime.js +83 -13
- package/dist/runtime/product-orion-runtime.js.map +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.d.ts +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.js +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.js.map +1 -1
- package/dist/runtime/release-receipts.d.ts +66 -3
- package/dist/runtime/release-receipts.d.ts.map +1 -1
- package/dist/runtime/release-receipts.js +340 -7
- package/dist/runtime/release-receipts.js.map +1 -1
- package/dist/runtime/step-snapshot.d.ts.map +1 -1
- package/dist/runtime/step-snapshot.js +22 -2
- package/dist/runtime/step-snapshot.js.map +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
- package/dist/runtime/subagents/runtime-integration.js +5 -2
- package/dist/runtime/subagents/runtime-integration.js.map +1 -1
- package/dist/runtime/thread-event-store.d.ts +80 -0
- package/dist/runtime/thread-event-store.d.ts.map +1 -1
- package/dist/runtime/thread-event-store.js +456 -22
- package/dist/runtime/thread-event-store.js.map +1 -1
- package/dist/runtime/thread-projection.d.ts +10 -0
- package/dist/runtime/thread-projection.d.ts.map +1 -1
- package/dist/runtime/thread-projection.js +40 -0
- package/dist/runtime/thread-projection.js.map +1 -1
- package/dist/runtime/thread-runtime.d.ts +3 -1
- package/dist/runtime/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/thread-runtime.js +6 -0
- package/dist/runtime/thread-runtime.js.map +1 -1
- package/dist/runtime/thread-session-index.d.ts +84 -0
- package/dist/runtime/thread-session-index.d.ts.map +1 -0
- package/dist/runtime/thread-session-index.js +503 -0
- package/dist/runtime/thread-session-index.js.map +1 -0
- package/dist/runtime/thread-session-view.d.ts +70 -9
- package/dist/runtime/thread-session-view.d.ts.map +1 -1
- package/dist/runtime/thread-session-view.js +200 -82
- package/dist/runtime/thread-session-view.js.map +1 -1
- package/dist/runtime/thread-ui-adapter.d.ts +2 -0
- package/dist/runtime/thread-ui-adapter.d.ts.map +1 -1
- package/dist/runtime/thread-ui-adapter.js +86 -4
- package/dist/runtime/thread-ui-adapter.js.map +1 -1
- package/dist/runtime/tool-detail-repository.d.ts.map +1 -1
- package/dist/runtime/tool-detail-repository.js +23 -19
- package/dist/runtime/tool-detail-repository.js.map +1 -1
- package/dist/runtime/tool-receipt-validator.d.ts +21 -0
- package/dist/runtime/tool-receipt-validator.d.ts.map +1 -0
- package/dist/runtime/tool-receipt-validator.js +157 -0
- package/dist/runtime/tool-receipt-validator.js.map +1 -0
- package/dist/runtime/ui-events.d.ts +35 -0
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js +1 -0
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +2 -0
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +7 -3
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/services/global-config.d.ts +25 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +373 -5
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/redaction.d.ts +4 -0
- package/dist/services/redaction.d.ts.map +1 -1
- package/dist/services/redaction.js +63 -0
- package/dist/services/redaction.js.map +1 -1
- package/dist/services/session-index.d.ts +16 -0
- package/dist/services/session-index.d.ts.map +1 -1
- package/dist/services/session-index.js +45 -36
- package/dist/services/session-index.js.map +1 -1
- package/dist/services/session-storage.d.ts +59 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +306 -107
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/settings-coordinator.d.ts +174 -0
- package/dist/services/settings-coordinator.d.ts.map +1 -0
- package/dist/services/settings-coordinator.js +605 -0
- package/dist/services/settings-coordinator.js.map +1 -0
- package/dist/services/settings-document-repository.d.ts +138 -0
- package/dist/services/settings-document-repository.d.ts.map +1 -0
- package/dist/services/settings-document-repository.js +551 -0
- package/dist/services/settings-document-repository.js.map +1 -0
- package/dist/services/workspace-registry.d.ts +42 -0
- package/dist/services/workspace-registry.d.ts.map +1 -0
- package/dist/services/workspace-registry.js +222 -0
- package/dist/services/workspace-registry.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +5 -0
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +5 -0
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/web/errors.d.ts +6 -0
- package/dist/web/errors.d.ts.map +1 -0
- package/dist/web/errors.js +13 -0
- package/dist/web/errors.js.map +1 -0
- package/dist/web/event-hub.d.ts +43 -0
- package/dist/web/event-hub.d.ts.map +1 -0
- package/dist/web/event-hub.js +323 -0
- package/dist/web/event-hub.js.map +1 -0
- package/dist/web/file-read-service.d.ts +55 -0
- package/dist/web/file-read-service.d.ts.map +1 -0
- package/dist/web/file-read-service.js +399 -0
- package/dist/web/file-read-service.js.map +1 -0
- package/dist/web/git-read-model-service.d.ts +77 -0
- package/dist/web/git-read-model-service.d.ts.map +1 -0
- package/dist/web/git-read-model-service.js +631 -0
- package/dist/web/git-read-model-service.js.map +1 -0
- package/dist/web/index.d.ts +6 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +28 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/launch.d.ts +9 -0
- package/dist/web/launch.d.ts.map +1 -0
- package/dist/web/launch.js +64 -0
- package/dist/web/launch.js.map +1 -0
- package/dist/web/protocol.d.ts +408 -0
- package/dist/web/protocol.d.ts.map +1 -0
- package/dist/web/protocol.js +369 -0
- package/dist/web/protocol.js.map +1 -0
- package/dist/web/review-service.d.ts +38 -0
- package/dist/web/review-service.d.ts.map +1 -0
- package/dist/web/review-service.js +74 -0
- package/dist/web/review-service.js.map +1 -0
- package/dist/web/server.d.ts +20 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +744 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/terminal-manager.d.ts +155 -0
- package/dist/web/terminal-manager.d.ts.map +1 -0
- package/dist/web/terminal-manager.js +728 -0
- package/dist/web/terminal-manager.js.map +1 -0
- package/dist/web/terminal-server.d.ts +8 -0
- package/dist/web/terminal-server.d.ts.map +1 -0
- package/dist/web/terminal-server.js +275 -0
- package/dist/web/terminal-server.js.map +1 -0
- package/dist/web/workbench-controller.d.ts +99 -0
- package/dist/web/workbench-controller.d.ts.map +1 -0
- package/dist/web/workbench-controller.js +1267 -0
- package/dist/web/workbench-controller.js.map +1 -0
- package/dist/web-client/assets/DiffViewer-DpKoD07C.js +5 -0
- package/dist/web-client/assets/FilesPanel-BkoLmgjR.js +2 -0
- package/dist/web-client/assets/GitPanel-D20StcdG.js +1 -0
- package/dist/web-client/assets/ReviewPanel-3MVWbMQV.js +1 -0
- package/dist/web-client/assets/TerminalPanel-BLQ592Fb.js +21 -0
- package/dist/web-client/assets/TerminalPanel-DLuoa74B.css +1 -0
- package/dist/web-client/assets/index-BkIDl_xk.js +16 -0
- package/dist/web-client/assets/index-DXMpnWE8.css +1 -0
- package/dist/web-client/index.html +16 -0
- package/docs/architecture/v0.3.0-web-api.yaml +1340 -0
- package/docs/architecture/v0.3.1-web-api.yaml +2290 -0
- package/docs/migration/v0.2.2-to-v0.3.0-settings.md +114 -0
- package/docs/migration/v0.2.2-to-v0.3.0.md +55 -0
- package/docs/migration/v0.3.0-to-v0.3.1.md +88 -0
- package/docs/orion.example.json +9 -2
- package/docs/plan/v0.3.0-node-runtime-compatibility-plan.md +57 -0
- package/docs/plan/v0.3.0-settings-integration-plan.md +740 -0
- package/docs/plan/v0.3.0-web-workbench-plan.md +376 -0
- package/docs/plan/v0.3.1-web-workbench-professional-shell-plan.md +848 -0
- package/docs/readme.md +22 -1
- package/docs/test/v0.3.1-web-workbench-e2e-plan.md +140 -0
- package/npm-shrinkwrap.json +1229 -45
- package/package.json +47 -11
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Orion Code v0.2.2 → v0.3.0 Settings 迁移说明
|
|
2
|
+
|
|
3
|
+
v0.3.0 将 Web 端设置升级为 Host 管理的持久 Settings 子系统。迁移不会引入
|
|
4
|
+
`settings.json`;`$ORION_CODE_CONFIG_DIR/orion.json` 仍然是唯一配置真源。
|
|
5
|
+
|
|
6
|
+
## 迁移前准备
|
|
7
|
+
|
|
8
|
+
1. 备份现有 `orion.json`。
|
|
9
|
+
2. 确认文件是有效 JSON,且当前 Orion Code 可以正常启动。
|
|
10
|
+
3. 不要将 API key、Authorization Header 或其他凭证粘贴到浏览器问题报告中。
|
|
11
|
+
|
|
12
|
+
v0.3.0 的 Settings 页只显示 Provider 的 `ready`/`missing`/`unavailable` 状态,不会返回
|
|
13
|
+
凭证值、环境变量名、Header 或配置文件路径。
|
|
14
|
+
|
|
15
|
+
## 主题与动效
|
|
16
|
+
|
|
17
|
+
旧 Web 页面把主题和动效保存在浏览器 `localStorage`。v0.3.0 将它们保存到:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"web": {
|
|
22
|
+
"appearance": {
|
|
23
|
+
"theme": "system",
|
|
24
|
+
"motion": "system"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
首次打开 v0.3.0 Web Workbench 时:
|
|
31
|
+
|
|
32
|
+
- Host 已有显式值:Host 值优先,清理旧浏览器值。
|
|
33
|
+
- Host 没有显式值且浏览器有旧值:通过一次 revision CAS 导入;只在 Host
|
|
34
|
+
确认持久化后删除旧值。
|
|
35
|
+
- 多标签页同时导入:只有一个 CAS 成功,其他页面重读 Host,不覆盖已保存值。
|
|
36
|
+
|
|
37
|
+
“重置为继承值”会删除对应字段,不会把当前 effective value 反写为新的显式值。
|
|
38
|
+
|
|
39
|
+
## 默认模型与当前会话模型
|
|
40
|
+
|
|
41
|
+
Settings 中的“默认模型”写入根级 `defaultModel`,仅影响之后创建的 Session。
|
|
42
|
+
|
|
43
|
+
- 已打开 Session 不会被 Settings 暗中切换模型。
|
|
44
|
+
- `/model <id>` 仍然是当前 Session 控制,并持久到该 Session metadata。
|
|
45
|
+
- 修改 `/model` 不会更改全局 `defaultModel`。
|
|
46
|
+
|
|
47
|
+
页面会同时显示默认模型和当前 Session 模型,以避免两种作用域混淆。
|
|
48
|
+
|
|
49
|
+
## Effort 作用域
|
|
50
|
+
|
|
51
|
+
Settings 中的 Effort 是当前 workspace 的 project default,保存到:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
projects[canonical active workspace].defaultEffort
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
有效值的统一解析顺序为:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Session override → project default → global default → model capability default
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Session 已有显式 Effort 时,修改 project default 不会覆盖它。无 Session override 时,
|
|
64
|
+
新值从下一个逻辑请求开始生效。
|
|
65
|
+
|
|
66
|
+
## 工具确认策略
|
|
67
|
+
|
|
68
|
+
Settings 中的 `ask`/`allow`/`deny` 是全局 `toolConfirmation` 默认策略。该设置只在
|
|
69
|
+
Runtime idle 边界提交,从下一个逻辑请求开始生效。
|
|
70
|
+
|
|
71
|
+
`allow` 不会绕过工具硬拒绝、allowlist、sandbox、workspace 边界或风险上限。
|
|
72
|
+
|
|
73
|
+
## 并发编辑与无效配置
|
|
74
|
+
|
|
75
|
+
Settings 使用不透明的持久 revision 和文件锁内 CAS:
|
|
76
|
+
|
|
77
|
+
- 多个标签页或外部编辑同时修改时,旧 revision 会收到冲突;未提交草稿保留。
|
|
78
|
+
- 一次“应用”只发送一个 batch,全部成功或零字段提交。
|
|
79
|
+
- 外部写入非法 JSON 或非法 schema 时,Runtime 保留 last-good 配置,Web 写入被禁用。
|
|
80
|
+
- 修复 `orion.json` 后刷新 Settings,再基于最新 revision 保存。
|
|
81
|
+
|
|
82
|
+
Advanced 页的“打开配置文件”是无 path 的受控操作:浏览器不能指定任意路径,
|
|
83
|
+
响应也不会返回本地绝对路径。
|
|
84
|
+
|
|
85
|
+
## 回滚
|
|
86
|
+
|
|
87
|
+
需要回到 v0.2.2 时:
|
|
88
|
+
|
|
89
|
+
1. 停止 Orion Code Host。
|
|
90
|
+
2. 用迁移前备份恢复 `orion.json`。v0.2.2 会忽略未识别的 `web` 字段,但恢复备份
|
|
91
|
+
可确保与升级前完全一致。
|
|
92
|
+
3. 不要把 revision key 当作配置文件;它仅用于本机 CAS revision,不包含设置值。
|
|
93
|
+
|
|
94
|
+
回滚不需要将主题/动效重新写回浏览器。
|
|
95
|
+
|
|
96
|
+
## 迁移验证记录
|
|
97
|
+
|
|
98
|
+
2026-08-27 的 v0.3.0 确定性验证已直接覆盖上述迁移边界:
|
|
99
|
+
|
|
100
|
+
- `SET-P0-01` 验证 legacy localStorage appearance 只导入一次,并在刷新、
|
|
101
|
+
换端口和 Host 重启后保留;
|
|
102
|
+
- `SET-P0-02/03` 验证默认模型/当前 Session 及 project/global/session Effort 的
|
|
103
|
+
作用域与重启解析;
|
|
104
|
+
- `SET-P0-06..10` 验证多标签 CAS、外部合法/非法编辑、幂等重试与
|
|
105
|
+
同端口 Host 重启换 nonce;
|
|
106
|
+
- 同一冻结的 `@orion-agents/orion-code@0.3.0` tgz 已在 Node 20.19.5、22.22.3 和
|
|
107
|
+
24.14.1 各运行 14 个 Settings 场景,全部通过;精确候选哈希在包生成后写入不参与
|
|
108
|
+
npm 打包的资格报告,避免本迁移文档对其所在 tarball 的哈希形成循环引用。
|
|
109
|
+
|
|
110
|
+
以上 Node 20/22/24 数据是历史迁移验证。当前 v0.3 Runtime 合同为 Node 22.12+/24/26;
|
|
111
|
+
Node 20 已退役,历史 receipt 不能替代当前 Node 26 的 fresh exact-tarball 证据。
|
|
112
|
+
|
|
113
|
+
详细 receipt、失败—修复记录与发布边界见
|
|
114
|
+
[`v0.3.0 Web E2E Qualification Report`](../test/v0.3.0-web-e2e-report.md)。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Orion Code v0.2.2 → v0.3.0 Migration Guide
|
|
2
|
+
|
|
3
|
+
v0.3.0 adds a local Web Workbench without replacing the existing TUI, terminal or print surfaces.
|
|
4
|
+
Existing sessions, project configuration, Skill roots, MCP configuration and durable Thread logs
|
|
5
|
+
remain the data sources used by both interfaces; no destructive session migration is required.
|
|
6
|
+
|
|
7
|
+
## Runtime requirements
|
|
8
|
+
|
|
9
|
+
- Upgrade to Node.js `22.12+`, a supported Node 24 release, or Node 26 before installing v0.3.
|
|
10
|
+
Node 20 is upstream EOL and the native dependency line no longer ships a Node 20 prebuild;
|
|
11
|
+
Node 24 LTS or Node 26 Current is recommended.
|
|
12
|
+
- Run `npm install` and `npm run build`; the build now produces both `dist/` server files and
|
|
13
|
+
`dist/web-client/` browser assets.
|
|
14
|
+
- Existing `orion`, `orion --ui terminal` and print-mode commands keep their current behavior.
|
|
15
|
+
|
|
16
|
+
## Start the Web Workbench
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
orion web
|
|
20
|
+
orion web --no-open --port 3080
|
|
21
|
+
orion web --cwd /absolute/path/to/project
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The host listens only on `127.0.0.1`. Static assets and `/api/v1/*` share one origin; v0.3.0 has no
|
|
25
|
+
LAN/public bind option. Model/provider credentials stay in Orion configuration or environment
|
|
26
|
+
variables and cannot be entered through the browser.
|
|
27
|
+
|
|
28
|
+
## Behavior to note
|
|
29
|
+
|
|
30
|
+
- Web, TUI and terminal use the same product composition and durable Session/Thread sources. Do not
|
|
31
|
+
run them concurrently against one active session and assume multi-writer ownership.
|
|
32
|
+
- Browser refresh, SSE reconnect and tab closure do not approve or reject a pending tool request.
|
|
33
|
+
Explicit denial, runtime abort and host shutdown fail the affected request closed.
|
|
34
|
+
- Approval scopes are now consistently `once`, `project` and `global`; the stale durable-protocol
|
|
35
|
+
spelling `session` is rejected.
|
|
36
|
+
- Plan mode still commits a three-field Plan receipt and then schedules implementation in a new
|
|
37
|
+
logical turn. The Web UI does not add a separate Plan approval or synthetic step state.
|
|
38
|
+
- Goal state shown in the browser comes from the latest valid TurnCommit. A legacy sidecar remains
|
|
39
|
+
migration input only when no committed Goal state exists.
|
|
40
|
+
- Tool-output details are project scoped in v0.3.0 because current artifact metadata does not carry
|
|
41
|
+
a provable Session identity.
|
|
42
|
+
- Web appearance, default model, project Effort and tool-confirmation defaults now use the
|
|
43
|
+
Host-owned, revisioned Settings coordinator. See the dedicated
|
|
44
|
+
[Settings migration guide](v0.2.2-to-v0.3.0-settings.md) before changing precedence, importing
|
|
45
|
+
legacy browser appearance or rolling configuration back.
|
|
46
|
+
|
|
47
|
+
## Rollback
|
|
48
|
+
|
|
49
|
+
Stop `orion web` and reinstall or run v0.2.2. v0.3.0 does not rewrite old sessions solely to enable
|
|
50
|
+
the browser. New durable Thread facts remain append-only and follow the existing v0.2 recovery
|
|
51
|
+
contract; back up `~/.orion-code` before any broader manual rollback or cleanup.
|
|
52
|
+
|
|
53
|
+
See the [v0.3.0 Web Workbench plan](../plan/v0.3.0-web-workbench-plan.md) and
|
|
54
|
+
[Settings integration plan](../plan/v0.3.0-settings-integration-plan.md), plus the
|
|
55
|
+
[OpenAPI contract](../architecture/v0.3.0-web-api.yaml), for the complete boundary.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Orion Code v0.3.0 → v0.3.1 Web Workbench 迁移说明
|
|
2
|
+
|
|
3
|
+
v0.3.1 将 Web Workbench 从固定三栏升级为多项目导航和专业工程面板,同时保持单一 active
|
|
4
|
+
Workspace/Runtime。迁移不会复制 Session、重写 Thread history,也不会把 terminal 变成 durable Session。
|
|
5
|
+
|
|
6
|
+
## 升级前准备
|
|
7
|
+
|
|
8
|
+
1. 停止正在运行的 `orion web` Host,并确认重要终端任务已经结束;浏览器终端不会跨 Host 重启恢复。
|
|
9
|
+
2. 备份 `$ORION_CODE_CONFIG_DIR/orion.json` 与现有 Session/Thread 数据目录。
|
|
10
|
+
3. 记录当前活动 Workspace 和 Session;不要在问题报告中粘贴绝对路径、凭据或 terminal 输出。
|
|
11
|
+
4. 使用受支持的 Node 22.12+、24 或 26。Node 20 不属于 v0.3.1 发布合同。
|
|
12
|
+
|
|
13
|
+
## 多项目注册表
|
|
14
|
+
|
|
15
|
+
首次运行时,Host 会从当前工作区和已有 Session project metadata 幂等导入 WorkspaceRegistryV1。
|
|
16
|
+
|
|
17
|
+
- 注册表只保存规范化项目身份、显示标签、最近使用时间和 pin 顺序;
|
|
18
|
+
- 它不会复制项目文件、删除 Session 或同时启动多个 Agent Runtime;
|
|
19
|
+
- 不存在或不可访问的项目显示 unavailable,可从注册表移除;移除不删除磁盘目录或历史;
|
|
20
|
+
- 展开 inactive project 只读取轻量 Session page/Git summary,不激活 Runtime;
|
|
21
|
+
- 点击另一个项目的 Session 通过一次 `workspaceId + sessionId + expectedContextRevision` 原子切换。
|
|
22
|
+
|
|
23
|
+
陈旧 Context guard 返回 `409 context_revision_conflict`,Host 保持原 context,且不得投递命令、
|
|
24
|
+
创建 PTY、读错 workspace 或产生其他副作用。客户端应重新读取 bootstrap 后显式重试。
|
|
25
|
+
|
|
26
|
+
## 布局偏好
|
|
27
|
+
|
|
28
|
+
右侧 Work panel 的桌面宽度默认 420px,可用 IDE 式鼠标指针在 320–720px 间拖动调整,双击
|
|
29
|
+
分隔条复位。
|
|
30
|
+
|
|
31
|
+
- 精细调宽没有键盘入口;键盘用户可以展开/折叠面板,并在 drawer 中访问全部功能;
|
|
32
|
+
- 窄屏自动切换 drawer,不覆盖桌面宽度偏好;返回桌面时恢复;
|
|
33
|
+
- 无效或越界旧值会被 clamp/忽略,不阻止 Workbench 启动;
|
|
34
|
+
- 当前面板、折叠态和桌面宽度是 UI preference,不是 Runtime 或 Session 权威状态。
|
|
35
|
+
|
|
36
|
+
## 文件、Git 与审阅
|
|
37
|
+
|
|
38
|
+
这些面板都是 Host 管理的只读投影:
|
|
39
|
+
|
|
40
|
+
- 文件操作使用 opaque id;Host 每次读取都重新检查 canonical workspace containment;
|
|
41
|
+
- sensitive file、workspace 外 symlink、non-regular path 和 stale revision 均 fail-closed;
|
|
42
|
+
- Git 只使用 argv 执行 bounded status/log/diff,不提供 checkout、reset、stage、commit 或 push;
|
|
43
|
+
- binary 文件只返回 metadata,文本和 Diff 采用 revision-bound 分页并在 Host 端脱敏;
|
|
44
|
+
- “发送到 Composer”只把用户选择的安全文本加入草稿,不直接修改文件。
|
|
45
|
+
|
|
46
|
+
## 真实终端
|
|
47
|
+
|
|
48
|
+
v0.3.1 terminal 是显式用户启动的真实本地 PTY,是高权限、非 durable 表面:
|
|
49
|
+
|
|
50
|
+
- 仅在 active workspace 启动,环境变量经过 allowlist/scrub;
|
|
51
|
+
- attach ticket 单次使用且短时有效,只能放在 WebSocket 首个 JSON 消息中;
|
|
52
|
+
- 刷新页面时,只要原 Host 仍存活可申请新 ticket 并按 sequence reconnect;
|
|
53
|
+
- 输出缓冲已经截断时返回明确 gap;不补造丢失字节;
|
|
54
|
+
- Host 重启后旧 terminal 显示 lost,不从 Session、日志或 snapshot 恢复;
|
|
55
|
+
- close、workspace switch 和 Host shutdown 会终止拥有的进程树。
|
|
56
|
+
|
|
57
|
+
terminal 字节不会进入 Workbench SSE、Thread transcript、diagnostics、release stdout/stderr 或持久设置。
|
|
58
|
+
|
|
59
|
+
## API 客户端变化
|
|
60
|
+
|
|
61
|
+
自定义 v0.3.0 Web 客户端升级时应改用
|
|
62
|
+
[`v0.3.1 OpenAPI`](../architecture/v0.3.1-web-api.yaml):
|
|
63
|
+
|
|
64
|
+
- active workspace/session/resource 请求携带 `workspaceId` 和 `expectedContextRevision`;
|
|
65
|
+
- mutation 的 `requestId` 是 UUID;session command 仍携带 `expectedSessionId`;
|
|
66
|
+
- 新增 Workspace registry/session summary、files、Git、review、terminal REST 资源;
|
|
67
|
+
- terminal 使用独立 `orion-terminal-v1` WebSocket,不能从 SSE 读取 terminal output;
|
|
68
|
+
- `workspace_resource_invalidated` 只提示按 revision 重取,不携带文件、Diff 或 terminal 内容。
|
|
69
|
+
|
|
70
|
+
不要在 409 后盲目重放旧 body;先获取新 bootstrap,确认用户仍希望对同一目标执行,再生成新的
|
|
71
|
+
context-bound mutation。只有 byte-equivalent body 才能复用原 requestId。
|
|
72
|
+
|
|
73
|
+
## 回滚到 v0.3.0
|
|
74
|
+
|
|
75
|
+
1. 关闭浏览器并停止 v0.3.1 Host,等待所有 terminal 进程退出;如有异常,先核对进程所有权再处理。
|
|
76
|
+
2. 保留一份 v0.3.1 WorkspaceRegistry/layout preference 备份以便排查;v0.3.0 不依赖这些数据。
|
|
77
|
+
3. 使用升级前备份恢复 `orion.json`(如果升级期间修改过 Settings)。
|
|
78
|
+
4. 安装并启动确切的 v0.3.0 artifact,再显式选择原 Workspace/Session。
|
|
79
|
+
5. 验证 Thread history、当前模型、Goal/Plan 和 pending approval;不要从 terminal 输出重建历史。
|
|
80
|
+
|
|
81
|
+
回滚不会自动恢复已关闭或 lost 的 terminal,也不应删除 v0.3.1 创建的项目文件。WorkspaceRegistry
|
|
82
|
+
和布局偏好不是 Session 权威源;旧版本忽略它们不代表数据被删除。
|
|
83
|
+
|
|
84
|
+
## 升级验证
|
|
85
|
+
|
|
86
|
+
按 [`v0.3.1 Web E2E 资格计划`](../test/v0.3.1-web-workbench-e2e-plan.md)执行
|
|
87
|
+
WEB31-P0-01..12。只有 source-clean exact-tarball、真实 Chrome、Node 22.12/24/26 和最终 receipt
|
|
88
|
+
均为 GO,才能把当前候选标记为发布完成。
|
package/docs/orion.example.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"id": "my-provider",
|
|
6
6
|
"displayName": "My OpenAI-compatible Provider",
|
|
7
7
|
"baseUrl": "https://your-endpoint.example/v1",
|
|
8
|
-
"apiKey": "
|
|
8
|
+
"apiKey": "$ORION_CODE_API_KEY",
|
|
9
9
|
"protocol": "openai-completions"
|
|
10
10
|
}
|
|
11
11
|
],
|
|
@@ -41,7 +41,14 @@
|
|
|
41
41
|
"allowedTools": [],
|
|
42
42
|
"projects": {
|
|
43
43
|
"/absolute/path/to/project": {
|
|
44
|
-
"compactInstructions": "Retain architecture decisions, failed verification, and release receipts."
|
|
44
|
+
"compactInstructions": "Retain architecture decisions, failed verification, and release receipts.",
|
|
45
|
+
"defaultEffort": "medium"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"web": {
|
|
49
|
+
"appearance": {
|
|
50
|
+
"theme": "system",
|
|
51
|
+
"motion": "system"
|
|
45
52
|
}
|
|
46
53
|
},
|
|
47
54
|
"ui": {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Orion Code v0.3.0 Node Runtime Compatibility Plan
|
|
2
|
+
|
|
3
|
+
> 状态:实现完成;本地候选兼容矩阵 `GO`,待 source-clean 发布门禁
|
|
4
|
+
> 基准日期:2026-08-28
|
|
5
|
+
> 目标:让源码构建、npm 安装包、CLI/TUI、Web Host、原生 SQLite 与发布证据在同一套明确的
|
|
6
|
+
> Node 版本合同下工作。
|
|
7
|
+
|
|
8
|
+
## 1. 支持范围
|
|
9
|
+
|
|
10
|
+
依据 Node.js 官方 [release schedule](https://github.com/nodejs/Release#release-schedule),本版本采用:
|
|
11
|
+
|
|
12
|
+
| Node 主版本 | v0.3.0 定位 | 最低版本 | 说明 |
|
|
13
|
+
| ----------- | ------------------------- | -------- | ------------------------------ |
|
|
14
|
+
| 22 | supported maintenance LTS | 22.12.0 | 受 Vite 7 工具链最低版本约束 |
|
|
15
|
+
| 24 | preferred LTS | 24.0.0 | 新生产安装的首选版本 |
|
|
16
|
+
| 26 | supported Current | 26.0.0 | 覆盖当前主流开发环境与 ABI 147 |
|
|
17
|
+
|
|
18
|
+
Node 21/23/25 等短生命周期奇数版本不进入发布承诺。`engines.node` 是安装合同,不能超前于
|
|
19
|
+
真实测试矩阵。Node 20 已结束上游维护,并且当前 `better-sqlite3@12.10.x`
|
|
20
|
+
不再提供 Node 20 预构建产物;因此它只属于历史证据,不属于 v0.3 的安装或发布合同。
|
|
21
|
+
|
|
22
|
+
## 2. 实现合同
|
|
23
|
+
|
|
24
|
+
1. `package.json` 与 `npm-shrinkwrap.json` 必须声明完全相同的 Node 范围。
|
|
25
|
+
2. dependency policy 必须在 22/24/26 上执行真实 `better-sqlite3` open、SQL query、
|
|
26
|
+
`sqlite-vec` load 与 `vec0` virtual table probe。
|
|
27
|
+
3. GitHub Actions 的 source build/test、exact-tarball runtime 和 critical Web E2E 三个矩阵都必须
|
|
28
|
+
包含三个版本,且不允许 skip 记为 pass。
|
|
29
|
+
4. Runtime/Web E2E/最终 ReleaseReceipt 必须要求三个 Node receipt 全部存在、全部为 `GO`,并绑定
|
|
30
|
+
同一个 tarball SHA、artifact receipt digest、runner digest 与 installed target digest。
|
|
31
|
+
5. 本地多版本验证必须使用隔离安装目录,不能用一个 Node 版本编译的 `node_modules` 冒充另一个 ABI。
|
|
32
|
+
6. CLI 的 `#!/usr/bin/env node` 启动方式保持版本管理器无关;产品代码不得硬编码某个 Node 安装路径。
|
|
33
|
+
|
|
34
|
+
## 3. 真实验收
|
|
35
|
+
|
|
36
|
+
对一次冻结的 `@orion-agents/orion-code@0.3.0` tarball,在 Node 22/24/26 分别执行:
|
|
37
|
+
|
|
38
|
+
- clean install,确认 npm engine 无拒绝;
|
|
39
|
+
- package identity、`orion --version`、`orion --help` 与公共 exports;
|
|
40
|
+
- `better-sqlite3`/`sqlite-vec` 原生语义探针;
|
|
41
|
+
- TUI、terminal、print、Web Host;
|
|
42
|
+
- Goal、subagent、Skill、MCP、Compact/resume 旅程;
|
|
43
|
+
- critical real-Chrome Web/Settings 旅程。
|
|
44
|
+
|
|
45
|
+
硬判定:任一版本缺失、跳过、ABI load 失败、receipt 未绑定同一 tarball,最终结果均为 `NO_GO`。
|
|
46
|
+
|
|
47
|
+
## 4. 回归门禁
|
|
48
|
+
|
|
49
|
+
- `npm run build`
|
|
50
|
+
- `npm test -- --coverage --runInBand`
|
|
51
|
+
- `npm run deps:check -- --policy-only`
|
|
52
|
+
- `npm run test:runtime-matrix`
|
|
53
|
+
- `npm run test:web-e2e:critical`
|
|
54
|
+
- receipt contract tests and workflow static checks
|
|
55
|
+
|
|
56
|
+
最终测试环境、精确 tarball SHA 与每个 Node receipt 写入独立测试报告;本计划不把意图或单版本成功
|
|
57
|
+
当作兼容性完成证据。
|