dsh-draw 0.2.14 → 0.2.16
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 +27 -0
- package/README-es.md +56 -42
- package/README-hi.md +56 -42
- package/README-pt.md +56 -42
- package/README-zh.md +56 -42
- package/README.md +24 -10
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/lib/client.js +69 -65
- package/lib/client.js.map +1 -1
- package/lib/index.js +49 -7
- package/lib/typert.host.js +1 -1
- package/lib/types/client/index.d.ts +12 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +23 -5
- package/lib/types/client/remote.d.ts +110 -31
- package/lib/types/client/remote.d.ts.map +1 -1
- package/lib/types/client/styles.d.ts.map +1 -1
- package/lib/types/client/styles.js +24 -7
- package/lib/types/event-gate.d.ts +24 -2
- package/lib/types/event-gate.d.ts.map +1 -1
- package/lib/types/event-gate.js +31 -3
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +19 -2
- package/lib/types/session-events.d.ts.map +1 -1
- package/lib/types/session-events.js +9 -2
- package/lib/types/typert.host.d.ts +110 -31
- package/lib/types/typert.host.d.ts.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.js +1 -1
- package/lib/types/wire.d.ts +220 -62
- package/lib/types/wire.d.ts.map +1 -1
- package/lib/types/wire.js +21 -35
- package/lib/{wire-DLW8WmDW.js → wire-BvocRNv3.js} +26 -55
- package/package.json +37 -35
- package/src/client/index.ts +20 -5
- package/src/client/styles.ts +24 -6
- package/src/event-gate.ts +45 -3
- package/src/index.ts +16 -2
- package/src/session-events.ts +9 -2
- package/src/version.ts +1 -1
- package/src/wire.ts +22 -35
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## [0.2.16] - 2026-09-23
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- The `Config` face compiles against the checkout ruler again. `pnpm run typecheck` failed with TS2375 at the `export const Config: z<Config>` annotation; reported at the top level as an `exactOptionalPropertyTypes` mismatch, the chain ended in `Type 'SchemaOutput<string, Mode>' is not assignable to type 'string'` / `Type 'Volatile<string>' is not assignable to type 'string'` — even though this schema never calls `.volatile()`. Root cause: the installed schema generation and the compile ruler disagreed. `@deepseek-ai/schemastery` was held on a line with no `Mode` type parameter and no `volatile()` at all, while the checkout ruler (tsconfig `paths`) pulled the newer `vendor/schemastery` into the same program through the aliased `@deepseek-ai/cordis` and `@deepseek-ai/dsh-client-*` faces. Two conflicting declarations of the same global `Schemastery` namespace merged, and the newer `default(value)` signature leaked `Volatile<T>` out of the still-unresolved `Mode` of the older interface. The `Volatile` face was therefore an artifact of two Schemastery copies in one program, not a property of this schema — which is why the same source compiled cleanly under `typecheck:ci` (single Schemastery copy) all along. Putting the whole dependency line on the `0.1.7-alpha.2` ruler leaves a single Schemastery generation in play. **No source change was required**: every field of this schema is genuinely NOT volatile, and the plain `Config` interface is already exactly what the schema produces. No cast was introduced, no assertion was weakened, and no field gained or lost a `.volatile()` mark, so the Host's generated settings form and the config-file format are unchanged.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Move the `@deepseek-ai/dsh-*` dev/test pins to `0.1.7-alpha.2`, and the `@deepseek-ai/schemastery` / `@deepseek-ai/cordis` dev carets to the versions that line declares, so one Schemastery generation is in the program.
|
|
18
|
+
- Every declared host range — `engines.dsh` and the twelve `peerDependencies` bands — gains the `|| >=0.1.7-0 <0.2.0` arm, so the bands now admit the `0.1.7` prerelease line. Under semver's prerelease rule a range whose only prerelease comparators sit on earlier version tuples cannot admit a later alpha, so the previous three-clause form excluded the very host this release targets. The `peerDependencies` carets for cordis and schemastery already admitted the installed versions and are unchanged. No existing arm was removed or narrowed.
|
|
19
|
+
- `dshWorkshop.compatibility.dshVersions` gains `0.1.7-alpha.2`, and all five READMEs name the verified line.
|
|
20
|
+
- The compat workflow now installs the `0.1.7-alpha.2` host instead of `0.1.6-alpha.2`, so the scheduled end-to-end run exercises the line this package declares.
|
|
21
|
+
|
|
22
|
+
## [0.2.15] - 2026-09-18
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- The result card's regenerate no longer reads the removed `SessionListState.current`: on the 0.1.6 line that field is gone, so the read returned `undefined` forever and regenerate failed (or silently lost the session scope). The card now takes the session the main view retains (`retainedBy.mainView > 0`), the same rule the upstream session store applies, and keeps the guard that reports "no active session" instead of acting on an unknown one. The old `current` field is never read again.
|
|
27
|
+
- The scoped stylesheet is ownership-counted. It used to hand back a no-op disposer when the node already existed, so unmounting the mount that created it removed the sheet out from under any other live mount (styles-lost window); it also never removed an orphaned node. The sheet now stays while any mount is alive and the last unmount removes it.
|
|
28
|
+
- `DrawService` mounts through an effect registered before the await, so a disposal while the Remote service is still mounting unwinds it instead of leaving a half-applied mount; the success log no longer claims a mount that was already torn down, and a real mount failure still propagates.
|
|
29
|
+
- The session-event gate records the mount-time probe result and warns once on the first refused commit. The degradation (quota falls back to the in-memory ledger) used to be completely silent.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Carry both Typert strict-codec faces on the wire descriptors: the published `schema` field (0.1.5-rc.2 line) and the `create` factory the 0.1.6-alpha.1 checkout materializes lazily on first use. Both typecheck rulers stay green.
|
|
34
|
+
- Declare `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh` range. The compatibility notes now state the `0.1.6-alpha.2` behavior explicitly: `draw/generated` is not written on that line (the append's third parameter is a `SurfaceIntent` for surface types only), quota is counted in memory per session and resets on restart.
|
|
35
|
+
|
|
9
36
|
## [0.2.14] - 2026-09-12
|
|
10
37
|
|
|
11
38
|
### Fixed
|
package/README-es.md
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
*Una herramienta, muchos motores — respaldo consciente de salud, resultados duraderos, uso contabilizado.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-draw)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
13
15
|
[](#)
|
|
14
16
|
[](https://github.com/PerryLink/dsh-draw/actions)
|
|
15
17
|
[](https://github.com/PerryLink/dsh-draw/releases)
|
|
16
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
19
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
20
|
+
[](https://dshfind.com/es/plugins/PerryLink/dsh-draw?ref=badge)
|
|
18
21
|
|
|
19
22
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
23
|
|
|
@@ -26,13 +29,14 @@
|
|
|
26
29
|
|
|
27
30
|
| Superficie | Estado |
|
|
28
31
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
32
|
+
| Harness | DeepSeek Harness `dsh-v0.1.7-alpha.2` (compatibilidad declarada para `0.1.5-rc.2`) |
|
|
30
33
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
34
|
| Motores | Cualquier endpoint de imágenes compatible con OpenAI; presets para OpenAI Images (`gpt-image-1`) y Zhipu CogView (`cogview-3-flash`) |
|
|
32
35
|
| Superficies | Herramienta host `image_generate` + tarjeta de resultado web + pestaña de ajustes de Plugins |
|
|
33
36
|
|
|
34
37
|
La mitad de navegador se apoya en el `Context` de cordis y en los paquetes de cliente publicados (`dsh-client-ui-slots`, `dsh-client-ui-settings`, `dsh-client-ui-tool`, `dsh-client-locale`, `dsh-client-connection`); ya no depende del paquete eliminado `dsh-client-runtime` (el bloque de llamada de herramienta se lee mediante un contrato estructural local), por lo que la superficie de cliente también encaja con hosts `0.1.2-rc.1`.
|
|
35
|
-
0.1.2-rc.1 (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. Verificado el 2026-09-06 contra el master checkout dsh-v0.1.
|
|
38
|
+
0.1.2-rc.1 (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. Verificado el 2026-09-06 contra el master checkout dsh-v0.1.7-alpha.1 (cadena completa de puertas + smoke de instalación de perfil).
|
|
39
|
+
0.1.6-alpha.2 (adaptado el 2026-09-18): el tercer parámetro de `Session.append` existe solo para tipos de superficie y es un `SurfaceIntent`, nunca un sobre `ignorable`, así que el tipo no-superficie `draw/generated` tampoco se escribe en esta línea — la cuota se cuenta en memoria por sesión y se reinicia al reiniciar la sesión (véase la nota de durabilidad de cuota). Verificado el 2026-09-18 (doble typecheck + suite completa + puertas self-contained/artifacts/readme).
|
|
36
40
|
|
|
37
41
|
## Qué obtienes
|
|
38
42
|
|
|
@@ -136,15 +140,15 @@ Ejemplo de sobrescritura en el parche de tu perfil:
|
|
|
136
140
|
- **Solo modelos de imagen.** Sin endpoints de vídeo, audio o edición; sin comprensión visual.
|
|
137
141
|
- **Compatibilidad de motores.** Los motores deben hablar la forma `POST /images/generations` de OpenAI (entrega base64 o URL); los extras específicos de cada proveedor quedan fuera.
|
|
138
142
|
- **La conciencia de coste es estructural.** El plugin cuenta llamadas y bytes pero no conoce el precio de los motores — combínalo con `dsh-budget` para la gobernanza de coste.
|
|
139
|
-
- **Durabilidad de cuota en rc.6/rc.7
|
|
143
|
+
- **Durabilidad de cuota en rc.6/rc.7, 0.1.2-rc.1 y 0.1.6-alpha.2.** En hosts cuyo registro de sesión no puede llevar `draw/generated` (lista blanca estática de eventos, sin sobre `ignorable`; `0.1.2-rc.1` no puede estampar el marcador y falla cerrado en tipos de evento desconocidos al leer; en `0.1.6-alpha.2` el tercer parámetro de append existe solo para tipos de superficie, así que un evento no-superficie no puede marcarse), la cuota sigue exacta en la sesión viva desde el libro auxiliar en memoria pero se reinicia al reiniciar; la contabilidad duradera vuelve en hosts con una superficie de eventos para plugins. El primer commit rechazado avisa una vez, así que la degradación deja de ser silenciosa.
|
|
140
144
|
|
|
141
145
|
## Desarrollo
|
|
142
146
|
|
|
143
147
|
```sh
|
|
144
148
|
pnpm install # node ^22.19 || >=24
|
|
145
149
|
pnpm run typecheck # tsc: src + tests contra el checkout local del harness
|
|
146
|
-
pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.
|
|
147
|
-
pnpm test # vitest:
|
|
150
|
+
pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.7-alpha.2 (sin paths)
|
|
151
|
+
pnpm test # vitest: 17 archivos spec (transporte guionado, Context/Session/ToolRuntime reales)
|
|
148
152
|
pnpm run build # declaraciones tsc + bundles tsdown (lib/)
|
|
149
153
|
pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
|
|
150
154
|
pnpm run verify:artifacts # cara ESM host + manifiesto typert + bundle de navegador + archivos de configuración
|
|
@@ -162,46 +166,56 @@ pnpm pack # el tarball publicado
|
|
|
162
166
|
|
|
163
167
|
## PerryLink DSH Plugin Family
|
|
164
168
|
|
|
165
|
-
|
|
169
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
166
170
|
|
|
167
171
|
| Plugin | One-liner |
|
|
168
172
|
|---|---|
|
|
169
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
170
|
-
| **[dsh-
|
|
171
|
-
| **[dsh-
|
|
172
|
-
| **[dsh-
|
|
173
|
-
| **[dsh-
|
|
174
|
-
| **[dsh-
|
|
175
|
-
| **[dsh-
|
|
176
|
-
| **[dsh-
|
|
177
|
-
| **[dsh-
|
|
178
|
-
| **[dsh-
|
|
179
|
-
| **[dsh-
|
|
180
|
-
| **[dsh-
|
|
181
|
-
| **[dsh-
|
|
182
|
-
| **[dsh-
|
|
183
|
-
| **[dsh-
|
|
184
|
-
| **[dsh-
|
|
185
|
-
| **[dsh-
|
|
186
|
-
| **[dsh-
|
|
187
|
-
| **[dsh-
|
|
188
|
-
| **[dsh-
|
|
189
|
-
| **[dsh-
|
|
190
|
-
| **[dsh-
|
|
191
|
-
| **[dsh-
|
|
192
|
-
| **[dsh-
|
|
193
|
-
| **[dsh-
|
|
194
|
-
| **[dsh-
|
|
195
|
-
| **[dsh-
|
|
196
|
-
| **[dsh-
|
|
197
|
-
| **[dsh-
|
|
198
|
-
| **[dsh-
|
|
199
|
-
| **[dsh-
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
173
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
174
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
175
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
176
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
177
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
178
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
179
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
180
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
181
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
182
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
183
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
184
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
185
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
186
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
187
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
188
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
189
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
190
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
191
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
192
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
193
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
194
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
195
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
196
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
197
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
198
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
199
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
200
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
201
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
202
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
203
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
204
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
205
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
206
|
+
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
207
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
208
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
209
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
210
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
211
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
212
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
213
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
214
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
215
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
216
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
217
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
218
|
+
|
|
205
219
|
|
|
206
220
|
## License
|
|
207
221
|
|
package/README-hi.md
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
*एक टूल, कई इंजन — स्वास्थ्य-सजग फ़ॉलबैक, टिकाऊ परिणाम, गिना हुआ उपयोग।*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-draw)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
13
15
|
[](#)
|
|
14
16
|
[](https://github.com/PerryLink/dsh-draw/actions)
|
|
15
17
|
[](https://github.com/PerryLink/dsh-draw/releases)
|
|
16
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
19
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
20
|
+
[](https://dshfind.com/hi/plugins/PerryLink/dsh-draw?ref=badge)
|
|
18
21
|
|
|
19
22
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
23
|
|
|
@@ -26,13 +29,14 @@
|
|
|
26
29
|
|
|
27
30
|
| सतह | स्थिति |
|
|
28
31
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
32
|
+
| Harness | DeepSeek Harness `dsh-v0.1.7-alpha.2` (`0.1.5-rc.2` के लिए घोषित संगतता) |
|
|
30
33
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
34
|
| इंजन | कोई भी OpenAI-संगत images एंडपॉइंट; OpenAI Images (`gpt-image-1`) और Zhipu CogView (`cogview-3-flash`) प्रीसेट |
|
|
32
35
|
| सतहें | Host `image_generate` टूल + वेब परिणाम कार्ड + Plugins सेटिंग टैब |
|
|
33
36
|
|
|
34
37
|
ब्राउज़र हिस्सा cordis `Context` और प्रकाशित क्लाइंट पैकेजों (`dsh-client-ui-slots`, `dsh-client-ui-settings`, `dsh-client-ui-tool`, `dsh-client-locale`, `dsh-client-connection`) पर चलता है; यह अब हटाए गए `dsh-client-runtime` पैकेज पर निर्भर नहीं करता (टूल-कॉल ब्लॉक स्थानीय संरचनात्मक अनुबंध से पढ़ा जाता है), इसलिए क्लाइंट सतह `0.1.2-rc.1` होस्ट के साथ भी मेल खाती है।
|
|
35
|
-
0.1.2-rc.1 (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। 2026-09-06 को dsh-v0.1.
|
|
38
|
+
0.1.2-rc.1 (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। 2026-09-06 को dsh-v0.1.7-alpha.1 master checkout के विरुद्ध सत्यापित (पूर्ण गेट श्रृंखला + प्रोफ़ाइल इंस्टॉल स्मोक)।
|
|
39
|
+
0.1.6-alpha.2 (2026-09-18 को अनुकूलित): `Session.append` का तीसरा पैरामीटर केवल सरफ़ेस-योग्य प्रकारों के लिए होता है और वह `SurfaceIntent` है, कभी `ignorable` एनवेलप नहीं, इसलिए गैर-सरफ़ेस `draw/generated` इस लाइन पर अब भी नहीं लिखा जाता — कोटा प्रति-सत्र स्मृति में गिना जाता है और सत्र पुनः आरंभ पर रीसेट होता है। 2026-09-18 को सत्यापित (दोहरा typecheck + पूरी सूट + self-contained/artifacts/readme गेट)।
|
|
36
40
|
|
|
37
41
|
## आपको क्या मिलता है
|
|
38
42
|
|
|
@@ -136,15 +140,15 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-draw'
|
|
|
136
140
|
- **केवल छवि मॉडल।** कोई वीडियो, ऑडियो या संपादन एंडपॉइंट नहीं; कोई विज़ुअल समझ नहीं।
|
|
137
141
|
- **इंजन संगतता।** इंजन को OpenAI `POST /images/generations` आकार बोलना चाहिए (base64 या URL डिलीवरी); प्रदाता-विशेष अतिरिक्त दायरे से बाहर हैं।
|
|
138
142
|
- **लागत-जागरूकता संरचनात्मक है।** प्लगइन कॉल और बाइट गिनता है, इंजन मूल्य नहीं जानता — लागत प्रशासन के लिए `dsh-budget` के साथ जोड़ें।
|
|
139
|
-
- **rc.6/rc.7
|
|
143
|
+
- **rc.6/rc.7, 0.1.2-rc.1 और 0.1.6-alpha.2 पर कोटा स्थायित्व।** जिन होस्ट का सत्र लॉग `draw/generated` को सुरक्षित रूप से नहीं रख सकता (स्थिर इवेंट श्वेतसूची, कोई `ignorable` एनवेलप नहीं; `0.1.2-rc.1` ने एनवेलप हटा दिया और पढ़ने पर अज्ञात इवेंट प्रकारों पर फेल-क्लोज़ करता है; `0.1.6-alpha.2` पर append का तीसरा पैरामीटर केवल सरफ़ेस प्रकारों के लिए है, इसलिए गैर-सरफ़ेस इवेंट चिह्नित नहीं हो सकता), कोटा इन-मेमोरी फ़ॉलबैक लेजर से जीवित सत्र में सटीक रहता है लेकिन पुनः आरंभ पर रीसेट हो जाता है; प्लगइन इवेंट सतह वाले होस्ट पर टिकाऊ लेखांकन फिर से शुरू होता है। पहला अस्वीकृत कमिट एक बार चेतावनी देता है, इसलिए गिरावट चुपचाप नहीं रहती।
|
|
140
144
|
|
|
141
145
|
## विकास
|
|
142
146
|
|
|
143
147
|
```sh
|
|
144
148
|
pnpm install # node ^22.19 || >=24
|
|
145
149
|
pnpm run typecheck # tsc: src + tests स्थानीय हार्नेस चेकआउट के विरुद्ध
|
|
146
|
-
pnpm run typecheck:ci # tsc प्रकाशित 0.1.
|
|
147
|
-
pnpm test # vitest:
|
|
150
|
+
pnpm run typecheck:ci # tsc प्रकाशित 0.1.7-alpha.2 फ़ेस के विरुद्ध (बिना paths)
|
|
151
|
+
pnpm test # vitest: 17 spec फ़ाइलें (स्क्रिप्टेड ट्रांसपोर्ट, वास्तविक Context/Session/ToolRuntime)
|
|
148
152
|
pnpm run build # tsc घोषणाएँ + tsdown बंडल (lib/)
|
|
149
153
|
pnpm run verify:self-contained # निर्भरता स्पेक registry से हल होती हैं
|
|
150
154
|
pnpm run verify:artifacts # host ESM फ़ेस + typert मैनिफ़ेस्ट + ब्राउज़र बंडल + कॉन्फ़िग फ़ाइलें
|
|
@@ -162,46 +166,56 @@ pnpm pack # प्रकाशित tarball
|
|
|
162
166
|
|
|
163
167
|
## PerryLink DSH Plugin Family
|
|
164
168
|
|
|
165
|
-
|
|
169
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
166
170
|
|
|
167
171
|
| Plugin | One-liner |
|
|
168
172
|
|---|---|
|
|
169
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
170
|
-
| **[dsh-
|
|
171
|
-
| **[dsh-
|
|
172
|
-
| **[dsh-
|
|
173
|
-
| **[dsh-
|
|
174
|
-
| **[dsh-
|
|
175
|
-
| **[dsh-
|
|
176
|
-
| **[dsh-
|
|
177
|
-
| **[dsh-
|
|
178
|
-
| **[dsh-
|
|
179
|
-
| **[dsh-
|
|
180
|
-
| **[dsh-
|
|
181
|
-
| **[dsh-
|
|
182
|
-
| **[dsh-
|
|
183
|
-
| **[dsh-
|
|
184
|
-
| **[dsh-
|
|
185
|
-
| **[dsh-
|
|
186
|
-
| **[dsh-
|
|
187
|
-
| **[dsh-
|
|
188
|
-
| **[dsh-
|
|
189
|
-
| **[dsh-
|
|
190
|
-
| **[dsh-
|
|
191
|
-
| **[dsh-
|
|
192
|
-
| **[dsh-
|
|
193
|
-
| **[dsh-
|
|
194
|
-
| **[dsh-
|
|
195
|
-
| **[dsh-
|
|
196
|
-
| **[dsh-
|
|
197
|
-
| **[dsh-
|
|
198
|
-
| **[dsh-
|
|
199
|
-
| **[dsh-
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
173
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
174
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
175
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
176
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
177
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
178
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
179
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
180
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
181
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
182
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
183
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
184
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
185
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
186
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
187
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
188
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
189
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
190
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
191
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
192
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
193
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
194
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
195
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
196
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
197
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
198
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
199
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
200
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
201
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
202
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
203
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
204
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
205
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
206
|
+
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
207
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
208
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
209
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
210
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
211
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
212
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
213
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
214
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
215
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
216
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
217
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
218
|
+
|
|
205
219
|
|
|
206
220
|
## License
|
|
207
221
|
|