@feng0531/dsh-execution-bus 0.2.2 → 0.2.4
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 +7 -5
- package/cordis.patch.yml +2 -2
- package/dist/bus.js +4 -1
- package/dist/json.js +2 -0
- package/dist/plugin.js +2 -2
- package/dist/test-mode.js +2 -2
- package/docs/protocol.md +2 -2
- package/docs/releases/0.2.3.md +13 -0
- package/docs/releases/0.2.4.md +14 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 萧何 / Xiao He
|
|
2
2
|
|
|
3
3
|
**让模型发出一次执行请求,由程序负责排队、等待和收取结果。**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
“萧何”是产品与模式显示名,执行总线是其技术功能;不新增人物 Agent,不进行角色扮演。仓库 dsh-execution-bus、npm 包名、execution_bus 工具名及 execution-bus-test 预设 ID 保持不变。历史版本发布说明保留当时名称。
|
|
6
|
+
|
|
7
|
+
DSH 独立插件:`@feng0531/dsh-execution-bus` · 当前版本 **0.2.4**
|
|
6
8
|
|
|
7
9
|
> 当前是早期可运行版本,不是完整生产验收版。已验证真实 DSH 组件和脚本模型驱动的内存会话;真实模型、桌面界面和 PTC 完整链路尚未验收。**不支持重启后恢复任务。**
|
|
8
10
|
|
|
@@ -81,7 +83,7 @@ flowchart TD
|
|
|
81
83
|
|
|
82
84
|
## 在 Agent 预设中选择测试模式
|
|
83
85
|
|
|
84
|
-
从 0.2.0 起,包内提供标准 DSH bundle patch。通过宿主正常加载这个 bundle 后,设置 → Agent 预设 →
|
|
86
|
+
从 0.2.0 起,包内提供标准 DSH bundle patch。通过宿主正常加载这个 bundle 后,设置 → Agent 预设 → **自定义**区域会收到“萧何 / Xiao He”预设定义;选择它创建一个新测试会话。不要把它设成默认,也不要修改正在使用的普通会话。宿主一般只允许空白会话切换预设。
|
|
85
87
|
|
|
86
88
|
该预设只在自己的作用域注册 execution_bus,使用原生工具调用,不改其他会话的 PTC 模式。它没有 shell 行;宿主文件工具套件会声明 read/write/edit 等工具,但测试模式的执行 guard 只允许总线、read 和 Job 控制,写入/编辑即使可见也会拒绝。它不是进程级沙箱,读取边界仍由宿主权限决定;同一测试预设的会话共享有界队列容量,但请求结果按会话隔离。
|
|
87
89
|
|
|
@@ -100,7 +102,7 @@ flowchart TD
|
|
|
100
102
|
2. 在你选定的隔离 DSH 配置依赖目录安装固定版本,不要在 DSH 程序安装目录执行:
|
|
101
103
|
|
|
102
104
|
```powershell
|
|
103
|
-
npm install --ignore-scripts @feng0531/dsh-execution-bus@0.2.
|
|
105
|
+
npm install --ignore-scripts @feng0531/dsh-execution-bus@0.2.4
|
|
104
106
|
```
|
|
105
107
|
|
|
106
108
|
这是 npm 目录示例。若目标配置使用 pnpm,应沿用其包管理器,不混用锁文件。遇到宿主 peer 版本冲突就停止,不用强制安装绕过。
|
|
@@ -229,7 +231,7 @@ npm run test:install # 临时目录安装,不操作日常 DSH
|
|
|
229
231
|
|
|
230
232
|
- [协议和投递语义](<docs/protocol.md>):字段、状态、重复处理与取消规则。
|
|
231
233
|
- [宿主兼容性与源码调用链](<docs/host-compatibility.md>):为什么可以等待,为什么不能跨重启恢复。
|
|
232
|
-
- [验证记录](<docs/validation.md>)、[0.2.
|
|
234
|
+
- [验证记录](<docs/validation.md>)、[0.2.4 发布说明](<docs/releases/0.2.4.md>):已验证与未验证范围。
|
|
233
235
|
- [维护者发布流程](<docs/RELEASING.md>):标签 CI、安装包校验与正式发布门禁。
|
|
234
236
|
|
|
235
237
|
## 许可
|
package/cordis.patch.yml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
name: '@deepseek-ai/dsh-agent-preset'
|
|
5
5
|
config:
|
|
6
6
|
id: execution-bus-test
|
|
7
|
-
name:
|
|
7
|
+
name: 萧何 / Xiao He
|
|
8
8
|
description: 独立执行模式:请求排队、异步等待、进度和取消;当前支持受控验证与只读文件。不修改默认模式,禁止命令和写入执行;不支持重启恢复。
|
|
9
9
|
order: 20
|
|
10
10
|
plugins:
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
name: '@deepseek-ai/dsh-persona'
|
|
13
13
|
config:
|
|
14
14
|
prefix: >-
|
|
15
|
-
|
|
15
|
+
你正在萧何模式中;这是执行请求协调模式,不是人物角色扮演。只使用 execution_bus、只读文件和任务控制工具。
|
|
16
16
|
请求只提交一次并等待结果,不循环查询进度;同一逻辑操作重发沿用 requestId。
|
|
17
17
|
默认先用 test Handler 做延迟成功、失败和取消测试,读取真实文件须有用户要求。
|
|
18
18
|
cancelRequested 不代表已取消,unknown 不代表执行失败。禁止声称跨重启恢复或完整模型性能提升。
|
package/dist/bus.js
CHANGED
|
@@ -98,7 +98,10 @@ export class ExecutionBus {
|
|
|
98
98
|
};
|
|
99
99
|
for (const f of e.listeners)
|
|
100
100
|
try {
|
|
101
|
-
|
|
101
|
+
// Observe promise rejection without awaiting or blocking task settlement.
|
|
102
|
+
void Promise.resolve(f(event)).catch(() => {
|
|
103
|
+
/* Async observers are best-effort; never leak their error text. */
|
|
104
|
+
});
|
|
102
105
|
}
|
|
103
106
|
catch {
|
|
104
107
|
/* Observers cannot alter execution. */
|
package/dist/json.js
CHANGED
|
@@ -13,6 +13,8 @@ export function assertJson(value, depth = 0, active = new Set(), budget = { left
|
|
|
13
13
|
if (active.has(value))
|
|
14
14
|
throw Error("CYCLIC_JSON");
|
|
15
15
|
const array = Array.isArray(value);
|
|
16
|
+
if (array && Object.getPrototypeOf(value) !== Array.prototype)
|
|
17
|
+
throw Error("INVALID_JSON_ARRAY");
|
|
16
18
|
if (!array &&
|
|
17
19
|
Object.getPrototypeOf(value) !== Object.prototype &&
|
|
18
20
|
Object.getPrototypeOf(value) !== null)
|
package/dist/plugin.js
CHANGED
|
@@ -15,7 +15,7 @@ export function apply(ctx) {
|
|
|
15
15
|
});
|
|
16
16
|
ctx.tools.register({
|
|
17
17
|
name: "execution_bus",
|
|
18
|
-
description: "
|
|
18
|
+
description: "萧何 / Xiao He. Submit a version 1 request and WAIT for its terminal result in this tool call. Reuse requestId only for the same logical operation. Handlers: test {delayMs:0..30000,fail:boolean}, host.read {file_path,offset?,limit?<=100}. Control types status/result/cancel use empty payload. Acceptance is volatile, not execution success. No polling needed; no restart resume.",
|
|
19
19
|
parameters: {
|
|
20
20
|
type: "object",
|
|
21
21
|
additionalProperties: false,
|
|
@@ -76,7 +76,7 @@ export function apply(ctx) {
|
|
|
76
76
|
try {
|
|
77
77
|
const job = ctx.jobs.start({
|
|
78
78
|
kind: "execution-bus",
|
|
79
|
-
label: "
|
|
79
|
+
label: "萧何 / Xiao He",
|
|
80
80
|
owner: exec.agent.id,
|
|
81
81
|
run(h) {
|
|
82
82
|
handle = h;
|
package/dist/test-mode.js
CHANGED
|
@@ -5,7 +5,7 @@ export const inject = ["tools", "jobs"];
|
|
|
5
5
|
/** Must be mounted inside the host's preset scope, never in the global composition. */
|
|
6
6
|
export function apply(ctx) {
|
|
7
7
|
if (scopeOf(ctx) === undefined)
|
|
8
|
-
throw Error("
|
|
8
|
+
throw Error("Xiao He mode requires an Agent preset scope");
|
|
9
9
|
ctx.tools.presentAs("native");
|
|
10
10
|
const allowed = new Set([
|
|
11
11
|
"execution_bus",
|
|
@@ -19,6 +19,6 @@ export function apply(ctx) {
|
|
|
19
19
|
// Restriction filters inherited tools; a guard also fences tools registered by sibling preset rows.
|
|
20
20
|
ctx.tools.guard((exec) => allowed.has(exec.name)
|
|
21
21
|
? undefined
|
|
22
|
-
: "
|
|
22
|
+
: "Xiao He mode allows only bus, read and job controls");
|
|
23
23
|
applyBus(ctx);
|
|
24
24
|
}
|
package/docs/protocol.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 输入
|
|
4
4
|
|
|
5
|
-
严格无损 JSON,最大 16 KiB,不接受额外顶层字段。JSON 值最大深度 64、访问节点最多 65536;拒绝非有限数字、负零、undefined
|
|
5
|
+
严格无损 JSON,最大 16 KiB,不接受额外顶层字段。JSON 值最大深度 64、访问节点最多 65536;拒绝非有限数字、负零、undefined、函数、符号、稀疏数组、访问器属性、特殊对象和循环引用;数组只接受当前运行域的原生 Array.prototype,拒绝数组子类、自定义原型及跨域数组。messageId / requestId 为 1–128 位字母、数字、下划线、点、冒号或短横线。
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
type 为 request 时 payload 为 {handler,input};type 为 status / result / cancel 时 payload 必须为 {}。不支持其他类型或版本。sessionId、权限、工作目录不能出现在输入中,可信归属只能由宿主工具上下文绑定。
|
|
@@ -16,7 +16,7 @@ type 为 request 时 payload 为 {handler,input};type 为 status / result / ca
|
|
|
16
16
|
|
|
17
17
|
核心 submit 返回 accepted 事件和 done Promise。受理只意味着已进入内存记录和队列,durable:false;不是成功。事件包含 protocolVersion、messageId、requestId、correlationId(首次请求 messageId)、sequence、type、payload。每请求 sequence 单调递增,accepted 是当前序号的快照,不占新增序号。
|
|
18
18
|
|
|
19
|
-
事件类型:accepted、started、progress、cancel_requested、succeeded、failed、cancelled、unknown。进度只接受 Handler 正整数序号递增的百分比,重复、乱序、终态后进度丢弃。进程内投递,无外部消息接收端,也不支持任意远端终态注入;终态只由总线持有的执行 Promise
|
|
19
|
+
事件类型:accepted、started、progress、cancel_requested、succeeded、failed、cancelled、unknown。进度只接受 Handler 正整数序号递增的百分比,重复、乱序、终态后进度丢弃。进程内投递,无外部消息接收端,也不支持任意远端终态注入;终态只由总线持有的执行 Promise 结算。观察者是最佳努力通知:同步抛错及异步 Promise 拒绝均被隔离,不记录异常原文;不等待观察者完成,不保证关闭前异步通知已经完成,观察者须自行管理资源。
|
|
20
20
|
|
|
21
21
|
工具的 request 保持 pending,最终返回 RecordView(requestId,state,sequence,cancelRequested,delivery,result?,error?,progress?);status/result/cancel 返回同一种当前快照。工具不会提前返回 accepted 或 taskId,也不会用聊天进度消息唤醒模型。Job 的 UI progress 只含状态/百分比。
|
|
22
22
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 萧何 / Xiao He 0.2.3
|
|
2
|
+
|
|
3
|
+
## 名称统一
|
|
4
|
+
|
|
5
|
+
统一当前产品显示名为“萧何 / Xiao He”,覆盖 Agent 预设卡片、工具说明、任务标签、模式提示、README、npm 描述和新 GitHub Release 标题。“执行总线”保留为技术功能描述,不代表新增人物 Agent 或角色扮演能力。
|
|
6
|
+
|
|
7
|
+
兼容标识不变:仓库 dsh-execution-bus、包 @feng0531/dsh-execution-bus、工具 execution_bus、预设 execution-bus-test 和 /test-mode 导出不变。历史版本发布说明与许可证标题保留原始名称及条款。
|
|
8
|
+
|
|
9
|
+
## 验证与限制
|
|
10
|
+
|
|
11
|
+
本版只调整名称和文字,不混入已审核但尚未修复的异步观察者异常隔离、数组子类 JSON 保真问题。它们仍影响 core 扩展边界,不能将更名称为缺陷已修复。全量回归、预设隔离、标签四矩阵、包校验和同包安装按既有门禁执行。
|
|
12
|
+
|
|
13
|
+
实际桌面未安装,不保证当前界面立即出现卡片;用户已选择只发布暂不安装。真实模型、桌面 GUI 和 PTC 全链路仍未验收,不支持跨重启恢复。非商业源码公开许可,不自动安装或重启 DSH。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 萧何 / Xiao He 0.2.4
|
|
2
|
+
|
|
3
|
+
## BUG 修复
|
|
4
|
+
|
|
5
|
+
- 隔离事件观察者返回 Promise 的异步拒绝,避免异步日志/通知回调形成未处理 rejection 并导致进程退出。通知不阻塞执行或终态结算,不将观察者异常原文写入日志。
|
|
6
|
+
- 严格 JSON 校验补齐数组原型检查,拒绝数组子类和自定义原型,避免继承的 toJSON 改写结果后仍报告成功。原生数组保持可用;core 跨运行域数组需先转换为当前运行域原生 JSON 数据。
|
|
7
|
+
|
|
8
|
+
## 验证
|
|
9
|
+
|
|
10
|
+
新增三项回归:严格 unhandled-rejections 子进程中异步观察者拒绝不退出、数组子类/自定义原型拒绝且序列化钩子不执行、原生数组结果完整保存。修复前两个缺陷测试失败,修复后全量测试及标签四矩阵发布门禁验证。
|
|
11
|
+
|
|
12
|
+
## 使用边界
|
|
13
|
+
|
|
14
|
+
本版不增加执行能力,保留萧何名称及所有技术标识。观察者通知为最佳努力,不等待异步通知完成;观察者自己的资源仍应自行管理。真实模型、GUI、PTC 完整链路未验收;不支持跨重启恢复。非商业源码公开许可,发布不自动安装或重启 DSH。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feng0531/dsh-execution-bus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"type": "git",
|
|
13
13
|
"url": "git+https://github.com/f-e-n-g-0531/dsh-execution-bus.git"
|
|
14
14
|
},
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "萧何 / Xiao He: execution bus, bounded DSH handler dispatch with original-call waiting",
|
|
16
16
|
"main": "dist/plugin.js",
|
|
17
17
|
"exports": {
|
|
18
18
|
".": "./dist/plugin.js",
|