@askdb/enrich 0.2.0-beta.2 → 0.2.0-beta.21
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/README.md +5 -3
- package/dist/draft.d.ts +10 -9
- package/dist/draft.d.ts.map +1 -1
- package/dist/draft.js +26 -42
- package/dist/draft.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/suggest.d.ts +12 -5
- package/dist/suggest.d.ts.map +1 -1
- package/dist/suggest.js +22 -11
- package/dist/suggest.js.map +1 -1
- package/dist/workspace.d.ts +32 -8
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +192 -33
- package/dist/workspace.js.map +1 -1
- package/package.json +13 -8
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Shared Schema v2 enrichment workspace helpers used by AskDB authoring surfaces.
|
|
4
4
|
|
|
5
|
-
This package owns the non-UI enrichment model: loading and saving Schema v2
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
This package owns the non-UI enrichment model: loading and saving Schema v2 workspaces, building editable table drafts, preserving markdown sections, and building AI suggestion targets and context.
|
|
6
|
+
|
|
7
|
+
## License
|
|
8
|
+
|
|
9
|
+
Apache-2.0 © [Yahya Gilany](https://yahyagilany.io). See [LICENSE](./LICENSE) and [NOTICE](./NOTICE).
|
package/dist/draft.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ParsedTableMarkdown,
|
|
1
|
+
import type { ParsedTableMarkdown, V2Table, V2TableFrontmatter } from "@askdb/core";
|
|
2
2
|
/**
|
|
3
3
|
* In-memory editable representation of a single table's describable layer.
|
|
4
4
|
* Built from the parsed markdown when present; defaulted when not.
|
|
@@ -16,6 +16,8 @@ export type TableDraft = {
|
|
|
16
16
|
tags?: string[];
|
|
17
17
|
/** Override (only set when user explicitly toggles). */
|
|
18
18
|
sensitive?: boolean;
|
|
19
|
+
/** When false, table is excluded from LLM prompts and RAG indexing. Undefined means tracked. */
|
|
20
|
+
tracked?: boolean;
|
|
19
21
|
/** Verbatim content under `## Common query language`. */
|
|
20
22
|
commonQueryLanguage?: string;
|
|
21
23
|
/** Verbatim content under `## Example questions`. */
|
|
@@ -27,15 +29,14 @@ export declare function buildTableDraft(physical: V2Table, parsed: ParsedTableMa
|
|
|
27
29
|
/**
|
|
28
30
|
* Build the V2TableFrontmatter to write to disk from a draft + physical.
|
|
29
31
|
* Empty optional fields are omitted entirely (cleaner round-trip).
|
|
32
|
+
*
|
|
33
|
+
* Pass the file's `existing` front-matter when rewriting it: its `columns[]` entries
|
|
34
|
+
* for IDs that are not this table's columns (another table's column, which the core
|
|
35
|
+
* loader reports as `misplaced_column_id` but still escalates on `sensitive: true`,
|
|
36
|
+
* or an orphaned ID) are not part of the draft, so they are carried through unchanged
|
|
37
|
+
* rather than silently dropped. Use `pruneOrphanedColumns` to remove orphans on purpose.
|
|
30
38
|
*/
|
|
31
|
-
export declare function buildFrontmatter(physical: V2Table, schemaId: string, draft: TableDraft): V2TableFrontmatter;
|
|
32
|
-
/** Parse a comma-separated string into a trimmed list (empty entries dropped). */
|
|
33
|
-
export declare function parseListInput(input: string): string[];
|
|
34
|
-
export declare function formatList(list: string[] | undefined): string;
|
|
39
|
+
export declare function buildFrontmatter(physical: V2Table, schemaId: string, draft: TableDraft, existing?: V2TableFrontmatter): V2TableFrontmatter;
|
|
35
40
|
/** Sensitive column names (per physical layer) referenced in a description. */
|
|
36
41
|
export declare function findSensitiveColumnReferences(description: string, physical: V2Table): string[];
|
|
37
|
-
/** Are any per-column describable fields populated? */
|
|
38
|
-
export declare function hasAnyColumnDescribable(draft: TableDraft): boolean;
|
|
39
|
-
/** Is the column type a candidate for an enum field? (text-y types). */
|
|
40
|
-
export declare function isEnumCandidate(col: V2Column): boolean;
|
|
41
42
|
//# sourceMappingURL=draft.d.ts.map
|
package/dist/draft.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAEnB,OAAO,EACP,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,UAAU,CA6BZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,kBAAkB,CAgCpB;AAED,+EAA+E;AAC/E,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAKV"}
|
package/dist/draft.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { findMentionedNames } from "@askdb/core";
|
|
1
2
|
export function buildTableDraft(physical, parsed) {
|
|
2
3
|
const fm = parsed?.frontmatter;
|
|
3
4
|
const columns = {};
|
|
4
5
|
for (const col of physical.columns) {
|
|
5
|
-
|
|
6
|
+
// Mirror the core loader for a column listed more than once: the first entry's
|
|
7
|
+
// describable fields apply, but any entry's `sensitive: true` escalates. Saving the
|
|
8
|
+
// draft writes a single entry, so taking only the first would drop the escalation.
|
|
9
|
+
const fmCols = fm?.columns?.filter((c) => c.id === col.id) ?? [];
|
|
10
|
+
const fmCol = fmCols[0];
|
|
6
11
|
const draft = {};
|
|
7
12
|
if (fmCol?.description !== undefined)
|
|
8
13
|
draft.description = fmCol.description;
|
|
@@ -10,7 +15,9 @@ export function buildTableDraft(physical, parsed) {
|
|
|
10
15
|
draft.aliases = [...fmCol.aliases];
|
|
11
16
|
if (fmCol?.enum !== undefined)
|
|
12
17
|
draft.enum = [...fmCol.enum];
|
|
13
|
-
if (
|
|
18
|
+
if (fmCols.some((c) => c.sensitive === true))
|
|
19
|
+
draft.sensitive = true;
|
|
20
|
+
else if (fmCol?.sensitive !== undefined)
|
|
14
21
|
draft.sensitive = fmCol.sensitive;
|
|
15
22
|
columns[col.id] = draft;
|
|
16
23
|
}
|
|
@@ -20,6 +27,7 @@ export function buildTableDraft(physical, parsed) {
|
|
|
20
27
|
primaryEntity: fm?.primaryEntity,
|
|
21
28
|
tags: fm?.tags ? [...fm.tags] : undefined,
|
|
22
29
|
sensitive: fm?.sensitive,
|
|
30
|
+
tracked: fm?.tracked,
|
|
23
31
|
commonQueryLanguage: parsed?.sections["Common query language"],
|
|
24
32
|
exampleQuestions: parsed?.sections["Example questions"],
|
|
25
33
|
columns,
|
|
@@ -28,8 +36,14 @@ export function buildTableDraft(physical, parsed) {
|
|
|
28
36
|
/**
|
|
29
37
|
* Build the V2TableFrontmatter to write to disk from a draft + physical.
|
|
30
38
|
* Empty optional fields are omitted entirely (cleaner round-trip).
|
|
39
|
+
*
|
|
40
|
+
* Pass the file's `existing` front-matter when rewriting it: its `columns[]` entries
|
|
41
|
+
* for IDs that are not this table's columns (another table's column, which the core
|
|
42
|
+
* loader reports as `misplaced_column_id` but still escalates on `sensitive: true`,
|
|
43
|
+
* or an orphaned ID) are not part of the draft, so they are carried through unchanged
|
|
44
|
+
* rather than silently dropped. Use `pruneOrphanedColumns` to remove orphans on purpose.
|
|
31
45
|
*/
|
|
32
|
-
export function buildFrontmatter(physical, schemaId, draft) {
|
|
46
|
+
export function buildFrontmatter(physical, schemaId, draft, existing) {
|
|
33
47
|
const columns = physical.columns.map((col) => {
|
|
34
48
|
const c = draft.columns[col.id] ?? {};
|
|
35
49
|
const out = { id: col.id };
|
|
@@ -44,6 +58,8 @@ export function buildFrontmatter(physical, schemaId, draft) {
|
|
|
44
58
|
out.sensitive = c.sensitive;
|
|
45
59
|
return out;
|
|
46
60
|
});
|
|
61
|
+
const ownColumnIds = new Set(physical.columns.map((col) => col.id));
|
|
62
|
+
const foreignColumns = (existing?.columns ?? []).filter((col) => !ownColumnIds.has(col.id));
|
|
47
63
|
const fm = {
|
|
48
64
|
id: physical.id,
|
|
49
65
|
name: physical.name,
|
|
@@ -57,35 +73,19 @@ export function buildFrontmatter(physical, schemaId, draft) {
|
|
|
57
73
|
fm.tags = draft.tags;
|
|
58
74
|
if (draft.sensitive !== undefined)
|
|
59
75
|
fm.sensitive = draft.sensitive;
|
|
76
|
+
if (draft.tracked !== undefined)
|
|
77
|
+
fm.tracked = draft.tracked;
|
|
60
78
|
// Only emit columns array when at least one column has describable content,
|
|
61
79
|
// so "untouched" tables stay minimal.
|
|
62
|
-
|
|
63
|
-
|
|
80
|
+
const described = columns.some((c) => Object.keys(c).length > 1);
|
|
81
|
+
if (described || foreignColumns.length > 0) {
|
|
82
|
+
fm.columns = [...(described ? columns : []), ...foreignColumns];
|
|
83
|
+
}
|
|
64
84
|
return fm;
|
|
65
85
|
}
|
|
66
|
-
/** Parse a comma-separated string into a trimmed list (empty entries dropped). */
|
|
67
|
-
export function parseListInput(input) {
|
|
68
|
-
return input
|
|
69
|
-
.split(",")
|
|
70
|
-
.map((s) => s.trim())
|
|
71
|
-
.filter((s) => s.length > 0);
|
|
72
|
-
}
|
|
73
|
-
export function formatList(list) {
|
|
74
|
-
return list ? list.join(", ") : "";
|
|
75
|
-
}
|
|
76
86
|
/** Sensitive column names (per physical layer) referenced in a description. */
|
|
77
87
|
export function findSensitiveColumnReferences(description, physical) {
|
|
78
|
-
|
|
79
|
-
return physical.columns
|
|
80
|
-
.filter((c) => c.sensitive)
|
|
81
|
-
.map((c) => c.name)
|
|
82
|
-
.filter((name) => {
|
|
83
|
-
const re = new RegExp(`\\b${escapeRegex(name)}\\b`, "i");
|
|
84
|
-
return re.test(lower);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
function escapeRegex(s) {
|
|
88
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
88
|
+
return findMentionedNames(description, physical.columns.filter((c) => c.sensitive).map((c) => c.name));
|
|
89
89
|
}
|
|
90
90
|
function nonEmptyStrings(list) {
|
|
91
91
|
return Array.isArray(list) && list.length > 0;
|
|
@@ -112,20 +112,4 @@ function extractFirstParagraph(body) {
|
|
|
112
112
|
}
|
|
113
113
|
return out.length > 0 ? out.join(" ") : undefined;
|
|
114
114
|
}
|
|
115
|
-
/** Are any per-column describable fields populated? */
|
|
116
|
-
export function hasAnyColumnDescribable(draft) {
|
|
117
|
-
return Object.values(draft.columns).some((c) => (c.description !== undefined && c.description !== "") ||
|
|
118
|
-
(c.aliases && c.aliases.length > 0) ||
|
|
119
|
-
(c.enum && c.enum.length > 0) ||
|
|
120
|
-
c.sensitive !== undefined);
|
|
121
|
-
}
|
|
122
|
-
/** Is the column type a candidate for an enum field? (text-y types). */
|
|
123
|
-
export function isEnumCandidate(col) {
|
|
124
|
-
const t = col.type.toLowerCase();
|
|
125
|
-
return (t === "text" ||
|
|
126
|
-
t.startsWith("varchar") ||
|
|
127
|
-
t.startsWith("char") ||
|
|
128
|
-
t === "citext" ||
|
|
129
|
-
t.endsWith("[]") === false && t.includes("enum"));
|
|
130
|
-
}
|
|
131
115
|
//# sourceMappingURL=draft.js.map
|
package/dist/draft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAoCjD,MAAM,UAAU,eAAe,CAC7B,QAAiB,EACjB,MAAuC;IAEvC,MAAM,EAAE,GAAG,MAAM,EAAE,WAAW,CAAC;IAC/B,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,+EAA+E;QAC/E,oFAAoF;QACpF,mFAAmF;QACnF,MAAM,MAAM,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5E,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;YAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;aAChE,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACnE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAClD,aAAa,EAAE,EAAE,EAAE,aAAa;QAChC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACzC,SAAS,EAAE,EAAE,EAAE,SAAS;QACxB,OAAO,EAAE,EAAE,EAAE,OAAO;QACpB,mBAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QAC9D,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;QACvD,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAiB,EACjB,QAAgB,EAChB,KAAiB,EACjB,QAA6B;IAE7B,MAAM,OAAO,GAA0B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAwB,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACxD,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YACxD,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;YAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5F,MAAM,EAAE,GAAuB;QAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ;KACT,CAAC;IACF,IAAI,KAAK,CAAC,aAAa;QAAE,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAChE,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/D,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACtD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5D,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,QAAiB;IAEjB,OAAO,kBAAkB,CACvB,WAAW,EACX,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAA0B;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,WAAW;gBAAE,MAAM;YACvB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,IAAI,WAAW;gBAAE,MAAM;YACvB,SAAS;QACX,CAAC;QACD,WAAW,GAAG,IAAI,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { buildFrontmatter, buildTableDraft, findSensitiveColumnReferences,
|
|
1
|
+
export { buildFrontmatter, buildTableDraft, findSensitiveColumnReferences, } from "./draft.js";
|
|
2
2
|
export type { ColumnDraft, TableDraft } from "./draft.js";
|
|
3
3
|
export { buildSuggestionContext, buildSuggestionTarget, } from "./suggest.js";
|
|
4
|
-
export type { ColumnSuggestField, SuggestEnrichment,
|
|
5
|
-
export { buildDefaultTableBody, bundleSchemaDirectory, loadWorkspace, pruneOrphanedColumns, replaceH2Section, replaceTableDescription, saveConcepts, saveTable, validateConceptLinks, } from "./workspace.js";
|
|
4
|
+
export type { ColumnSuggestField, SuggestEnrichment, SuggestSource, TableSuggestField, } from "./suggest.js";
|
|
5
|
+
export { buildDefaultTableBody, bundleSchemaDirectory, loadWorkspace, pruneOrphanedColumns, replaceH2Section, replaceTableDescription, saveConcepts, saveTable, saveTenantPolicy, validateConceptLinks, } from "./workspace.js";
|
|
6
6
|
export type { BundledSchemaV2, Workspace, WorkspaceTable } from "./workspace.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,6BAA6B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { buildFrontmatter, buildTableDraft, findSensitiveColumnReferences,
|
|
1
|
+
export { buildFrontmatter, buildTableDraft, findSensitiveColumnReferences, } from "./draft.js";
|
|
2
2
|
export { buildSuggestionContext, buildSuggestionTarget, } from "./suggest.js";
|
|
3
|
-
export { buildDefaultTableBody, bundleSchemaDirectory, loadWorkspace, pruneOrphanedColumns, replaceH2Section, replaceTableDescription, saveConcepts, saveTable, validateConceptLinks, } from "./workspace.js";
|
|
3
|
+
export { buildDefaultTableBody, bundleSchemaDirectory, loadWorkspace, pruneOrphanedColumns, replaceH2Section, replaceTableDescription, saveConcepts, saveTable, saveTenantPolicy, validateConceptLinks, } from "./workspace.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,6BAA6B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|
package/dist/suggest.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type { EnrichmentCandidate, EnrichmentContext, EnrichmentTarget } from "@askdb/core";
|
|
2
|
-
import type { Workspace } from "./workspace.js";
|
|
1
|
+
import type { EnrichmentCandidate, EnrichmentContext, EnrichmentTarget, NormalizedSchemaV2 } from "@askdb/core";
|
|
3
2
|
export type SuggestEnrichment = (target: EnrichmentTarget, context: EnrichmentContext) => Promise<EnrichmentCandidate[]>;
|
|
4
|
-
export type SuggestEnrichmentForTui = SuggestEnrichment;
|
|
5
3
|
export type TableSuggestField = "description" | "aliases" | "primaryEntity" | "commonQueryLanguage";
|
|
6
4
|
export type ColumnSuggestField = "description" | "aliases";
|
|
7
5
|
export type SuggestSource = {
|
|
@@ -14,6 +12,15 @@ export type SuggestSource = {
|
|
|
14
12
|
columnId: string;
|
|
15
13
|
field: ColumnSuggestField;
|
|
16
14
|
};
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The table or column a suggestion is for. `schema` is `loadSchema()`'s result, so the target
|
|
17
|
+
* carries effective sensitivity (front-matter escalations included), which the enrichment
|
|
18
|
+
* prompt's sensitivity rule reads.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildSuggestionTarget(schema: NormalizedSchemaV2, source: SuggestSource): EnrichmentTarget;
|
|
21
|
+
/**
|
|
22
|
+
* The target table's foreign-key neighbors (at most 4) and the schema id, from `loadSchema()`'s
|
|
23
|
+
* result. Untracked tables (`tracked: false`) stay out, as they do from `ask()`'s prompt.
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildSuggestionContext(schema: NormalizedSchemaV2, tableId: string): EnrichmentContext;
|
|
19
26
|
//# sourceMappingURL=suggest.d.ts.map
|
package/dist/suggest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,SAAS,GACT,eAAe,GACf,qBAAqB,CAAC;AAC1B,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAC;AAE3D,MAAM,MAAM,aAAa,GACrB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAC7D;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,aAAa,GACpB,gBAAgB,CAqBlB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,MAAM,GACd,iBAAiB,CA4BnB"}
|
package/dist/suggest.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The table or column a suggestion is for. `schema` is `loadSchema()`'s result, so the target
|
|
3
|
+
* carries effective sensitivity (front-matter escalations included), which the enrichment
|
|
4
|
+
* prompt's sensitivity rule reads.
|
|
5
|
+
*/
|
|
6
|
+
export function buildSuggestionTarget(schema, source) {
|
|
7
|
+
const table = findTable(schema, source.tableId);
|
|
3
8
|
if (source.scope === "table") {
|
|
4
9
|
switch (source.field) {
|
|
5
10
|
case "description":
|
|
@@ -19,13 +24,19 @@ export function buildSuggestionTarget(workspace, source) {
|
|
|
19
24
|
return { kind: "column-aliases", table, columnId: source.columnId };
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The target table's foreign-key neighbors (at most 4) and the schema id, from `loadSchema()`'s
|
|
29
|
+
* result. Untracked tables (`tracked: false`) stay out, as they do from `ask()`'s prompt.
|
|
30
|
+
*/
|
|
31
|
+
export function buildSuggestionContext(schema, tableId) {
|
|
32
|
+
const table = findTable(schema, tableId);
|
|
24
33
|
const relatedIds = new Set();
|
|
25
34
|
const columnToTable = new Map();
|
|
26
|
-
for (const
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
for (const other of schema.tables) {
|
|
36
|
+
if (other.tracked === false)
|
|
37
|
+
continue;
|
|
38
|
+
for (const column of other.columns) {
|
|
39
|
+
columnToTable.set(column.id, other.id);
|
|
29
40
|
}
|
|
30
41
|
}
|
|
31
42
|
for (const rel of table.relationships ?? []) {
|
|
@@ -37,16 +48,16 @@ export function buildSuggestionContext(workspace, tableId) {
|
|
|
37
48
|
relatedIds.add(toTable);
|
|
38
49
|
}
|
|
39
50
|
const neighbors = [...relatedIds]
|
|
40
|
-
.map((id) =>
|
|
51
|
+
.map((id) => schema.tables.find((other) => other.id === id))
|
|
41
52
|
.filter((t) => Boolean(t))
|
|
42
53
|
.slice(0, 4);
|
|
43
54
|
return {
|
|
44
|
-
schemaId:
|
|
55
|
+
schemaId: schema.schemaId,
|
|
45
56
|
...(neighbors.length > 0 ? { neighbors } : {}),
|
|
46
57
|
};
|
|
47
58
|
}
|
|
48
|
-
function findTable(
|
|
49
|
-
const table =
|
|
59
|
+
function findTable(schema, tableId) {
|
|
60
|
+
const table = schema.tables.find((t) => t.id === tableId);
|
|
50
61
|
if (!table)
|
|
51
62
|
throw new Error(`No such table: ${tableId}`);
|
|
52
63
|
return table;
|
package/dist/suggest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ParsedConceptsMarkdown, type ParsedTableMarkdown, type SchemaV2Warning, type V2Concept, type V2ConceptsFrontmatter, type V2SchemaJson, type V2Table, type V2TableFrontmatter } from "@askdb/core";
|
|
1
|
+
import { type BundledSchemaV2 as CoreBundledSchemaV2, type ParsedConceptsMarkdown, type ParsedTableMarkdown, type SchemaV2Warning, type TenantPolicyFrontmatter, type V2Concept, type V2ConceptsFrontmatter, type V2SchemaJson, type V2Table, type V2TableFrontmatter } from "@askdb/core";
|
|
2
2
|
/**
|
|
3
3
|
* One table in the workspace. Pairs the physical layer entry with the (optional)
|
|
4
4
|
* describable-layer markdown file so save knows where to write.
|
|
@@ -10,6 +10,13 @@ export type WorkspaceTable = {
|
|
|
10
10
|
filename: string;
|
|
11
11
|
/** Parsed markdown if the file exists; `undefined` for tables without a `.md` yet. */
|
|
12
12
|
parsed: ParsedTableMarkdown | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* IDs of this table's columns that some *other* table markdown file marks
|
|
15
|
+
* `sensitive: true` (a `misplaced_column_id` entry). The core loader honors those
|
|
16
|
+
* escalations, and they are not part of this table's draft, so an authoring UI must
|
|
17
|
+
* treat these columns as sensitive regardless of the draft.
|
|
18
|
+
*/
|
|
19
|
+
escalatedByOtherFiles?: string[];
|
|
13
20
|
};
|
|
14
21
|
export type Workspace = {
|
|
15
22
|
schemaDir: string;
|
|
@@ -18,12 +25,12 @@ export type Workspace = {
|
|
|
18
25
|
concepts: ParsedConceptsMarkdown | undefined;
|
|
19
26
|
warnings: SchemaV2Warning[];
|
|
20
27
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
/**
|
|
29
|
+
* The bundle format, re-exported from `@askdb/core`, whose loader defines it.
|
|
30
|
+
*
|
|
31
|
+
* @deprecated Import `BundledSchemaV2` from `@askdb/core` instead.
|
|
32
|
+
*/
|
|
33
|
+
export type BundledSchemaV2 = CoreBundledSchemaV2;
|
|
27
34
|
/**
|
|
28
35
|
* Load a Schema v2 workspace from disk, preserving file-path information for
|
|
29
36
|
* round-trippable save.
|
|
@@ -36,9 +43,26 @@ export declare function loadWorkspace(schemaDir: string): Workspace;
|
|
|
36
43
|
export declare function saveTable(workspace: Workspace, tableId: string, frontmatter: V2TableFrontmatter, body: string): void;
|
|
37
44
|
/** Save concepts.md back to disk via the Phase 5 writer. */
|
|
38
45
|
export declare function saveConcepts(workspace: Workspace, frontmatter: V2ConceptsFrontmatter, body?: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Save `tenant-policy.md` to the schema directory. The policy is checked first with
|
|
48
|
+
* the core loader's own rules, against the tables and columns in `schema.json` on disk:
|
|
49
|
+
* a policy that `loadSchema` would reject throws `SchemaParseError` and nothing is
|
|
50
|
+
* written, since every later load of the directory would fail until the file is fixed
|
|
51
|
+
* by hand. The check reads disk, not `workspace.physical`, because a re-introspection
|
|
52
|
+
* can change `schema.json` while a strict policy keeps the workspace from reloading.
|
|
53
|
+
*/
|
|
54
|
+
export declare function saveTenantPolicy(workspace: Workspace, frontmatter: TenantPolicyFrontmatter, body: string): void;
|
|
39
55
|
export declare function validateConceptLinks(workspace: Workspace, concepts: V2Concept[]): string[];
|
|
40
56
|
export declare function pruneOrphanedColumns(workspace: Workspace): number;
|
|
41
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Bundle a schema directory into the single-file form `askdb bundle` writes, and check that the
|
|
59
|
+
* bundle loads. Core's `readSchemaDirectory()` does the read, so the bundle carries exactly the
|
|
60
|
+
* files `loadSchema()` reads; core's loader then parses the bundle. So a directory the loader
|
|
61
|
+
* refuses throws its `SchemaParseError` here, and a bundle this returns always loads: a wrong-case
|
|
62
|
+
* `Tenant-Policy.md`, an unreadable optional file, front-matter that isn't YAML, a tenant policy
|
|
63
|
+
* that doesn't parse or doesn't fit `schema.json`, or two table files with the same `id` (#796).
|
|
64
|
+
*/
|
|
65
|
+
export declare function bundleSchemaDirectory(schemaDir: string): CoreBundledSchemaV2;
|
|
42
66
|
/**
|
|
43
67
|
* Build a default body skeleton for a brand-new table .md file:
|
|
44
68
|
* `# Table: <name>` heading + the description as the first paragraph.
|
package/dist/workspace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAaL,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CA+E1D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,MAAM,GACX,IAAI,CAWN;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,qBAAqB,EAClC,IAAI,SAAwE,GAC3E,IAAI,CASN;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,MAAM,GACX,IAAI,CAWN;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAO1F;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA2BjE;AAqCD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAY5E;AA8HD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAkDpF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBvF"}
|
package/dist/workspace.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync } from "node:fs";
|
|
3
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
4
|
+
import { parseConceptsMarkdown, parseTableMarkdown, loadSchema, loadSchemaFromJson, normalizeTenantPolicy, readSchemaDirectory, parseTenantPolicyMarkdown, saveSchemaFile, writeConceptsMarkdown, writeTableMarkdown, writeTenantPolicyMarkdown, v2SchemaJsonSchema, } from "@askdb/core";
|
|
4
5
|
/**
|
|
5
6
|
* Load a Schema v2 workspace from disk, preserving file-path information for
|
|
6
7
|
* round-trippable save.
|
|
@@ -13,22 +14,53 @@ export function loadWorkspace(schemaDir) {
|
|
|
13
14
|
const physical = parsePhysical(readFileSync(schemaJsonPath, "utf8"), schemaJsonPath);
|
|
14
15
|
const tableDir = join(schemaDir, "tables");
|
|
15
16
|
const parsedByFile = new Map();
|
|
17
|
+
// Every name in tables/, not only the `.md` files the loader reads: a default
|
|
18
|
+
// filename must not land on any of them (`Orders.MD` is `orders.md` on APFS).
|
|
19
|
+
const entriesOnDisk = existsSync(tableDir) ? readdirSync(tableDir) : [];
|
|
16
20
|
if (existsSync(tableDir)) {
|
|
17
|
-
for (const entry of
|
|
21
|
+
for (const entry of entriesOnDisk) {
|
|
18
22
|
if (!entry.endsWith(".md"))
|
|
19
23
|
continue;
|
|
20
24
|
const content = readFileSync(join(tableDir, entry), "utf8");
|
|
21
25
|
parsedByFile.set(entry, parseTableMarkdown(content, join(tableDir, entry)));
|
|
22
26
|
}
|
|
23
27
|
}
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
const
|
|
28
|
+
// Column escalations filed in a file other than the owning table's (the loader's
|
|
29
|
+
// `misplaced_column_id` entries), keyed by owning table id.
|
|
30
|
+
const columnOwner = new Map(physical.tables.flatMap((t) => t.columns.map((c) => [c.id, t.id])));
|
|
31
|
+
const escalatedByOtherFiles = new Map();
|
|
32
|
+
for (const parsed of parsedByFile.values()) {
|
|
33
|
+
for (const col of parsed.frontmatter.columns ?? []) {
|
|
34
|
+
const owner = columnOwner.get(col.id);
|
|
35
|
+
if (col.sensitive !== true || owner === undefined || owner === parsed.frontmatter.id)
|
|
36
|
+
continue;
|
|
37
|
+
const set = escalatedByOtherFiles.get(owner) ?? new Set();
|
|
38
|
+
set.add(col.id);
|
|
39
|
+
escalatedByOtherFiles.set(owner, set);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Pair physical tables with their .md (if any), matched by front-matter id —
|
|
43
|
+
// existing files keep their filename whatever it is. Physical tables without
|
|
44
|
+
// a .md get a safe, collision-free default filename.
|
|
45
|
+
const matchedByTableId = new Map();
|
|
46
|
+
for (const physTable of physical.tables) {
|
|
27
47
|
const matched = [...parsedByFile.entries()].find(([, p]) => p.frontmatter.id === physTable.id);
|
|
48
|
+
if (matched)
|
|
49
|
+
matchedByTableId.set(physTable.id, matched);
|
|
50
|
+
}
|
|
51
|
+
const defaultFilenames = assignDefaultTableFilenames(physical.tables.filter((t) => !matchedByTableId.has(t.id)), physical.tables, entriesOnDisk);
|
|
52
|
+
const tables = physical.tables.map((physTable) => {
|
|
53
|
+
const matched = matchedByTableId.get(physTable.id);
|
|
54
|
+
const escalated = [...(escalatedByOtherFiles.get(physTable.id) ?? [])];
|
|
28
55
|
if (matched) {
|
|
29
|
-
return { physical: physTable, filename: matched[0], parsed: matched[1] };
|
|
56
|
+
return { physical: physTable, filename: matched[0], parsed: matched[1], escalatedByOtherFiles: escalated };
|
|
30
57
|
}
|
|
31
|
-
return {
|
|
58
|
+
return {
|
|
59
|
+
physical: physTable,
|
|
60
|
+
filename: defaultFilenames.get(physTable.id),
|
|
61
|
+
parsed: undefined,
|
|
62
|
+
escalatedByOtherFiles: escalated,
|
|
63
|
+
};
|
|
32
64
|
});
|
|
33
65
|
let concepts;
|
|
34
66
|
const conceptsPath = join(schemaDir, "concepts.md");
|
|
@@ -52,10 +84,10 @@ export function saveTable(workspace, tableId, frontmatter, body) {
|
|
|
52
84
|
if (!wt)
|
|
53
85
|
throw new Error(`No such table: ${tableId}`);
|
|
54
86
|
const tablesDir = join(workspace.schemaDir, "tables");
|
|
87
|
+
const filePath = resolveTableFilePath(tablesDir, wt.filename);
|
|
55
88
|
mkdirSync(tablesDir, { recursive: true });
|
|
56
|
-
const filePath = join(tablesDir, wt.filename);
|
|
57
89
|
const md = writeTableMarkdown(frontmatter, body);
|
|
58
|
-
|
|
90
|
+
saveSchemaFile(workspace.schemaDir, `tables/${wt.filename}`, md);
|
|
59
91
|
// Update in-memory parse so subsequent edits see the saved state.
|
|
60
92
|
const reparsed = parseTableMarkdown(md, filePath);
|
|
61
93
|
wt.parsed = reparsed;
|
|
@@ -68,9 +100,25 @@ export function saveConcepts(workspace, frontmatter, body = workspace.concepts?.
|
|
|
68
100
|
}
|
|
69
101
|
const filePath = join(workspace.schemaDir, "concepts.md");
|
|
70
102
|
const md = writeConceptsMarkdown(frontmatter, body);
|
|
71
|
-
|
|
103
|
+
saveSchemaFile(workspace.schemaDir, "concepts.md", md);
|
|
72
104
|
workspace.concepts = parseConceptsMarkdown(md, filePath);
|
|
73
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Save `tenant-policy.md` to the schema directory. The policy is checked first with
|
|
108
|
+
* the core loader's own rules, against the tables and columns in `schema.json` on disk:
|
|
109
|
+
* a policy that `loadSchema` would reject throws `SchemaParseError` and nothing is
|
|
110
|
+
* written, since every later load of the directory would fail until the file is fixed
|
|
111
|
+
* by hand. The check reads disk, not `workspace.physical`, because a re-introspection
|
|
112
|
+
* can change `schema.json` while a strict policy keeps the workspace from reloading.
|
|
113
|
+
*/
|
|
114
|
+
export function saveTenantPolicy(workspace, frontmatter, body) {
|
|
115
|
+
const filePath = join(workspace.schemaDir, "tenant-policy.md");
|
|
116
|
+
const md = writeTenantPolicyMarkdown(frontmatter, body);
|
|
117
|
+
const schemaJsonPath = join(workspace.schemaDir, "schema.json");
|
|
118
|
+
const { tables } = parsePhysical(readFileSync(schemaJsonPath, "utf8"), schemaJsonPath);
|
|
119
|
+
normalizeTenantPolicy(parseTenantPolicyMarkdown(md, filePath), new Set(tables.map((table) => table.id)), new Set(tables.flatMap((table) => table.columns.map((column) => column.id))));
|
|
120
|
+
saveSchemaFile(workspace.schemaDir, "tenant-policy.md", md);
|
|
121
|
+
}
|
|
74
122
|
export function validateConceptLinks(workspace, concepts) {
|
|
75
123
|
const known = new Set();
|
|
76
124
|
for (const table of workspace.physical.tables) {
|
|
@@ -141,31 +189,142 @@ function parsePhysical(raw, filePath) {
|
|
|
141
189
|
}
|
|
142
190
|
return result.data;
|
|
143
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Bundle a schema directory into the single-file form `askdb bundle` writes, and check that the
|
|
194
|
+
* bundle loads. Core's `readSchemaDirectory()` does the read, so the bundle carries exactly the
|
|
195
|
+
* files `loadSchema()` reads; core's loader then parses the bundle. So a directory the loader
|
|
196
|
+
* refuses throws its `SchemaParseError` here, and a bundle this returns always loads: a wrong-case
|
|
197
|
+
* `Tenant-Policy.md`, an unreadable optional file, front-matter that isn't YAML, a tenant policy
|
|
198
|
+
* that doesn't parse or doesn't fit `schema.json`, or two table files with the same `id` (#796).
|
|
199
|
+
*/
|
|
144
200
|
export function bundleSchemaDirectory(schemaDir) {
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
201
|
+
const bundle = readSchemaDirectory(schemaDir);
|
|
202
|
+
try {
|
|
203
|
+
loadSchemaFromJson(JSON.stringify(bundle));
|
|
148
204
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
205
|
+
catch (bundleError) {
|
|
206
|
+
// The loader names a file in a bundle it's handed `… (in <inline JSON>)`. Loading the
|
|
207
|
+
// directory throws the same error naming the file on disk. If a file changed after the read
|
|
208
|
+
// and the directory now loads, the bundle still doesn't, so its own error is thrown.
|
|
209
|
+
loadSchema(schemaDir);
|
|
210
|
+
throw bundleError;
|
|
211
|
+
}
|
|
212
|
+
return bundle;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Turn a database identifier into a filename-safe slug. Path separators, NUL,
|
|
216
|
+
* control characters, lone UTF-16 surrogates, and characters reserved on Windows
|
|
217
|
+
* become `_`; names that would be hidden files (including `.` / `..`) or Windows
|
|
218
|
+
* device names get a `_` prefix; trailing dots and spaces (which Windows strips)
|
|
219
|
+
* become `_`.
|
|
220
|
+
* Everything else, including non-ASCII letters, is kept so ordinary names
|
|
221
|
+
* stay readable.
|
|
222
|
+
*/
|
|
223
|
+
function toSafeFilenameSlug(identifier) {
|
|
224
|
+
// Node writes a lone UTF-16 surrogate in a path as U+FFFD, so `a\ud800` and
|
|
225
|
+
// `a\ud801` would name the same file.
|
|
226
|
+
let slug = identifier.replace(/\p{Surrogate}/gu, "_");
|
|
227
|
+
slug = slug.replace(/[\u0000-\u001f\u007f/\\<>:"|?*]/g, "_");
|
|
228
|
+
slug = slug.replace(/[. ]+$/, (m) => "_".repeat(m.length));
|
|
229
|
+
if (slug === "")
|
|
230
|
+
return "_";
|
|
231
|
+
if (slug.startsWith("."))
|
|
232
|
+
slug = `_${slug}`;
|
|
233
|
+
if (/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\.|$)/i.test(slug))
|
|
234
|
+
slug = `_${slug}`;
|
|
235
|
+
return slug;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The key under which two names are the same file on a case-insensitive file
|
|
239
|
+
* system. APFS ignores Unicode normalization and compares with full case folding
|
|
240
|
+
* (`straße` = `STRASSE` = `STRAẞE`, NFC `café` = NFD `café`); NTFS compares with a
|
|
241
|
+
* per-character uppercase table and no normalization. NFC removes normalization
|
|
242
|
+
* differences; lowercasing first maps capital sharp s `ẞ` to `ß`, and the uppercase
|
|
243
|
+
* step then expands `ß` to `SS`, so the key agrees with full case folding (ADR 0013
|
|
244
|
+
* records how that was checked). Over-matching only costs a longer filename.
|
|
245
|
+
*/
|
|
246
|
+
function filenameKey(name) {
|
|
247
|
+
return name.normalize("NFC").toLowerCase().toUpperCase().toLowerCase();
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Longest default filename, counted in UTF-8 bytes of its decomposed (NFD) form.
|
|
251
|
+
* That count is at least the length every common file system limits: UTF-8 bytes
|
|
252
|
+
* (ext4, APFS: 255), UTF-16 units (NTFS: 255), and decomposed UTF-16 units (HFS+:
|
|
253
|
+
* 255). The margin under 255 leaves room for editor and atomic-write temp names
|
|
254
|
+
* such as `.orders.md.swp`.
|
|
255
|
+
*/
|
|
256
|
+
const MAX_FILENAME_BYTES = 200;
|
|
257
|
+
const nfdByteLength = (s) => Buffer.byteLength(s.normalize("NFD"), "utf8");
|
|
258
|
+
/**
|
|
259
|
+
* `<stem>.md`, or, when that is longer than `MAX_FILENAME_BYTES`, the longest
|
|
260
|
+
* whole-code-point prefix of `stem` that fits, then `~<8 hex chars of
|
|
261
|
+
* sha256(stem)>.md`. The hash keeps two long names that share a prefix apart.
|
|
262
|
+
*/
|
|
263
|
+
function fitFilename(stem) {
|
|
264
|
+
const filename = `${stem}.md`;
|
|
265
|
+
if (nfdByteLength(filename) <= MAX_FILENAME_BYTES)
|
|
266
|
+
return filename;
|
|
267
|
+
const suffix = `~${createHash("sha256").update(stem).digest("hex").slice(0, 8)}.md`;
|
|
268
|
+
let budget = MAX_FILENAME_BYTES - suffix.length;
|
|
269
|
+
let prefix = "";
|
|
270
|
+
for (const ch of stem) {
|
|
271
|
+
budget -= nfdByteLength(ch);
|
|
272
|
+
if (budget < 0)
|
|
273
|
+
break;
|
|
274
|
+
prefix += ch;
|
|
275
|
+
}
|
|
276
|
+
return `${prefix}${suffix}`;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Pick default `tables/` filenames for tables that do not have a markdown file
|
|
280
|
+
* yet (ADR 0013). Uses `<name>.md` when the bare name is unique across the
|
|
281
|
+
* physical layer, otherwise the schema-qualified `<schema>.<name>.md`, comparing
|
|
282
|
+
* names as a case-insensitive file system would (`filenameKey`). Never reuses a
|
|
283
|
+
* filename already on disk or already assigned; falls back to a numeric suffix
|
|
284
|
+
* if needed. Over-long names are shortened with a hash suffix (`fitFilename`).
|
|
285
|
+
*/
|
|
286
|
+
function assignDefaultTableFilenames(unassigned, allTables, existingFilenames) {
|
|
287
|
+
const bareNameCounts = new Map();
|
|
288
|
+
for (const t of allTables) {
|
|
289
|
+
const key = filenameKey(toSafeFilenameSlug(t.name));
|
|
290
|
+
bareNameCounts.set(key, (bareNameCounts.get(key) ?? 0) + 1);
|
|
291
|
+
}
|
|
292
|
+
const taken = new Set(existingFilenames.map(filenameKey));
|
|
293
|
+
const assigned = new Map();
|
|
294
|
+
for (const t of unassigned) {
|
|
295
|
+
const bare = toSafeFilenameSlug(t.name);
|
|
296
|
+
const qualified = toSafeFilenameSlug(`${t.schema}.${t.name}`);
|
|
297
|
+
const nameCollides = (bareNameCounts.get(filenameKey(bare)) ?? 0) > 1;
|
|
298
|
+
let filename = fitFilename(nameCollides ? qualified : bare);
|
|
299
|
+
if (taken.has(filenameKey(filename)))
|
|
300
|
+
filename = fitFilename(qualified);
|
|
301
|
+
for (let n = 2; taken.has(filenameKey(filename)); n += 1) {
|
|
302
|
+
filename = fitFilename(`${qualified}-${n}`);
|
|
157
303
|
}
|
|
304
|
+
taken.add(filenameKey(filename));
|
|
305
|
+
assigned.set(t.id, filename);
|
|
158
306
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
307
|
+
return assigned;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Resolve a workspace table filename to an absolute path, refusing anything
|
|
311
|
+
* that would land outside `tablesDir` (path separators, `..`, absolute paths,
|
|
312
|
+
* NUL bytes) or is not a `.md` file. `\` separates paths only on Windows; on
|
|
313
|
+
* macOS and Linux it is an ordinary filename character, so a file such as
|
|
314
|
+
* `ord\ers.md` already in `tables/` can still be saved.
|
|
315
|
+
*/
|
|
316
|
+
function resolveTableFilePath(tablesDir, filename) {
|
|
317
|
+
const root = resolve(tablesDir);
|
|
318
|
+
const filePath = resolve(root, filename);
|
|
319
|
+
if (filename.includes("\0") ||
|
|
320
|
+
filename.includes("/") ||
|
|
321
|
+
(process.platform === "win32" && filename.includes("\\")) ||
|
|
322
|
+
basename(filePath) !== filename ||
|
|
323
|
+
dirname(filePath) !== root ||
|
|
324
|
+
!filename.endsWith(".md")) {
|
|
325
|
+
throw new Error(`Refusing to write table markdown outside tables/: ${JSON.stringify(filename)}`);
|
|
326
|
+
}
|
|
327
|
+
return filePath;
|
|
169
328
|
}
|
|
170
329
|
/**
|
|
171
330
|
* Build a default body skeleton for a brand-new table .md file:
|
package/dist/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askdb/enrich",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.21",
|
|
4
4
|
"description": "AskDB enrichment workspace helpers for Schema v2 authoring surfaces.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"askdb",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"schema-v2",
|
|
9
9
|
"enrichment"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://
|
|
11
|
+
"homepage": "https://askdb.tools/reference/packages/",
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/Ygilany/AskDB/issues"
|
|
14
14
|
},
|
|
@@ -20,12 +20,14 @@
|
|
|
20
20
|
"license": "Apache-2.0",
|
|
21
21
|
"author": "Yahya Gilany",
|
|
22
22
|
"type": "module",
|
|
23
|
+
"sideEffects": false,
|
|
23
24
|
"main": "./dist/index.js",
|
|
24
25
|
"types": "./dist/index.d.ts",
|
|
25
26
|
"exports": {
|
|
26
27
|
".": {
|
|
27
28
|
"types": "./dist/index.d.ts",
|
|
28
|
-
"import": "./dist/index.js"
|
|
29
|
+
"import": "./dist/index.js",
|
|
30
|
+
"default": "./dist/index.js"
|
|
29
31
|
}
|
|
30
32
|
},
|
|
31
33
|
"files": [
|
|
@@ -35,18 +37,21 @@
|
|
|
35
37
|
"NOTICE"
|
|
36
38
|
],
|
|
37
39
|
"engines": {
|
|
38
|
-
"node": ">=
|
|
40
|
+
"node": ">=22.23.4"
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
41
|
-
"@askdb/core": "0.
|
|
43
|
+
"@askdb/core": "1.0.0-beta.50"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"ai": "^6.0.0 || ^7.0.51"
|
|
42
47
|
},
|
|
43
48
|
"devDependencies": {
|
|
44
|
-
"typescript": "^
|
|
45
|
-
"vitest": "^
|
|
49
|
+
"typescript": "^6.0.3",
|
|
50
|
+
"vitest": "^5.0.5"
|
|
46
51
|
},
|
|
47
52
|
"scripts": {
|
|
48
53
|
"build": "tsc -p tsconfig.build.json",
|
|
49
|
-
"lint": "tsc -p tsconfig.
|
|
54
|
+
"lint": "tsc -p tsconfig.json --noEmit",
|
|
50
55
|
"test": "vitest run --config ../../vitest.config.ts"
|
|
51
56
|
}
|
|
52
57
|
}
|