dsh-draw 0.2.12 → 0.2.15
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 +31 -0
- package/{README.es.md → README-es.md} +19 -7
- package/{README.hi.md → README-hi.md} +19 -7
- package/{README.pt.md → README-pt.md} +19 -7
- package/{README.zh.md → README-zh.md} +19 -7
- package/README.md +19 -8
- 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 +38 -36
- 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
|
@@ -5,6 +5,37 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
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
|
+
|
|
9
|
+
## [0.2.15] - 2026-09-18
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- 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.
|
|
14
|
+
- 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.
|
|
15
|
+
- `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.
|
|
16
|
+
- 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.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- 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.
|
|
21
|
+
- 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.
|
|
22
|
+
|
|
23
|
+
## [0.2.14] - 2026-09-12
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Read the plugin version from `src/version.ts` in the assembly spec instead of hardcoding it, so a release commit no longer turns CI red. Re-releases 0.2.13, whose tag CI failed on the stale literal.
|
|
28
|
+
|
|
29
|
+
## [0.2.13] - 2026-09-12
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Rename the four translated READMEs to `README-<lang>.md`. npm selects the package-page readme as the first markdown file matching its `{README,README.*}` glob (`@npmcli/package-json`, publish path), and that glob order puts `README.<lang>.md` ahead of `README.md` — so npm was serving the Simplified-Chinese file for this package too (measured on 15/15 sampled packages of the family). The new names sit outside the glob, so the English source is served again. No content changed apart from the language-switcher link each translation holds to its siblings, and the repo readme gate still passes. Takes effect with the next release; an already-published version cannot gain a corrected readme retroactively.
|
|
34
|
+
- Pin the `@deepseek-ai/dsh-*` dev/test dependencies to the published `0.1.5-rc.2` line and record `0.1.5-rc.2` in `dshWorkshop.compatibility.dshVersions`; the monthly Compat workflow now runs against `0.1.5-rc.2`. The peer range `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` is unchanged, so no supported host line is dropped.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- The release workflow claimed provenance but never passed the flag: it runs `npm publish --access public`, and npm only attests a token-based publish when `--provenance` is given explicitly. The publish step is now `npm publish --access public --provenance`, matching `dsh-github` and `dsh-plugin-guide`. Takes effect from the next release; an already-published version cannot gain attestations retroactively.
|
|
8
39
|
## [0.2.12] - 2026-09-10
|
|
9
40
|
|
|
10
41
|
### Fixed
|
|
@@ -8,6 +8,7 @@
|
|
|
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-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,13 +27,14 @@
|
|
|
26
27
|
|
|
27
28
|
| Superficie | Estado |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (compatibilidad declarada para `0.1.5-rc.2`) |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Motores | Cualquier endpoint de imágenes compatible con OpenAI; presets para OpenAI Images (`gpt-image-1`) y Zhipu CogView (`cogview-3-flash`) |
|
|
32
33
|
| Superficies | Herramienta host `image_generate` + tarjeta de resultado web + pestaña de ajustes de Plugins |
|
|
33
34
|
|
|
34
35
|
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
36
|
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.3-alpha.1 (cadena completa de puertas + smoke de instalación de perfil).
|
|
37
|
+
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
38
|
|
|
37
39
|
## Qué obtienes
|
|
38
40
|
|
|
@@ -136,15 +138,15 @@ Ejemplo de sobrescritura en el parche de tu perfil:
|
|
|
136
138
|
- **Solo modelos de imagen.** Sin endpoints de vídeo, audio o edición; sin comprensión visual.
|
|
137
139
|
- **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
140
|
- **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
|
|
141
|
+
- **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
142
|
|
|
141
143
|
## Desarrollo
|
|
142
144
|
|
|
143
145
|
```sh
|
|
144
146
|
pnpm install # node ^22.19 || >=24
|
|
145
147
|
pnpm run typecheck # tsc: src + tests contra el checkout local del harness
|
|
146
|
-
pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.5-rc.
|
|
147
|
-
pnpm test # vitest:
|
|
148
|
+
pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.5-rc.2 (sin paths)
|
|
149
|
+
pnpm test # vitest: 17 archivos spec (transporte guionado, Context/Session/ToolRuntime reales)
|
|
148
150
|
pnpm run build # declaraciones tsc + bundles tsdown (lib/)
|
|
149
151
|
pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
|
|
150
152
|
pnpm run verify:artifacts # cara ESM host + manifiesto typert + bundle de navegador + archivos de configuración
|
|
@@ -162,7 +164,7 @@ pnpm pack # el tarball publicado
|
|
|
162
164
|
|
|
163
165
|
## PerryLink DSH Plugin Family
|
|
164
166
|
|
|
165
|
-
Este proyecto es uno de los [
|
|
167
|
+
Este proyecto es uno de los [40 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, probablemente los demás también:
|
|
166
168
|
|
|
167
169
|
| Plugin | One-liner |
|
|
168
170
|
|---|---|
|
|
@@ -192,6 +194,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
192
194
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
193
195
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
|
|
194
196
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
197
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
195
198
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
196
199
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
197
200
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
|
|
@@ -201,7 +204,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
201
204
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
202
205
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
|
|
203
206
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
204
|
-
| **[dsh-wechat](https://github.com/
|
|
207
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
|
|
208
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
209
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
210
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
211
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
212
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
213
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
214
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
215
|
+
| **[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 | |
|
|
216
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
205
217
|
|
|
206
218
|
## License
|
|
207
219
|
|
|
@@ -8,6 +8,7 @@
|
|
|
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-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,13 +27,14 @@
|
|
|
26
27
|
|
|
27
28
|
| सतह | स्थिति |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (`0.1.5-rc.2` के लिए घोषित संगतता) |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| इंजन | कोई भी OpenAI-संगत images एंडपॉइंट; OpenAI Images (`gpt-image-1`) और Zhipu CogView (`cogview-3-flash`) प्रीसेट |
|
|
32
33
|
| सतहें | Host `image_generate` टूल + वेब परिणाम कार्ड + Plugins सेटिंग टैब |
|
|
33
34
|
|
|
34
35
|
ब्राउज़र हिस्सा 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
36
|
0.1.2-rc.1 (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। 2026-09-06 को dsh-v0.1.3-alpha.1 master checkout के विरुद्ध सत्यापित (पूर्ण गेट श्रृंखला + प्रोफ़ाइल इंस्टॉल स्मोक)।
|
|
37
|
+
0.1.6-alpha.2 (2026-09-18 को अनुकूलित): `Session.append` का तीसरा पैरामीटर केवल सरफ़ेस-योग्य प्रकारों के लिए होता है और वह `SurfaceIntent` है, कभी `ignorable` एनवेलप नहीं, इसलिए गैर-सरफ़ेस `draw/generated` इस लाइन पर अब भी नहीं लिखा जाता — कोटा प्रति-सत्र स्मृति में गिना जाता है और सत्र पुनः आरंभ पर रीसेट होता है। 2026-09-18 को सत्यापित (दोहरा typecheck + पूरी सूट + self-contained/artifacts/readme गेट)।
|
|
36
38
|
|
|
37
39
|
## आपको क्या मिलता है
|
|
38
40
|
|
|
@@ -136,15 +138,15 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-draw'
|
|
|
136
138
|
- **केवल छवि मॉडल।** कोई वीडियो, ऑडियो या संपादन एंडपॉइंट नहीं; कोई विज़ुअल समझ नहीं।
|
|
137
139
|
- **इंजन संगतता।** इंजन को OpenAI `POST /images/generations` आकार बोलना चाहिए (base64 या URL डिलीवरी); प्रदाता-विशेष अतिरिक्त दायरे से बाहर हैं।
|
|
138
140
|
- **लागत-जागरूकता संरचनात्मक है।** प्लगइन कॉल और बाइट गिनता है, इंजन मूल्य नहीं जानता — लागत प्रशासन के लिए `dsh-budget` के साथ जोड़ें।
|
|
139
|
-
- **rc.6/rc.7
|
|
141
|
+
- **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
142
|
|
|
141
143
|
## विकास
|
|
142
144
|
|
|
143
145
|
```sh
|
|
144
146
|
pnpm install # node ^22.19 || >=24
|
|
145
147
|
pnpm run typecheck # tsc: src + tests स्थानीय हार्नेस चेकआउट के विरुद्ध
|
|
146
|
-
pnpm run typecheck:ci # tsc प्रकाशित 0.1.5-rc.
|
|
147
|
-
pnpm test # vitest:
|
|
148
|
+
pnpm run typecheck:ci # tsc प्रकाशित 0.1.5-rc.2 फ़ेस के विरुद्ध (बिना paths)
|
|
149
|
+
pnpm test # vitest: 17 spec फ़ाइलें (स्क्रिप्टेड ट्रांसपोर्ट, वास्तविक Context/Session/ToolRuntime)
|
|
148
150
|
pnpm run build # tsc घोषणाएँ + tsdown बंडल (lib/)
|
|
149
151
|
pnpm run verify:self-contained # निर्भरता स्पेक registry से हल होती हैं
|
|
150
152
|
pnpm run verify:artifacts # host ESM फ़ेस + typert मैनिफ़ेस्ट + ब्राउज़र बंडल + कॉन्फ़िग फ़ाइलें
|
|
@@ -162,7 +164,7 @@ pnpm pack # प्रकाशित tarball
|
|
|
162
164
|
|
|
163
165
|
## PerryLink DSH Plugin Family
|
|
164
166
|
|
|
165
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [
|
|
167
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
166
168
|
|
|
167
169
|
| Plugin | One-liner |
|
|
168
170
|
|---|---|
|
|
@@ -192,6 +194,7 @@ pnpm pack # प्रकाशित tarball
|
|
|
192
194
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
193
195
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
|
|
194
196
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
|
|
197
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
195
198
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
196
199
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
197
200
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | टिकाऊ क्रम के साथ वेब साइडबार में सत्र पिन करें | |
|
|
@@ -201,7 +204,16 @@ pnpm pack # प्रकाशित tarball
|
|
|
201
204
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
202
205
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
|
|
203
206
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
204
|
-
| **[dsh-wechat](https://github.com/
|
|
207
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
|
|
208
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
209
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
210
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
211
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
212
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
213
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
214
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
215
|
+
| **[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 | |
|
|
216
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
205
217
|
|
|
206
218
|
## License
|
|
207
219
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Uma ferramenta, muitos motores — fallback ciente da saúde, resultados duráveis, 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-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,13 +27,14 @@
|
|
|
26
27
|
|
|
27
28
|
| Superfície | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (compatibilidade declarada para `0.1.5-rc.2`) |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Motores | Qualquer endpoint de imagens compatível com OpenAI; presets para OpenAI Images (`gpt-image-1`) e Zhipu CogView (`cogview-3-flash`) |
|
|
32
33
|
| Superfícies | Ferramenta host `image_generate` + cartão de resultado web + aba de ajustes de Plugins |
|
|
33
34
|
|
|
34
35
|
A metade de navegador usa o `Context` do cordis e os pacotes de cliente publicados (`dsh-client-ui-slots`, `dsh-client-ui-settings`, `dsh-client-ui-tool`, `dsh-client-locale`, `dsh-client-connection`); ela não depende mais do pacote removido `dsh-client-runtime` (o bloco de chamada de ferramenta é lido por um contrato estrutural local), então a superfície de cliente também se alinha com hosts `0.1.2-rc.1`.
|
|
35
36
|
0.1.2-rc.1 (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda. Verificado em 2026-09-06 contra o checkout master dsh-v0.1.3-alpha.1 (cadeia completa de portas + smoke de instalação de perfil).
|
|
37
|
+
0.1.6-alpha.2 (adaptado em 2026-09-18): o terceiro parâmetro de `Session.append` existe apenas para tipos de superfície e é um `SurfaceIntent`, nunca um envelope `ignorable`, então o tipo não-superfície `draw/generated` também não é gravado nesta linha — a cota é contada em memória por sessão e zera ao reiniciar a sessão (ver a nota de durabilidade de cota). Verificado em 2026-09-18 (typecheck duplo + suíte completa + portas self-contained/artifacts/readme).
|
|
36
38
|
|
|
37
39
|
## O que você ganha
|
|
38
40
|
|
|
@@ -136,15 +138,15 @@ Exemplo de sobrescrita no patch do seu perfil:
|
|
|
136
138
|
- **Somente modelos de imagem.** Sem endpoints de vídeo, áudio ou edição; sem compreensão visual.
|
|
137
139
|
- **Compatibilidade de motores.** Os motores devem falar a forma `POST /images/generations` da OpenAI (entrega base64 ou URL); extras específicos de cada provedor ficam de fora.
|
|
138
140
|
- **Consciência de custo é estrutural.** O plugin conta chamadas e bytes, mas não conhece o preço dos motores — combine com `dsh-budget` para a governança de custo.
|
|
139
|
-
- **Durabilidade de cota em rc.6/rc.7
|
|
141
|
+
- **Durabilidade de cota em rc.6/rc.7, 0.1.2-rc.1 e 0.1.6-alpha.2.** Em hosts cujo registro de sessão não pode carregar `draw/generated` (lista estática de eventos, sem envelope `ignorable`; `0.1.2-rc.1` removeu o envelope e falha fechado em tipos de evento desconhecidos na leitura; em `0.1.6-alpha.2` o terceiro parâmetro do append existe apenas para tipos de superfície, então um evento não-superfície não pode ser marcado), a cota continua exata na sessão viva a partir do livro auxiliar em memória, mas zera ao reiniciar; a contabilidade durável retorna em hosts com uma superfície de eventos para plugins. O primeiro commit recusado avisa uma vez, então a degradação deixa de ser silenciosa.
|
|
140
142
|
|
|
141
143
|
## Desenvolvimento
|
|
142
144
|
|
|
143
145
|
```sh
|
|
144
146
|
pnpm install # node ^22.19 || >=24
|
|
145
147
|
pnpm run typecheck # tsc: src + tests contra o checkout local do harness
|
|
146
|
-
pnpm run typecheck:ci # tsc contra as faces publicadas 0.1.5-rc.
|
|
147
|
-
pnpm test # vitest:
|
|
148
|
+
pnpm run typecheck:ci # tsc contra as faces publicadas 0.1.5-rc.2 (sem paths)
|
|
149
|
+
pnpm test # vitest: 17 arquivos spec (transporte roteirizado, Context/Session/ToolRuntime reais)
|
|
148
150
|
pnpm run build # declarações tsc + bundles tsdown (lib/)
|
|
149
151
|
pnpm run verify:self-contained # as especificações de dependências resolvem pelo registry
|
|
150
152
|
pnpm run verify:artifacts # face ESM host + manifesto typert + bundle de navegador + arquivos de configuração
|
|
@@ -162,7 +164,7 @@ pnpm pack # o tarball publicado
|
|
|
162
164
|
|
|
163
165
|
## PerryLink DSH Plugin Family
|
|
164
166
|
|
|
165
|
-
Este projeto é um dos [
|
|
167
|
+
Este projeto é um dos [40 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
|
|
166
168
|
|
|
167
169
|
| Plugin | One-liner |
|
|
168
170
|
|---|---|
|
|
@@ -192,6 +194,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
192
194
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
193
195
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
194
196
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
197
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
195
198
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo | |
|
|
196
199
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
197
200
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
|
|
@@ -201,7 +204,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
201
204
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
202
205
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
203
206
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
204
|
-
| **[dsh-wechat](https://github.com/
|
|
207
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
208
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
209
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
210
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
211
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
212
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
213
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
214
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
215
|
+
| **[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 | |
|
|
216
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
205
217
|
|
|
206
218
|
## License
|
|
207
219
|
|
|
@@ -8,6 +8,7 @@
|
|
|
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-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,13 +27,14 @@
|
|
|
26
27
|
|
|
27
28
|
| 方面 | 状态 |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2`(声明兼容 `0.1.5-rc.2`) |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| 引擎 | 任意 OpenAI 兼容图像端点;内置 OpenAI Images(`gpt-image-1`)与智谱 CogView(`cogview-3-flash`)预设 |
|
|
32
33
|
| 界面 | Host `image_generate` 工具 + Web 结果卡片 + Plugins 设置页签 |
|
|
33
34
|
|
|
34
35
|
浏览器半边基于 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
36
|
0.1.2-rc.1(2026-09-02 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。已于 2026-09-06 对照 dsh-v0.1.3-alpha.1 master 检出核验(完整门禁链 + profile 安装冒烟)。
|
|
37
|
+
0.1.6-alpha.2(2026-09-18 已适配):`Session.append` 的第三参仅对表面事件类型存在且为 `SurfaceIntent`,绝非 `ignorable` 信封,因此非表面的 `draw/generated` 在该线上仍不落盘——配额按会话内存计数、会话重启归零(与下方「配额持久性」一致)。已于 2026-09-18 核验(双 typecheck 尺子 + 全量测试 + self-contained/artifacts/readme 门)。
|
|
36
38
|
|
|
37
39
|
## 你能得到什么
|
|
38
40
|
|
|
@@ -136,15 +138,15 @@ profile patch 中的覆盖示例:
|
|
|
136
138
|
- **仅图像模型。** 无视频、音频或编辑端点;无视觉理解。
|
|
137
139
|
- **引擎兼容性。** 引擎需支持 OpenAI `POST /images/generations` 形状(base64 或 URL 交付);厂商专属扩展不在范围内。
|
|
138
140
|
- **成本感知是结构性的。** 插件统计调用次数与字节,但不了解引擎定价 —— 与 `dsh-budget` 配合做成本治理。
|
|
139
|
-
- **rc.6/rc.7
|
|
141
|
+
- **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
142
|
|
|
141
143
|
## 开发
|
|
142
144
|
|
|
143
145
|
```sh
|
|
144
146
|
pnpm install # node ^22.19 || >=24
|
|
145
147
|
pnpm run typecheck # tsc:src + tests,对照本地 harness checkout
|
|
146
|
-
pnpm run typecheck:ci # tsc:对照已发布的 0.1.5-rc.
|
|
147
|
-
pnpm test # vitest:
|
|
148
|
+
pnpm run typecheck:ci # tsc:对照已发布的 0.1.5-rc.2 类型(无 paths)
|
|
149
|
+
pnpm test # vitest:17 个 spec 文件(scripted 传输、真实 Context/Session/ToolRuntime)
|
|
148
150
|
pnpm run build # tsc 声明 + tsdown 打包(lib/)
|
|
149
151
|
pnpm run verify:self-contained # 依赖声明全部来自 registry
|
|
150
152
|
pnpm run verify:artifacts # host ESM 面 + typert manifest + 浏览器包 + 配置文件
|
|
@@ -162,7 +164,7 @@ pnpm pack # 发布用 tarball
|
|
|
162
164
|
|
|
163
165
|
## PerryLink DSH Plugin Family
|
|
164
166
|
|
|
165
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [
|
|
167
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
166
168
|
|
|
167
169
|
| Plugin | One-liner |
|
|
168
170
|
|---|---|
|
|
@@ -192,6 +194,7 @@ pnpm pack # 发布用 tarball
|
|
|
192
194
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
193
195
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
194
196
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
197
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
195
198
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
196
199
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
197
200
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
@@ -201,7 +204,16 @@ pnpm pack # 发布用 tarball
|
|
|
201
204
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
202
205
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
203
206
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
204
|
-
| **[dsh-wechat](https://github.com/
|
|
207
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
208
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
209
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
210
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
211
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
212
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
213
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
214
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
215
|
+
| **[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 | |
|
|
216
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
205
217
|
|
|
206
218
|
## License
|
|
207
219
|
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
18
18
|
[](https://www.npmjs.com/package/dsh-draw)
|
|
19
19
|
|
|
20
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
21
21
|
|
|
22
22
|
</div>
|
|
23
23
|
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
|
|
28
28
|
| Surface | Status |
|
|
29
29
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (compat declared for `0.1.5-rc.2`) |
|
|
31
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
32
|
| Engines | Any OpenAI-compatible images endpoint; presets for OpenAI Images (`gpt-image-1`) and Zhipu CogView (`cogview-3-flash`) |
|
|
33
33
|
| Surfaces | Host `image_generate` tool + web result card + Plugins settings tab |
|
|
34
34
|
|
|
35
35
|
The browser half rides the cordis `Context` and the published client packages (`dsh-client-ui-slots`, `dsh-client-ui-settings`, `dsh-client-ui-tool`, `dsh-client-locale`, `dsh-client-connection`); it no longer depends on the removed `dsh-client-runtime` package (the tool-call block is read through a local structural contract), so the client surface also lines up with `0.1.2-rc.1` hosts.
|
|
36
|
-
0.1.2-rc.1 (adapted 2026-09-02): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-06 against the dsh-v0.1.
|
|
36
|
+
0.1.2-rc.1 (adapted 2026-09-02): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-06 against the dsh-v0.1.5-rc.2 master checkout (full gate chain + profile install smoke).
|
|
37
|
+
0.1.6-alpha.2 (adapted 2026-09-18): `Session.append`'s third parameter exists only for surface-eligible event types and is a `SurfaceIntent`, never an `ignorable` envelope, so `draw/generated` (a non-surface type) is still not written on this line — quota is counted in memory per session and resets when the session restarts, exactly as the "Quota durability" note below describes. Verified 2026-09-18 (dual typecheck rulers + the full suite + self-contained/artifacts/readme gates).
|
|
37
38
|
|
|
38
39
|
## What you get
|
|
39
40
|
|
|
@@ -137,15 +138,15 @@ Example override in your profile patch:
|
|
|
137
138
|
- **Image models only.** No video, audio, or edit endpoints; no vision understanding.
|
|
138
139
|
- **Engine compatibility.** Three vocabularies are supported through the provider seam: `openai` (the `POST /images/generations` shape), `replicate` (prediction create + poll), and `fal` (the `fal.run` queue). Provider-specific extras beyond `prompt`/size/count (e.g. seed, scheduler) are out of scope.
|
|
139
140
|
- **Cost awareness is structural.** The plugin counts calls and bytes but does not know engine pricing — pair with `dsh-budget` for cost governance.
|
|
140
|
-
- **Quota durability on rc.6/rc.7
|
|
141
|
+
- **Quota durability on rc.6/rc.7, 0.1.2-rc.1 and 0.1.6-alpha.2.** On hosts whose session log cannot carry `draw/generated` (static event whitelist, no `ignorable` envelope; `0.1.2-rc.1` cannot stamp the marker and fails closed on unknown event types at read; on `0.1.6-alpha.2` the append's third parameter is a `SurfaceIntent` for surface types only, so a non-surface event cannot be marked), quota stays exact for the live session from the in-memory fallback ledger but resets on restart; durable accounting resumes on hosts with a plugin event surface. The first refused commit warns once, so a degraded session is visible instead of silent.
|
|
141
142
|
|
|
142
143
|
## Development
|
|
143
144
|
|
|
144
145
|
```sh
|
|
145
146
|
pnpm install # node ^22.19 || >=24
|
|
146
147
|
pnpm run typecheck # tsc: src + tests against the local harness checkout
|
|
147
|
-
pnpm run typecheck:ci # tsc against the published 0.1.5-rc.
|
|
148
|
-
pnpm test # vitest:
|
|
148
|
+
pnpm run typecheck:ci # tsc against the published 0.1.5-rc.2 faces (no paths)
|
|
149
|
+
pnpm test # vitest: 17 spec files (scripted transport, real Context/Session/ToolRuntime)
|
|
149
150
|
pnpm run build # tsc declarations + tsdown bundles (lib/)
|
|
150
151
|
pnpm run verify:self-contained # dependency specs resolve from the registry
|
|
151
152
|
pnpm run verify:artifacts # host ESM face + typert manifest + browser bundle + config files
|
|
@@ -163,7 +164,7 @@ pnpm pack # the published tarball
|
|
|
163
164
|
|
|
164
165
|
## PerryLink DSH Plugin Family
|
|
165
166
|
|
|
166
|
-
This project is one of the [
|
|
167
|
+
This project is one of the [40 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
167
168
|
|
|
168
169
|
| Plugin | One-liner |
|
|
169
170
|
|---|---|
|
|
@@ -193,6 +194,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
193
194
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
194
195
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with top-bar toggle (framework edition) |
|
|
195
196
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
197
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
196
198
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
197
199
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
198
200
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
@@ -202,7 +204,16 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
202
204
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
203
205
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
204
206
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
205
|
-
| **[dsh-wechat](https://github.com/
|
|
207
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
|
|
208
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
209
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
210
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
211
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
212
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
213
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
214
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
215
|
+
| **[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 | |
|
|
216
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
206
217
|
|
|
207
218
|
### Install from the DSH Desktop Market
|
|
208
219
|
|