dsh-embedded-workbench 0.9.7 → 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 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.1-rc.5 and 0.2.2-alpha.2. The earlier round measured 0.1.5-rc.2 through 0.2.1-rc.4. Per-release evidence is in [DSH-COMPATIBILITY.md](DSH-COMPATIBILITY.md).
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.1-rc.5 与 0.2.2-alpha.2 上实测了安装、挂载、启动、门禁注入与卸载;更早一轮实测覆盖 0.1.5-rc.2 到 0.2.1-rc.4。逐版本证据见 [DSH-COMPATIBILITY.md](DSH-COMPATIBILITY.md)。
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
 
@@ -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<Schemastery.ObjectS<NoInfer<{
53
- enabled: z<boolean, boolean, "defined">;
54
- gateContent: z<string, string, "defined">;
55
- }>>, Schemastery.ObjectT<NoInfer<{
56
- enabled: z<boolean, boolean, "defined">;
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.7",
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",
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",
@@ -76,7 +76,10 @@
76
76
  "0.2.1-rc.3": "compatible",
77
77
  "0.2.1-rc.4": "compatible",
78
78
  "0.2.1-rc.5": "compatible",
79
- "0.2.2-alpha.2": "compatible"
79
+ "0.2.2-alpha.2": "compatible",
80
+ "0.2.2-rc.1": "compatible",
81
+ "0.2.2-alpha.3": "compatible",
82
+ "0.2.2-rc.3": "compatible"
80
83
  },
81
84
  "profiles": [
82
85
  "headless",
@@ -90,15 +93,15 @@
90
93
  "bump": "node scripts/bump-version.mjs"
91
94
  },
92
95
  "peerDependencies": {
93
- "@deepseek-ai/cordis": "^4.0.4",
94
- "@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",
95
- "@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",
96
- "@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",
97
- "@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",
98
- "@deepseek-ai/schemastery": "^3.18.4"
96
+ "@deepseek-ai/cordis": "^4.0.5",
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",
101
+ "@deepseek-ai/schemastery": "^3.18.5"
99
102
  },
100
103
  "devDependencies": {
101
- "@deepseek-ai/cordis": "^4.0.4",
104
+ "@deepseek-ai/cordis": "^4.1.0",
102
105
  "@deepseek-ai/dsh-agent": "^0.2.0-rc.2",
103
106
  "@deepseek-ai/dsh-cordis-host-runner": "^0.2.0-rc.2",
104
107
  "@deepseek-ai/dsh-home-paths": "^0.2.0-rc.2",
@@ -107,8 +110,8 @@
107
110
  "@deepseek-ai/dsh-session": "^0.2.0-rc.2",
108
111
  "@deepseek-ai/dsh-skill": "^0.2.0-rc.2",
109
112
  "@deepseek-ai/dsh-skill-filesystem": "^0.2.0-rc.2",
110
- "@deepseek-ai/schemastery": "^3.18.4",
111
- "@types/node": "^26.6.5",
113
+ "@deepseek-ai/schemastery": "^3.19.0",
114
+ "@types/node": "^26.6.6",
112
115
  "typescript": "^7.0.2"
113
116
  },
114
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