dsh-data-quality 0.3.0 → 0.3.1
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 +7 -0
- package/README.es.md +51 -5
- package/README.hi.md +51 -5
- package/README.md +40 -0
- package/README.pt.md +51 -5
- package/README.zh.md +51 -5
- package/SECURITY.md +39 -0
- package/SUMMARY.md +147 -0
- package/lib/index.js +11 -11
- package/lib/types/events.d.ts +10 -10
- package/lib/types/events.js +10 -10
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.js +1 -1
- package/package.json +9 -2
- package/src/events.ts +11 -11
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,13 @@ 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.1] - 2026-08-30
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Tests and the loader runner no longer import the `CallId` brand from `@deepseek-ai/dsh-llm` (renamed to `ToolCallId` on host master): the call-id brand is now derived from the `dsh-tools` execution contract, staying green on both the published rc line and the 0.1.2-alpha.1 checkout.
|
|
13
|
+
- The adaptive-append comments now state the 0.1.2-alpha.1 reality (the `ignorable` envelope was removed, so the probe fails safe and the append is skipped). Behavior unchanged.
|
|
14
|
+
|
|
8
15
|
## [0.3.0] - 2026-08-26
|
|
9
16
|
|
|
10
17
|
### Added
|
package/README.es.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
- **Canal 1024 store**: `npm i -g dsh1024` una vez, luego `dsh1024 plugin --profile web add dsh-data-quality` (cuenta para el ranking de instalaciones de [deepseek1024.com](https://deepseek1024.com)).
|
|
2
3
|
|
|
3
4
|
**Perfilado, limpieza y verificación de datos deterministas para DeepSeek Harness.**
|
|
4
5
|
|
|
@@ -81,11 +82,11 @@ Todas las claves son opcionales (se muestran los valores por defecto); los valor
|
|
|
81
82
|
|
|
82
83
|
## Tools & surfaces
|
|
83
84
|
|
|
84
|
-
### `data_profile({ path, sample? })`
|
|
85
|
+
### `data_profile({ path, sample?, industryPreset? })`
|
|
85
86
|
|
|
86
|
-
Perfila un dataset del workspace. `path` es relativo al workspace (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON debe ser un array de objetos planos). `sample` toma cada `ceil(N/sample)`-ésima fila para las tarjetas de columna (determinista; los conteos de filas siguen siendo exactos). Devuelve el informe estructurado y renderiza un resumen legible por columna.
|
|
87
|
+
Perfila un dataset del workspace. `path` es relativo al workspace (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON debe ser un array de objetos planos). `sample` toma cada `ceil(N/sample)`-ésima fila para las tarjetas de columna (determinista; los conteos de filas siguen siendo exactos). `industryPreset` (`retail`/`saas`/`fund`/`real-estate`/`e-commerce`/`healthcare`/`logistics`/`manufacturing`/`energy`) inyecta las columnas esperadas de esa industria para que la dimensión `accuracy` del scorecard sea determinable; los ids desconocidos fallan alto. Devuelve el informe estructurado y renderiza un resumen legible por columna.
|
|
87
88
|
|
|
88
|
-
### `data_clean({ path, rules, outputPath? })`
|
|
89
|
+
### `data_clean({ path, rules, outputPath?, dryRun? })`
|
|
89
90
|
|
|
90
91
|
Aplica `rules` en orden de array; cada regla ve la salida de la anterior. Referencia de reglas:
|
|
91
92
|
|
|
@@ -98,9 +99,13 @@ Aplica `rules` en orden de array; cada regla ve la salida de la anterior. Refere
|
|
|
98
99
|
| `trim` | `columns?` | Recorta espacios en celdas de texto (todas las columnas si se omite). |
|
|
99
100
|
| `map-values` | `column`, `map`, `else?` | Mapeo por coincidencia exacta; los valores no mapeados se conservan (`keep`, por defecto) o quedan `missing`. |
|
|
100
101
|
|
|
101
|
-
El archivo de origen **nunca** se sobrescribe. Con `outputPath` el dataset limpio se escribe allí (confinado al workspace, formato por extensión); sin él la ejecución es solo vista previa.
|
|
102
|
+
El archivo de origen **nunca** se sobrescribe. Con `outputPath` el dataset limpio se escribe allí (confinado al workspace, formato por extensión); sin él la ejecución es solo vista previa. Con `dryRun: true` no se escribe ningún archivo ni se persiste nada: el resultado devuelve el plan de limpieza por columna y el `contract`/`diffPreview` esperados. El resultado también lleva un resumen de `contract` previo a la entrega, y un informe de perfil `clean-diff` antes/después se persiste en el dominio de almacenamiento.
|
|
102
103
|
|
|
103
|
-
### `
|
|
104
|
+
### `data_report({ key?, kind?, format? })`
|
|
105
|
+
|
|
106
|
+
Lee informes persistidos del dominio de almacenamiento. Pasa `key` (el `reportKey` exacto que devolvió una ejecución anterior) para obtener un informe, o `kind` (`profile`/`clean`/`clean-diff`/`verify`/`citations`) para listar cronológicamente todos los informes de ese tipo; se requiere exactamente uno de `key`/`kind`. Las claves malformadas o ausentes fallan alto. `format: html` (con `key`) renderiza el informe como un documento HTML offline autocontenido: CSS/JS en línea, sin peticiones externas, el scorecard DAMA de seis dimensiones y las tablas de resumen de perfil/limpieza (solo informes profile/clean).
|
|
107
|
+
|
|
108
|
+
### `data_verify({ path, rules, expectations? })`
|
|
104
109
|
|
|
105
110
|
Evalúa reglas de verificación. Referencia de reglas:
|
|
106
111
|
|
|
@@ -116,6 +121,8 @@ Evalúa reglas de verificación. Referencia de reglas:
|
|
|
116
121
|
|
|
117
122
|
Una celda faltante hace fallar toda regla que la lee. La evidencia se limita a `evidenceRowLimit` filas fallidas por regla.
|
|
118
123
|
|
|
124
|
+
`expectations` reconcilia métricas deterministas con valores esperados: `rowCount`, `columnSum`, `columnMean`, `uniqueCount`, `nullCount` (cada uno con `column` salvo `rowCount`, más `expected` y una `tolerance` relativa opcional en [0, 1]). Cada expectativa produce `passed` más `actual`/`expected`/`tolerance`; una discrepancia es un veredicto normal `passed: false`, nunca un error de herramienta. Métricas inválidas, columnas ausentes y tolerancias fuera de rango fallan alto.
|
|
125
|
+
|
|
119
126
|
### `ctx.dataQuality` (para otros plugins)
|
|
120
127
|
|
|
121
128
|
```ts
|
|
@@ -182,6 +189,45 @@ Este repositorio aún no tiene historial público de issues o pull requests; aqu
|
|
|
182
189
|
|
|
183
190
|
Este plugin sigue las convenciones de ingeniería compartidas de la familia DSH: empaquetado con manifiesto bundle (`dsh.bundle` + `cordis.patch.yml`), READMEs en cinco idiomas con verificación de sincronía, configuración Schemastery de fallo ruidoso, cobertura vitest con servicios reales y la cadena de tres flujos CI/compat/release.
|
|
184
191
|
|
|
192
|
+
## PerryLink DSH Plugin Family
|
|
193
|
+
|
|
194
|
+
Este proyecto es uno de los [33 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:
|
|
195
|
+
|
|
196
|
+
| Plugin | One-liner |
|
|
197
|
+
|---|---|
|
|
198
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Auto-revisión de segundo modelo en la cadena de aprobación, con cierre en fallo por defecto | |
|
|
199
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Agentes hijos en segundo plano durables con barra lateral de UI web, mensajería e interrupción | |
|
|
200
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Gobernanza de costes para DeepSeek Harness: presupuestos, carbono y latencia en un panel. | |
|
|
201
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Equivalente a /rewind de Claude Code: instantáneas, bifurcaciones de sesión, restauración de un solo uso | |
|
|
202
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migra sesiones, memoria, habilidades y CLAUDE.md de Claude Code a DSH | |
|
|
203
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Control de escritorio nativo multiplataforma para DeepSeek Harness — Windows primero. | |
|
|
204
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Historial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R | |
|
|
205
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Defensa contra inyección de prompts, jailbreak y fuga de secretos para DeepSeek Harness. | |
|
|
206
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Guardián de disciplina de ingeniería: interrogatorio de requisitos, puertas de pruebas, revisión adversaria | |
|
|
207
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Enrutamiento unificado de generación de imágenes estáticas para DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Diagnóstico de rendimiento de solo lectura para DeepSeek Harness. | |
|
|
209
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Informes de investigación deterministas para fondos mutuos públicos chinos | |
|
|
210
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | Integración de PR/issues de GitHub para DSH, cada escritura controlada por aprobación | |
|
|
211
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Orquestación de investigación sectorial que sella sus entregables mediante el `ctx.researchReport.assemble` de este plugin | |
|
|
212
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Base de conocimiento documental local para DeepSeek Harness. | |
|
|
213
|
+
| **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Integración de modelos locales (Ollama) para DeepSeek Harness. | |
|
|
214
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | Diagnósticos, formato, autocompletado, acciones de código y renombrado LSP sobre servidores de lenguaje | |
|
|
215
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | Middleware de enmascaramiento de PII: anonimiza en el límite del modelo, restaura en la capa de visualización | |
|
|
216
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Panel de tiempo de ejecución MCP de solo lectura: comando /mcp + pestaña Settings con estado, herramientas y errores | |
|
|
217
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Memoria entre sesiones controlada por aprobación: costura ctx.memory + SQLite + herramienta de memoria | |
|
|
218
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | Exportador de observabilidad OpenTelemetry y Langfuse para DeepSeek Harness. | |
|
|
219
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Cambio de estilo en tiempo de ejecución equivalente a outputStyles de Claude Code | |
|
|
220
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
221
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
222
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
223
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
224
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
|
|
225
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Sincronización de sesiones entre dispositivos para DeepSeek Harness — un espejo git dedicado de tu almacén de sesiones. | |
|
|
226
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Paquete de habilidades de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro | |
|
|
227
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Bucle de sesión con voz para DeepSeek Harness: háblale y escucha su respuesta. | |
|
|
228
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
229
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
230
|
+
|
|
185
231
|
## License
|
|
186
232
|
|
|
187
233
|
Apache-2.0 — véase [LICENSE](LICENSE) y [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/README.hi.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
- **1024 स्टोर चैनल**: एक बार `npm i -g dsh1024`, फिर `dsh1024 plugin --profile web add dsh-data-quality` ([deepseek1024.com](https://deepseek1024.com) इंस्टॉल रैंकिंग में गिना जाता है)।
|
|
2
3
|
|
|
3
4
|
**DeepSeek Harness के लिए निर्धारणात्मक (deterministic) डेटा प्रोफ़ाइलिंग, क्लीनिंग और सत्यापन।**
|
|
4
5
|
|
|
@@ -81,11 +82,11 @@ dsh plugin --profile web remove dsh-data-quality # अनइंस्टॉल
|
|
|
81
82
|
|
|
82
83
|
## Tools & surfaces
|
|
83
84
|
|
|
84
|
-
### `data_profile({ path, sample? })`
|
|
85
|
+
### `data_profile({ path, sample?, industryPreset? })`
|
|
85
86
|
|
|
86
|
-
वर्कस्पेस डेटासेट प्रोफ़ाइल करता है। `path` वर्कस्पेस-सापेक्ष (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON सपाट ऑब्जेक्ट की सरणी होनी चाहिए)। `sample` स्तंभ कार्ड के लिए हर `ceil(N/sample)`-वीं पंक्ति लेता है (निर्धारणात्मक; पंक्ति गिनती सटीक रहती है)। संरचित रिपोर्ट लौटाता है; मानव-पठनीय प्रति-स्तंभ सारांश रेंडर करता है।
|
|
87
|
+
वर्कस्पेस डेटासेट प्रोफ़ाइल करता है। `path` वर्कस्पेस-सापेक्ष (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON सपाट ऑब्जेक्ट की सरणी होनी चाहिए)। `sample` स्तंभ कार्ड के लिए हर `ceil(N/sample)`-वीं पंक्ति लेता है (निर्धारणात्मक; पंक्ति गिनती सटीक रहती है)। `industryPreset` (`retail`/`saas`/`fund`/`real-estate`/`e-commerce`/`healthcare`/`logistics`/`manufacturing`/`energy`) उस उद्योग के अपेक्षित स्तंभ भरता है ताकि स्कोरकार्ड `accuracy` आयाम निर्धारित हो सके; अज्ञात id तेज़ी से असफल होते हैं। संरचित रिपोर्ट लौटाता है; मानव-पठनीय प्रति-स्तंभ सारांश रेंडर करता है।
|
|
87
88
|
|
|
88
|
-
### `data_clean({ path, rules, outputPath? })`
|
|
89
|
+
### `data_clean({ path, rules, outputPath?, dryRun? })`
|
|
89
90
|
|
|
90
91
|
`rules` को सरणी क्रम में लागू करता है; हर नियम पिछले का आउटपुट देखता है। नियम संदर्भ:
|
|
91
92
|
|
|
@@ -98,9 +99,13 @@ dsh plugin --profile web remove dsh-data-quality # अनइंस्टॉल
|
|
|
98
99
|
| `trim` | `columns?` | स्ट्रिंग सेल की व्हाइटस्पेस छाँटें (छोड़ने पर सभी स्तंभ)। |
|
|
99
100
|
| `map-values` | `column`, `map`, `else?` | सटीक-मिलान मैपिंग; अनमैप्ड मान रहते हैं (`keep`, डिफ़ॉल्ट) या `missing` बनते हैं। |
|
|
100
101
|
|
|
101
|
-
मूल फ़ाइल **कभी** अधिलेखित नहीं होती। `outputPath` देने पर साफ़ डेटासेट वहाँ लिखा जाता है (वर्कस्पेस-सीमित, एक्सटेंशन से प्रारूप); बिना उसके रन केवल पूर्वावलोकन है।
|
|
102
|
+
मूल फ़ाइल **कभी** अधिलेखित नहीं होती। `outputPath` देने पर साफ़ डेटासेट वहाँ लिखा जाता है (वर्कस्पेस-सीमित, एक्सटेंशन से प्रारूप); बिना उसके रन केवल पूर्वावलोकन है। `dryRun: true` से कोई फ़ाइल नहीं लिखी जाती और कुछ भी सहेजा नहीं जाता — परिणाम प्रति-स्तंभ क्लीनिंग योजना और अपेक्षित `contract`/`diffPreview` लौटाता है। परिणाम में पूर्व-डिलीवरी `contract` सारांश भी रहता है, और एक `clean-diff` पहले/बाद प्रोफ़ाइल रिपोर्ट स्टोरेज डोमेन में सहेजी जाती है।
|
|
102
103
|
|
|
103
|
-
### `
|
|
104
|
+
### `data_report({ key?, kind?, format? })`
|
|
105
|
+
|
|
106
|
+
स्टोरेज डोमेन से सहेजी गई रिपोर्टें वापस पढ़ता है। एक रिपोर्ट लाने के लिए `key` (पिछले रन का सटीक `reportKey`) दें, या उस प्रकार की हर रिपोर्ट कालक्रम से सूचीबद्ध करने के लिए `kind` (`profile`/`clean`/`clean-diff`/`verify`/`citations`) दें; `key`/`kind` में से ठीक एक आवश्यक है। गलत या गायब कुंजियाँ तेज़ी से असफल होती हैं। `format: html` (`key` के साथ) रिपोर्ट को self-contained ऑफ़लाइन HTML दस्तावेज़ में रेंडर करता है — इनलाइन CSS/JS, कोई बाहरी अनुरोध नहीं, DAMA छह-आयामी स्कोरकार्ड और प्रोफ़ाइल/क्लीनिंग सारांश तालिकाएँ (केवल profile/clean रिपोर्ट)।
|
|
107
|
+
|
|
108
|
+
### `data_verify({ path, rules, expectations? })`
|
|
104
109
|
|
|
105
110
|
सत्यापन नियम मूल्यांकन करता है। नियम संदर्भ:
|
|
106
111
|
|
|
@@ -116,6 +121,8 @@ dsh plugin --profile web remove dsh-data-quality # अनइंस्टॉल
|
|
|
116
121
|
|
|
117
122
|
अनुपस्थित सेल उसे पढ़ने वाले हर नियम को असफल करती है। साक्ष्य प्रति-नियम `evidenceRowLimit` असफल पंक्तियों तक सीमित है।
|
|
118
123
|
|
|
124
|
+
`expectations` निर्धारणात्मक मीट्रिक्स को अपेक्षित मानों से मिलाता है: `rowCount`, `columnSum`, `columnMean`, `uniqueCount`, `nullCount` (हर एक में `column` सिवाय `rowCount`, साथ `expected` और वैकल्पिक सापेक्ष `tolerance` [0, 1] में)। हर अपेक्षा `passed` के साथ `actual`/`expected`/`tolerance` देती है; बेमेल सामान्य `passed: false` निर्णय है, कभी टूल त्रुटि नहीं। अमान्य मीट्रिक्स, गायब स्तंभ और सीमा से बाहर tolerance तेज़ी से असफल होते हैं।
|
|
125
|
+
|
|
119
126
|
### `ctx.dataQuality` (अन्य प्लगिन के लिए)
|
|
120
127
|
|
|
121
128
|
```ts
|
|
@@ -182,6 +189,45 @@ pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:r
|
|
|
182
189
|
|
|
183
190
|
यह प्लगिन साझा DSH परिवार इंजीनियरिंग परिपाटियों का पालन करता है: bundle-मैनिफ़ेस्ट पैकेजिंग (`dsh.bundle` + `cordis.patch.yml`), सिंक जाँच से बंधे पाँच-भाषा README, ठोस-असफल Schemastery कॉन्फ़िगरेशन, वास्तविक-सेवा vitest कवरेज, और तीन-वर्कफ़्लो CI/compat/release श्रृंखला।
|
|
184
191
|
|
|
192
|
+
## PerryLink DSH Plugin Family
|
|
193
|
+
|
|
194
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [33 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
195
|
+
|
|
196
|
+
| Plugin | One-liner |
|
|
197
|
+
|---|---|
|
|
198
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | अनुमोदन श्रृंखला पर द्वितीय-मॉडल स्वतः-समीक्षा, डिफ़ॉल्ट रूप से विफल-बंद | |
|
|
199
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | वेब UI साइडबार, संदेश और अवरोधन के साथ टिकाऊ पृष्ठभूमि चाइल्ड एजेंट | |
|
|
200
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | DeepSeek Harness के लिए लागत प्रशासन: बजट, कार्बन और विलंबता एक पैनल में। | |
|
|
201
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind-समतुल्य: स्नैपशॉट, सत्र फ़ॉर्क, एक-बार पुनर्स्थापना | |
|
|
202
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Claude Code सत्र, मेमोरी, कौशल और CLAUDE.md को DSH में स्थानांतरित करें | |
|
|
203
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | DeepSeek Harness के लिए क्रॉस-प्लेटफ़ॉर्म नेटिव डेस्कटॉप नियंत्रण — Windows पहले। | |
|
|
204
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | वेब कंपोज़र के लिए टर्मिनल-शैली इनपुट इतिहास: तीर, Ctrl+R खोज | |
|
|
205
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | DeepSeek Harness के लिए प्रॉम्प्ट-इंजेक्शन, जेलब्रेक और सीक्रेट-लीक रक्षा। | |
|
|
206
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | इंजीनियरिंग-अनुशासन रक्षक: आवश्यकताओं की पूछताछ, परीक्षण द्वार, प्रतिद्वंद्वी समीक्षा | |
|
|
207
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | DeepSeek Harness के लिए एकीकृत स्थैतिक-छवि निर्माण रूटिंग। | |
|
|
208
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | DeepSeek Harness के लिए रीड-ओनली प्रदर्शन डायग्नोस्टिक्स। | |
|
|
209
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | चीनी सार्वजनिक म्यूचुअल फंड के लिए नियतात्मक अनुसंधान रिपोर्ट | |
|
|
210
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | DSH के लिए GitHub PR/issues एकीकरण, हर लेखन अनुमोदन-द्वारित | |
|
|
211
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | उद्योग-अनुसंधान ऑर्केस्ट्रेशन जो इस प्लगिन के `ctx.researchReport.assemble` से डिलीवरेबल सील करता है | |
|
|
212
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | DeepSeek Harness के लिए स्थानीय दस्तावेज़ ज्ञानकोश। | |
|
|
213
|
+
| **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | DeepSeek Harness के लिए स्थानीय-मॉडल (Ollama) एकीकरण। | |
|
|
214
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | भाषा सर्वरों पर LSP निदान, फ़ॉर्मेटिंग, पूर्णता, कोड क्रियाएँ और नाम बदलना | |
|
|
215
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII मास्किंग मिडलवेयर: मॉडल सीमा पर अनाम करें, डिस्प्ले लेयर पर पुनर्स्थापित करें | |
|
|
216
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | केवल-पढ़ने वाला MCP रनटाइम पैनल: /mcp कमांड + स्थिति, टूल और त्रुटियों वाला Settings टैब | |
|
|
217
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | अनुमोदन-द्वारित क्रॉस-सत्र मेमोरी: ctx.memory सीम + SQLite + मेमोरी टूल | |
|
|
218
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | DeepSeek Harness के लिए OpenTelemetry और Langfuse अवलोकनीयता निर्यातक। | |
|
|
219
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles-समतुल्य रनटाइम शैली बदलाव | |
|
|
220
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
221
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
|
|
222
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
223
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
224
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | टिकाऊ क्रम के साथ वेब साइडबार में सत्र पिन करें | |
|
|
225
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | DeepSeek Harness के लिए क्रॉस-डिवाइस सत्र सिंक — आपके सत्र स्टोर का एक समर्पित git मिरर। | |
|
|
226
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | सुरक्षा-ऑडिट कौशल पैक: गुप्त स्कैन, निर्भरता और आपूर्ति-श्रृंखला समीक्षा | |
|
|
227
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | DeepSeek Harness के लिए आवाज़-प्रथम सत्र लूप: बोलें और उत्तर सुनें। | |
|
|
228
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
229
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
230
|
+
|
|
185
231
|
## License
|
|
186
232
|
|
|
187
233
|
Apache-2.0 — देखें [LICENSE](LICENSE) और [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)।
|
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
- **1024 store channel**: `npm i -g dsh1024` once, then `dsh1024 plugin --profile web add dsh-data-quality` (counts toward the [deepseek1024.com](https://deepseek1024.com) install ranking).
|
|
2
3
|
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
3
4
|
|
|
4
5
|
[](https://www.npmjs.com/package/dsh-data-quality)
|
|
@@ -195,6 +196,45 @@ This repository has no public issue or pull request history yet; individual PR/i
|
|
|
195
196
|
|
|
196
197
|
This plugin follows the shared DSH family engineering conventions: bundle-manifest packaging (`dsh.bundle` + `cordis.patch.yml`), five-language READMEs gated by a sync check, fail-loud Schemastery configuration, real-service vitest coverage, and a three-workflow CI/compat/release chain.
|
|
197
198
|
|
|
199
|
+
## PerryLink DSH Plugin Family
|
|
200
|
+
|
|
201
|
+
This project is one of the [33 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
202
|
+
|
|
203
|
+
| Plugin | One-liner |
|
|
204
|
+
|---|---|
|
|
205
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
206
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
207
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
208
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
209
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
210
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
211
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
212
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
213
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
214
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
215
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
216
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
217
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
218
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
219
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
220
|
+
| **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
221
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
222
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
223
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
224
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
225
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
226
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
227
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
228
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
229
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
230
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
231
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
232
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
233
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
234
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
235
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
236
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
237
|
+
|
|
198
238
|
## License
|
|
199
239
|
|
|
200
240
|
Apache-2.0 — see [LICENSE](LICENSE) and [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/README.pt.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
- **Canal 1024 store**: `npm i -g dsh1024` uma vez, depois `dsh1024 plugin --profile web add dsh-data-quality` (conta para o ranking de instalações do [deepseek1024.com](https://deepseek1024.com)).
|
|
2
3
|
|
|
3
4
|
**Perfilamento, limpeza e verificação de dados determinísticos para DeepSeek Harness.**
|
|
4
5
|
|
|
@@ -81,11 +82,11 @@ Todas as chaves são opcionais (valores padrão mostrados); valores inválidos f
|
|
|
81
82
|
|
|
82
83
|
## Tools & surfaces
|
|
83
84
|
|
|
84
|
-
### `data_profile({ path, sample? })`
|
|
85
|
+
### `data_profile({ path, sample?, industryPreset? })`
|
|
85
86
|
|
|
86
|
-
Perfilam um dataset do workspace. `path` é relativo ao workspace (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON deve ser um array de objetos planos). `sample` toma cada `ceil(N/sample)`-ésima linha para os cartões de coluna (determinístico; as contagens de linhas continuam exatas). Retorna o relatório estruturado e renderiza um resumo legível por coluna.
|
|
87
|
+
Perfilam um dataset do workspace. `path` é relativo ao workspace (`.csv`/`.tsv`/`.json`/`.jsonl`; JSON deve ser um array de objetos planos). `sample` toma cada `ceil(N/sample)`-ésima linha para os cartões de coluna (determinístico; as contagens de linhas continuam exatas). `industryPreset` (`retail`/`saas`/`fund`/`real-estate`/`e-commerce`/`healthcare`/`logistics`/`manufacturing`/`energy`) injeta as colunas esperadas dessa indústria para que a dimensão `accuracy` do scorecard seja determinável; ids desconhecidos falham alto. Retorna o relatório estruturado e renderiza um resumo legível por coluna.
|
|
87
88
|
|
|
88
|
-
### `data_clean({ path, rules, outputPath? })`
|
|
89
|
+
### `data_clean({ path, rules, outputPath?, dryRun? })`
|
|
89
90
|
|
|
90
91
|
Aplica `rules` na ordem do array; cada regra vê a saída da anterior. Referência de regras:
|
|
91
92
|
|
|
@@ -98,9 +99,13 @@ Aplica `rules` na ordem do array; cada regra vê a saída da anterior. Referênc
|
|
|
98
99
|
| `trim` | `columns?` | Apara espaços de células de texto (todas as colunas se omitido). |
|
|
99
100
|
| `map-values` | `column`, `map`, `else?` | Mapeamento por correspondência exata; valores não mapeados ficam (`keep`, padrão) ou viram `missing`. |
|
|
100
101
|
|
|
101
|
-
O arquivo de origem **nunca** é sobrescrito. Com `outputPath` o dataset limpo é gravado lá (confinado ao workspace, formato por extensão); sem ele a execução é apenas prévia.
|
|
102
|
+
O arquivo de origem **nunca** é sobrescrito. Com `outputPath` o dataset limpo é gravado lá (confinado ao workspace, formato por extensão); sem ele a execução é apenas prévia. Com `dryRun: true` nenhum arquivo é gravado e nada é persistido: o resultado devolve o plano de limpeza por coluna e o `contract`/`diffPreview` esperados. O resultado também carrega um resumo de `contract` pré-entrega, e um relatório de perfil `clean-diff` antes/depois é persistido no domínio de armazenamento.
|
|
102
103
|
|
|
103
|
-
### `
|
|
104
|
+
### `data_report({ key?, kind?, format? })`
|
|
105
|
+
|
|
106
|
+
Lê relatórios persistidos do domínio de armazenamento. Passe `key` (o `reportKey` exato devolvido por uma execução anterior) para buscar um relatório, ou `kind` (`profile`/`clean`/`clean-diff`/`verify`/`citations`) para listar cronologicamente todos os relatórios desse tipo; exatamente um de `key`/`kind` é obrigatório. Chaves malformadas ou ausentes falham alto. `format: html` (com `key`) renderiza o relatório como um documento HTML offline autocontido: CSS/JS em linha, sem requisições externas, o scorecard DAMA de seis dimensões e as tabelas de resumo de perfil/limpeza (somente relatórios profile/clean).
|
|
107
|
+
|
|
108
|
+
### `data_verify({ path, rules, expectations? })`
|
|
104
109
|
|
|
105
110
|
Avalia regras de verificação. Referência de regras:
|
|
106
111
|
|
|
@@ -116,6 +121,8 @@ Avalia regras de verificação. Referência de regras:
|
|
|
116
121
|
|
|
117
122
|
Uma célula ausente faz falhar toda regra que a lê. A evidência é limitada a `evidenceRowLimit` linhas falhas por regra.
|
|
118
123
|
|
|
124
|
+
`expectations` reconcilia métricas determinísticas com valores esperados: `rowCount`, `columnSum`, `columnMean`, `uniqueCount`, `nullCount` (cada um com `column` exceto `rowCount`, mais `expected` e uma `tolerance` relativa opcional em [0, 1]). Cada expectativa produz `passed` mais `actual`/`expected`/`tolerance`; uma discrepância é um veredicto normal `passed: false`, nunca um erro de ferramenta. Métricas inválidas, colunas ausentes e tolerâncias fora de faixa falham alto.
|
|
125
|
+
|
|
119
126
|
### `ctx.dataQuality` (para outros plugins)
|
|
120
127
|
|
|
121
128
|
```ts
|
|
@@ -182,6 +189,45 @@ Este repositório ainda não tem histórico público de issues ou pull requests;
|
|
|
182
189
|
|
|
183
190
|
Este plugin segue as convenções de engenharia partilhadas da família DSH: empacotamento com manifesto bundle (`dsh.bundle` + `cordis.patch.yml`), READMEs em cinco línguas com verificação de sincronia, configuração Schemastery de falha ruidosa, cobertura vitest com serviços reais e a cadeia de três fluxos CI/compat/release.
|
|
184
191
|
|
|
192
|
+
## PerryLink DSH Plugin Family
|
|
193
|
+
|
|
194
|
+
Este projeto é um dos [33 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
|
|
195
|
+
|
|
196
|
+
| Plugin | One-liner |
|
|
197
|
+
|---|---|
|
|
198
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Auto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão | |
|
|
199
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Agentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção | |
|
|
200
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Governança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel. | |
|
|
201
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único | |
|
|
202
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH | |
|
|
203
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Controle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro. | |
|
|
204
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R | |
|
|
205
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Defesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness. | |
|
|
206
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Guardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária | |
|
|
207
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Roteamento unificado de geração de imagens estáticas para DeepSeek Harness. | |
|
|
208
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Diagnóstico de desempenho só de leitura para DeepSeek Harness. | |
|
|
209
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Relatórios de pesquisa deterministas para fundos mútuos públicos chineses | |
|
|
210
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | Integração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação | |
|
|
211
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Orquestração de pesquisa setorial que sela as suas entregas através do `ctx.researchReport.assemble` deste plugin | |
|
|
212
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Base de conhecimento documental local para DeepSeek Harness. | |
|
|
213
|
+
| **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Integração de modelos locais (Ollama) para DeepSeek Harness. | |
|
|
214
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | Diagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem | |
|
|
215
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | Middleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição | |
|
|
216
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Painel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros | |
|
|
217
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Memória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória | |
|
|
218
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | Exportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness. | |
|
|
219
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code | |
|
|
220
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
221
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
222
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo | |
|
|
223
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
224
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
|
|
225
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Sincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões. | |
|
|
226
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos | |
|
|
227
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Loop de sessão com voz para DeepSeek Harness: fale e ouça a resposta. | |
|
|
228
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
229
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
230
|
+
|
|
185
231
|
## License
|
|
186
232
|
|
|
187
233
|
Apache-2.0 — ver [LICENSE](LICENSE) e [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/README.zh.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
- **1024 商店渠道**:先 `npm i -g dsh1024`,再 `dsh1024 plugin --profile web add dsh-data-quality`(计入 [deepseek1024.com](https://deepseek1024.com) 安装排行)。
|
|
2
3
|
|
|
3
4
|
**DeepSeek Harness 的确定性数据梳理、清洗与核查插件。**
|
|
4
5
|
|
|
@@ -81,11 +82,11 @@ dsh plugin --profile web remove dsh-data-quality # 卸载
|
|
|
81
82
|
|
|
82
83
|
## Tools & surfaces
|
|
83
84
|
|
|
84
|
-
### `data_profile({ path, sample? })`
|
|
85
|
+
### `data_profile({ path, sample?, industryPreset? })`
|
|
85
86
|
|
|
86
|
-
梳理工作区数据集。`path` 为工作区相对路径(`.csv`/`.tsv`/`.json`/`.jsonl`;JSON 必须是扁平对象数组)。`sample` 按每 `ceil(N/sample)`
|
|
87
|
+
梳理工作区数据集。`path` 为工作区相对路径(`.csv`/`.tsv`/`.json`/`.jsonl`;JSON 必须是扁平对象数组)。`sample` 按每 `ceil(N/sample)` 行取样计算列卡片(确定性;行数仍精确)。`industryPreset`(`retail`/`saas`/`fund`/`real-estate`/`e-commerce`/`healthcare`/`logistics`/`manufacturing`/`energy`)注入该行业预期列,使计分卡 `accuracy` 维度可判定;未知 id 响亮失败。返回结构化报告,并渲染人类可读的逐列摘要。
|
|
87
88
|
|
|
88
|
-
### `data_clean({ path, rules, outputPath? })`
|
|
89
|
+
### `data_clean({ path, rules, outputPath?, dryRun? })`
|
|
89
90
|
|
|
90
91
|
按数组顺序应用 `rules`,每条规则看到上一条的输出。规则参考:
|
|
91
92
|
|
|
@@ -98,9 +99,13 @@ dsh plugin --profile web remove dsh-data-quality # 卸载
|
|
|
98
99
|
| `trim` | `columns?` | 去除字符串单元格首尾空白(省略时为全部列)。 |
|
|
99
100
|
| `map-values` | `column`, `map`, `else?` | 精确匹配映射;未映射值保留(`keep`,默认)或置缺失(`missing`)。 |
|
|
100
101
|
|
|
101
|
-
源文件**绝不**被覆盖。给出 `outputPath`
|
|
102
|
+
源文件**绝不**被覆盖。给出 `outputPath` 时清洗结果写入该路径(限定工作区内,按扩展名定格式);否则仅预览。`dryRun: true` 时不写任何文件、不持久化任何内容——结果返回逐列清洗计划与预期的 `contract`/`diffPreview`。结果还携带交付前 `contract` 摘要,并持久化一份 `clean-diff` 前后对比画像报告。
|
|
102
103
|
|
|
103
|
-
### `
|
|
104
|
+
### `data_report({ key?, kind?, format? })`
|
|
105
|
+
|
|
106
|
+
从存储域读回已持久化的报告。传 `key`(此前运行返回的精确 `reportKey`)取单份报告,或传 `kind`(`profile`/`clean`/`clean-diff`/`verify`/`citations`)按时间顺序列出该类全部报告;`key`/`kind` 恰需一个。格式错误或缺失的键响亮失败。`format: html`(需 `key`)把报告渲染为自包含离线 HTML 文档——内联 CSS/JS、无外部请求、DAMA 六维计分卡与画像/清洗汇总表(仅 profile/clean 报告)。
|
|
107
|
+
|
|
108
|
+
### `data_verify({ path, rules, expectations? })`
|
|
104
109
|
|
|
105
110
|
评估核查规则。规则参考:
|
|
106
111
|
|
|
@@ -116,6 +121,8 @@ dsh plugin --profile web remove dsh-data-quality # 卸载
|
|
|
116
121
|
|
|
117
122
|
任何被读取的单元格缺失都会使该规则该行失败。每条规则的失败行证据上限为 `evidenceRowLimit`。
|
|
118
123
|
|
|
124
|
+
`expectations` 用确定性指标对照期望值:`rowCount`、`columnSum`、`columnMean`、`uniqueCount`、`nullCount`(除 `rowCount` 外各带 `column`,加 `expected` 与可选相对 `tolerance`∈[0, 1])。每项期望产出 `passed` 加 `actual`/`expected`/`tolerance`;不符是正常的 `passed: false` 判定,绝非工具错误。非法指标、缺失列、超范围 tolerance 响亮失败。
|
|
125
|
+
|
|
119
126
|
### `ctx.dataQuality`(供其他插件)
|
|
120
127
|
|
|
121
128
|
```ts
|
|
@@ -182,6 +189,45 @@ pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:r
|
|
|
182
189
|
|
|
183
190
|
本插件遵循 DSH 家族共享工程规范:bundle 清单打包(`dsh.bundle` + `cordis.patch.yml`)、同步门禁约束的五语 README、响亮失败的 Schemastery 配置、真实服务 vitest 覆盖、CI/compat/release 三工作流链。
|
|
184
191
|
|
|
192
|
+
## PerryLink DSH Plugin Family
|
|
193
|
+
|
|
194
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [33 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
195
|
+
|
|
196
|
+
| Plugin | One-liner |
|
|
197
|
+
|---|---|
|
|
198
|
+
| **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | 审批链上的第二模型自动审查,默认失败关闭 | |
|
|
199
|
+
| **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | 带 Web UI 侧栏、消息与中断的持久后台子代理 | |
|
|
200
|
+
| **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | DeepSeek Harness 的成本治理:预算、碳排与延迟一屏呈现。 | |
|
|
201
|
+
| **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind 等价:快照、会话 fork、一次性恢复 | |
|
|
202
|
+
| **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | 把 Claude Code 会话、记忆、技能与 CLAUDE.md 迁入 DSH | |
|
|
203
|
+
| **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | 跨平台原生桌面控制(DeepSeek Harness),Windows 优先。 | |
|
|
204
|
+
| **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Web 输入框的终端式历史:方向键、Ctrl+R 搜索 | |
|
|
205
|
+
| **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | DeepSeek Harness 的提示注入、越狱与密钥泄露防护。 | |
|
|
206
|
+
| **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | 工程纪律守卫:需求质询、测试门禁、对手评审 | |
|
|
207
|
+
| **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | DeepSeek Harness 的统一静态图像生成路由。 | |
|
|
208
|
+
| **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | DeepSeek Harness 只读性能诊断。 | |
|
|
209
|
+
| **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | 面向中国公募基金的确定性研究报告 | |
|
|
210
|
+
| **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | 面向 DSH 的 GitHub PR/issues 集成,每次写入经审批门控 | |
|
|
211
|
+
| **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | 行业研究编排,经本插件的 `ctx.researchReport.assemble` 封存交付物 | |
|
|
212
|
+
| **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | DeepSeek Harness 的本地文档知识库。 | |
|
|
213
|
+
| **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | DeepSeek Harness 的本地模型(Ollama)接入。 | |
|
|
214
|
+
| **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | 通过语言服务器的 LSP 诊断、格式化、补全、代码操作与重命名 | |
|
|
215
|
+
| **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII 脱敏中间件:模型边界匿名化、展示层还原 | |
|
|
216
|
+
| **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | 只读 MCP 运行时面板:/mcp 命令 + 带状态、工具与错误的 Settings 标签页 | |
|
|
217
|
+
| **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + 记忆工具 | |
|
|
218
|
+
| **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | DeepSeek Harness 的 OpenTelemetry 与 Langfuse 可观测导出器。 | |
|
|
219
|
+
| **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles 等价的运行时风格切换 | |
|
|
220
|
+
| **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
221
|
+
| **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
222
|
+
| **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
223
|
+
| **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
224
|
+
| **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
225
|
+
| **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | DeepSeek Harness 的跨设备会话同步——会话存储的专用 git 镜像。 | |
|
|
226
|
+
| **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
|
|
227
|
+
| **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | DeepSeek Harness 的语音优先会话闭环:对它说,听它答。 | |
|
|
228
|
+
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
229
|
+
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
230
|
+
|
|
185
231
|
## License
|
|
186
232
|
|
|
187
233
|
Apache-2.0 —— 见 [LICENSE](LICENSE) 与 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
## Reporting a vulnerability
|
|
4
|
+
|
|
5
|
+
Please **do not** open a public issue for security vulnerabilities.
|
|
6
|
+
|
|
7
|
+
Report privately through GitHub's private vulnerability reporting:
|
|
8
|
+
|
|
9
|
+
**https://github.com/PerryLink/dsh-data-quality/security/advisories/new**
|
|
10
|
+
|
|
11
|
+
That flow keeps the report confidential while we triage, and it is the channel we watch first.
|
|
12
|
+
|
|
13
|
+
## Before you report
|
|
14
|
+
|
|
15
|
+
- **Redact sensitive data** from any logs or session excerpts you attach: tokens, API keys, secrets, Authorization/request headers, personal paths, and account identifiers.
|
|
16
|
+
- Include, when possible: the plugin version, the harness (`dsh`) version, Node and OS versions, and the minimal steps to reproduce.
|
|
17
|
+
|
|
18
|
+
## What to expect
|
|
19
|
+
|
|
20
|
+
- **Acknowledgment**: within 5 business days.
|
|
21
|
+
- **Triage**: within 10 business days we confirm the issue and assess severity, or ask for more details.
|
|
22
|
+
- **Fix**: security fixes are prepared in a private fork, released as a patch version, and announced in the release notes.
|
|
23
|
+
|
|
24
|
+
## Disclosure and credit
|
|
25
|
+
|
|
26
|
+
- We follow coordinated disclosure: a public advisory (and CVE request where appropriate) is published once a fix ships.
|
|
27
|
+
- Reporters are credited in the advisory unless they ask to remain anonymous. There is no bug bounty program at this time.
|
|
28
|
+
|
|
29
|
+
## Scope
|
|
30
|
+
|
|
31
|
+
This plugin reads and writes datasets inside the session workspace. Its guarantees are:
|
|
32
|
+
|
|
33
|
+
- **Workspace confinement** — every dataset and output path resolves inside the session workspace (service-level calls use the configured `workspaceRoot`); `..` escapes and absolute paths outside the root are rejected, and extensions are allowlisted.
|
|
34
|
+
- **Bounded work** — row and file-size caps reject oversized inputs loudly; evidence and preview rows are capped; cell text in tool results is display-truncated.
|
|
35
|
+
- **No source mutation** — `data_clean` never overwrites its input dataset; cleaned output writes only to a distinct workspace-confined path.
|
|
36
|
+
- **No network or credentials** — the plugin performs no outbound requests and stores no secrets; reports persist to the local harness storage domain.
|
|
37
|
+
- **Fail-loud configuration** — every tunable is validated at mount.
|
|
38
|
+
|
|
39
|
+
Vulnerabilities in the harness itself should be reported to the official harness maintainers instead.
|
package/SUMMARY.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# dsh-data-quality — Completion Summary
|
|
2
|
+
|
|
3
|
+
Standalone DeepSeek Harness plugin repository (`dsh-data-quality`): deterministic TypeScript data profiling / cleaning / verification for the agent harness, built as the full three-layer capability seam (Service Definition / local Provider / three model tool Consumers) with durable report storage and adaptive session events.
|
|
4
|
+
|
|
5
|
+
## Deliverables
|
|
6
|
+
|
|
7
|
+
### Capability seam
|
|
8
|
+
|
|
9
|
+
- **`ctx.dataQuality` Service Definition** (`src/service.ts`) — `DataQualityService extends Service`, registered under `dataQuality`. Exposes the frozen cross-plugin contract:
|
|
10
|
+
- `verifyCitations(request: CitationCheckRequest): Promise<CitationCheckResult>` — the byte-stable cross-plugin contract (§6.2 of the plugin spec), change only with an ecosystem migration.
|
|
11
|
+
- `profileDataset`, `cleanDataset`, `verifyDataset` — the internal report pipeline used by the tools.
|
|
12
|
+
- **Local deterministic Provider** (`src/provider-local.ts`) — no I/O in the engines, no clock (injected `now` / `freshness`), no RNG; TypeScript `private` fields only (ECMA `#` fields throw on cordis' proxied service receiver).
|
|
13
|
+
- **Consumers** (`src/tools/*.ts`) — `data_profile`, `data_clean`, `data_verify` `defineTool`s; all computation via the service; `workspaceOf(exec)` mirrors the official fs tools' session-cwd rule.
|
|
14
|
+
|
|
15
|
+
### Engines (pure, deterministic)
|
|
16
|
+
|
|
17
|
+
- `src/dataset.ts` — workspace-confined path resolution, size/row guards, hand-rolled CSV/TSV/JSON/JSONL parsers, deterministic systematic sampling, strict scalar parsers (`Cell = JsonValue`).
|
|
18
|
+
- `src/profile.ts` — row/column counts, inferred types, missing rates, unique counts, numeric distribution (min/max/mean/median/p25/p75), IQR outlier counts, mixed-type suspicion notes, duplicate-row counts, text rendering.
|
|
19
|
+
- `src/clean.ts` — six rule kinds, exactly the spec's list: `dedupe` (column group), `fill-missing` (constant/mean/median/forward), `coerce-type` (number/date/boolean with failure counts), `normalize-unit` (万/亿-style factor map), `trim`, `map-values` (enum mapping with `else: keep|missing`).
|
|
20
|
+
- `src/verify.ts` — seven rule kinds, exactly the spec's list: `not-null`, `unique`, `range`, `regex`, `enum`, `cross-column`, `freshness` (date column vs `asOf`, default injected clock) — plus `checkCitations`/`parseLocator`/`walkLocator` and the four verification states (`verified` / `mismatch` / `not-found` / `unverifiable`).
|
|
21
|
+
|
|
22
|
+
### Integration surfaces
|
|
23
|
+
|
|
24
|
+
- `src/store.ts` — `data_quality` storage domain (zod record schema, version 1, table `reports`), deterministic report key `YYYYMMDDHHmmssSSS-<kind>-<8-hex-sha256>`.
|
|
25
|
+
- `src/events.ts` — `data-quality/profile|clean|verify` in the `SessionEventMap` declaration merge. Adaptive append gate: known vocabulary → plain append; unknown vocabulary → probe the unbound `append` source for an `ignorable` marker and only then append with `{ ignorable: true }`; otherwise skip (the storage-domain report is always the durable copy). This is required because the rc.6 `Session.append` has no `ignorable` flag and no plugin event-registration surface exists, so an unknown appended type makes the persistence coordinator refuse the session log on restore.
|
|
26
|
+
- `src/config.ts` — Schemastery schema + explicit `resolveConfig` (no hidden `?? default`); numeric bounds fail loud at mount.
|
|
27
|
+
|
|
28
|
+
### Model tools (per plugin contract)
|
|
29
|
+
|
|
30
|
+
| Tool | Input | Output |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `data_profile` | dataset path, sample? | row/column counts, per-column cards (type, missing, unique, numeric stats, notes), duplicate rows, reportKey |
|
|
33
|
+
| `data_clean` | dataset path, rules[], output path (optional, workspace-confined) | cleaned rows, per-rule audit log (affected rows), reportKey |
|
|
34
|
+
| `data_verify` | dataset path, rules[], evidence cap | verdict `passed`, per-rule pass/fail with evidence rows, reportKey |
|
|
35
|
+
|
|
36
|
+
## Configuration (cordis.yml `config`)
|
|
37
|
+
|
|
38
|
+
| Key | Default | Notes |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `enabled` | `true` | master switch |
|
|
41
|
+
| `maxRows` | `200000` | row guard, fail loud |
|
|
42
|
+
| `maxFileSizeMB` | `64` | file size guard, fail loud |
|
|
43
|
+
| `defaultTolerance` | `1e-9` | numeric comparison relative tolerance |
|
|
44
|
+
| `evidenceRowLimit` | `20` | evidence rows per failed verify rule |
|
|
45
|
+
| `allowedExtensions` | `.csv .tsv .json .jsonl` | dataset file extensions |
|
|
46
|
+
| `workspaceRoot` | `''` | service-level citation checks resolve here; tools resolve in the session workspace |
|
|
47
|
+
| `storeReports` | `true` | persist reports to the `data_quality` storage domain |
|
|
48
|
+
|
|
49
|
+
All knobs are documented in the five-language README configuration tables and mirrored in `cordis.patch.yml` with inline comments.
|
|
50
|
+
|
|
51
|
+
## Acceptance
|
|
52
|
+
|
|
53
|
+
### Gate chain — re-run green on the final tree (2026-08-20)
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
pnpm run typecheck PASS tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit
|
|
57
|
+
pnpm run typecheck:ci PASS tsc -p tsconfig.ci.json --noEmit (published 0.1.0-rc.6 peers)
|
|
58
|
+
pnpm test PASS 112 tests / 8 files (clean 22, verify 28, dataset 25, plugin 10, citations 9, profile 8, events 6, config 4)
|
|
59
|
+
pnpm run build PASS lib/index.js 82.82 kB; fix-dts rewrote 11 files / 37 specifiers
|
|
60
|
+
pnpm run verify:self-contained PASS all dependency specs resolve from the registry
|
|
61
|
+
pnpm run verify:artifacts PASS syntax + ESM import + plugin face + no .ts leftovers + bundle patch present
|
|
62
|
+
pnpm run verify:readme-sync PASS all 5 READMEs share section structure and config keys
|
|
63
|
+
pnpm run pack:check PASS dsh-data-quality-0.1.0.tgz (lib/index.js + lib/types + cordis.patch.yml + READMEs + src)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`pnpm run test:coverage` thresholds (statements 90 / branches 80 / functions 90 / lines 90) pass.
|
|
67
|
+
|
|
68
|
+
### Real composition smokes
|
|
69
|
+
|
|
70
|
+
1. **Loader runner** (`node scripts/loader-runner.mjs .tmp/loader-smoke/cordis.yml fixtures`) — boots a real `Context` + vendored Loader with the Include builtin against the real storage seam (dsh-storage + dsh-storage-json + dsh-storage-domain), dsh-system-prompt, dsh-tools, and the BUILT `lib/index.js` bundle with `workspaceRoot` = fixtures dir. Keyless three-tool chain over the dirty fixture:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
DSH_LOADER_RESULT {"tools":["data_profile","data_clean","data_verify"],"profileRows":10,"profileColumns":6,"cleanOutputRows":8,"verifyPassed":false,"citationStatus":"verified"}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
profile 10 rows / 6 columns; clean (trim → dedupe → normalize-unit → coerce-type) drops 2 duplicate rows (8 out); verify `passed:false` is the correct verdict (the fixture's missing `holding_value` on FUND005 fails `range` — evidence flows); `verifyCitations` resolves a cited value from the CSV → `verified`.
|
|
77
|
+
|
|
78
|
+
2. **dsh-test-drive isolated install matrix (preferred path, run 2026-08-20)** — programmatic drive of the dsh-test-drive pipeline (`D:\deepseek-harness\Project\Plugins\dsh-test-drive\`, real `LocalSubprocessRuntime` → real `dsh` CLI + pnpm) against this checkout:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
verdict: pass
|
|
82
|
+
install pass dsh plugin add <checkout> ok (exit 0, allowBuildsNeeded: false)
|
|
83
|
+
config pass patchEffective: true, layers: ["dsh-data-quality"], full bundle patch visible in --dump-config
|
|
84
|
+
smoke boot-ok booted without loader failures; MISSING_CREDENTIAL (no API key) proves the tree mounted
|
|
85
|
+
capability skipped disabled by config and no per-drive spec (requires DEEPSEEK_API_KEY)
|
|
86
|
+
uninstall pass dsh plugin remove ok (exit 0)
|
|
87
|
+
cleanup pass owned temp root quarantined and removed
|
|
88
|
+
isolation hostHomeTouched: false, tempDshHome/tempWorkspace/tempStore: true
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
3. **Real dsh CLI temp-profile install** (earlier session, recorded here): `dsh plugin --profile dq add @deepseek-ai/dsh-base@0.1.0-rc.6 @deepseek-ai/dsh-headless@0.1.0-rc.6 ./dsh-data-quality-0.1.0.tgz` → install succeeds; `--dump-config` shows the bundle patch merging the storage rows + `dsh-data-quality` row; keyless headless exits with `MISSING_CREDENTIAL` (a pending service would hang to timeout instead); `dsh plugin remove` reverts cleanly.
|
|
92
|
+
|
|
93
|
+
## Commit history (13 commits, `main`)
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
d5e1c7b docs: record v0.1.0 release status
|
|
97
|
+
d9201d2 chore(release): 0.1.0
|
|
98
|
+
f2f95b7 fix: release script stamps a first release whose version is already set
|
|
99
|
+
3261e77 chore: keep loader-runner output byproduct untracked
|
|
100
|
+
433f9d4 docs: completion summary
|
|
101
|
+
6f9c4e5 docs: five-language READMEs and repo policy files
|
|
102
|
+
90ae5ed ci: ci/compat/release workflow trio
|
|
103
|
+
daca96f build: self-contained prepare/verify/release scripts and loader-runner smoke
|
|
104
|
+
8ad596d test: real-service vitest suite (112 specs) plus dirty-data fixtures
|
|
105
|
+
2048c6e feat: data_profile/data_clean/data_verify tools and plugin entry with fail-loud config
|
|
106
|
+
be634cd feat: ctx.dataQuality seam (frozen verifyCitations contract, local provider, storage domain, adaptive session events)
|
|
107
|
+
0be188f feat: deterministic dataset layer and pure engines (profile/clean/verify)
|
|
108
|
+
d6af7b6 chore: project scaffold (package manifest, tsconfig trio, build/test config)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Deviations from the plugin spec (vetted, intentional)
|
|
112
|
+
|
|
113
|
+
1. **Session events are adaptive, not unconditional.** The spec requires a `SessionEventMap` merge for model-visible content; that merge exists (`src/events.ts`). On rc.6 hosts the append surface has no `ignorable` flag and no plugin event-registration surface, so appending an unknown `data-quality/*` type would make the persistence coordinator refuse the session log on restore. The gate appends only when the host knows the vocabulary or supports the ignorable marker, and fails safe to skipping; the storage-domain report remains the durable record. (The original SUMMARY predated this refinement; the current code is authoritative.)
|
|
114
|
+
2. **Rule names match the spec verbatim.** The six clean rules (`dedupe`, `fill-missing`, `coerce-type`, `normalize-unit`, `trim`, `map-values`) and seven verify rules (`not-null`, `unique`, `range`, `regex`, `enum`, `cross-column`, `freshness`) use the spec's kebab-case names. An earlier SUMMARY draft described an intermediate snake_case rule set; the shipped code never shipped those names.
|
|
115
|
+
3. **Render shape is text, not a table.** The spec suggests a "generic + table render"; the tools use `generic` tools with a human-readable text summary in `output.render` (tables are ill-suited to the variable-width evidence rows). Semantics unchanged: canonical JSON in `output.schema`, human text in `output.render`.
|
|
116
|
+
4. **`workspaceRoot` added for the service plane.** Tool calls always resolve inside the session workspace (spec). `verifyCitations` has no session, so a `workspaceRoot` config (default: process launch directory) anchors service-level checks; it is fixed at provider construction.
|
|
117
|
+
5. **Extra config keys `enabled` / `storeReports`.** Both default on and are settable from cordis.yml — additions to, not replacements of, the spec's five keys.
|
|
118
|
+
6. **`MAX_CELL_TEXT` (120 chars) is a display-safety invariant**, not a tunable; documented in AGENTS.md.
|
|
119
|
+
7. **Push/publish did not happen in the development session.** The spec forbids push and publish here; `d9201d2`/`d5e1c7b` record the release session's stamp/status work, and the remote (`PerryLink/dsh-data-quality`) plus npm (`dsh-data-quality@0.1.0`, published 2026-08-19T13:54Z) were populated by that release session.
|
|
120
|
+
|
|
121
|
+
## Repo & release state
|
|
122
|
+
|
|
123
|
+
- 13 conventional commits on `main`, tag `v0.1.0`, working tree clean. Remote: `github.com/PerryLink/dsh-data-quality` (pushed by the release session).
|
|
124
|
+
- npm registry: `dsh-data-quality@0.1.0` published 2026-08-19T13:54Z (`latest` = 0.1.0); the earlier "npm publish skipped (no NPM_TOKEN)" note is superseded — the release session closed that gap.
|
|
125
|
+
- `dsh-data-quality-0.1.0.tgz` is gitignored and reproducible via `pnpm pack`.
|
|
126
|
+
|
|
127
|
+
## Known limitations & follow-up suggestions
|
|
128
|
+
|
|
129
|
+
- **Session events are best-effort on pre-rc.7 hosts**: on a host whose append lacks the `ignorable` marker, `data-quality/*` events are skipped rather than risking log-restore refusal; the storage-domain report remains the durable record. Revisit when the harness exposes a real plugin event-registration surface.
|
|
130
|
+
- **No fuzzy/LLM-based cleaning**: rule semantics are strictly deterministic by design; a future `data_clean` rule kind could delegate fuzzy matching to an LLM tool as an opt-in.
|
|
131
|
+
- **`workspaceRoot` is process-start-time**: the provider caches the resolved root at construction; a runtime configuration change requires remounting the plugin.
|
|
132
|
+
- **Numeric parsing is strict**: locale-formatted numbers (`"1,234.56"`) and currency strings are text until `coerce-type`/`normalize-unit` run.
|
|
133
|
+
- **Cross-column date comparison uses epoch fallback**: strings that do not parse as numbers fall back to `Date.parse`; unparseable pairs fall back to strict string equality (only for `==` / `!=`).
|
|
134
|
+
- **Evidence rows are truncated** by `MAX_CELL_TEXT` (120 chars).
|
|
135
|
+
|
|
136
|
+
## Project overview suggestion
|
|
137
|
+
|
|
138
|
+
Add one row to the Project/Plugins overview roster: `dsh-data-quality` — `ctx.dataQuality` three-layer seam (deterministic profiling/cleaning/verification) with `data_profile` / `data_clean` / `data_verify` tools; v0.1.0 on npm since 2026-08-19.
|
|
139
|
+
|
|
140
|
+
## Release-session handoff (PHASE2 §0.3 chain) — execution status
|
|
141
|
+
|
|
142
|
+
The chain was executed (2026-08-20) as far as the session's capabilities allow:
|
|
143
|
+
|
|
144
|
+
1. **Community feedback check** — DONE: GitHub API audit shows `PerryLink/dsh-data-quality` has 0 open/0 closed issues, 0 stars; no feedback to fold in before the next release.
|
|
145
|
+
2. **Standard item B (community engineering)** — DONE: all 8 GitHub topics are set (`dsh`, `dsh-plugin`, `deepseek-harness`, `cordis`, `data-quality`, `data-cleaning`, `data-profiling`, `data-verification` — mirror of `package.json` keywords); five-language READMEs pass `verify:readme-sync`; `THIRD_PARTY_NOTICES.md` current. The Project/Plugins overview (`D:\deepseek-harness\Project\Plugins\README.md`) now lists `dsh-data-quality` under "已发布 GitHub + npm" (30 projects / 13 published).
|
|
146
|
+
3. **Standard item A (ecosystem delivery)** — npm closed (`dsh-data-quality@0.1.0`, 2026-08-19T13:54Z). Ecosystem catalog submission is BLOCKED: community catalogs exist (`awesome-dsh-plugins/awesome-dsh-plugins` et al., none listing this plugin yet) but submitting requires GitHub write credentials — no `gh` CLI and no `GH_TOKEN`/`GITHUB_TOKEN` in this session; a release session with credentials should open the catalog PR.
|
|
147
|
+
4. **Standard item C (publish upload)** — CLOSED for 0.1.0: tag `v0.1.0`, GitHub Release (2026-08-19T13:45Z), npm publish (2026-08-19T13:54Z). `main` synced to origin (`d669a19`). For the next version: `node scripts/release.mjs <x.y.z>` (stamps CHANGELOG, re-runs the gate, commits + tags, never pushes), then push — `release.yml` publishes to npm with provenance and creates the GitHub Release from the stamped CHANGELOG section (needs the `NPM_TOKEN` secret configured on the repo).
|
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.1";
|
|
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
|
|
@@ -2000,14 +2000,14 @@ function checkCitations(root, citations, defaultTolerance) {
|
|
|
2000
2000
|
*
|
|
2001
2001
|
* - Hosts whose known-type set already covers the vocabulary (a future harness
|
|
2002
2002
|
* that adopts these events) append plainly.
|
|
2003
|
-
* - Hosts with an `ignorable` append option (
|
|
2004
|
-
*
|
|
2005
|
-
* marker, so builds that do not know the type skip the event on restore.
|
|
2003
|
+
* - Hosts with an `ignorable` append option (pre-0.1.2 rc builds) append with
|
|
2004
|
+
* the marker, so builds that do not know the type skip the event on restore.
|
|
2006
2005
|
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
2007
2006
|
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
2008
|
-
* only, never the marker)
|
|
2009
|
-
*
|
|
2010
|
-
* skipped and the storage-domain report remains the
|
|
2007
|
+
* only, never the marker), and 0.1.2-alpha.1 removed the `ignorable` envelope
|
|
2008
|
+
* entirely (42dc2a46c2) and fails closed on unknown types at read; on all of
|
|
2009
|
+
* them the append is skipped and the storage-domain report remains the
|
|
2010
|
+
* durable copy.
|
|
2011
2011
|
* @module dsh-data-quality/events
|
|
2012
2012
|
*/
|
|
2013
2013
|
/** The event type vocabulary this plugin appends. */
|
|
@@ -2020,10 +2020,10 @@ const DATA_QUALITY_EVENT_TYPES = [
|
|
|
2020
2020
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
2021
2021
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
2022
2022
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
2023
|
-
* reports `[native code]`): the rc.6
|
|
2024
|
-
* handling while
|
|
2025
|
-
* survive minification, so the probe fails safe (skips)
|
|
2026
|
-
* a log.
|
|
2023
|
+
* reports `[native code]`): the rc.6/rc.8 builds and 0.1.2-alpha.1 contain no
|
|
2024
|
+
* `ignorable` handling while pre-0.1.2 master builds referenced the flag by
|
|
2025
|
+
* name; property names survive minification, so the probe fails safe (skips)
|
|
2026
|
+
* rather than corrupting a log.
|
|
2027
2027
|
* @param session - the calling session.
|
|
2028
2028
|
* @param type - the event type.
|
|
2029
2029
|
* @param data - the payload.
|
package/lib/types/events.d.ts
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
*
|
|
6
6
|
* - Hosts whose known-type set already covers the vocabulary (a future harness
|
|
7
7
|
* that adopts these events) append plainly.
|
|
8
|
-
* - Hosts with an `ignorable` append option (
|
|
9
|
-
*
|
|
10
|
-
* marker, so builds that do not know the type skip the event on restore.
|
|
8
|
+
* - Hosts with an `ignorable` append option (pre-0.1.2 rc builds) append with
|
|
9
|
+
* the marker, so builds that do not know the type skip the event on restore.
|
|
11
10
|
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
11
|
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
-
* only, never the marker)
|
|
14
|
-
*
|
|
15
|
-
* skipped and the storage-domain report remains the
|
|
12
|
+
* only, never the marker), and 0.1.2-alpha.1 removed the `ignorable` envelope
|
|
13
|
+
* entirely (42dc2a46c2) and fails closed on unknown types at read; on all of
|
|
14
|
+
* them the append is skipped and the storage-domain report remains the
|
|
15
|
+
* durable copy.
|
|
16
16
|
* @module dsh-data-quality/events
|
|
17
17
|
*/
|
|
18
18
|
import { type Session } from '@deepseek-ai/dsh-session';
|
|
@@ -65,10 +65,10 @@ export type DataQualityEventType = (typeof DATA_QUALITY_EVENT_TYPES)[number];
|
|
|
65
65
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
66
66
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
67
67
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
68
|
-
* reports `[native code]`): the rc.6
|
|
69
|
-
* handling while
|
|
70
|
-
* survive minification, so the probe fails safe (skips)
|
|
71
|
-
* a log.
|
|
68
|
+
* reports `[native code]`): the rc.6/rc.8 builds and 0.1.2-alpha.1 contain no
|
|
69
|
+
* `ignorable` handling while pre-0.1.2 master builds referenced the flag by
|
|
70
|
+
* name; property names survive minification, so the probe fails safe (skips)
|
|
71
|
+
* rather than corrupting a log.
|
|
72
72
|
* @param session - the calling session.
|
|
73
73
|
* @param type - the event type.
|
|
74
74
|
* @param data - the payload.
|
package/lib/types/events.js
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
*
|
|
6
6
|
* - Hosts whose known-type set already covers the vocabulary (a future harness
|
|
7
7
|
* that adopts these events) append plainly.
|
|
8
|
-
* - Hosts with an `ignorable` append option (
|
|
9
|
-
*
|
|
10
|
-
* marker, so builds that do not know the type skip the event on restore.
|
|
8
|
+
* - Hosts with an `ignorable` append option (pre-0.1.2 rc builds) append with
|
|
9
|
+
* the marker, so builds that do not know the type skip the event on restore.
|
|
11
10
|
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
11
|
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
-
* only, never the marker)
|
|
14
|
-
*
|
|
15
|
-
* skipped and the storage-domain report remains the
|
|
12
|
+
* only, never the marker), and 0.1.2-alpha.1 removed the `ignorable` envelope
|
|
13
|
+
* entirely (42dc2a46c2) and fails closed on unknown types at read; on all of
|
|
14
|
+
* them the append is skipped and the storage-domain report remains the
|
|
15
|
+
* durable copy.
|
|
16
16
|
* @module dsh-data-quality/events
|
|
17
17
|
*/
|
|
18
18
|
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session';
|
|
@@ -22,10 +22,10 @@ export const DATA_QUALITY_EVENT_TYPES = ['data-quality/profile', 'data-quality/c
|
|
|
22
22
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
23
23
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
24
24
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
25
|
-
* reports `[native code]`): the rc.6
|
|
26
|
-
* handling while
|
|
27
|
-
* survive minification, so the probe fails safe (skips)
|
|
28
|
-
* a log.
|
|
25
|
+
* reports `[native code]`): the rc.6/rc.8 builds and 0.1.2-alpha.1 contain no
|
|
26
|
+
* `ignorable` handling while pre-0.1.2 master builds referenced the flag by
|
|
27
|
+
* name; property names survive minification, so the probe fails safe (skips)
|
|
28
|
+
* rather than corrupting a log.
|
|
29
29
|
* @param session - the calling session.
|
|
30
30
|
* @param type - the event type.
|
|
31
31
|
* @param data - the payload.
|
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.1";
|
|
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.1';
|
|
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.1",
|
|
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
|
"author": "dsh-data-quality contributors",
|
|
6
6
|
"private": false,
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
"src",
|
|
20
20
|
"cordis.patch.yml",
|
|
21
21
|
"CHANGELOG.md",
|
|
22
|
+
"SECURITY.md",
|
|
23
|
+
"SUMMARY.md",
|
|
22
24
|
"THIRD_PARTY_NOTICES.md",
|
|
23
25
|
"README.md",
|
|
24
26
|
"README.zh.md",
|
|
@@ -94,6 +96,7 @@
|
|
|
94
96
|
"@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0",
|
|
95
97
|
"@deepseek-ai/dsh-storage": ">=0.1.0-rc.8 <0.2.0",
|
|
96
98
|
"@deepseek-ai/dsh-storage-domain": ">=0.1.0-rc.8 <0.2.0",
|
|
99
|
+
"@deepseek-ai/dsh-storage-json": "0.1.1-rc.2",
|
|
97
100
|
"@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0",
|
|
98
101
|
"@deepseek-ai/schemastery": "^3.18.0"
|
|
99
102
|
},
|
|
@@ -133,5 +136,9 @@
|
|
|
133
136
|
"verify:readme-sync": "node scripts/check-readme-sync.mjs",
|
|
134
137
|
"pack:check": "node scripts/prepare.mjs && pnpm pack"
|
|
135
138
|
},
|
|
136
|
-
"license": "Apache-2.0"
|
|
139
|
+
"license": "Apache-2.0",
|
|
140
|
+
"funding": {
|
|
141
|
+
"type": "individual",
|
|
142
|
+
"url": "https://github.com/sponsors/PerryLink"
|
|
143
|
+
}
|
|
137
144
|
}
|
package/src/events.ts
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
*
|
|
6
6
|
* - Hosts whose known-type set already covers the vocabulary (a future harness
|
|
7
7
|
* that adopts these events) append plainly.
|
|
8
|
-
* - Hosts with an `ignorable` append option (
|
|
9
|
-
*
|
|
10
|
-
* marker, so builds that do not know the type skip the event on restore.
|
|
8
|
+
* - Hosts with an `ignorable` append option (pre-0.1.2 rc builds) append with
|
|
9
|
+
* the marker, so builds that do not know the type skip the event on restore.
|
|
11
10
|
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
11
|
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
-
* only, never the marker)
|
|
14
|
-
*
|
|
15
|
-
* skipped and the storage-domain report remains the
|
|
12
|
+
* only, never the marker), and 0.1.2-alpha.1 removed the `ignorable` envelope
|
|
13
|
+
* entirely (42dc2a46c2) and fails closed on unknown types at read; on all of
|
|
14
|
+
* them the append is skipped and the storage-domain report remains the
|
|
15
|
+
* durable copy.
|
|
16
16
|
* @module dsh-data-quality/events
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -67,17 +67,17 @@ export const DATA_QUALITY_EVENT_TYPES = ['data-quality/profile', 'data-quality/c
|
|
|
67
67
|
/** Union of the event types this plugin appends. */
|
|
68
68
|
export type DataQualityEventType = (typeof DATA_QUALITY_EVENT_TYPES)[number]
|
|
69
69
|
|
|
70
|
-
/** Loose append shape probed at runtime (rc.6/rc.8 take no options; master
|
|
70
|
+
/** Loose append shape probed at runtime (rc.6/rc.8/0.1.2-alpha.1 take no options; pre-0.1.2 master builds took `ignorable`). */
|
|
71
71
|
type AppendProbe = (type: string, data: unknown, options?: { ignorable: true }) => unknown
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
75
75
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
76
76
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
77
|
-
* reports `[native code]`): the rc.6
|
|
78
|
-
* handling while
|
|
79
|
-
* survive minification, so the probe fails safe (skips)
|
|
80
|
-
* a log.
|
|
77
|
+
* reports `[native code]`): the rc.6/rc.8 builds and 0.1.2-alpha.1 contain no
|
|
78
|
+
* `ignorable` handling while pre-0.1.2 master builds referenced the flag by
|
|
79
|
+
* name; property names survive minification, so the probe fails safe (skips)
|
|
80
|
+
* rather than corrupting a log.
|
|
81
81
|
* @param session - the calling session.
|
|
82
82
|
* @param type - the event type.
|
|
83
83
|
* @param data - the payload.
|