@feng0531/dsh-execution-bus 0.12.0 → 1.0.0
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 +47 -264
- package/cordis.patch.yml +1 -1
- package/dist/error-codes.d.ts +14 -0
- package/dist/error-codes.js +15 -0
- package/dist/mode.d.ts +2 -2
- package/dist/mode.js +7 -7
- package/dist/plugin.d.ts +2 -6
- package/dist/plugin.js +28 -232
- package/dist/preset.d.ts +1 -1
- package/dist/preset.js +4 -6
- package/dist/product.d.ts +91 -195
- package/dist/product.js +66 -146
- package/dist/runtime/executor.d.ts +18 -0
- package/dist/runtime/executor.js +239 -0
- package/dist/runtime/plan.d.ts +30 -0
- package/dist/runtime/plan.js +185 -0
- package/dist/runtime/service.d.ts +66 -0
- package/dist/runtime/service.js +185 -0
- package/dist/runtime/store.d.ts +45 -0
- package/dist/runtime/store.js +102 -0
- package/docs/DECLARATIVE-RUNTIME.md +44 -0
- package/docs/FLOW-TEST.md +7 -54
- package/docs/INTEGRATION.md +4 -2
- package/docs/OPTIMIZATION.md +2 -0
- package/docs/PRODUCT.md +15 -40
- package/docs/RETROSPECTIVE.md +51 -0
- package/docs/host-compatibility.md +11 -74
- package/docs/protocol.md +27 -120
- package/docs/releases/0.11.1.md +2 -0
- package/docs/releases/0.12.1.md +30 -0
- package/docs/releases/1.0.0.md +33 -0
- package/docs/validation.md +23 -61
- package/package.json +4 -6
- package/dist/bus.d.ts +0 -148
- package/dist/bus.js +0 -773
- package/dist/diagnostics.d.ts +0 -41
- package/dist/diagnostics.js +0 -32
- package/dist/execution.d.ts +0 -70
- package/dist/execution.js +0 -193
- package/dist/handlers.d.ts +0 -25
- package/dist/handlers.js +0 -194
- package/dist/json.d.ts +0 -4
- package/dist/json.js +0 -46
- package/dist/limits.d.ts +0 -20
- package/dist/limits.js +0 -23
- package/dist/protocol.d.ts +0 -62
- package/dist/protocol.js +0 -54
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feng0531/dsh-execution-bus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -12,11 +12,10 @@
|
|
|
12
12
|
"type": "git",
|
|
13
13
|
"url": "git+https://github.com/f-e-n-g-0531/dsh-execution-bus.git"
|
|
14
14
|
},
|
|
15
|
-
"description": "萧何 / Xiao He:
|
|
15
|
+
"description": "萧何 / Xiao He: declarative runtime for DSH agent tool plans (DAG execution, retries, persistence, recovery)",
|
|
16
16
|
"main": "dist/plugin.js",
|
|
17
17
|
"exports": {
|
|
18
18
|
".": "./dist/plugin.js",
|
|
19
|
-
"./core": "./dist/bus.js",
|
|
20
19
|
"./mode": "./dist/mode.js",
|
|
21
20
|
"./test-mode": "./dist/mode.js",
|
|
22
21
|
"./preset": "./dist/preset.js"
|
|
@@ -38,11 +37,11 @@
|
|
|
38
37
|
"node": ">=22"
|
|
39
38
|
},
|
|
40
39
|
"scripts": {
|
|
41
|
-
"build": "tsc",
|
|
40
|
+
"build": "node scripts/clean-dist.mjs && tsc",
|
|
42
41
|
"test": "npm run build && node --test test/*.test.mjs",
|
|
43
42
|
"pack": "npm pack",
|
|
44
43
|
"check": "npm test",
|
|
45
|
-
"test:flow": "npm run build && node --test test/
|
|
44
|
+
"test:flow": "npm run build && node --test test/runtime-tools.test.mjs test/runtime-executor.test.mjs",
|
|
46
45
|
"prepack": "npm run check && npm run verify:package",
|
|
47
46
|
"verify:package": "node scripts/verify-package.mjs",
|
|
48
47
|
"test:install": "node scripts/test-install.mjs",
|
|
@@ -54,7 +53,6 @@
|
|
|
54
53
|
"@deepseek-ai/cordis": "~4.0.4",
|
|
55
54
|
"@deepseek-ai/cordis-plugin-include": "~1.0.9",
|
|
56
55
|
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2",
|
|
57
|
-
"@deepseek-ai/dsh-jobs": "0.2.1-rc.2",
|
|
58
56
|
"@deepseek-ai/dsh-scope": "0.2.1-rc.2",
|
|
59
57
|
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2",
|
|
60
58
|
"@deepseek-ai/dsh-tools": "0.2.1-rc.2"
|
package/dist/bus.d.ts
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { object, parse } from "./protocol.js";
|
|
2
|
-
import type { Capability, Event, Handler, Message, Owner, RecordView, State } from "./protocol.js";
|
|
3
|
-
export { object, parse };
|
|
4
|
-
export type { Capability, Event, Handler, Message, Owner, RecordView, State };
|
|
5
|
-
export interface AdmissionPolicy {
|
|
6
|
-
sessionQueueLimit?: number;
|
|
7
|
-
maxQueueWaitMs?: number;
|
|
8
|
-
}
|
|
9
|
-
export interface SchedulerPolicy {
|
|
10
|
-
/** Handler.queue → 类别优先级(数值越小越先出队)。 */
|
|
11
|
-
queueClassOrder?: Readonly<Record<string, number>>;
|
|
12
|
-
/** 等待多久提升一级(最多提升两级)。 */
|
|
13
|
-
queueAgingMs?: number;
|
|
14
|
-
/** 运行超过该阈值时在状态快照标记 longRunning。 */
|
|
15
|
-
longRunningMs?: number;
|
|
16
|
-
}
|
|
17
|
-
/** Volatile single-process bus; no acceptance durability or automatic execution retry. */
|
|
18
|
-
export declare class ExecutionBus {
|
|
19
|
-
readonly options: {
|
|
20
|
-
concurrency: number;
|
|
21
|
-
queueLimit: number;
|
|
22
|
-
recordLimit: number;
|
|
23
|
-
resultBytes: number;
|
|
24
|
-
retentionMs: number;
|
|
25
|
-
};
|
|
26
|
-
readonly admission: AdmissionPolicy;
|
|
27
|
-
readonly scheduler: Readonly<Required<SchedulerPolicy>>;
|
|
28
|
-
private entries;
|
|
29
|
-
private handlers;
|
|
30
|
-
private queue;
|
|
31
|
-
private readyOwners;
|
|
32
|
-
private running;
|
|
33
|
-
private runningByHandler;
|
|
34
|
-
/** 资源键 → 占用它的运行中 Entry;有副作用 Handler 据此互斥。 */
|
|
35
|
-
private resourceLocks;
|
|
36
|
-
/** payload 指纹 → 已成功或运行中的 Entry,用于唯一任务复用。 */
|
|
37
|
-
private dedupeIndex;
|
|
38
|
-
private retainedResultBytes;
|
|
39
|
-
private closed;
|
|
40
|
-
private telemetry;
|
|
41
|
-
diagnostics(): {
|
|
42
|
-
phase: "open" | "cancelling" | "draining" | "closed";
|
|
43
|
-
queued: number;
|
|
44
|
-
running: number;
|
|
45
|
-
records: number;
|
|
46
|
-
retainedResultBytes: number;
|
|
47
|
-
counts: {
|
|
48
|
-
accepted?: number | undefined;
|
|
49
|
-
started?: number | undefined;
|
|
50
|
-
cancel_requested?: number | undefined;
|
|
51
|
-
terminal?: number | undefined;
|
|
52
|
-
returned?: number | undefined;
|
|
53
|
-
job_created?: number | undefined;
|
|
54
|
-
job_released?: number | undefined;
|
|
55
|
-
job_error?: number | undefined;
|
|
56
|
-
reused?: number | undefined;
|
|
57
|
-
unique_reused?: number | undefined;
|
|
58
|
-
};
|
|
59
|
-
traces: {
|
|
60
|
-
operation: number;
|
|
61
|
-
stage: import("./diagnostics.js").TraceStage;
|
|
62
|
-
elapsedMs: number;
|
|
63
|
-
}[];
|
|
64
|
-
};
|
|
65
|
-
private closing?;
|
|
66
|
-
private shutdownPhase;
|
|
67
|
-
constructor(options?: {
|
|
68
|
-
concurrency: number;
|
|
69
|
-
queueLimit: number;
|
|
70
|
-
recordLimit: number;
|
|
71
|
-
resultBytes: number;
|
|
72
|
-
retentionMs: number;
|
|
73
|
-
}, admission?: AdmissionPolicy, scheduler?: Readonly<Required<SchedulerPolicy>>);
|
|
74
|
-
register(name: string, handler: Handler): () => void;
|
|
75
|
-
private key;
|
|
76
|
-
private emit;
|
|
77
|
-
private view;
|
|
78
|
-
private get;
|
|
79
|
-
sweep(now?: number): void;
|
|
80
|
-
submit(owner: Owner, raw: unknown, onEvent?: (e: Event) => void, invoke?: Capability): {
|
|
81
|
-
accepted: Event;
|
|
82
|
-
done: Promise<RecordView>;
|
|
83
|
-
/** 本次附着是否复用已有逻辑执行(结果标记可见性用)。 */
|
|
84
|
-
reused: boolean;
|
|
85
|
-
/** 当前快照:供仅在停止等待时使用,不改变交付标记。 */
|
|
86
|
-
snapshot: () => RecordView;
|
|
87
|
-
cancel: () => void;
|
|
88
|
-
detach: () => void;
|
|
89
|
-
returned: () => void;
|
|
90
|
-
};
|
|
91
|
-
/** 校验并拆解 request 的 payload,返回 handler 名、入参与原文。 */
|
|
92
|
-
private requestParts;
|
|
93
|
-
/** 同一 requestId 的重复提交:校验一致性后复用执行或结果。 */
|
|
94
|
-
private reuseInvocation;
|
|
95
|
-
/** 受理全新请求:校验 Handler、检查容量、构建记录并入队。 */
|
|
96
|
-
private admitInvocation;
|
|
97
|
-
/** 若启用了排队期限,登记到期结算为 QUEUE_WAIT_TIMEOUT 的计时器。 */
|
|
98
|
-
private scheduleQueueDeadline;
|
|
99
|
-
/** 计算并校验 Handler 的资源键;失败则请求不进入队列。 */
|
|
100
|
-
private resourcesFor;
|
|
101
|
-
/** 唯一任务命中已成功终态时,构造一个不再执行 Handler 的只读结果记录。 */
|
|
102
|
-
private syntheticUnique;
|
|
103
|
-
private releaseResources;
|
|
104
|
-
/** 是否有空闲槽位供此 Entry 开始执行(Handler 舱壁 + 资源互斥)。 */
|
|
105
|
-
private eligible;
|
|
106
|
-
/** 类别优先级 + 等待老化:分数越低越先出队,长时间等待会逐步压过类别差异。 */
|
|
107
|
-
private effectivePriority;
|
|
108
|
-
/** 对已到期的排队任务结算 QUEUE_WAIT_TIMEOUT,再从队列移除。 */
|
|
109
|
-
private expireQueued;
|
|
110
|
-
private attachment;
|
|
111
|
-
command(owner: Owner, raw: unknown): RecordView;
|
|
112
|
-
private removeQueued;
|
|
113
|
-
/** Trusted host owner required. Never exposes other sessions or business payloads. */
|
|
114
|
-
inspect(owner: Owner): {
|
|
115
|
-
phase: "open" | "cancelling" | "draining" | "closed";
|
|
116
|
-
policy: {
|
|
117
|
-
sessionQueueLimit?: number;
|
|
118
|
-
maxQueueWaitMs?: number;
|
|
119
|
-
};
|
|
120
|
-
counts: {
|
|
121
|
-
queued: number;
|
|
122
|
-
running: number;
|
|
123
|
-
terminal: number;
|
|
124
|
-
};
|
|
125
|
-
tasks: {
|
|
126
|
-
requestId: string;
|
|
127
|
-
state: State;
|
|
128
|
-
delivery: "returned" | "pending";
|
|
129
|
-
cancelRequested: boolean;
|
|
130
|
-
error: string | null;
|
|
131
|
-
progress: number | null;
|
|
132
|
-
waitReason: string | null;
|
|
133
|
-
longRunning: boolean;
|
|
134
|
-
phase: string;
|
|
135
|
-
queueMs: number;
|
|
136
|
-
runMs: number;
|
|
137
|
-
remainingQueueMs: number | null;
|
|
138
|
-
}[];
|
|
139
|
-
truncated: boolean;
|
|
140
|
-
};
|
|
141
|
-
private cancel;
|
|
142
|
-
private finish;
|
|
143
|
-
/** 按会话轮转选择下一个可执行项:会话内按类别优先级 + 老化,跨会话公平。 */
|
|
144
|
-
private nextQueuedIndex;
|
|
145
|
-
private pump;
|
|
146
|
-
private run;
|
|
147
|
-
close(): Promise<void>;
|
|
148
|
-
}
|