dsh-embedded-workbench 0.9.8 → 0.9.9
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.en-US.md +1 -1
- package/README.md +1 -1
- package/lib/types/index.d.ts +56 -59
- package/package.json +11 -10
- package/src/index.ts +1 -1
package/README.en-US.md
CHANGED
|
@@ -214,7 +214,7 @@ Skills are invoked with `$skill-name`. ZCode also auto-discovers from `.claude/s
|
|
|
214
214
|
## Requirements
|
|
215
215
|
|
|
216
216
|
- Host: Claude Code v2.1+ / Codex CLI latest / Cursor 2.5+ / Kimi CLI latest / OpenCode latest / ZCode 3.0+
|
|
217
|
-
- DeepSeek Harness (dsh): dev preview, declared support for `>= 0.1.0-rc.7`. The latest round measured install, mount, boot, gate injection and uninstall on 0.2.2-rc.1 and 0.2.2-alpha.3
|
|
217
|
+
- DeepSeek Harness (dsh): dev preview, declared support for `>= 0.1.0-rc.7`. The latest round measured install, mount, boot, gate injection and uninstall on 0.2.2-rc.3. The earlier round measured 0.2.2-rc.1 and 0.2.2-alpha.3, and before that 0.1.5-rc.2 through 0.2.1-rc.5. Per-release evidence is in [DSH-COMPATIBILITY.md](DSH-COMPATIBILITY.md).
|
|
218
218
|
- The Web Plugins-page "Gate injection" switch requires **dsh ≥ 0.1.7-alpha.1**, because its settings service must be able to project live fields. On older dsh the plugin and its skills still load and still inject. The switch is simply absent, with no error.
|
|
219
219
|
- No external dependencies.
|
|
220
220
|
|
package/README.md
CHANGED
|
@@ -214,7 +214,7 @@ cp -r embedded-workbench/skills/* .zcode/skills/
|
|
|
214
214
|
## 依赖
|
|
215
215
|
|
|
216
216
|
- 宿主:Claude Code v2.1+ / Codex CLI 最新版 / Cursor 2.5+ / Kimi CLI 最新版 / OpenCode 最新版 / ZCode 3.0+
|
|
217
|
-
- DeepSeek Harness (dsh):dev preview,声明支持 `>= 0.1.0-rc.7`。最新一轮在 0.2.2-rc.1 与 0.2.2-alpha.3
|
|
217
|
+
- DeepSeek Harness (dsh):dev preview,声明支持 `>= 0.1.0-rc.7`。最新一轮在 0.2.2-rc.3 上实测了安装、挂载、启动、门禁注入与卸载;更早一轮覆盖 0.2.2-rc.1 与 0.2.2-alpha.3,再往前到 0.1.5-rc.2。逐版本证据见 [DSH-COMPATIBILITY.md](DSH-COMPATIBILITY.md)。
|
|
218
218
|
- Web 端的「Gate 注入」开关需要 **dsh ≥ 0.1.7-alpha.1**,因为设置服务必须能投影即时字段。更早的 dsh 上插件与技能照常加载、照常注入,只是开关不出现,也不报错。
|
|
219
219
|
- 无外部依赖。
|
|
220
220
|
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,59 +1,56 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* embedded-workbench — DeepSeek Harness native plugin for the Embedded
|
|
3
|
-
* Workbench toolbox. The 8 skills ship in this package's `skills/` directory
|
|
4
|
-
* and are registered at apply time into dsh's `ctx.skills` registry through
|
|
5
|
-
* the standard filesystem provider, so they appear in every session catalog
|
|
6
|
-
* without a manual copy step. The plugin also folds a short gate text into the
|
|
7
|
-
* first model step of every agent session, mirroring the SessionStart hook the
|
|
8
|
-
* Claude Code plugin installs.
|
|
9
|
-
*
|
|
10
|
-
* Injection listens on agent/pre-step and appends the gate to the FIRST
|
|
11
|
-
* model step that runs, once per session (guarded by the session's durable
|
|
12
|
-
* history). Session-start inbox injection was dropped: a blank-session preset
|
|
13
|
-
* switch (agentPreset.select -> recompose) can clear the inbox before the
|
|
14
|
-
* first step, losing the gate for the whole session. The pre-step decision is
|
|
15
|
-
* the durable path - anchored/bootstrap presets that strip first-step injected
|
|
16
|
-
* reminders (skill catalog, AGENTS.md, gate plugins) simply defer this message
|
|
17
|
-
* to the first step after their promotion, and the history guard re-injects it
|
|
18
|
-
* there. The default gate text is the dsh-native adaptation of
|
|
19
|
-
* `hooks/session-start-content.md`: the behavior rules stay in sync (the Plan
|
|
20
|
-
* Verification Gate and the context-budget rule), while presentation is adapted
|
|
21
|
-
* to dsh's native skill catalog — no roster table (the model sees skills in its
|
|
22
|
-
* catalog) and no install instructions (those live in `.dsh/INSTALL.md`). The
|
|
23
|
-
* payload is deliberately small: it carries the verification gate and the
|
|
24
|
-
* budget rule, not the 1% Rule / Red Flags enforcement scaffolding, which
|
|
25
|
-
* measurably pushes capable models into rigid phases and unnecessary fan-out.
|
|
26
|
-
* Deployments override via Config.
|
|
27
|
-
*
|
|
28
|
-
* @module embedded-workbench-dsh
|
|
29
|
-
*/
|
|
30
|
-
import type { Context, Volatile } from '@deepseek-ai/cordis';
|
|
31
|
-
import z from '@deepseek-ai/schemastery';
|
|
32
|
-
import type { ContextFormed } from '@deepseek-ai/dsh-llm';
|
|
33
|
-
declare module '@deepseek-ai/dsh-llm' {
|
|
34
|
-
interface MessageSourceMap {
|
|
35
|
-
'plugin:embedded-workbench': {
|
|
36
|
-
kind: 'plugin:embedded-workbench';
|
|
37
|
-
} & ContextFormed;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export declare const name = "embedded-workbench";
|
|
41
|
-
export declare const inject: string[];
|
|
42
|
-
export interface Config {
|
|
43
|
-
/**
|
|
44
|
-
* The injection switch the Web client's Plugins page edits live: a `Volatile`
|
|
45
|
-
* reference on a host whose schemastery supports one, an ordinary boolean on a
|
|
46
|
-
* host that predates `.volatile()`. Read it through {@link injectionEnabled},
|
|
47
|
-
* which accepts both shapes.
|
|
48
|
-
*/
|
|
49
|
-
enabled: Volatile<boolean> | boolean;
|
|
50
|
-
gateContent: string;
|
|
51
|
-
}
|
|
52
|
-
export declare const Config: z<
|
|
53
|
-
enabled:
|
|
54
|
-
gateContent:
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
gateContent: z<string, string, "defined">;
|
|
58
|
-
}>>, "plain">;
|
|
59
|
-
export declare function apply(ctx: Context, config: Config): void;
|
|
1
|
+
/**
|
|
2
|
+
* embedded-workbench — DeepSeek Harness native plugin for the Embedded
|
|
3
|
+
* Workbench toolbox. The 8 skills ship in this package's `skills/` directory
|
|
4
|
+
* and are registered at apply time into dsh's `ctx.skills` registry through
|
|
5
|
+
* the standard filesystem provider, so they appear in every session catalog
|
|
6
|
+
* without a manual copy step. The plugin also folds a short gate text into the
|
|
7
|
+
* first model step of every agent session, mirroring the SessionStart hook the
|
|
8
|
+
* Claude Code plugin installs.
|
|
9
|
+
*
|
|
10
|
+
* Injection listens on agent/pre-step and appends the gate to the FIRST
|
|
11
|
+
* model step that runs, once per session (guarded by the session's durable
|
|
12
|
+
* history). Session-start inbox injection was dropped: a blank-session preset
|
|
13
|
+
* switch (agentPreset.select -> recompose) can clear the inbox before the
|
|
14
|
+
* first step, losing the gate for the whole session. The pre-step decision is
|
|
15
|
+
* the durable path - anchored/bootstrap presets that strip first-step injected
|
|
16
|
+
* reminders (skill catalog, AGENTS.md, gate plugins) simply defer this message
|
|
17
|
+
* to the first step after their promotion, and the history guard re-injects it
|
|
18
|
+
* there. The default gate text is the dsh-native adaptation of
|
|
19
|
+
* `hooks/session-start-content.md`: the behavior rules stay in sync (the Plan
|
|
20
|
+
* Verification Gate and the context-budget rule), while presentation is adapted
|
|
21
|
+
* to dsh's native skill catalog — no roster table (the model sees skills in its
|
|
22
|
+
* catalog) and no install instructions (those live in `.dsh/INSTALL.md`). The
|
|
23
|
+
* payload is deliberately small: it carries the verification gate and the
|
|
24
|
+
* budget rule, not the 1% Rule / Red Flags enforcement scaffolding, which
|
|
25
|
+
* measurably pushes capable models into rigid phases and unnecessary fan-out.
|
|
26
|
+
* Deployments override via Config.
|
|
27
|
+
*
|
|
28
|
+
* @module embedded-workbench-dsh
|
|
29
|
+
*/
|
|
30
|
+
import type { Context, Volatile } from '@deepseek-ai/cordis';
|
|
31
|
+
import z from '@deepseek-ai/schemastery';
|
|
32
|
+
import type { ContextFormed } from '@deepseek-ai/dsh-llm';
|
|
33
|
+
declare module '@deepseek-ai/dsh-llm' {
|
|
34
|
+
interface MessageSourceMap {
|
|
35
|
+
'plugin:embedded-workbench': {
|
|
36
|
+
kind: 'plugin:embedded-workbench';
|
|
37
|
+
} & ContextFormed;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export declare const name = "embedded-workbench";
|
|
41
|
+
export declare const inject: string[];
|
|
42
|
+
export interface Config {
|
|
43
|
+
/**
|
|
44
|
+
* The injection switch the Web client's Plugins page edits live: a `Volatile`
|
|
45
|
+
* reference on a host whose schemastery supports one, an ordinary boolean on a
|
|
46
|
+
* host that predates `.volatile()`. Read it through {@link injectionEnabled},
|
|
47
|
+
* which accepts both shapes.
|
|
48
|
+
*/
|
|
49
|
+
enabled: Volatile<boolean> | boolean;
|
|
50
|
+
gateContent: string;
|
|
51
|
+
}
|
|
52
|
+
export declare const Config: z<{
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
gateContent: string;
|
|
55
|
+
}, Config>;
|
|
56
|
+
export declare function apply(ctx: Context, config: Config): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-embedded-workbench",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"description": "Embedded C/C++ firmware development toolbox — FreeRTOS, ISR, NVM storage, Keil MDK, ARMCLANG, HardFault, state machines, architecture, LVGL patterns, and claim fact-checking. Ships a native DeepSeek Harness (dsh) bundle that folds a short gate — the Plan Verification Gate plus a context-budget rule — into the first model step.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"compatibility": {
|
|
46
|
-
"dsh": "^0.1.0-rc.7 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.2-alpha.3 || ^0.1.2-alpha.4 || ^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.3-alpha.1 || ^0.1.3-alpha.2 || ^0.1.5-alpha.1 || ^0.1.5-rc.1 || ^0.1.5-alpha.2 || ^0.1.5-rc.2 || ^0.1.5-rc.3 || ^0.1.6-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-alpha.1 || ^0.1.7-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3",
|
|
46
|
+
"dsh": "^0.1.0-rc.7 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.2-alpha.3 || ^0.1.2-alpha.4 || ^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.3-alpha.1 || ^0.1.3-alpha.2 || ^0.1.5-alpha.1 || ^0.1.5-rc.1 || ^0.1.5-alpha.2 || ^0.1.5-rc.2 || ^0.1.5-rc.3 || ^0.1.6-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-alpha.1 || ^0.1.7-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3 || ^0.2.2-rc.3",
|
|
47
47
|
"dshReleases": {
|
|
48
48
|
"0.1.0-rc.7": "compatible",
|
|
49
49
|
"0.1.0-rc.8": "compatible",
|
|
@@ -78,7 +78,8 @@
|
|
|
78
78
|
"0.2.1-rc.5": "compatible",
|
|
79
79
|
"0.2.2-alpha.2": "compatible",
|
|
80
80
|
"0.2.2-rc.1": "compatible",
|
|
81
|
-
"0.2.2-alpha.3": "compatible"
|
|
81
|
+
"0.2.2-alpha.3": "compatible",
|
|
82
|
+
"0.2.2-rc.3": "compatible"
|
|
82
83
|
},
|
|
83
84
|
"profiles": [
|
|
84
85
|
"headless",
|
|
@@ -93,14 +94,14 @@
|
|
|
93
94
|
},
|
|
94
95
|
"peerDependencies": {
|
|
95
96
|
"@deepseek-ai/cordis": "^4.0.5",
|
|
96
|
-
"@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3",
|
|
97
|
-
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3",
|
|
98
|
-
"@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3",
|
|
99
|
-
"@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.8 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3",
|
|
97
|
+
"@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3 || ^0.2.2-rc.3",
|
|
98
|
+
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3 || ^0.2.2-rc.3",
|
|
99
|
+
"@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3 || ^0.2.2-rc.3",
|
|
100
|
+
"@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.8 || ^0.2.0-rc.1 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-rc.2 || ^0.2.1-rc.3 || ^0.2.1-rc.4 || ^0.2.1-rc.5 || ^0.2.2-alpha.2 || ^0.2.2-rc.1 || ^0.2.2-alpha.3 || ^0.2.2-rc.3",
|
|
100
101
|
"@deepseek-ai/schemastery": "^3.18.5"
|
|
101
102
|
},
|
|
102
103
|
"devDependencies": {
|
|
103
|
-
"@deepseek-ai/cordis": "^4.0
|
|
104
|
+
"@deepseek-ai/cordis": "^4.1.0",
|
|
104
105
|
"@deepseek-ai/dsh-agent": "^0.2.0-rc.2",
|
|
105
106
|
"@deepseek-ai/dsh-cordis-host-runner": "^0.2.0-rc.2",
|
|
106
107
|
"@deepseek-ai/dsh-home-paths": "^0.2.0-rc.2",
|
|
@@ -109,8 +110,8 @@
|
|
|
109
110
|
"@deepseek-ai/dsh-session": "^0.2.0-rc.2",
|
|
110
111
|
"@deepseek-ai/dsh-skill": "^0.2.0-rc.2",
|
|
111
112
|
"@deepseek-ai/dsh-skill-filesystem": "^0.2.0-rc.2",
|
|
112
|
-
"@deepseek-ai/schemastery": "^3.
|
|
113
|
-
"@types/node": "^26.6.
|
|
113
|
+
"@deepseek-ai/schemastery": "^3.19.0",
|
|
114
|
+
"@types/node": "^26.6.6",
|
|
114
115
|
"typescript": "^7.0.2"
|
|
115
116
|
},
|
|
116
117
|
"author": {
|
package/src/index.ts
CHANGED
|
@@ -110,7 +110,7 @@ export interface Config {
|
|
|
110
110
|
gateContent: string
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
export const Config = z.object({
|
|
113
|
+
export const Config: z<{ enabled: boolean; gateContent: string }, Config> = z.object({
|
|
114
114
|
// Live so the Web Plugins page can flip the gate injection inside a running
|
|
115
115
|
// session: dsh's settings service projects ONLY fields under a `.volatile()`
|
|
116
116
|
// node and rejects writes to every other path. The price is that the injection
|