@orion-agents/orion-code 0.3.0 → 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 +42 -0
- package/README.md +24 -8
- package/README.zh-CN.md +23 -9
- 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/runtime/agent-runtime-controller.js +1 -2
- 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/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 +14 -1
- package/dist/runtime/legacy-thread-materializer.d.ts.map +1 -1
- package/dist/runtime/legacy-thread-materializer.js +44 -5
- package/dist/runtime/legacy-thread-materializer.js.map +1 -1
- package/dist/runtime/release-receipts.d.ts +6 -3
- package/dist/runtime/release-receipts.d.ts.map +1 -1
- package/dist/runtime/release-receipts.js +47 -4
- package/dist/runtime/release-receipts.js.map +1 -1
- package/dist/runtime/thread-event-store.d.ts +62 -9
- package/dist/runtime/thread-event-store.d.ts.map +1 -1
- package/dist/runtime/thread-event-store.js +363 -31
- package/dist/runtime/thread-event-store.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 +31 -13
- package/dist/runtime/thread-session-view.d.ts.map +1 -1
- package/dist/runtime/thread-session-view.js +116 -61
- package/dist/runtime/thread-session-view.js.map +1 -1
- package/dist/runtime/thread-ui-adapter.d.ts.map +1 -1
- package/dist/runtime/thread-ui-adapter.js +18 -58
- 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/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.map +1 -1
- package/dist/services/session-storage.js +3 -6
- package/dist/services/session-storage.js.map +1 -1
- 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/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 +4 -0
- package/dist/web/event-hub.d.ts.map +1 -1
- package/dist/web/event-hub.js +71 -11
- package/dist/web/event-hub.js.map +1 -1
- 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/protocol.d.ts +63 -1
- package/dist/web/protocol.d.ts.map +1 -1
- package/dist/web/protocol.js +22 -1
- package/dist/web/protocol.js.map +1 -1
- 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.map +1 -1
- package/dist/web/server.js +273 -27
- package/dist/web/server.js.map +1 -1
- 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 +48 -12
- package/dist/web/workbench-controller.d.ts.map +1 -1
- package/dist/web/workbench-controller.js +651 -158
- package/dist/web/workbench-controller.js.map +1 -1
- 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 +2 -2
- package/docs/architecture/v0.3.0-web-api.yaml +44 -13
- package/docs/architecture/v0.3.1-web-api.yaml +2290 -0
- package/docs/migration/v0.3.0-to-v0.3.1.md +88 -0
- package/docs/plan/v0.3.0-web-workbench-plan.md +58 -7
- package/docs/plan/v0.3.1-web-workbench-professional-shell-plan.md +848 -0
- package/docs/readme.md +10 -0
- package/docs/test/v0.3.1-web-workbench-e2e-plan.md +140 -0
- package/npm-shrinkwrap.json +185 -354
- package/package.json +16 -4
- package/dist/web-client/assets/index-BAEO71Gp.css +0 -1
- package/dist/web-client/assets/index-DSkFy7gM.js +0 -13
package/docs/readme.md
CHANGED
|
@@ -18,6 +18,16 @@ The repository release history is canonical in [`CHANGELOG.md`](../CHANGELOG.md)
|
|
|
18
18
|
link into the archive, but historical evidence is not moved back into `plan/` merely to satisfy an
|
|
19
19
|
old relative path.
|
|
20
20
|
|
|
21
|
+
## v0.3.1 candidate release set
|
|
22
|
+
|
|
23
|
+
- [Professional Web Workbench plan](plan/v0.3.1-web-workbench-professional-shell-plan.md)
|
|
24
|
+
- [v0.3.1 Web API contract](architecture/v0.3.1-web-api.yaml)
|
|
25
|
+
- [v0.3.1 real Web E2E qualification plan](test/v0.3.1-web-workbench-e2e-plan.md)
|
|
26
|
+
- [v0.3.0 to v0.3.1 migration and rollback](migration/v0.3.0-to-v0.3.1.md)
|
|
27
|
+
|
|
28
|
+
Candidate plans and contracts describe required behavior; they are not release evidence. A v0.3.1
|
|
29
|
+
GO still requires the source-clean exact-tarball receipts described by the E2E plan.
|
|
30
|
+
|
|
21
31
|
## v0.3.0 release set
|
|
22
32
|
|
|
23
33
|
- [Web Workbench development plan](plan/v0.3.0-web-workbench-plan.md)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Orion Code v0.3.1 Web Workbench E2E 资格计划
|
|
2
|
+
|
|
3
|
+
- 目标版本:`0.3.1`
|
|
4
|
+
- 状态:合同已冻结,真实 release evidence 待生成
|
|
5
|
+
- 权威场景目录:`src/runtime/release-receipts.ts`
|
|
6
|
+
- 证据组装器:`scripts/e2e/assemble-web-e2e-receipt.ts`
|
|
7
|
+
- 产品方案:[`v0.3.1 Web Workbench 专业工作台计划`](../plan/v0.3.1-web-workbench-professional-shell-plan.md)
|
|
8
|
+
- API 合同:[`v0.3.1 Local Web API`](../architecture/v0.3.1-web-api.yaml)
|
|
9
|
+
|
|
10
|
+
## 1. 准出结论边界
|
|
11
|
+
|
|
12
|
+
源码、单元测试或开发服务器通过都不是 v0.3.1 Web 发布证明。只有满足以下条件的
|
|
13
|
+
`WebE2EReleaseReceiptV1` 才可判定 GO:
|
|
14
|
+
|
|
15
|
+
1. 从 source-clean checkout 只构建一次 `@orion-agents/orion-code@0.3.1` tgz;
|
|
16
|
+
2. 三次 fresh primary run 和 Node 22.12.0、24.0.0、26.0.0 runtime run 全部安装同一个
|
|
17
|
+
`tarballSha256`,且 `installedTargetDigest` 相同;
|
|
18
|
+
3. 使用真实 Chrome、打包后的 `bin/orion`、真实 Host、真实 Git fixture 和真实 PTY;
|
|
19
|
+
4. primary run 完整执行 34 个场景,runtime run 执行冻结的 24 个 critical 场景;
|
|
20
|
+
5. 无 skip、expected-fail、自动 retry 或开发源码 fallback;
|
|
21
|
+
6. console error/warning、page error、HTTP 5xx、secret finding、evidence dropped event 均为 0;
|
|
22
|
+
7. WEB31 的结构化事实和 PNG 均存在、通过安全校验并进入 manifest digest;
|
|
23
|
+
8. runner name/image/digest、Chrome channel/version、Node/npm/platform/arch 全部写入 receipt。
|
|
24
|
+
|
|
25
|
+
当前 live v0.3.0 页面、开发机 `dist/` 或历史 receipt 只能作为诊断材料,不能替代本计划证据。
|
|
26
|
+
|
|
27
|
+
## 2. 场景目录
|
|
28
|
+
|
|
29
|
+
每个 Playwright 标题必须且只能包含一个场景 ID。Settings 标题继续包含 `@settings`;WEB31
|
|
30
|
+
通过 ID 原生识别,不依赖易漂移的 grep 标签。
|
|
31
|
+
|
|
32
|
+
| ID | 必须验证的真实旅程 | 必须写入的 WEB31 facts |
|
|
33
|
+
| ----------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
34
|
+
| WEB31-P0-01 | packaged bootstrap、至少三个项目可见、按需展开首个 Session page | `projects_visible>=3`、`lazy_session_page=true` |
|
|
35
|
+
| WEB31-P0-02 | 跨项目 Session 原子切换;命令只落目标 Session;陈旧 context guard 返回 409 且零副作用 | `context_target_verified=true`、`context_conflict_side_effects=0` |
|
|
36
|
+
| WEB31-P0-03 | 真实 Chrome 鼠标指针拖动右栏至 320/default/720,双击复位并刷新恢复 | `resize_input=mouse-pointer`、min/max、无 keyboard fine resize、desktop width preserved |
|
|
37
|
+
| WEB31-P0-04 | Agent 的 Goal、Plan、活动、能力、诊断和 Composer 旧能力无回归 | `agent_regression_verified=true` |
|
|
38
|
+
| WEB31-P0-05 | 文件树、文本分页、binary metadata、敏感文件和 symlink escape fail-closed | `file_security_verified=true` |
|
|
39
|
+
| WEB31-P0-06 | Git clean/dirty/staged/unstaged/untracked/conflict/log/detached | `git_state_matrix_verified=true` |
|
|
40
|
+
| WEB31-P0-07 | Review Diff;用户选中 hunk 并送入 Composer,浏览器不直接改文件 | `review_hunk_to_composer=true` |
|
|
41
|
+
| WEB31-P0-08 | 真实 PTY input/output/ANSI/resize/tab/close | `real_pty_verified=true` |
|
|
42
|
+
| WEB31-P0-09 | refresh reconnect、gap、Host restart 后 lost、关闭与 shutdown 无 orphan | `terminal_orphan_processes=0`、`terminal_restart_state=lost` |
|
|
43
|
+
| WEB31-P0-10 | SSE 与 terminal WS 并存;长输出不挤占对话流或进入 SSE | `sse_ws_isolated=true`、`transport_dropped_events=0` |
|
|
44
|
+
| WEB31-P0-11 | 1180/760/390/320 drawer、焦点归还、200% zoom、无水平溢出 | `responsive_focus_verified=true`、`horizontal_overflow=0` |
|
|
45
|
+
| WEB31-P0-12 | light/dark、reduced motion、axe、secret sentinel | `axe_blocking_violations=0`、`secret_findings=0`、`reduced_motion_verified=true` |
|
|
46
|
+
|
|
47
|
+
代码中的完整 fact key 以 `tests/e2e/scenarios.ts::WEB31_REQUIRED_EVIDENCE_FACTS_V1` 为准。
|
|
48
|
+
组装器拒绝缺失、错误类型或不满足阈值的值;不能用一个笼统的 `passed=true` 代替。
|
|
49
|
+
|
|
50
|
+
## 3. Critical 子集
|
|
51
|
+
|
|
52
|
+
Node 22.12/24/26 的 exact-tarball runtime 矩阵固定执行:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
E2E-P0-01..04
|
|
56
|
+
SET-P0-01..14
|
|
57
|
+
WEB31-P0-01, WEB31-P0-02, WEB31-P0-08, WEB31-P0-09, WEB31-P0-10, WEB31-P0-12
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
这 24 个场景覆盖 packaged bootstrap、原子 Context、完整 Settings、真实 PTY 生命周期与
|
|
61
|
+
重连、SSE/WS 隔离、无障碍和 secret 门禁。WEB31-P0-03..07、11 仍必须在三次 full primary
|
|
62
|
+
run 中执行,不得因未进入 Node runtime 子集而降级。
|
|
63
|
+
|
|
64
|
+
Critical grep 由 `WEB_E2E_CRITICAL_SCENARIOS_V1` 生成;package script 不接受调用者覆盖 grep,
|
|
65
|
+
防止 CLI 字符串与 receipt catalog 漂移。
|
|
66
|
+
|
|
67
|
+
## 4. Context、resize 与终端硬断言
|
|
68
|
+
|
|
69
|
+
### 4.1 Context guard
|
|
70
|
+
|
|
71
|
+
- active workspace/session/resource 请求携带当前 `workspaceId` 和 `expectedContextRevision`;
|
|
72
|
+
- mutation 还携带 UUID `requestId`,session command 继续携带 `expectedSessionId`;
|
|
73
|
+
- 陈旧 guard 精确返回 HTTP 409、`code=context_revision_conflict`;
|
|
74
|
+
- 失败请求不得激活 Runtime、读取另一 workspace、创建 PTY、写注册表或投递命令;
|
|
75
|
+
- E2E 在冲突前后比较 bootstrap/context revision、target Session transcript 和 terminal list。
|
|
76
|
+
|
|
77
|
+
### 4.2 Resize 与响应式
|
|
78
|
+
|
|
79
|
+
- 精细调宽由 IDE 式鼠标指针拖动验证;右栏 clamp 为 320–720px,双击恢复 420px;
|
|
80
|
+
- 不提供键盘逐像素调宽入口,键盘用户仍可展开、折叠和操作完整 drawer;
|
|
81
|
+
- `>1180px` 为 dock,`761–1180px` 为右 drawer,`<=760px` 为左右互斥 drawer;
|
|
82
|
+
- 自动进入 drawer 不得覆盖桌面宽度 preference,回到桌面后恢复;
|
|
83
|
+
- drawer 打开时主区 inert,Escape/close/scrim 关闭并把焦点归还触发器。
|
|
84
|
+
|
|
85
|
+
### 4.3 Terminal
|
|
86
|
+
|
|
87
|
+
- 只能由显式用户 gesture 创建;backend 必须是安装包中的真实 `node-pty`;
|
|
88
|
+
- WebSocket 子协议为 `orion-terminal-v1`,ticket 在首个 JSON 消息中发送,禁止 query string;
|
|
89
|
+
- ticket 单次使用、短时有效;过期/复用/错误 Origin/Host/subprotocol 均 fail-closed;
|
|
90
|
+
- reconnect 使用 sequence;gap 必须显式报告,不能伪装为连续;
|
|
91
|
+
- terminal bytes 不进入 SSE、Session snapshot、diagnostics、stdout/stderr evidence 或截图;
|
|
92
|
+
- close、workspace switch、Host shutdown 必须清理进程树,orphan count 为 0。
|
|
93
|
+
|
|
94
|
+
## 5. 截图与隐私证据
|
|
95
|
+
|
|
96
|
+
每个 SET/WEB31 场景至少写入一个 `screenshot.*` fact。值只能是场景目录内安全 basename
|
|
97
|
+
且扩展名为 `.png`。组装器拒绝绝对路径、`..`、子目录、symlink、非 regular file、错误 PNG
|
|
98
|
+
signature、零尺寸或超预算图片,并把 PNG SHA-256 纳入 run manifest digest。
|
|
99
|
+
|
|
100
|
+
截图必须裁剪到产品表面,终端场景只能显示无敏感信息的合成输出。以下内容不得出现:
|
|
101
|
+
|
|
102
|
+
- 绝对路径、用户名、Home 目录;
|
|
103
|
+
- provider key、Authorization、Cookie、terminal ticket;
|
|
104
|
+
- 原始 terminal 命令历史或真实项目内容;
|
|
105
|
+
- 外部 URL、邮件、账户或个人数据。
|
|
106
|
+
|
|
107
|
+
## 6. 执行与 receipt 组装
|
|
108
|
+
|
|
109
|
+
发布执行器应通过 CI 的 build-once artifact job 生成 tgz 和 artifact receipt,再把同一文件下载到
|
|
110
|
+
primary 与 Node runtime jobs。等价本地入口如下;路径由实际 artifact receipt 决定:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npm run release:artifact -- \
|
|
114
|
+
--out-dir .release/package \
|
|
115
|
+
--receipt .release/package/artifact.json
|
|
116
|
+
npm run test:web-e2e:primary -- \
|
|
117
|
+
--tarball .release/package/orion-code-0.3.1.tgz \
|
|
118
|
+
--receipt .release/package/artifact.json \
|
|
119
|
+
--chrome /absolute/path/to/google-chrome
|
|
120
|
+
npm run test:web-e2e:matrix -- \
|
|
121
|
+
--tarball .release/package/orion-code-0.3.1.tgz \
|
|
122
|
+
--receipt .release/package/artifact.json \
|
|
123
|
+
--chrome /absolute/path/to/google-chrome \
|
|
124
|
+
--node22 /absolute/path/to/node-22.12.0 \
|
|
125
|
+
--node24 /absolute/path/to/node-24.0.0 \
|
|
126
|
+
--node26 /absolute/path/to/node-26.0.0
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
随后用三个 primary manifests、三个 runtime manifests 和同一个 artifact receipt 运行
|
|
130
|
+
`npm run release:web-e2e-receipt`。最终 release receipt 必须强绑定 Web receipt digest,不能手工
|
|
131
|
+
复制 decision 或只记录文件名。
|
|
132
|
+
|
|
133
|
+
## 7. 失败处理
|
|
134
|
+
|
|
135
|
+
- 任一 ID 缺失、重复、乱序或出现额外 ID:NO_GO;
|
|
136
|
+
- skip、expected-fail、retry 后成功:仍无 fresh 资格证据,NO_GO;
|
|
137
|
+
- 任一 Node line clean install/native PTY 失败:NO_GO,不降级为伪终端;
|
|
138
|
+
- screenshot/fact/runner identity/Chrome identity 缺失或被替换:NO_GO;
|
|
139
|
+
- context guard 有副作用、terminal orphan 非零、axe/secret/dropped 非零:NO_GO;
|
|
140
|
+
- 修复后必须从同一 source-clean commit 重建新的 exact tgz,并重新生成全部相关 evidence。
|