dsh-data-quality 0.2.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.es.md +51 -5
  3. package/README.hi.md +51 -5
  4. package/README.md +43 -3
  5. package/README.pt.md +51 -5
  6. package/README.zh.md +51 -5
  7. package/SECURITY.md +39 -0
  8. package/SUMMARY.md +147 -0
  9. package/lib/index.js +224 -25
  10. package/lib/types/events.d.ts +10 -10
  11. package/lib/types/events.js +10 -10
  12. package/lib/types/index.d.ts +2 -0
  13. package/lib/types/index.d.ts.map +1 -1
  14. package/lib/types/index.js +2 -0
  15. package/lib/types/index.js.map +1 -1
  16. package/lib/types/profile.d.ts +2 -0
  17. package/lib/types/profile.d.ts.map +1 -1
  18. package/lib/types/profile.js +2 -0
  19. package/lib/types/profile.js.map +1 -1
  20. package/lib/types/report-html.d.ts +41 -0
  21. package/lib/types/report-html.d.ts.map +1 -0
  22. package/lib/types/report-html.js +192 -0
  23. package/lib/types/report-html.js.map +1 -0
  24. package/lib/types/tools/profile-report-schema.d.ts +4 -0
  25. package/lib/types/tools/profile-report-schema.d.ts.map +1 -1
  26. package/lib/types/tools/profile-report-schema.js +1 -0
  27. package/lib/types/tools/profile-report-schema.js.map +1 -1
  28. package/lib/types/tools/report.d.ts.map +1 -1
  29. package/lib/types/tools/report.js +28 -2
  30. package/lib/types/tools/report.js.map +1 -1
  31. package/lib/types/version.d.ts +8 -1
  32. package/lib/types/version.d.ts.map +1 -1
  33. package/lib/types/version.js +8 -1
  34. package/lib/types/version.js.map +1 -1
  35. package/package.json +9 -2
  36. package/src/events.ts +11 -11
  37. package/src/index.ts +2 -0
  38. package/src/profile.ts +4 -0
  39. package/src/report-html.ts +208 -0
  40. package/src/tools/profile-report-schema.ts +1 -0
  41. package/src/tools/report.ts +31 -2
  42. package/src/version.ts +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  import { createHash } from 'node:crypto';
9
9
  import { isMissing, parseBoolean, parseDate, parseNumeric, sampleRows, throwIfAborted } from "./dataset.js";
10
10
  import { computeScorecard } from "./scorecard.js";
11
+ import { REPORT_SCHEMA_VERSION } from "./version.js";
11
12
  /** Fallback duplicate-sample cap for direct engine use; the provider always passes the configured `evidenceRowLimit`. */
12
13
  const DEFAULT_DUPLICATE_SAMPLE_LIMIT = 20;
13
14
  /** Round to 6 significant digits for stable, readable report numbers. */
@@ -196,6 +197,7 @@ export function profileTable(table, options) {
196
197
  signal: options.signal,
197
198
  });
198
199
  return {
200
+ schemaVersion: REPORT_SCHEMA_VERSION,
199
201
  dataset: options.dataset,
200
202
  rowCount: table.rows.length,
201
203
  sampled: profiled.length !== table.rows.length,
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Self-contained offline HTML renderers for persisted data-quality reports.
3
+ *
4
+ * `data_report` (with `format: html`) turns a profile or clean report into a
5
+ * single `.html` file that opens offline: every style rule and every script is
6
+ * inlined, there are no external requests (no CDN, no `<link>`, no `<script
7
+ * src>`), and all dataset values are HTML-escaped before they reach the
8
+ * markup. The document carries the DAMA six-dimension scorecard, the
9
+ * per-column profile summary, and (for clean reports) the per-rule cleaning
10
+ * summary table.
11
+ *
12
+ * Pure and deterministic: the only clock is the report's own `generatedAt`;
13
+ * nothing here reads the filesystem or the network.
14
+ * @module dsh-data-quality/report-html
15
+ */
16
+ import type { ProfileReport } from './profile.js';
17
+ /** Minimal structural view of a clean report's per-rule audit + row contract. */
18
+ export interface CleanReportHtml {
19
+ readonly inputRows: number;
20
+ readonly outputRows: number;
21
+ readonly logs: ReadonlyArray<{
22
+ readonly rule: string;
23
+ readonly affectedRows: number;
24
+ readonly detail: string;
25
+ }>;
26
+ }
27
+ /**
28
+ * Render a profile report as a self-contained offline HTML document.
29
+ * @param report - the profile report (already persisted/returned by data_profile).
30
+ * @returns the complete single-file HTML.
31
+ */
32
+ export declare function renderProfileHtml(report: ProfileReport): string;
33
+ /**
34
+ * Render a clean report as a self-contained offline HTML document (the
35
+ * per-rule cleaning summary table).
36
+ * @param report - the clean report (logs + input/output row counts).
37
+ * @param dataset - the dataset label for the document title.
38
+ * @returns the complete single-file HTML.
39
+ */
40
+ export declare function renderCleanHtml(report: CleanReportHtml, dataset: string): string;
41
+ //# sourceMappingURL=report-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-html.d.ts","sourceRoot":"","sources":["../../src/report-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChH;AAuHD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAoB/D;AAsBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUhF"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Self-contained offline HTML renderers for persisted data-quality reports.
3
+ *
4
+ * `data_report` (with `format: html`) turns a profile or clean report into a
5
+ * single `.html` file that opens offline: every style rule and every script is
6
+ * inlined, there are no external requests (no CDN, no `<link>`, no `<script
7
+ * src>`), and all dataset values are HTML-escaped before they reach the
8
+ * markup. The document carries the DAMA six-dimension scorecard, the
9
+ * per-column profile summary, and (for clean reports) the per-rule cleaning
10
+ * summary table.
11
+ *
12
+ * Pure and deterministic: the only clock is the report's own `generatedAt`;
13
+ * nothing here reads the filesystem or the network.
14
+ * @module dsh-data-quality/report-html
15
+ */
16
+ import { REPORT_SCHEMA_VERSION } from "./version.js";
17
+ /** Escape text for safe embedding in an HTML document. */
18
+ function escapeHtml(text) {
19
+ return text
20
+ .replace(/&/g, '&amp;')
21
+ .replace(/</g, '&lt;')
22
+ .replace(/>/g, '&gt;')
23
+ .replace(/"/g, '&quot;')
24
+ .replace(/'/g, '&#39;');
25
+ }
26
+ /** Render a 0..1 rate as a percentage string, or `—` when undetermined. */
27
+ function pct(score) {
28
+ return score === null ? '—' : `${(score * 100).toFixed(1)}%`;
29
+ }
30
+ /** The shared document shell: inline CSS + inline JS, no external requests. */
31
+ function shell(title, body, script) {
32
+ return [
33
+ '<!doctype html>',
34
+ '<html lang="en">',
35
+ '<head>',
36
+ '<meta charset="utf-8">',
37
+ `<title>${escapeHtml(title)}</title>`,
38
+ '<style>',
39
+ ' :root { --ink: #1a1f2e; --muted: #6b7280; --line: #e5e7eb; --accent: #0f766e; --fail: #b91c1c; --warn: #b45309; --pass: #15803d; }',
40
+ ' * { box-sizing: border-box; }',
41
+ ' body { margin: 0; padding: 24px; font: 14px/1.5 ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; color: var(--ink); background: #f8fafc; }',
42
+ ' header { margin-bottom: 20px; }',
43
+ ' h1 { font-size: 20px; margin: 0 0 4px; }',
44
+ ' .meta { color: var(--muted); font-size: 12px; }',
45
+ ' section { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 16px 20px; margin-bottom: 16px; }',
46
+ ' h2 { font-size: 15px; margin: 0 0 12px; }',
47
+ ' table { border-collapse: collapse; width: 100%; font-size: 13px; }',
48
+ ' th, td { text-align: left; padding: 6px 10px; border-top: 1px solid var(--line); vertical-align: top; }',
49
+ ' th { color: var(--muted); font-weight: 600; }',
50
+ ' .score-cell { font-variant-numeric: tabular-nums; }',
51
+ ' .dim-fail { color: var(--fail); font-weight: 600; }',
52
+ ' .dim-warn { color: var(--warn); }',
53
+ ' .dim-pass { color: var(--pass); }',
54
+ ' .dim-undetermined { color: var(--muted); }',
55
+ ' button { cursor: pointer; font: inherit; }',
56
+ '</style>',
57
+ '</head>',
58
+ '<body>',
59
+ body,
60
+ '<script>',
61
+ script,
62
+ '</script>',
63
+ '</body>',
64
+ '</html>',
65
+ '',
66
+ ].join('\n');
67
+ }
68
+ /** The DAMA six-dimension scorecard section. */
69
+ function scorecardSection(report) {
70
+ const rows = report.scorecard.dimensions.map((dimension) => {
71
+ const cls = dimension.score === null
72
+ ? 'dim-undetermined'
73
+ : dimension.score >= 0.9 ? 'dim-pass'
74
+ : dimension.score >= 0.7 ? 'dim-warn'
75
+ : 'dim-fail';
76
+ return `<tr><td>${escapeHtml(dimension.name)}</td><td class="score-cell ${cls}">${pct(dimension.score)}</td><td>${escapeHtml(dimension.note)}</td></tr>`;
77
+ }).join('\n');
78
+ const overall = report.scorecard.overall;
79
+ const weighted = report.scorecard.weightedOverall;
80
+ return [
81
+ '<section>',
82
+ '<h2>DAMA six-dimension quality scorecard</h2>',
83
+ '<table>',
84
+ '<thead><tr><th>Dimension</th><th>Score</th><th>Note</th></tr></thead>',
85
+ '<tbody>',
86
+ rows,
87
+ '</tbody>',
88
+ '</table>',
89
+ `<p class="meta" id="summary-text">overall ${pct(overall)} · weighted ${pct(weighted)}</p>`,
90
+ '</section>',
91
+ ].join('\n');
92
+ }
93
+ /** The per-column profile summary table. */
94
+ function columnsSection(report) {
95
+ const rows = report.columns.map((column) => {
96
+ const numeric = column.numeric;
97
+ const numericCell = numeric === undefined
98
+ ? '—'
99
+ : `min ${numeric.min} · p25 ${numeric.p25} · median ${numeric.median} · p75 ${numeric.p75} · max ${numeric.max} · mean ${numeric.mean}${numeric.outliers > 0 ? ` · ${numeric.outliers} IQR outliers` : ''}`;
100
+ const top = column.topValues === undefined
101
+ ? '—'
102
+ : column.topValues.map((entry) => `${escapeHtml(entry.value)} ×${entry.count}`).join(', ');
103
+ const notes = column.notes.length === 0 ? '' : `<p class="meta">${column.notes.map(escapeHtml).join('; ')}</p>`;
104
+ return [
105
+ '<tr>',
106
+ `<td>${escapeHtml(column.name)}</td>`,
107
+ `<td>${escapeHtml(column.inferredType)}</td>`,
108
+ `<td class="score-cell">${column.missing}</td>`,
109
+ `<td class="score-cell">${(column.missingRate * 100).toFixed(1)}%</td>`,
110
+ `<td class="score-cell">${column.unique}</td>`,
111
+ `<td>${numericCell}</td>`,
112
+ `<td>${top}</td>`,
113
+ `<td>${notes}</td>`,
114
+ '</tr>',
115
+ ].join('');
116
+ }).join('\n');
117
+ return [
118
+ '<section>',
119
+ '<h2>Column profile</h2>',
120
+ '<table>',
121
+ '<thead><tr><th>Column</th><th>Type</th><th>Missing</th><th>Missing rate</th><th>Unique</th><th>Numeric distribution</th><th>Top values</th><th>Notes</th></tr></thead>',
122
+ '<tbody>',
123
+ rows,
124
+ '</tbody>',
125
+ '</table>',
126
+ '</section>',
127
+ ].join('\n');
128
+ }
129
+ /**
130
+ * Render a profile report as a self-contained offline HTML document.
131
+ * @param report - the profile report (already persisted/returned by data_profile).
132
+ * @returns the complete single-file HTML.
133
+ */
134
+ export function renderProfileHtml(report) {
135
+ const body = [
136
+ '<header>',
137
+ `<h1>Data profile: ${escapeHtml(report.dataset)}</h1>`,
138
+ `<p class="meta">${report.rowCount} rows × ${report.columnCount} columns · generated ${new Date(report.generatedAt).toISOString()} · schema v${REPORT_SCHEMA_VERSION} · report ${report.reportKey ?? '(unpersisted)'}</p>`,
139
+ '<button id="copy-summary" type="button">Copy summary</button>',
140
+ '</header>',
141
+ scorecardSection(report),
142
+ columnsSection(report),
143
+ ].join('\n');
144
+ const script = [
145
+ "const button = document.getElementById('copy-summary');",
146
+ 'if (button) {',
147
+ ' button.addEventListener("click", () => {',
148
+ ' const text = document.getElementById("summary-text");',
149
+ ' if (text && navigator.clipboard) navigator.clipboard.writeText(text.textContent || "");',
150
+ ' });',
151
+ '}',
152
+ ].join('\n');
153
+ return shell(`Data profile: ${report.dataset}`, body, script);
154
+ }
155
+ /** The per-rule cleaning summary table (for clean/clean-diff reports). */
156
+ function cleaningSection(report) {
157
+ const rows = report.logs.map((log) => {
158
+ return `<tr><td>${escapeHtml(log.rule)}</td><td class="score-cell">${log.affectedRows}</td><td>${escapeHtml(log.detail)}</td></tr>`;
159
+ }).join('\n');
160
+ const removed = report.inputRows - report.outputRows;
161
+ return [
162
+ '<section>',
163
+ '<h2>Cleaning summary</h2>',
164
+ `<p class="meta" id="summary-text">input ${report.inputRows} rows · output ${report.outputRows} rows · removed ${removed} rows</p>`,
165
+ '<table>',
166
+ '<thead><tr><th>Rule</th><th>Affected rows</th><th>Detail</th></tr></thead>',
167
+ '<tbody>',
168
+ rows,
169
+ '</tbody>',
170
+ '</table>',
171
+ '</section>',
172
+ ].join('\n');
173
+ }
174
+ /**
175
+ * Render a clean report as a self-contained offline HTML document (the
176
+ * per-rule cleaning summary table).
177
+ * @param report - the clean report (logs + input/output row counts).
178
+ * @param dataset - the dataset label for the document title.
179
+ * @returns the complete single-file HTML.
180
+ */
181
+ export function renderCleanHtml(report, dataset) {
182
+ const body = [
183
+ '<header>',
184
+ `<h1>Cleaning report: ${escapeHtml(dataset)}</h1>`,
185
+ `<p class="meta">schema v${REPORT_SCHEMA_VERSION}</p>`,
186
+ '</header>',
187
+ cleaningSection(report),
188
+ ].join('\n');
189
+ const script = "// no interactive behavior needed; everything renders without external requests\n";
190
+ return shell(`Cleaning report: ${dataset}`, body, script);
191
+ }
192
+ //# sourceMappingURL=report-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-html.js","sourceRoot":"","sources":["../../src/report-html.ts"],"names":[],"mappings":"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"}
@@ -102,6 +102,10 @@ export declare const COLUMN_PROFILE_SCHEMA: {
102
102
  export declare const PROFILE_REPORT_SCHEMA: {
103
103
  readonly type: "object";
104
104
  readonly properties: {
105
+ readonly schemaVersion: {
106
+ readonly type: "number";
107
+ readonly required: true;
108
+ };
105
109
  readonly dataset: {
106
110
  readonly type: "string";
107
111
  readonly required: true;
@@ -1 +1 @@
1
- {"version":3,"file":"profile-report-schema.d.ts","sourceRoot":"","sources":["../../../src/tools/profile-report-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gCAAgC;AAChC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAA;AAEV,wCAAwC;AACxC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CxB,CAAA"}
1
+ {"version":3,"file":"profile-report-schema.d.ts","sourceRoot":"","sources":["../../../src/tools/profile-report-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gCAAgC;AAChC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAA;AAEV,wCAAwC;AACxC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CxB,CAAA"}
@@ -48,6 +48,7 @@ export const COLUMN_PROFILE_SCHEMA = {
48
48
  export const PROFILE_REPORT_SCHEMA = {
49
49
  type: 'object',
50
50
  properties: {
51
+ schemaVersion: { type: 'number', required: true },
51
52
  dataset: { type: 'string', required: true },
52
53
  rowCount: { type: 'number', required: true },
53
54
  sampled: { type: 'boolean', required: true },
@@ -1 +1 @@
1
- {"version":3,"file":"profile-report-schema.js","sourceRoot":"","sources":["../../../src/tools/profile-report-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-report-schema.js","sourceRoot":"","sources":["../../../src/tools/profile-report-schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/tools/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAyCvD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,mDAoD3D"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/tools/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAsDvD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,mDAkE3D"}
@@ -5,8 +5,19 @@
5
5
  * @module dsh-data-quality/tools/report
6
6
  */
7
7
  import { defineTool } from '@deepseek-ai/dsh-tools';
8
+ import { renderCleanHtml, renderProfileHtml } from "../report-html.js";
8
9
  /** The report kinds a caller may query. */
9
10
  const REPORT_KINDS = ['profile', 'clean', 'clean-diff', 'verify', 'citations'];
11
+ /** Render one stored report as a self-contained HTML document (profile/clean only). */
12
+ function renderRecordHtml(record) {
13
+ if (record.kind === 'profile') {
14
+ return renderProfileHtml(record.report);
15
+ }
16
+ if (record.kind === 'clean' || record.kind === 'clean-diff') {
17
+ return renderCleanHtml(record.report, record.dataset);
18
+ }
19
+ throw new Error(`data_report html format does not support kind "${record.kind}" (profile/clean only)`);
20
+ }
10
21
  /** Project a stored report into the canonical value (the stored report is already lossless JSON). */
11
22
  function toView(record) {
12
23
  return { key: record.key, kind: record.kind, at: record.at, dataset: record.dataset, report: record.report };
@@ -41,6 +52,7 @@ export function defineReportTool(service) {
41
52
  parameters: {
42
53
  key: { type: 'string', description: 'Exact storage reportKey (e.g. 20260819000000000-profile-1a2b3c4d); fetches that one report.' },
43
54
  kind: { type: 'string', enum: [...REPORT_KINDS], description: 'Report kind to list (profile/clean/clean-diff/verify/citations).' },
55
+ format: { type: 'string', enum: ['json', 'html'], description: 'Output format. json (default) returns the report envelope(s); html renders one report as a self-contained offline HTML document (requires key; profile/clean only).' },
44
56
  },
45
57
  output: {
46
58
  schema: {
@@ -63,10 +75,16 @@ export function defineReportTool(service) {
63
75
  },
64
76
  required: true,
65
77
  },
78
+ html: { type: 'string', description: 'Self-contained offline HTML (present only when format: html).' },
66
79
  },
67
80
  additionalProperties: false,
68
81
  },
69
- render: (_args, value) => [{ type: 'text', text: renderReportText(value) }],
82
+ render: (_args, value) => {
83
+ const view = value;
84
+ if (view.html !== undefined)
85
+ return [{ type: 'text', text: view.html }];
86
+ return [{ type: 'text', text: renderReportText(view) }];
87
+ },
70
88
  },
71
89
  async execute(args, _exec) {
72
90
  const hasKey = args.key !== undefined;
@@ -74,9 +92,17 @@ export function defineReportTool(service) {
74
92
  if (hasKey === hasKind) {
75
93
  throw new Error('data_report needs exactly one of key/kind');
76
94
  }
95
+ const format = (args.format ?? 'json');
77
96
  if (hasKey) {
78
97
  const record = await service.getReport(args.key);
79
- return { key: args.key, records: [toView(record)] };
98
+ return {
99
+ key: args.key,
100
+ records: [toView(record)],
101
+ ...(format === 'html' ? { html: renderRecordHtml(record) } : {}),
102
+ };
103
+ }
104
+ if (format === 'html') {
105
+ throw new Error('data_report html format requires key (exactly one report)');
80
106
  }
81
107
  const records = await service.listReports(args.kind);
82
108
  return { kind: args.kind, records: records.map(toView) };
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/tools/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/tools/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAwB,MAAM,mBAAmB,CAAA;AAI5F,2CAA2C;AAC3C,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAA;AAoBvF,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,MAAoB;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAkC,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC5D,OAAO,eAAe,CAAC,MAAM,CAAC,MAAoC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACrF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,CAAC,IAAI,wBAAwB,CAAC,CAAA;AACxG,CAAC;AAED,qGAAqG;AACrG,SAAS,MAAM,CAAC,MAAoB;IAClC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAA8B,EAAE,CAAA;AACtI,CAAC;AAED,kEAAkE;AAClE,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/F,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7E,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;YACX,2GAA2G;YAC3G,iLAAiL;YACjL,+KAA+K;SAChL,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,UAAU,EAAE;YACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6FAA6F,EAAE;YACnI,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,WAAW,EAAE,kEAAkE,EAAE;YAClI,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,qKAAqK,EAAE;SACvO;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE;oBACjD,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCACvC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gCACjE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;6BACzC;4BACD,oBAAoB,EAAE,KAAK;yBAC5B;wBACD,QAAQ,EAAE,IAAI;qBACf;oBACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;iBACvG;gBACD,oBAAoB,EAAE,KAAK;aAC5B;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvB,MAAM,IAAI,GAAG,KAAmC,CAAA;gBAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACzD,CAAC;SACF;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAA;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAA;YACvC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC9D,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAoB,CAAA;YACzD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAa,CAAC,CAAA;gBAC1D,OAAO;oBACL,GAAG,EAAE,IAAI,CAAC,GAAa;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACzB,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAA;YACH,CAAC;YACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;YAC9E,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAA4B,CAAC,CAAA;YAC5E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAA4B,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;QAClF,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -4,5 +4,12 @@
4
4
  * @module dsh-data-quality/version
5
5
  */
6
6
  /** The package version reported in persisted reports. */
7
- export declare const VERSION = "0.2.0";
7
+ export declare const VERSION = "0.3.1";
8
+ /**
9
+ * Version of the persisted report schema. Bump it whenever a report's
10
+ * canonical shape changes in a way old consumers cannot read (the durable
11
+ * `data_quality` records keep their own `schemaVersion` so a future reader
12
+ * can detect and reject an incompatible record instead of misreading it).
13
+ */
14
+ export declare const REPORT_SCHEMA_VERSION = 1;
8
15
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,eAAO,MAAM,OAAO,UAAU,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,eAAO,MAAM,OAAO,UAAU,CAAA;AAE9B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAA"}
@@ -4,5 +4,12 @@
4
4
  * @module dsh-data-quality/version
5
5
  */
6
6
  /** The package version reported in persisted reports. */
7
- export const VERSION = '0.2.0';
7
+ export const VERSION = '0.3.1';
8
+ /**
9
+ * Version of the persisted report schema. Bump it whenever a report's
10
+ * canonical shape changes in a way old consumers cannot read (the durable
11
+ * `data_quality` records keep their own `schemaVersion` so a future reader
12
+ * can detect and reject an incompatible record instead of misreading it).
13
+ */
14
+ export const REPORT_SCHEMA_VERSION = 1;
8
15
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-data-quality",
3
- "version": "0.2.0",
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 (the master-build
9
- * `Session.append(type, data, { ignorable: true })` contract) append with the
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); 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.
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 takes `ignorable`). */
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 and rc.8 builds contain no `ignorable`
78
- * handling while the master build references the flag by name; property names
79
- * survive minification, so the probe fails safe (skips) rather than corrupting
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.
package/src/index.ts CHANGED
@@ -80,6 +80,8 @@ export {
80
80
  export { dataQualityDomainSpec, reportKeyOf, reportRecordSchema, isValidReportKey, type ReportRecord, type ReportStore, type StoredReport } from './store.ts'
81
81
  export { DATA_QUALITY_EVENT_TYPES, appendDataQualityEvent, type DataQualityEventData, type DataQualityEventType } from './events.ts'
82
82
  export { MAX_CELL_TEXT, truncateCell, truncateRow } from './present.ts'
83
+ export { renderProfileHtml, renderCleanHtml, type CleanReportHtml } from './report-html.ts'
84
+ export { REPORT_SCHEMA_VERSION } from './version.ts'
83
85
 
84
86
  /**
85
87
  * Mount the seam: resolve config (fail loud), open the report domain, publish