dsh-data-quality 0.3.10 → 0.3.11
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 +10 -0
- package/README-es.md +49 -49
- package/README-hi.md +49 -49
- package/README-pt.md +49 -49
- package/README-zh.md +49 -49
- package/README.md +41 -43
- package/lib/index.js +23 -5
- package/lib/types/events.d.ts +7 -0
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +7 -0
- package/lib/types/events.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +21 -5
- package/lib/types/index.js.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.js +1 -1
- package/package.json +6 -6
- package/src/events.ts +13 -1
- package/src/index.ts +20 -5
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ 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
|
+
## [0.3.11] - 2026-09-18
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Hold the four tool registrations (`data_profile` / `data_clean` / `data_verify` / `data_report`) in one effect whose disposer unregisters them in reverse order, and release a storage domain that finishes opening after the plugin fiber was already disposed. An unmount during `apply` can no longer lose the registrations (the previous shape registered them outside any effect, so an interrupt left nothing to roll back) nor leak the freshly opened domain handle. No user-visible behavior change.
|
|
13
|
+
|
|
14
|
+
### Docs
|
|
15
|
+
|
|
16
|
+
- Refresh the append-gate contract in `src/events.ts` for the 0.1.6-alpha.2 line: `Session.append<T>(type, data, ...opts)` takes a third argument only for surface-eligible event types, and that argument is a `SurfaceIntent`, never an `ignorable` envelope — a non-surface `data-quality/*` type has no third parameter at all, so the gate still skips and the storage-domain report stays the durable copy.
|
|
17
|
+
|
|
8
18
|
## [0.3.10] - 2026-09-12
|
|
9
19
|
|
|
10
20
|
### Changed
|
package/README-es.md
CHANGED
|
@@ -7,12 +7,13 @@ Todo el cálculo es TypeScript puro dentro del proceso del harness — el modelo
|
|
|
7
7
|
|
|
8
8
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
9
9
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
10
|
+
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
10
11
|
|
|
11
12
|
## Compatibility
|
|
12
13
|
|
|
13
14
|
| Componente | Versión |
|
|
14
15
|
|---|---|
|
|
15
|
-
| DeepSeek Harness | `dsh-v0.1.
|
|
16
|
+
| DeepSeek Harness | `dsh-v0.1.6-alpha.2` (adaptado el 2026-09-18): el rango de peers admite la línea alpha.2; allí el tercer parámetro de `Session.append` existe solo para tipos de superficie y es un `SurfaceIntent`, así que la puerta de auditoría sigue omitiendo y el informe del dominio de almacenamiento sigue siendo la copia duradera. Verificado el 2026-09-18 (doble typecheck + suite completa en verde). |
|
|
16
17
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
17
18
|
| Gestor de paquetes | `pnpm@11.7.0` |
|
|
18
19
|
| Plataforma | Windows / macOS / Linux (plugin solo de host) |
|
|
@@ -188,55 +189,54 @@ Este repositorio aún no tiene historial público de issues o pull requests; aqu
|
|
|
188
189
|
|
|
189
190
|
## PerryLink DSH Plugin Family
|
|
190
191
|
|
|
191
|
-
Este
|
|
192
|
+
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:
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
Este proyecto es uno de los [37 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:
|
|
194
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
196
195
|
|
|
197
196
|
| Plugin | One-liner |
|
|
198
197
|
|---|---|
|
|
199
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
205
|
-
| **[dsh-
|
|
206
|
-
| **[dsh-
|
|
207
|
-
| **[dsh-
|
|
208
|
-
| **[dsh-
|
|
209
|
-
| **[dsh-
|
|
210
|
-
| **[dsh-
|
|
211
|
-
| **[dsh-
|
|
212
|
-
| **[dsh-
|
|
213
|
-
| **[dsh-
|
|
214
|
-
| **[dsh-
|
|
215
|
-
| **[dsh-
|
|
216
|
-
| **[dsh-
|
|
217
|
-
| **[dsh-
|
|
218
|
-
| **[dsh-
|
|
219
|
-
| **[dsh-
|
|
220
|
-
| **[dsh-
|
|
221
|
-
| **[dsh-
|
|
222
|
-
| **[dsh-
|
|
223
|
-
| **[dsh-
|
|
224
|
-
| **[dsh-
|
|
225
|
-
| **[dsh-
|
|
226
|
-
| **[dsh-
|
|
227
|
-
| **[dsh-
|
|
228
|
-
| **[dsh-
|
|
229
|
-
| **[dsh-
|
|
230
|
-
| **[dsh-
|
|
231
|
-
| **[dsh-
|
|
232
|
-
| **[dsh-
|
|
233
|
-
| **[dsh-
|
|
234
|
-
| **[dsh-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
198
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
199
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
200
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
201
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
202
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
203
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
|
|
204
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
|
|
205
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
206
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
207
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
209
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
210
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
|
|
211
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
|
|
212
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
|
|
213
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
|
|
214
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
215
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
|
|
216
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
|
|
217
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
|
|
218
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
|
|
219
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
|
|
220
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
|
|
221
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
|
|
222
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
|
|
223
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
|
|
224
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
225
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
226
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
|
|
227
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
228
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
229
|
+
| **[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 | |
|
|
230
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
|
|
231
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
|
|
232
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
|
|
233
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
|
|
234
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
|
|
235
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
|
|
236
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
|
|
237
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
238
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
|
|
239
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
|
|
240
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
|
|
241
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
|
|
242
|
+
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
|
package/README-hi.md
CHANGED
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
9
9
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
10
|
+
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
10
11
|
|
|
11
12
|
## Compatibility
|
|
12
13
|
|
|
13
14
|
| घटक | संस्करण |
|
|
14
15
|
|---|---|
|
|
15
|
-
| DeepSeek Harness | `dsh-v0.1.
|
|
16
|
+
| DeepSeek Harness | `dsh-v0.1.6-alpha.2` (2026-09-18 को अनुकूलित): peer रेंज अब alpha.2 लाइन को स्वीकार करती है; वहाँ `Session.append` का तीसरा पैरामीटर केवल सरफ़ेस-योग्य प्रकारों के लिए होता है और वह `SurfaceIntent` है, इसलिए ऑडिट गेट अब भी छोड़ता है और storage-domain रिपोर्ट ही टिकाऊ प्रति रहती है। 2026-09-18 को सत्यापित (दोहरा typecheck + पूरी टेस्ट सूट हरी)। |
|
|
16
17
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
17
18
|
| पैकेज मैनेजर | `pnpm@11.7.0` |
|
|
18
19
|
| प्लेटफ़ॉर्म | Windows / macOS / Linux (केवल होस्ट प्लगिन) |
|
|
@@ -188,55 +189,54 @@ pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:r
|
|
|
188
189
|
|
|
189
190
|
## PerryLink DSH Plugin Family
|
|
190
191
|
|
|
191
|
-
यह
|
|
192
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [37 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
194
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
196
195
|
|
|
197
196
|
| Plugin | One-liner |
|
|
198
197
|
|---|---|
|
|
199
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
205
|
-
| **[dsh-
|
|
206
|
-
| **[dsh-
|
|
207
|
-
| **[dsh-
|
|
208
|
-
| **[dsh-
|
|
209
|
-
| **[dsh-
|
|
210
|
-
| **[dsh-
|
|
211
|
-
| **[dsh-
|
|
212
|
-
| **[dsh-
|
|
213
|
-
| **[dsh-
|
|
214
|
-
| **[dsh-
|
|
215
|
-
| **[dsh-
|
|
216
|
-
| **[dsh-
|
|
217
|
-
| **[dsh-
|
|
218
|
-
| **[dsh-
|
|
219
|
-
| **[dsh-
|
|
220
|
-
| **[dsh-
|
|
221
|
-
| **[dsh-
|
|
222
|
-
| **[dsh-
|
|
223
|
-
| **[dsh-
|
|
224
|
-
| **[dsh-
|
|
225
|
-
| **[dsh-
|
|
226
|
-
| **[dsh-
|
|
227
|
-
| **[dsh-
|
|
228
|
-
| **[dsh-
|
|
229
|
-
| **[dsh-
|
|
230
|
-
| **[dsh-
|
|
231
|
-
| **[dsh-
|
|
232
|
-
| **[dsh-
|
|
233
|
-
| **[dsh-
|
|
234
|
-
| **[dsh-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
198
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
199
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
200
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
201
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
202
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
203
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
|
|
204
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
|
|
205
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
206
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
207
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
209
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
210
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
|
|
211
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
|
|
212
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
|
|
213
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
|
|
214
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
215
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
|
|
216
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
|
|
217
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
|
|
218
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
|
|
219
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
|
|
220
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
|
|
221
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
|
|
222
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
|
|
223
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
|
|
224
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
225
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
226
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
|
|
227
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
228
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
229
|
+
| **[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 | |
|
|
230
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
|
|
231
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
|
|
232
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
|
|
233
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
|
|
234
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
|
|
235
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
|
|
236
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
|
|
237
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
238
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
|
|
239
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
|
|
240
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
|
|
241
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
|
|
242
|
+
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
|
package/README-pt.md
CHANGED
|
@@ -7,12 +7,13 @@ Todo o cálculo é TypeScript puro no processo do harness — o modelo nunca faz
|
|
|
7
7
|
|
|
8
8
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
9
9
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
10
|
+
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
10
11
|
|
|
11
12
|
## Compatibility
|
|
12
13
|
|
|
13
14
|
| Componente | Versão |
|
|
14
15
|
|---|---|
|
|
15
|
-
| DeepSeek Harness | `dsh-v0.1.
|
|
16
|
+
| DeepSeek Harness | `dsh-v0.1.6-alpha.2` (adaptado em 2026-09-18): o intervalo de peers agora admite a linha alpha.2; nela o terceiro parâmetro de `Session.append` existe apenas para tipos de superfície e é um `SurfaceIntent`, então o portão de auditoria continua pulando e o relatório do domínio de armazenamento continua sendo a cópia durável. Verificado em 2026-09-18 (typecheck duplo + suíte completa verde). |
|
|
16
17
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
17
18
|
| Gerenciador de pacotes | `pnpm@11.7.0` |
|
|
18
19
|
| Plataforma | Windows / macOS / Linux (plugin apenas de host) |
|
|
@@ -188,55 +189,54 @@ Este repositório ainda não tem histórico público de issues ou pull requests;
|
|
|
188
189
|
|
|
189
190
|
## PerryLink DSH Plugin Family
|
|
190
191
|
|
|
191
|
-
Este
|
|
192
|
+
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:
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
|
|
194
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
196
195
|
|
|
197
196
|
| Plugin | One-liner |
|
|
198
197
|
|---|---|
|
|
199
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
205
|
-
| **[dsh-
|
|
206
|
-
| **[dsh-
|
|
207
|
-
| **[dsh-
|
|
208
|
-
| **[dsh-
|
|
209
|
-
| **[dsh-
|
|
210
|
-
| **[dsh-
|
|
211
|
-
| **[dsh-
|
|
212
|
-
| **[dsh-
|
|
213
|
-
| **[dsh-
|
|
214
|
-
| **[dsh-
|
|
215
|
-
| **[dsh-
|
|
216
|
-
| **[dsh-
|
|
217
|
-
| **[dsh-
|
|
218
|
-
| **[dsh-
|
|
219
|
-
| **[dsh-
|
|
220
|
-
| **[dsh-
|
|
221
|
-
| **[dsh-
|
|
222
|
-
| **[dsh-
|
|
223
|
-
| **[dsh-
|
|
224
|
-
| **[dsh-
|
|
225
|
-
| **[dsh-
|
|
226
|
-
| **[dsh-
|
|
227
|
-
| **[dsh-
|
|
228
|
-
| **[dsh-
|
|
229
|
-
| **[dsh-
|
|
230
|
-
| **[dsh-
|
|
231
|
-
| **[dsh-
|
|
232
|
-
| **[dsh-
|
|
233
|
-
| **[dsh-
|
|
234
|
-
| **[dsh-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
198
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
199
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
200
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
201
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
202
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
203
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
|
|
204
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
|
|
205
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
206
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
207
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
209
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
210
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
|
|
211
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
|
|
212
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
|
|
213
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
|
|
214
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
215
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
|
|
216
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
|
|
217
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
|
|
218
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
|
|
219
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
|
|
220
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
|
|
221
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
|
|
222
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
|
|
223
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
|
|
224
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
225
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
226
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
|
|
227
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
228
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
229
|
+
| **[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 | |
|
|
230
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
|
|
231
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
|
|
232
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
|
|
233
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
|
|
234
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
|
|
235
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
|
|
236
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
|
|
237
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
238
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
|
|
239
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
|
|
240
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
|
|
241
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
|
|
242
|
+
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
|
package/README-zh.md
CHANGED
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
9
9
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
10
|
+
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
10
11
|
|
|
11
12
|
## Compatibility
|
|
12
13
|
|
|
13
14
|
| 组件 | 版本 |
|
|
14
15
|
|---|---|
|
|
15
|
-
| DeepSeek Harness | `dsh-v0.1.
|
|
16
|
+
| DeepSeek Harness | `dsh-v0.1.6-alpha.2`(2026-09-18 已适配):peer 区间已接纳 alpha.2 线;该线上 `Session.append` 的第三参仅对表面事件类型存在且为 `SurfaceIntent`,因此审计门控仍为跳过、storage-domain 报告仍是持久副本。已于 2026-09-18 核验(双 typecheck 尺子 + 全量测试绿)。 |
|
|
16
17
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
17
18
|
| 包管理器 | `pnpm@11.7.0` |
|
|
18
19
|
| 平台 | Windows / macOS / Linux(纯宿主插件) |
|
|
@@ -188,55 +189,54 @@ pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:r
|
|
|
188
189
|
|
|
189
190
|
## PerryLink DSH Plugin Family
|
|
190
191
|
|
|
191
|
-
|
|
192
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [37 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
194
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
196
195
|
|
|
197
196
|
| Plugin | One-liner |
|
|
198
197
|
|---|---|
|
|
199
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
200
|
-
| **[dsh-
|
|
201
|
-
| **[dsh-
|
|
202
|
-
| **[dsh-
|
|
203
|
-
| **[dsh-
|
|
204
|
-
| **[dsh-
|
|
205
|
-
| **[dsh-
|
|
206
|
-
| **[dsh-
|
|
207
|
-
| **[dsh-
|
|
208
|
-
| **[dsh-
|
|
209
|
-
| **[dsh-
|
|
210
|
-
| **[dsh-
|
|
211
|
-
| **[dsh-
|
|
212
|
-
| **[dsh-
|
|
213
|
-
| **[dsh-
|
|
214
|
-
| **[dsh-
|
|
215
|
-
| **[dsh-
|
|
216
|
-
| **[dsh-
|
|
217
|
-
| **[dsh-
|
|
218
|
-
| **[dsh-
|
|
219
|
-
| **[dsh-
|
|
220
|
-
| **[dsh-
|
|
221
|
-
| **[dsh-
|
|
222
|
-
| **[dsh-
|
|
223
|
-
| **[dsh-
|
|
224
|
-
| **[dsh-
|
|
225
|
-
| **[dsh-
|
|
226
|
-
| **[dsh-
|
|
227
|
-
| **[dsh-
|
|
228
|
-
| **[dsh-
|
|
229
|
-
| **[dsh-
|
|
230
|
-
| **[dsh-
|
|
231
|
-
| **[dsh-
|
|
232
|
-
| **[dsh-
|
|
233
|
-
| **[dsh-
|
|
234
|
-
| **[dsh-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
198
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
199
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
200
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
201
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
202
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
203
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
|
|
204
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
|
|
205
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
206
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
207
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
209
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
210
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
|
|
211
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
|
|
212
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
|
|
213
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
|
|
214
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
215
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
|
|
216
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
|
|
217
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
|
|
218
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
|
|
219
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
|
|
220
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
|
|
221
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
|
|
222
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
|
|
223
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
|
|
224
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
225
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
226
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
|
|
227
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
228
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
229
|
+
| **[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 | |
|
|
230
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
|
|
231
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
|
|
232
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
|
|
233
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
|
|
234
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
|
|
235
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
|
|
236
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
|
|
237
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
238
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
|
|
239
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
|
|
240
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
|
|
241
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
|
|
242
|
+
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ All computation is plain TypeScript in the harness process — the model never d
|
|
|
18
18
|
|
|
19
19
|
| Component | Version |
|
|
20
20
|
|---|---|
|
|
21
|
-
| DeepSeek Harness | `dsh-v0.1.
|
|
21
|
+
| DeepSeek Harness | `dsh-v0.1.6-alpha.2` (adapted 2026-09-18): the peer range now admits the alpha.2 line; there `Session.append`'s third parameter exists only for surface-eligible types and is a `SurfaceIntent`, so the audit gate still skips and the storage-domain report stays the durable copy. Verified 2026-09-18 (dual typecheck rulers + full test suite green). |
|
|
22
22
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
23
23
|
| Package manager | `pnpm@11.7.0` |
|
|
24
24
|
| Platform | Windows / macOS / Linux (host-only plugin) |
|
|
@@ -195,56 +195,54 @@ This repository has no public issue or pull request history yet; individual PR/i
|
|
|
195
195
|
|
|
196
196
|
## PerryLink DSH Plugin Family
|
|
197
197
|
|
|
198
|
-
This
|
|
198
|
+
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:
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
This project is one of the [37 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
200
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
203
201
|
|
|
204
202
|
| Plugin | One-liner |
|
|
205
203
|
|---|---|
|
|
206
204
|
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
205
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
207
206
|
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
208
|
-
| **[dsh-
|
|
209
|
-
| **[dsh-
|
|
210
|
-
| **[dsh-
|
|
207
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
208
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
209
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
|
|
210
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
|
|
211
211
|
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
212
212
|
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
213
213
|
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
214
214
|
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
215
215
|
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
216
|
-
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics
|
|
217
|
-
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** |
|
|
218
|
-
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/
|
|
219
|
-
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry
|
|
220
|
-
| **[dsh-
|
|
221
|
-
| **[dsh-
|
|
222
|
-
| **[dsh-
|
|
223
|
-
| **[dsh-
|
|
224
|
-
| **[dsh-
|
|
225
|
-
| **[dsh-
|
|
226
|
-
| **[dsh-
|
|
227
|
-
| **[dsh-
|
|
228
|
-
| **[dsh-
|
|
229
|
-
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** |
|
|
230
|
-
| **[dsh-
|
|
231
|
-
| **[dsh-plugin-
|
|
232
|
-
| **[dsh-
|
|
233
|
-
| **[dsh-
|
|
234
|
-
| **[dsh-
|
|
235
|
-
| **[dsh-
|
|
236
|
-
| **[dsh-
|
|
237
|
-
| **[dsh-
|
|
238
|
-
| **[dsh-
|
|
239
|
-
| **[dsh-
|
|
240
|
-
| **[dsh-
|
|
241
|
-
| **[dsh-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
Apache-2.0 — see [LICENSE](LICENSE) and [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
250
|
-
|
|
216
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
|
|
217
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
|
|
218
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
|
|
219
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
|
|
220
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
221
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
|
|
222
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
|
|
223
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
|
|
224
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
|
|
225
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
|
|
226
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
|
|
227
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
|
|
228
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
|
|
229
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
|
|
230
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
231
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
232
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
|
|
233
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
234
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
235
|
+
| **[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 | |
|
|
236
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
|
|
237
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
|
|
238
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
|
|
239
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
|
|
240
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
|
|
241
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
|
|
242
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
|
|
243
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
244
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
|
|
245
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
|
|
246
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
|
|
247
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
|
|
248
|
+
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
|
package/lib/index.js
CHANGED
|
@@ -1172,7 +1172,7 @@ function computeAccuracy(stats, table, declaredSchema) {
|
|
|
1172
1172
|
* @module dsh-data-quality/version
|
|
1173
1173
|
*/
|
|
1174
1174
|
/** The package version reported in persisted reports. */
|
|
1175
|
-
const VERSION = "0.3.
|
|
1175
|
+
const VERSION = "0.3.11";
|
|
1176
1176
|
/**
|
|
1177
1177
|
* Version of the persisted report schema. Bump it whenever a report's
|
|
1178
1178
|
* canonical shape changes in a way old consumers cannot read (the durable
|
|
@@ -2010,6 +2010,13 @@ function checkCitations(root, citations, defaultTolerance) {
|
|
|
2010
2010
|
* durable copy. On 0.1.2-alpha.3 the envelope field is retained for stored-log
|
|
2011
2011
|
* read compatibility only - its Session.append still cannot stamp the marker,
|
|
2012
2012
|
* so the gate behavior is unchanged.
|
|
2013
|
+
* - On the 0.1.6-alpha.2 line `Session.append<T>(type, data, ...opts)` takes a
|
|
2014
|
+
* third argument only for surface-eligible event types, and that argument is
|
|
2015
|
+
* a `SurfaceIntent` (an append/replace marker), never an `ignorable`
|
|
2016
|
+
* envelope: a non-surface `data-quality/*` type has no third parameter at
|
|
2017
|
+
* all, so the source-text probe below still finds no `ignorable` handling and
|
|
2018
|
+
* the result stays **skip** - the storage-domain report is the durable copy
|
|
2019
|
+
* on alpha.2 exactly as on the earlier lines.
|
|
2013
2020
|
* @module dsh-data-quality/events
|
|
2014
2021
|
*/
|
|
2015
2022
|
/** The event type vocabulary this plugin appends. */
|
|
@@ -3893,6 +3900,10 @@ async function apply(ctx, config = {}) {
|
|
|
3893
3900
|
let domain;
|
|
3894
3901
|
if (resolved.storeReports) {
|
|
3895
3902
|
domain = await ctx.storageDomain.open(dataQualityDomainSpec);
|
|
3903
|
+
if (ctx.fiber.uid === null) {
|
|
3904
|
+
await domain.close();
|
|
3905
|
+
return;
|
|
3906
|
+
}
|
|
3896
3907
|
const reports = domain.table("reports");
|
|
3897
3908
|
store = {
|
|
3898
3909
|
put: async (record) => {
|
|
@@ -3911,10 +3922,17 @@ async function apply(ctx, config = {}) {
|
|
|
3911
3922
|
store,
|
|
3912
3923
|
now: Date.now
|
|
3913
3924
|
});
|
|
3914
|
-
ctx.
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3925
|
+
ctx.effect(() => {
|
|
3926
|
+
const disposers = [
|
|
3927
|
+
ctx.tools.register(defineProfileTool(service)),
|
|
3928
|
+
ctx.tools.register(defineCleanTool(service)),
|
|
3929
|
+
ctx.tools.register(defineVerifyTool(service)),
|
|
3930
|
+
ctx.tools.register(defineReportTool(service))
|
|
3931
|
+
];
|
|
3932
|
+
return () => {
|
|
3933
|
+
for (const dispose of disposers.reverse()) dispose();
|
|
3934
|
+
};
|
|
3935
|
+
}, "dsh-data-quality: tools");
|
|
3918
3936
|
logger.info(`dsh-data-quality ${VERSION} mounted: ctx.dataQuality + data_profile/data_clean/data_verify/data_report`);
|
|
3919
3937
|
if (domain !== void 0) {
|
|
3920
3938
|
const handle = domain;
|
package/lib/types/events.d.ts
CHANGED
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
* durable copy. On 0.1.2-alpha.3 the envelope field is retained for stored-log
|
|
16
16
|
* read compatibility only - its Session.append still cannot stamp the marker,
|
|
17
17
|
* so the gate behavior is unchanged.
|
|
18
|
+
* - On the 0.1.6-alpha.2 line `Session.append<T>(type, data, ...opts)` takes a
|
|
19
|
+
* third argument only for surface-eligible event types, and that argument is
|
|
20
|
+
* a `SurfaceIntent` (an append/replace marker), never an `ignorable`
|
|
21
|
+
* envelope: a non-surface `data-quality/*` type has no third parameter at
|
|
22
|
+
* all, so the source-text probe below still finds no `ignorable` handling and
|
|
23
|
+
* the result stays **skip** - the storage-domain report is the durable copy
|
|
24
|
+
* on alpha.2 exactly as on the earlier lines.
|
|
18
25
|
* @module dsh-data-quality/events
|
|
19
26
|
*/
|
|
20
27
|
import { type Session } from '@deepseek-ai/dsh-session';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElF,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;QACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KACrC,CAAA;CACF;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,eAAe;QACvB;;;;WAIG;QACH,sBAAsB,EAAE,oBAAoB,CAAA;QAC5C;;;;WAIG;QACH,oBAAoB,EAAE,oBAAoB,CAAA;QAC1C;;;;WAIG;QACH,qBAAqB,EAAE,oBAAoB,CAAA;KAC5C;CACF;AAED,qDAAqD;AACrD,eAAO,MAAM,wBAAwB,gFAAiF,CAAA;AAEtH,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAU5E;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CASrH"}
|
package/lib/types/events.js
CHANGED
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
* durable copy. On 0.1.2-alpha.3 the envelope field is retained for stored-log
|
|
16
16
|
* read compatibility only - its Session.append still cannot stamp the marker,
|
|
17
17
|
* so the gate behavior is unchanged.
|
|
18
|
+
* - On the 0.1.6-alpha.2 line `Session.append<T>(type, data, ...opts)` takes a
|
|
19
|
+
* third argument only for surface-eligible event types, and that argument is
|
|
20
|
+
* a `SurfaceIntent` (an append/replace marker), never an `ignorable`
|
|
21
|
+
* envelope: a non-surface `data-quality/*` type has no third parameter at
|
|
22
|
+
* all, so the source-text probe below still finds no `ignorable` handling and
|
|
23
|
+
* the result stays **skip** - the storage-domain report is the durable copy
|
|
24
|
+
* on alpha.2 exactly as on the earlier lines.
|
|
18
25
|
* @module dsh-data-quality/events
|
|
19
26
|
*/
|
|
20
27
|
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session';
|
package/lib/types/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,yBAAyB,EAAgB,MAAM,0BAA0B,CAAA;AA6ClF,qDAAqD;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,CAAU,CAAA;AAatH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,IAA0B,EAAE,IAA0B;IAC7G,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAqB,CAAA;IAC5C,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,CAAC;AACH,CAAC"}
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/types/index.js
CHANGED
|
@@ -59,6 +59,14 @@ export async function apply(ctx, config = {}) {
|
|
|
59
59
|
let domain;
|
|
60
60
|
if (resolved.storeReports) {
|
|
61
61
|
domain = await ctx.storageDomain.open(dataQualityDomainSpec);
|
|
62
|
+
// Disposal during the open await: the fiber is gone, so nothing may be
|
|
63
|
+
// registered any more — release the freshly opened handle instead of
|
|
64
|
+
// leaking it (the storage facility is single-open per name, so an
|
|
65
|
+
// unreleased handle also blocks a later remount).
|
|
66
|
+
if (ctx.fiber.uid === null) {
|
|
67
|
+
await domain.close();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
62
70
|
const reports = domain.table('reports');
|
|
63
71
|
store = {
|
|
64
72
|
put: async (record) => {
|
|
@@ -73,12 +81,20 @@ export async function apply(ctx, config = {}) {
|
|
|
73
81
|
.map(([key, record]) => ({ key, ...record })),
|
|
74
82
|
};
|
|
75
83
|
}
|
|
76
|
-
// Service Provider: constructs the local DataQualityService (which publishes ctx.dataQuality) and registers the four model tools below through ctx.tools.register.
|
|
84
|
+
// Service Provider: constructs the local DataQualityService (which publishes ctx.dataQuality) and registers the four model tools below through ctx.tools.register. The registrations live in one effect whose disposer unregisters them in reverse order, so an unmount during apply can neither lose a registration nor leave one behind.
|
|
77
85
|
const service = new LocalDataQualityService(ctx, resolved, { store, now: Date.now });
|
|
78
|
-
ctx.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
ctx.effect(() => {
|
|
87
|
+
const disposers = [
|
|
88
|
+
ctx.tools.register(defineProfileTool(service)),
|
|
89
|
+
ctx.tools.register(defineCleanTool(service)),
|
|
90
|
+
ctx.tools.register(defineVerifyTool(service)),
|
|
91
|
+
ctx.tools.register(defineReportTool(service)),
|
|
92
|
+
];
|
|
93
|
+
return () => {
|
|
94
|
+
for (const dispose of disposers.reverse())
|
|
95
|
+
dispose();
|
|
96
|
+
};
|
|
97
|
+
}, 'dsh-data-quality: tools');
|
|
82
98
|
logger.info(`dsh-data-quality ${VERSION} mounted: ctx.dataQuality + data_profile/data_clean/data_verify/data_report`);
|
|
83
99
|
if (domain !== undefined) {
|
|
84
100
|
const handle = domain;
|
package/lib/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/types/version.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module dsh-data-quality/version
|
|
5
5
|
*/
|
|
6
6
|
/** The package version reported in persisted reports. */
|
|
7
|
-
export declare const VERSION = "0.3.
|
|
7
|
+
export declare const VERSION = "0.3.11";
|
|
8
8
|
/**
|
|
9
9
|
* Version of the persisted report schema. Bump it whenever a report's
|
|
10
10
|
* canonical shape changes in a way old consumers cannot read (the durable
|
package/lib/types/version.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module dsh-data-quality/version
|
|
5
5
|
*/
|
|
6
6
|
/** The package version reported in persisted reports. */
|
|
7
|
-
export const VERSION = '0.3.
|
|
7
|
+
export const VERSION = '0.3.11';
|
|
8
8
|
/**
|
|
9
9
|
* Version of the persisted report schema. Bump it whenever a report's
|
|
10
10
|
* canonical shape changes in a way old consumers cannot read (the durable
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-data-quality",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"description": "Deterministic data profiling, cleaning, and verification for DeepSeek Harness: a ctx.dataQuality capability seam (Service Definition / local Provider / tool Consumers) with data_profile, data_clean, and data_verify model tools, a frozen cross-plugin verifyCitations contract, durable reports in a storage domain, and data-quality/* session events on hosts that support them.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -98,11 +98,11 @@
|
|
|
98
98
|
"packageManager": "pnpm@11.7.0",
|
|
99
99
|
"peerDependencies": {
|
|
100
100
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
101
|
-
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
102
|
-
"@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
103
|
-
"@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
104
|
-
"@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
105
|
-
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
101
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
102
|
+
"@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
103
|
+
"@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
104
|
+
"@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
105
|
+
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
106
106
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
107
107
|
},
|
|
108
108
|
"dependencies": {
|
package/src/events.ts
CHANGED
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
* durable copy. On 0.1.2-alpha.3 the envelope field is retained for stored-log
|
|
16
16
|
* read compatibility only - its Session.append still cannot stamp the marker,
|
|
17
17
|
* so the gate behavior is unchanged.
|
|
18
|
+
* - On the 0.1.6-alpha.2 line `Session.append<T>(type, data, ...opts)` takes a
|
|
19
|
+
* third argument only for surface-eligible event types, and that argument is
|
|
20
|
+
* a `SurfaceIntent` (an append/replace marker), never an `ignorable`
|
|
21
|
+
* envelope: a non-surface `data-quality/*` type has no third parameter at
|
|
22
|
+
* all, so the source-text probe below still finds no `ignorable` handling and
|
|
23
|
+
* the result stays **skip** - the storage-domain report is the durable copy
|
|
24
|
+
* on alpha.2 exactly as on the earlier lines.
|
|
18
25
|
* @module dsh-data-quality/events
|
|
19
26
|
*/
|
|
20
27
|
|
|
@@ -69,7 +76,12 @@ export const DATA_QUALITY_EVENT_TYPES = ['data-quality/profile', 'data-quality/c
|
|
|
69
76
|
/** Union of the event types this plugin appends. */
|
|
70
77
|
export type DataQualityEventType = (typeof DATA_QUALITY_EVENT_TYPES)[number]
|
|
71
78
|
|
|
72
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Loose append shape probed at runtime (rc.6/rc.8/0.1.2-alpha.1 take no
|
|
81
|
+
* options; pre-0.1.2 master builds took `ignorable`; the 0.1.6-alpha.2 third
|
|
82
|
+
* parameter is a `SurfaceIntent` and exists only for surface-eligible types,
|
|
83
|
+
* so a `data-quality/*` call there has no third argument).
|
|
84
|
+
*/
|
|
73
85
|
type AppendProbe = (type: string, data: unknown, options?: { ignorable: true }) => unknown
|
|
74
86
|
|
|
75
87
|
/**
|
package/src/index.ts
CHANGED
|
@@ -102,6 +102,14 @@ export async function apply(ctx: Context, config: Config = {}): Promise<void> {
|
|
|
102
102
|
let domain: Domain<typeof dataQualityDomainSpec> | undefined
|
|
103
103
|
if (resolved.storeReports) {
|
|
104
104
|
domain = await ctx.storageDomain.open(dataQualityDomainSpec)
|
|
105
|
+
// Disposal during the open await: the fiber is gone, so nothing may be
|
|
106
|
+
// registered any more — release the freshly opened handle instead of
|
|
107
|
+
// leaking it (the storage facility is single-open per name, so an
|
|
108
|
+
// unreleased handle also blocks a later remount).
|
|
109
|
+
if (ctx.fiber.uid === null) {
|
|
110
|
+
await domain.close()
|
|
111
|
+
return
|
|
112
|
+
}
|
|
105
113
|
const reports = domain.table('reports')
|
|
106
114
|
store = {
|
|
107
115
|
put: async (record) => {
|
|
@@ -118,12 +126,19 @@ export async function apply(ctx: Context, config: Config = {}): Promise<void> {
|
|
|
118
126
|
}
|
|
119
127
|
}
|
|
120
128
|
|
|
121
|
-
// Service Provider: constructs the local DataQualityService (which publishes ctx.dataQuality) and registers the four model tools below through ctx.tools.register.
|
|
129
|
+
// Service Provider: constructs the local DataQualityService (which publishes ctx.dataQuality) and registers the four model tools below through ctx.tools.register. The registrations live in one effect whose disposer unregisters them in reverse order, so an unmount during apply can neither lose a registration nor leave one behind.
|
|
122
130
|
const service = new LocalDataQualityService(ctx, resolved, { store, now: Date.now })
|
|
123
|
-
ctx.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
131
|
+
ctx.effect(() => {
|
|
132
|
+
const disposers = [
|
|
133
|
+
ctx.tools.register(defineProfileTool(service)),
|
|
134
|
+
ctx.tools.register(defineCleanTool(service)),
|
|
135
|
+
ctx.tools.register(defineVerifyTool(service)),
|
|
136
|
+
ctx.tools.register(defineReportTool(service)),
|
|
137
|
+
]
|
|
138
|
+
return () => {
|
|
139
|
+
for (const dispose of disposers.reverse()) dispose()
|
|
140
|
+
}
|
|
141
|
+
}, 'dsh-data-quality: tools')
|
|
127
142
|
logger.info(`dsh-data-quality ${VERSION} mounted: ctx.dataQuality + data_profile/data_clean/data_verify/data_report`)
|
|
128
143
|
|
|
129
144
|
if (domain !== undefined) {
|