dsh-data-quality 0.1.0 → 0.1.2
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 +12 -0
- package/README.es.md +4 -4
- package/README.hi.md +4 -4
- package/README.md +11 -4
- package/README.pt.md +4 -4
- package/README.zh.md +4 -4
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/lib/index.js +10 -8
- package/lib/types/events.d.ts +9 -7
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +9 -7
- package/lib/types/events.js.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.js +1 -1
- package/package.json +19 -19
- package/src/events.ts +10 -8
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ 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.1.2] - 2026-08-22
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Bumped the `@deepseek-ai/dsh-*` dev dependencies to the 0.1.1-rc.2 release line (peers stay `>=0.1.0-rc.8 <0.2.0`; no rc.2-only API is used) and re-verified the full gate against the published 0.1.1-rc.2 types. Compatibility metadata (`dshWorkshop.compatibility.dshVersions`) now advertises `0.1.1-rc.2`, and the CI compat workflow pins the `dsh`/`dsh-base`/`dsh-headless` installs to 0.1.1-rc.2. Session-event behavior is unchanged: 0.1.1-rc.2 still exposes no plugin event-registration surface and no `ignorable` append option, so the adaptive gate keeps skipping the append and the storage-domain report stays the durable record.
|
|
13
|
+
|
|
14
|
+
## [0.1.1] - 2026-08-21
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Bumped the `@deepseek-ai/dsh-*` peer and dev dependencies to the 0.1.0-rc.8 release line (peers now `>=0.1.0-rc.8 <0.2.0`) and re-verified the full gate against the published rc.8 types. Session-event behavior is unchanged: rc.8 still exposes no plugin event-registration surface and no `ignorable` append option, so the adaptive gate keeps skipping the append and the storage-domain report stays the durable record.
|
|
19
|
+
|
|
8
20
|
## [0.1.0] - 2026-08-19
|
|
9
21
|
|
|
10
22
|
### Added
|
package/README.es.md
CHANGED
|
@@ -10,7 +10,7 @@ Todo el cálculo es TypeScript puro dentro del proceso del harness — el modelo
|
|
|
10
10
|
|
|
11
11
|
| Componente | Versión |
|
|
12
12
|
|---|---|
|
|
13
|
-
| DeepSeek Harness | `0.1.
|
|
13
|
+
| DeepSeek Harness | `0.1.1-rc.2` (dependencias peer fijadas) |
|
|
14
14
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
15
15
|
| Gestor de paquetes | `pnpm@11.7.0` |
|
|
16
16
|
| Plataforma | Windows / macOS / Linux (plugin solo de host) |
|
|
@@ -22,7 +22,7 @@ Todo el cálculo es TypeScript puro dentro del proceso del harness — el modelo
|
|
|
22
22
|
- **Herramienta `data_clean`** — reglas declarativas de limpieza en orden: `dedupe` (por grupo de columnas), `fill-missing` (constant/mean/median/forward), `coerce-type` (number/date/boolean; los fallos se cuentan y quedan como faltantes), `normalize-unit` (p. ej. sufijos 万/亿 a unidades base), `trim`, `map-values` (mapeo de enumeraciones). Devuelve un registro de auditoría por regla más una vista previa acotada; solo escribe el dataset limpio cuando se indica `outputPath` y nunca sobrescribe el origen.
|
|
23
23
|
- **Herramienta `data_verify`** — reglas declarativas de verificación: `not-null`, `unique`, `range`, `regex`, `enum`, `cross-column` (p. ej. `startDate < endDate`), `freshness` (columna de fecha dentro de N días de una fecha de referencia). pass/fail por regla con evidencia acotada de filas fallidas; un fallo global es un resultado normal `passed: false`, no un error de herramienta.
|
|
24
24
|
- **Informes duraderos** — cada ejecución de perfilado/limpieza/verificación/citas persiste en el dominio de almacenamiento `data_quality` (backend JSON), con clave de marca de tiempo más huella de la ruta del dataset; la clave se devuelve como `reportKey` en los resultados.
|
|
25
|
-
- **Eventos de sesión** — en hosts que los soportan con seguridad, las ejecuciones añaden eventos `data-quality/profile` / `data-quality/clean` / `data-quality/verify` (con la marca `ignorable` donde se admite). En 0.1.
|
|
25
|
+
- **Eventos de sesión** — en hosts que los soportan con seguridad, las ejecuciones añaden eventos `data-quality/profile` / `data-quality/clean` / `data-quality/verify` (con la marca `ignorable` donde se admite). En 0.1.1-rc.2 el append se omite por diseño — el informe del dominio de almacenamiento es siempre la copia duradera (véase «Known limitations»).
|
|
26
26
|
|
|
27
27
|
## Quick start
|
|
28
28
|
|
|
@@ -146,7 +146,7 @@ Los localizadores recorren el documento del dataset: CSV/TSV cargan como `{ colu
|
|
|
146
146
|
|
|
147
147
|
## Known limitations
|
|
148
148
|
|
|
149
|
-
- **Los eventos de sesión son adaptativos.** 0.1.
|
|
149
|
+
- **Los eventos de sesión son adaptativos.** 0.1.1-rc.2 no tiene superficie de registro de eventos de sesión para plugins y su `Session.append` no puede estampar la marca `ignorable`, así que añadir un tipo `data-quality/*` desconocido haría ilegible el registro de sesión al restaurarlo. Por eso el plugin solo añade cuando el host conoce el vocabulario o soporta el flag `ignorable`; en rc.2 el informe del dominio de almacenamiento es el registro duradero.
|
|
150
150
|
- **Dialecto CSV** — coma/tab con comillas RFC-4180, fila de cabecera obligatoria, líneas en blanco omitidas; sin autodetección de delimitador ni líneas de comentario.
|
|
151
151
|
- **El parseo de tipos es estricto** — los números no llevan separadores de miles; las fechas son `YYYY-MM-DD` / `YYYY/MM/DD` / datetimes estilo ISO (UTC); los booleanos son `true/false/yes/no/1/0`. Todo lo demás se perfila como `string`/`mixed` — límpialo con `coerce-type` si es intencionado.
|
|
152
152
|
- **JSON debe ser tabular para las herramientas** (array de objetos planos); `verifyCitations` recorre documentos JSON arbitrarios.
|
|
@@ -160,7 +160,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build
|
|
|
160
160
|
pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:readme-sync && pnpm pack
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
- Las pruebas ejecutan vitest contra los `Context`/`Session`/`ToolRuntime`/dominio de almacenamiento REALES de los peers 0.1.
|
|
163
|
+
- Las pruebas ejecutan vitest contra los `Context`/`Session`/`ToolRuntime`/dominio de almacenamiento REALES de los peers 0.1.1-rc.2 (sin mocks de servicios escritos a mano) más specs de motor puros; cada regla de limpieza/verificación tiene casos positivos y negativos, y `verifyCitations` cubre los cuatro estados.
|
|
164
164
|
- `scripts/loader-runner.mjs` arranca la composición real del Loader y ejecuta la cadena perfilar → limpiar → verificar contra `fixtures/` sin clave de API.
|
|
165
165
|
- Release: `node scripts/release.mjs <x.y.z>` (nunca hace push; el tag dispara `release.yml`).
|
|
166
166
|
|
package/README.hi.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
| घटक | संस्करण |
|
|
12
12
|
|---|---|
|
|
13
|
-
| DeepSeek Harness | `0.1.
|
|
13
|
+
| DeepSeek Harness | `0.1.1-rc.2` (peer dependencies पिन) |
|
|
14
14
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
15
15
|
| पैकेज मैनेजर | `pnpm@11.7.0` |
|
|
16
16
|
| प्लेटफ़ॉर्म | Windows / macOS / Linux (केवल होस्ट प्लगिन) |
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
- **`data_clean` टूल** — क्रमबद्ध घोषणात्मक क्लीनिंग नियम: `dedupe` (स्तंभ समूह से), `fill-missing` (constant/mean/median/forward), `coerce-type` (number/date/boolean; विफलताएँ गिनी जाती हैं और अनुपस्थित बन जाती हैं), `normalize-unit` (जैसे 万/亿 प्रत्यय को आधार इकाई में), `trim`, `map-values` (एनुम मैपिंग)। प्रति-नियम ऑडिट लॉग और सीमित पूर्वावलोकन लौटाता है; केवल `outputPath` दिए जाने पर साफ़ डेटासेट लिखता है और मूल फ़ाइल को कभी अधिलेखित नहीं करता।
|
|
23
23
|
- **`data_verify` टूल** — घोषणात्मक सत्यापन नियम: `not-null`, `unique`, `range`, `regex`, `enum`, `cross-column` (जैसे `startDate < endDate`), `freshness` (संदर्भ तिथि से N दिनों के भीतर तिथि स्तंभ)। प्रति-नियम pass/fail और सीमित असफल-पंक्ति साक्ष्य; समग्र असफलता सामान्य `passed: false` परिणाम है, टूल त्रुटि नहीं।
|
|
24
24
|
- **टिकाऊ रिपोर्ट** — हर प्रोफ़ाइल/क्लीन/सत्यापन/उद्धरण रन `data_quality` स्टोरेज डोमेन (JSON बैकएंड) में सहेजा जाता है, कुंजी = रन टाइमस्टैम्प + डेटासेट-पथ फ़िंगरप्रिंट; कुंजी टूल परिणामों में `reportKey` के रूप में लौटती है।
|
|
25
|
-
- **सत्र ईवेंट** — जिन होस्ट पर सुरक्षित रूप से संभव है, रन `data-quality/profile` / `data-quality/clean` / `data-quality/verify` ईवेंट जोड़ते हैं (जहाँ समर्थित हो वहाँ `ignorable` चिह्न सहित)। 0.1.
|
|
25
|
+
- **सत्र ईवेंट** — जिन होस्ट पर सुरक्षित रूप से संभव है, रन `data-quality/profile` / `data-quality/clean` / `data-quality/verify` ईवेंट जोड़ते हैं (जहाँ समर्थित हो वहाँ `ignorable` चिह्न सहित)। 0.1.1-rc.2 पर append जानबूझकर छोड़ा जाता है — स्टोरेज-डोमेन रिपोर्ट हमेशा टिकाऊ प्रति होती है (देखें «Known limitations»)।
|
|
26
26
|
|
|
27
27
|
## Quick start
|
|
28
28
|
|
|
@@ -146,7 +146,7 @@ const result = await ctx.dataQuality.verifyCitations({
|
|
|
146
146
|
|
|
147
147
|
## Known limitations
|
|
148
148
|
|
|
149
|
-
- **सत्र ईवेंट अनुकूली हैं।** 0.1.
|
|
149
|
+
- **सत्र ईवेंट अनुकूली हैं।** 0.1.1-rc.2 में प्लगिन सत्र-ईवेंट पंजीकरण सतह नहीं है और उसका `Session.append` `ignorable` चिह्न नहीं लगा सकता; अज्ञात `data-quality/*` प्रकार जोड़ने से सत्र लॉग पुनः स्थापना पर अस्वीकार हो जाएगा। इसलिए प्लगिन केवल तब जोड़ता है जब होस्ट शब्दावली जानता हो या `ignorable` append फ़्लैग समर्थित हो; rc.2 पर स्टोरेज-डोमेन रिपोर्ट ही टिकाऊ रिकॉर्ड है।
|
|
150
150
|
- **CSV बोली** — RFC-4180 उद्धरण के साथ अल्पविराम/टैब, हेडर पंक्ति आवश्यक, रिक्त पंक्तियाँ छोड़ी जाती हैं; डिलीमीटर स्व-पहचान या टिप्पणी पंक्तियाँ नहीं।
|
|
151
151
|
- **प्रकार पार्सिंग सख़्त है** — संख्याओं में सहस्र विभाजक नहीं; तिथियाँ `YYYY-MM-DD` / `YYYY/MM/DD` / ISO-शैली datetime (UTC); बूलियन `true/false/yes/no/1/0`। बाक़ी सब `string`/`mixed` प्रोफ़ाइल होता है — इरादा हो तो `coerce-type` से क्लीन करें।
|
|
152
152
|
- **टूल के लिए JSON तालिकीय होना चाहिए** (सपाट ऑब्जेक्ट की सरणी); `verifyCitations` मनमाने JSON दस्तावेज़ों पर चलता है।
|
|
@@ -160,7 +160,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build
|
|
|
160
160
|
pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:readme-sync && pnpm pack
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
- टेस्ट 0.1.
|
|
163
|
+
- टेस्ट 0.1.1-rc.2 peers के वास्तविक `Context`/`Session`/`ToolRuntime`/स्टोरेज डोमेन के विरुद्ध vitest चलाते हैं (हाथ से लिखे सेवा mock नहीं) और शुद्ध इंजन specs; हर क्लीन/सत्यापन नियम के सकारात्मक और नकारात्मक केस हैं, और `verifyCitations` चारों स्थितियों को कवर करता है।
|
|
164
164
|
- `scripts/loader-runner.mjs` वास्तविक Loader संयोजन बूट करता है और API कुंजी के बिना `fixtures/` पर प्रोफ़ाइल → क्लीन → सत्यापन श्रृंखला चलाता है।
|
|
165
165
|
- रिलीज़: `node scripts/release.mjs <x.y.z>` (कभी push नहीं; टैग `release.yml` ट्रिगर करता है)।
|
|
166
166
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
# dsh-data-quality
|
|
2
|
+
[](https://gitee.com/perrylink/dsh-data-quality)
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/dsh-data-quality)
|
|
5
|
+
[](https://www.npmjs.com/package/dsh-data-quality)
|
|
6
|
+
[](https://github.com/PerryLink/dsh-data-quality/actions)
|
|
7
|
+
|
|
2
8
|
|
|
3
9
|
**Deterministic data profiling, cleaning, and verification for DeepSeek Harness.**
|
|
4
10
|
|
|
@@ -10,7 +16,7 @@ All computation is plain TypeScript in the harness process — the model never d
|
|
|
10
16
|
|
|
11
17
|
| Component | Version |
|
|
12
18
|
|---|---|
|
|
13
|
-
| DeepSeek Harness | `0.1.
|
|
19
|
+
| DeepSeek Harness | `0.1.1-rc.2` (peer dependencies pinned) |
|
|
14
20
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
15
21
|
| Package manager | `pnpm@11.7.0` |
|
|
16
22
|
| Platform | Windows / macOS / Linux (host-only plugin) |
|
|
@@ -22,7 +28,7 @@ All computation is plain TypeScript in the harness process — the model never d
|
|
|
22
28
|
- **`data_clean` tool** — ordered declarative cleaning rules: `dedupe` (by column group), `fill-missing` (constant/mean/median/forward), `coerce-type` (number/date/boolean; failures counted and set to missing), `normalize-unit` (e.g. 万/亿 suffixes to base units), `trim`, `map-values` (enum mapping). Returns a per-rule audit log plus a bounded preview; writes the cleaned dataset only when `outputPath` is given, and never overwrites the source.
|
|
23
29
|
- **`data_verify` tool** — declarative verification rules: `not-null`, `unique`, `range`, `regex`, `enum`, `cross-column` (e.g. `startDate < endDate`), `freshness` (date column within N days of a reference date). Per-rule pass/fail with capped failing-row evidence; an overall failure is a normal `passed: false` result, not a tool error.
|
|
24
30
|
- **Durable reports** — every profile/clean/verify/citation run persists to the `data_quality` storage domain (JSON backend), keyed by run timestamp plus a dataset-path fingerprint; the key is returned as `reportKey` in tool results.
|
|
25
|
-
- **Session events** — on hosts that can carry them safely, runs append `data-quality/profile` / `data-quality/clean` / `data-quality/verify` events (with the `ignorable` marker where supported). On 0.1.
|
|
31
|
+
- **Session events** — on hosts that can carry them safely, runs append `data-quality/profile` / `data-quality/clean` / `data-quality/verify` events (with the `ignorable` marker where supported). On 0.1.1-rc.2 the append is skipped by design — the storage-domain report is always the durable copy (see "Known limitations").
|
|
26
32
|
|
|
27
33
|
## Quick start
|
|
28
34
|
|
|
@@ -146,7 +152,7 @@ Locators walk the dataset document: CSV/TSV load as `{ columns, rows }` (so `row
|
|
|
146
152
|
|
|
147
153
|
## Known limitations
|
|
148
154
|
|
|
149
|
-
- **Session events are adaptive.** 0.1.
|
|
155
|
+
- **Session events are adaptive.** 0.1.1-rc.2 has no plugin session-event registration surface and its `Session.append` cannot stamp the `ignorable` marker, so appending an unknown `data-quality/*` type would make the session log unreadable on restore. The plugin therefore appends only when the host knows the vocabulary or supports the `ignorable` append flag; on rc.2 the storage-domain report is the durable record.
|
|
150
156
|
- **CSV dialect** — comma/tab with RFC-4180 quoting, header row required, blank lines skipped, no delimiter auto-detection or comment lines.
|
|
151
157
|
- **Type parsing is strict** — numbers have no thousands separators; dates are `YYYY-MM-DD` / `YYYY/MM/DD` / ISO-like datetimes (UTC); booleans are `true/false/yes/no/1/0`. Everything else profiles as `string`/`mixed` — clean it with `coerce-type` when intended.
|
|
152
158
|
- **JSON must be tabular for the tools** (array of flat objects); `verifyCitations` walks arbitrary JSON documents.
|
|
@@ -160,7 +166,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build
|
|
|
160
166
|
pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:readme-sync && pnpm pack
|
|
161
167
|
```
|
|
162
168
|
|
|
163
|
-
- Tests run vitest against the REAL `Context`/`Session`/`ToolRuntime`/storage domain from the 0.1.
|
|
169
|
+
- Tests run vitest against the REAL `Context`/`Session`/`ToolRuntime`/storage domain from the 0.1.1-rc.2 peers (no hand-written service mocks) plus pure engine specs; every clean/verify rule has positive and negative cases, and `verifyCitations` covers all four statuses.
|
|
164
170
|
- `scripts/loader-runner.mjs` boots the real Loader composition and executes the profile → clean → verify chain against `fixtures/` without an API key.
|
|
165
171
|
- Release: `node scripts/release.mjs <x.y.z>` (never pushes; the tag triggers `release.yml`).
|
|
166
172
|
|
|
@@ -179,3 +185,4 @@ This plugin follows the shared DSH family engineering conventions: bundle-manife
|
|
|
179
185
|
## License
|
|
180
186
|
|
|
181
187
|
Apache-2.0 — see [LICENSE](LICENSE) and [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
188
|
+
|
package/README.pt.md
CHANGED
|
@@ -10,7 +10,7 @@ Todo o cálculo é TypeScript puro no processo do harness — o modelo nunca faz
|
|
|
10
10
|
|
|
11
11
|
| Componente | Versão |
|
|
12
12
|
|---|---|
|
|
13
|
-
| DeepSeek Harness | `0.1.
|
|
13
|
+
| DeepSeek Harness | `0.1.1-rc.2` (dependências peer fixadas) |
|
|
14
14
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
15
15
|
| Gerenciador de pacotes | `pnpm@11.7.0` |
|
|
16
16
|
| Plataforma | Windows / macOS / Linux (plugin apenas de host) |
|
|
@@ -22,7 +22,7 @@ Todo o cálculo é TypeScript puro no processo do harness — o modelo nunca faz
|
|
|
22
22
|
- **Ferramenta `data_clean`** — regras declarativas de limpeza em ordem: `dedupe` (por grupo de colunas), `fill-missing` (constant/mean/median/forward), `coerce-type` (number/date/boolean; falhas contadas e viram ausentes), `normalize-unit` (p. ex. sufixos 万/亿 para unidades base), `trim`, `map-values` (mapeamento de enumerações). Retorna um log de auditoria por regra mais uma prévia limitada; só grava o dataset limpo quando `outputPath` é dado e nunca sobrescreve a origem.
|
|
23
23
|
- **Ferramenta `data_verify`** — regras declarativas de verificação: `not-null`, `unique`, `range`, `regex`, `enum`, `cross-column` (p. ex. `startDate < endDate`), `freshness` (coluna de data dentro de N dias de uma data de referência). pass/fail por regra com evidência limitada de linhas falhas; uma falha geral é um resultado normal `passed: false`, não um erro de ferramenta.
|
|
24
24
|
- **Relatórios duráveis** — cada execução de perfilamento/limpeza/verificação/citações persiste no domínio de armazenamento `data_quality` (backend JSON), com chave de timestamp mais impressão digital do caminho do dataset; a chave é retornada como `reportKey` nos resultados.
|
|
25
|
-
- **Eventos de sessão** — em hosts que os suportam com segurança, as execuções anexam eventos `data-quality/profile` / `data-quality/clean` / `data-quality/verify` (com a marca `ignorable` onde suportado). Em 0.1.
|
|
25
|
+
- **Eventos de sessão** — em hosts que os suportam com segurança, as execuções anexam eventos `data-quality/profile` / `data-quality/clean` / `data-quality/verify` (com a marca `ignorable` onde suportado). Em 0.1.1-rc.2 o append é omitido por design — o relatório do domínio de armazenamento é sempre a cópia durável (ver «Known limitations»).
|
|
26
26
|
|
|
27
27
|
## Quick start
|
|
28
28
|
|
|
@@ -146,7 +146,7 @@ Os localizadores percorrem o documento do dataset: CSV/TSV carregam como `{ colu
|
|
|
146
146
|
|
|
147
147
|
## Known limitations
|
|
148
148
|
|
|
149
|
-
- **Os eventos de sessão são adaptativos.** 0.1.
|
|
149
|
+
- **Os eventos de sessão são adaptativos.** 0.1.1-rc.2 não tem superfície de registo de eventos de sessão para plugins e o seu `Session.append` não consegue estampar a marca `ignorable`, logo anexar um tipo `data-quality/*` desconhecido tornaria o log de sessão ilegível ao restaurar. Por isso o plugin só anexa quando o host conhece o vocabulário ou suporta o flag `ignorable`; em rc.2 o relatório do domínio de armazenamento é o registo durável.
|
|
150
150
|
- **Dialeto CSV** — vírgula/tab com aspas RFC-4180, linha de cabeçalho obrigatória, linhas em branco ignoradas; sem autodetecção de delimitador nem linhas de comentário.
|
|
151
151
|
- **O parsing de tipos é estrito** — números sem separadores de milhares; datas são `YYYY-MM-DD` / `YYYY/MM/DD` / datetimes estilo ISO (UTC); booleanos são `true/false/yes/no/1/0`. Todo o resto é perfilado como `string`/`mixed` — limpe com `coerce-type` se for intencional.
|
|
152
152
|
- **JSON tem de ser tabular para as ferramentas** (array de objetos planos); `verifyCitations` percorre documentos JSON arbitrários.
|
|
@@ -160,7 +160,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build
|
|
|
160
160
|
pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:readme-sync && pnpm pack
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
- Os testes correm vitest contra os `Context`/`Session`/`ToolRuntime`/domínio de armazenamento REAIS dos peers 0.1.
|
|
163
|
+
- Os testes correm vitest contra os `Context`/`Session`/`ToolRuntime`/domínio de armazenamento REAIS dos peers 0.1.1-rc.2 (sem mocks de serviços escritos à mão) mais specs de motores puros; cada regra de limpeza/verificação tem casos positivos e negativos, e `verifyCitations` cobre os quatro estados.
|
|
164
164
|
- `scripts/loader-runner.mjs` arranca a composição real do Loader e executa a cadeia perfilar → limpar → verificar contra `fixtures/` sem chave de API.
|
|
165
165
|
- Release: `node scripts/release.mjs <x.y.z>` (nunca faz push; a tag dispara `release.yml`).
|
|
166
166
|
|
package/README.zh.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
| 组件 | 版本 |
|
|
12
12
|
|---|---|
|
|
13
|
-
| DeepSeek Harness | `0.1.
|
|
13
|
+
| DeepSeek Harness | `0.1.1-rc.2`(peer 依赖钉版) |
|
|
14
14
|
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
15
15
|
| 包管理器 | `pnpm@11.7.0` |
|
|
16
16
|
| 平台 | Windows / macOS / Linux(纯宿主插件) |
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
- **`data_clean` 工具** —— 有序声明式清洗规则:`dedupe`(按列组)、`fill-missing`(常量/均值/中位数/前向填充)、`coerce-type`(number/date/boolean,失败计数并置缺失)、`normalize-unit`(万/亿 等单位后缀归一)、`trim`、`map-values`(枚举映射)。返回逐规则审计日志与有界预览;仅在给出 `outputPath` 时落盘,且绝不覆盖源文件。
|
|
23
23
|
- **`data_verify` 工具** —— 声明式核查规则:`not-null`、`unique`、`range`、`regex`、`enum`、`cross-column`(如 `startDate < endDate`)、`freshness`(日期列距参考日期不超过 N 天)。逐规则 pass/fail 并附有界失败行证据;整体失败是正常结果 `passed: false`,不是工具错误。
|
|
24
24
|
- **持久化报告** —— 每次梳理/清洗/核查/引用检查都写入 `data_quality` storage domain(JSON 后端),键为运行时间戳加数据集路径指纹;工具结果以 `reportKey` 返回该键。
|
|
25
|
-
- **会话事件** —— 宿主支持时,运行会追加 `data-quality/profile` / `data-quality/clean` / `data-quality/verify` 事件(支持处带 `ignorable` 标记)。在 0.1.
|
|
25
|
+
- **会话事件** —— 宿主支持时,运行会追加 `data-quality/profile` / `data-quality/clean` / `data-quality/verify` 事件(支持处带 `ignorable` 标记)。在 0.1.1-rc.2 上按设计跳过 append —— storage domain 报告始终是持久副本(见「Known limitations」)。
|
|
26
26
|
|
|
27
27
|
## Quick start
|
|
28
28
|
|
|
@@ -146,7 +146,7 @@ const result = await ctx.dataQuality.verifyCitations({
|
|
|
146
146
|
|
|
147
147
|
## Known limitations
|
|
148
148
|
|
|
149
|
-
- **会话事件是自适应的。** 0.1.
|
|
149
|
+
- **会话事件是自适应的。** 0.1.1-rc.2 没有插件会话事件注册面,`Session.append` 也无法打 `ignorable` 标记;追加未知 `data-quality/*` 类型会让会话日志在恢复时被拒读。因此插件仅在宿主认识该词汇或支持 `ignorable` append 时才追加;在 rc.2 上 storage domain 报告即持久记录。
|
|
150
150
|
- **CSV 方言** —— 逗号/制表符分隔、RFC-4180 引号、首行必须是表头、跳过空白行;无分隔符自动探测、无注释行。
|
|
151
151
|
- **类型解析是严格的** —— 数字不带千分位;日期为 `YYYY-MM-DD` / `YYYY/MM/DD` / ISO 风格时间(UTC);布尔为 `true/false/yes/no/1/0`。其余一律按 `string`/`mixed` 梳理 —— 如有意图请用 `coerce-type` 清洗。
|
|
152
152
|
- **JSON 对工具必须是表格**(扁平对象数组);`verifyCitations` 可行走任意 JSON 文档。
|
|
@@ -160,7 +160,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build
|
|
|
160
160
|
pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm run verify:readme-sync && pnpm pack
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
- 测试用 vitest 跑 0.1.
|
|
163
|
+
- 测试用 vitest 跑 0.1.1-rc.2 peers 的真实 `Context`/`Session`/`ToolRuntime`/storage domain(不手写服务 mock)加纯引擎用例;每类清洗/核查规则都有正反用例,`verifyCitations` 覆盖四种状态。
|
|
164
164
|
- `scripts/loader-runner.mjs` 以真实 Loader 组合启动,并在无 API key 下对 `fixtures/` 执行 梳理 → 清洗 → 核查 链路。
|
|
165
165
|
- 发布:`node scripts/release.mjs <x.y.z>`(绝不 push;tag 触发 `release.yml`)。
|
|
166
166
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -14,7 +14,7 @@ published tarball except where noted; these are install-time dependencies:
|
|
|
14
14
|
| [zod](https://github.com/colinhacks/zod) | `^4.4.3` | MIT | Runtime value schema for the `data_quality` storage-domain table (bundled into `lib/`) |
|
|
15
15
|
| [@deepseek-ai/cordis](https://www.npmjs.com/package/@deepseek-ai/cordis) | `^4.0.1` (peer) | See package | The plugin runtime |
|
|
16
16
|
| [@deepseek-ai/schemastery](https://www.npmjs.com/package/@deepseek-ai/schemastery) | `^3.18.0` (peer) | See package | Configuration schema |
|
|
17
|
-
| `@deepseek-ai/dsh-*` peers | `0.1.
|
|
17
|
+
| `@deepseek-ai/dsh-*` peers | `0.1.1-rc.2` (peer) | See packages | Official harness seams (`dsh-session`, `dsh-tools`, `dsh-storage`, `dsh-storage-domain`) |
|
|
18
18
|
|
|
19
19
|
At runtime the plugin only talks to the harness services listed as
|
|
20
20
|
peerDependencies; it performs no network requests and stores no credentials.
|
package/lib/index.js
CHANGED
|
@@ -1375,10 +1375,11 @@ function checkCitations(root, citations, defaultTolerance) {
|
|
|
1375
1375
|
* - Hosts with an `ignorable` append option (the master-build
|
|
1376
1376
|
* `Session.append(type, data, { ignorable: true })` contract) append with the
|
|
1377
1377
|
* marker, so builds that do not know the type skip the event on restore.
|
|
1378
|
-
* - 0.1.0-rc.6 hosts have neither a registration surface nor
|
|
1379
|
-
* append
|
|
1380
|
-
*
|
|
1381
|
-
*
|
|
1378
|
+
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
1379
|
+
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
1380
|
+
* only, never the marker); appending an unknown type there would make the
|
|
1381
|
+
* persistence coordinator refuse the session log on restore, so the append is
|
|
1382
|
+
* skipped and the storage-domain report remains the durable copy.
|
|
1382
1383
|
* @module dsh-data-quality/events
|
|
1383
1384
|
*/
|
|
1384
1385
|
/** The event type vocabulary this plugin appends. */
|
|
@@ -1391,9 +1392,10 @@ const DATA_QUALITY_EVENT_TYPES = [
|
|
|
1391
1392
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
1392
1393
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
1393
1394
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
1394
|
-
* reports `[native code]`): the rc.6
|
|
1395
|
-
* while the master build references the flag by name; property names
|
|
1396
|
-
* minification, so the probe fails safe (skips) rather than corrupting
|
|
1395
|
+
* reports `[native code]`): the rc.6 and rc.8 builds contain no `ignorable`
|
|
1396
|
+
* handling while the master build references the flag by name; property names
|
|
1397
|
+
* survive minification, so the probe fails safe (skips) rather than corrupting
|
|
1398
|
+
* a log.
|
|
1397
1399
|
* @param session - the calling session.
|
|
1398
1400
|
* @param type - the event type.
|
|
1399
1401
|
* @param data - the payload.
|
|
@@ -2405,7 +2407,7 @@ function defineVerifyTool(service) {
|
|
|
2405
2407
|
* @module dsh-data-quality/version
|
|
2406
2408
|
*/
|
|
2407
2409
|
/** The package version reported in persisted reports. */
|
|
2408
|
-
const VERSION = "0.1.
|
|
2410
|
+
const VERSION = "0.1.2";
|
|
2409
2411
|
//#endregion
|
|
2410
2412
|
//#region src/index.ts
|
|
2411
2413
|
const name = "data-quality";
|
package/lib/types/events.d.ts
CHANGED
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* - Hosts with an `ignorable` append option (the master-build
|
|
9
9
|
* `Session.append(type, data, { ignorable: true })` contract) append with the
|
|
10
10
|
* marker, so builds that do not know the type skip the event on restore.
|
|
11
|
-
* - 0.1.0-rc.6 hosts have neither a registration surface nor
|
|
12
|
-
* append
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
|
+
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
+
* only, never the marker); appending an unknown type there would make the
|
|
14
|
+
* persistence coordinator refuse the session log on restore, so the append is
|
|
15
|
+
* skipped and the storage-domain report remains the durable copy.
|
|
15
16
|
* @module dsh-data-quality/events
|
|
16
17
|
*/
|
|
17
18
|
import { type Session } from '@deepseek-ai/dsh-session';
|
|
@@ -62,9 +63,10 @@ export type DataQualityEventType = (typeof DATA_QUALITY_EVENT_TYPES)[number];
|
|
|
62
63
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
63
64
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
64
65
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
65
|
-
* reports `[native code]`): the rc.6
|
|
66
|
-
* while the master build references the flag by name; property names
|
|
67
|
-
* minification, so the probe fails safe (skips) rather than corrupting
|
|
66
|
+
* reports `[native code]`): the rc.6 and rc.8 builds contain no `ignorable`
|
|
67
|
+
* handling while the master build references the flag by name; property names
|
|
68
|
+
* survive minification, so the probe fails safe (skips) rather than corrupting
|
|
69
|
+
* a log.
|
|
68
70
|
* @param session - the calling session.
|
|
69
71
|
* @param type - the event type.
|
|
70
72
|
* @param data - the payload.
|
|
@@ -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;;;;;;;;;;;;;;;;GAgBG;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;KAC1B,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;AAK5E;;;;;;;;;;;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
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* - Hosts with an `ignorable` append option (the master-build
|
|
9
9
|
* `Session.append(type, data, { ignorable: true })` contract) append with the
|
|
10
10
|
* marker, so builds that do not know the type skip the event on restore.
|
|
11
|
-
* - 0.1.0-rc.6 hosts have neither a registration surface nor
|
|
12
|
-
* append
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
|
+
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
+
* only, never the marker); appending an unknown type there would make the
|
|
14
|
+
* persistence coordinator refuse the session log on restore, so the append is
|
|
15
|
+
* skipped and the storage-domain report remains the durable copy.
|
|
15
16
|
* @module dsh-data-quality/events
|
|
16
17
|
*/
|
|
17
18
|
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session';
|
|
@@ -21,9 +22,10 @@ export const DATA_QUALITY_EVENT_TYPES = ['data-quality/profile', 'data-quality/c
|
|
|
21
22
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
22
23
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
23
24
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
24
|
-
* reports `[native code]`): the rc.6
|
|
25
|
-
* while the master build references the flag by name; property names
|
|
26
|
-
* minification, so the probe fails safe (skips) rather than corrupting
|
|
25
|
+
* reports `[native code]`): the rc.6 and rc.8 builds contain no `ignorable`
|
|
26
|
+
* handling while the master build references the flag by name; property names
|
|
27
|
+
* survive minification, so the probe fails safe (skips) rather than corrupting
|
|
28
|
+
* a log.
|
|
27
29
|
* @param session - the calling session.
|
|
28
30
|
* @param type - the event type.
|
|
29
31
|
* @param data - the payload.
|
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;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,yBAAyB,EAAgB,MAAM,0BAA0B,CAAA;AA2ClF,qDAAqD;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,CAAU,CAAA;AAQtH;;;;;;;;;;;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/version.d.ts
CHANGED
package/lib/types/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-data-quality",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
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,
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
],
|
|
60
60
|
"compatibility": {
|
|
61
61
|
"dshVersions": [
|
|
62
|
-
"0.1.
|
|
62
|
+
"0.1.1-rc.2"
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"capability": {
|
|
@@ -91,34 +91,34 @@
|
|
|
91
91
|
"packageManager": "pnpm@11.7.0",
|
|
92
92
|
"peerDependencies": {
|
|
93
93
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
94
|
-
"@deepseek-ai/dsh-session": "0.1.0-rc.
|
|
95
|
-
"@deepseek-ai/dsh-storage": "0.1.0-rc.
|
|
96
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.0-rc.
|
|
97
|
-
"@deepseek-ai/dsh-tools": "0.1.0-rc.
|
|
94
|
+
"@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0",
|
|
95
|
+
"@deepseek-ai/dsh-storage": ">=0.1.0-rc.8 <0.2.0",
|
|
96
|
+
"@deepseek-ai/dsh-storage-domain": ">=0.1.0-rc.8 <0.2.0",
|
|
97
|
+
"@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0",
|
|
98
98
|
"@deepseek-ai/schemastery": "^3.18.0"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
101
|
"tsdown": "^0.22.14",
|
|
102
|
-
"typescript": "^5.9.
|
|
102
|
+
"typescript": "^5.9.3",
|
|
103
103
|
"zod": "^4.4.3"
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
106
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
107
107
|
"@deepseek-ai/cordis-plugin-include": "1.0.6",
|
|
108
108
|
"@deepseek-ai/cordis-plugin-loader": "1.0.2",
|
|
109
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
110
|
-
"@deepseek-ai/dsh-llm": "0.1.
|
|
111
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
112
|
-
"@deepseek-ai/dsh-storage": "0.1.
|
|
113
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.
|
|
114
|
-
"@deepseek-ai/dsh-storage-json": "0.1.
|
|
115
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.
|
|
116
|
-
"@deepseek-ai/dsh-tools": "0.1.
|
|
117
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
118
|
-
"@types/node": "^22.
|
|
119
|
-
"@vitest/coverage-v8": "^3.2.
|
|
109
|
+
"@deepseek-ai/dsh-agent": "0.1.1-rc.2",
|
|
110
|
+
"@deepseek-ai/dsh-llm": "0.1.1-rc.2",
|
|
111
|
+
"@deepseek-ai/dsh-session": "0.1.1-rc.2",
|
|
112
|
+
"@deepseek-ai/dsh-storage": "0.1.1-rc.2",
|
|
113
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.1-rc.2",
|
|
114
|
+
"@deepseek-ai/dsh-storage-json": "0.1.1-rc.2",
|
|
115
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
|
|
116
|
+
"@deepseek-ai/dsh-tools": "0.1.1-rc.2",
|
|
117
|
+
"@deepseek-ai/schemastery": "^3.18.1",
|
|
118
|
+
"@types/node": "^22.20.1",
|
|
119
|
+
"@vitest/coverage-v8": "^3.2.7",
|
|
120
120
|
"oxlint": "0.18.1",
|
|
121
|
-
"vitest": "^3.2.
|
|
121
|
+
"vitest": "^3.2.7"
|
|
122
122
|
},
|
|
123
123
|
"scripts": {
|
|
124
124
|
"build": "node scripts/prepare.mjs",
|
package/src/events.ts
CHANGED
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* - Hosts with an `ignorable` append option (the master-build
|
|
9
9
|
* `Session.append(type, data, { ignorable: true })` contract) append with the
|
|
10
10
|
* marker, so builds that do not know the type skip the event on restore.
|
|
11
|
-
* - 0.1.0-rc.6 hosts have neither a registration surface nor
|
|
12
|
-
* append
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* - 0.1.0-rc.6 and 0.1.0-rc.8 hosts have neither a registration surface nor an
|
|
12
|
+
* `ignorable` append option (rc.8's `Session.append` accepts surface metadata
|
|
13
|
+
* only, never the marker); appending an unknown type there would make the
|
|
14
|
+
* persistence coordinator refuse the session log on restore, so the append is
|
|
15
|
+
* skipped and the storage-domain report remains the durable copy.
|
|
15
16
|
* @module dsh-data-quality/events
|
|
16
17
|
*/
|
|
17
18
|
|
|
@@ -64,16 +65,17 @@ export const DATA_QUALITY_EVENT_TYPES = ['data-quality/profile', 'data-quality/c
|
|
|
64
65
|
/** Union of the event types this plugin appends. */
|
|
65
66
|
export type DataQualityEventType = (typeof DATA_QUALITY_EVENT_TYPES)[number]
|
|
66
67
|
|
|
67
|
-
/** Loose append shape probed at runtime (rc.6
|
|
68
|
+
/** Loose append shape probed at runtime (rc.6/rc.8 take no options; master takes `ignorable`). */
|
|
68
69
|
type AppendProbe = (type: string, data: unknown, options?: { ignorable: true }) => unknown
|
|
69
70
|
|
|
70
71
|
/**
|
|
71
72
|
* Append one `data-quality/*` event when the host can carry it safely; skip
|
|
72
73
|
* silently otherwise (the storage-domain report is always the durable copy).
|
|
73
74
|
* The `ignorable` probe reads the UNBOUND method's source (a `.bind()` result
|
|
74
|
-
* reports `[native code]`): the rc.6
|
|
75
|
-
* while the master build references the flag by name; property names
|
|
76
|
-
* minification, so the probe fails safe (skips) rather than corrupting
|
|
75
|
+
* reports `[native code]`): the rc.6 and rc.8 builds contain no `ignorable`
|
|
76
|
+
* handling while the master build references the flag by name; property names
|
|
77
|
+
* survive minification, so the probe fails safe (skips) rather than corrupting
|
|
78
|
+
* a log.
|
|
77
79
|
* @param session - the calling session.
|
|
78
80
|
* @param type - the event type.
|
|
79
81
|
* @param data - the payload.
|
package/src/version.ts
CHANGED