@askdb/core 1.0.0-beta.42 → 1.0.0-beta.44

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 (121) hide show
  1. package/README.md +14 -8
  2. package/dist/ask.d.ts +101 -4
  3. package/dist/ask.d.ts.map +1 -1
  4. package/dist/ask.js +243 -25
  5. package/dist/ask.js.map +1 -1
  6. package/dist/enrichment/suggest.d.ts.map +1 -1
  7. package/dist/enrichment/suggest.js +3 -1
  8. package/dist/enrichment/suggest.js.map +1 -1
  9. package/dist/errors.d.ts +41 -5
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +9 -0
  12. package/dist/errors.js.map +1 -1
  13. package/dist/index.d.ts +8 -6
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +5 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/retrieval/synthesize-ddl.d.ts +4 -0
  18. package/dist/retrieval/synthesize-ddl.d.ts.map +1 -1
  19. package/dist/retrieval/synthesize-ddl.js +5 -3
  20. package/dist/retrieval/synthesize-ddl.js.map +1 -1
  21. package/dist/schema/normalize.d.ts +10 -0
  22. package/dist/schema/normalize.d.ts.map +1 -1
  23. package/dist/schema/normalize.js.map +1 -1
  24. package/dist/schema/v2/format.d.ts +7 -0
  25. package/dist/schema/v2/format.d.ts.map +1 -1
  26. package/dist/schema/v2/format.js +20 -7
  27. package/dist/schema/v2/format.js.map +1 -1
  28. package/dist/schema/v2/index.d.ts +3 -1
  29. package/dist/schema/v2/index.d.ts.map +1 -1
  30. package/dist/schema/v2/index.js +1 -0
  31. package/dist/schema/v2/index.js.map +1 -1
  32. package/dist/schema/v2/loader.d.ts +32 -1
  33. package/dist/schema/v2/loader.d.ts.map +1 -1
  34. package/dist/schema/v2/loader.js +173 -49
  35. package/dist/schema/v2/loader.js.map +1 -1
  36. package/dist/schema/v2/mentions.d.ts +31 -0
  37. package/dist/schema/v2/mentions.d.ts.map +1 -0
  38. package/dist/schema/v2/mentions.js +47 -0
  39. package/dist/schema/v2/mentions.js.map +1 -0
  40. package/dist/schema/v2/normalized.d.ts +38 -0
  41. package/dist/schema/v2/normalized.d.ts.map +1 -1
  42. package/dist/schema/v2/parser.d.ts +9 -0
  43. package/dist/schema/v2/parser.d.ts.map +1 -1
  44. package/dist/schema/v2/parser.js +18 -2
  45. package/dist/schema/v2/parser.js.map +1 -1
  46. package/dist/schema/v2/tenant-policy-loader.d.ts.map +1 -1
  47. package/dist/schema/v2/tenant-policy-loader.js +7 -3
  48. package/dist/schema/v2/tenant-policy-loader.js.map +1 -1
  49. package/dist/schema/v2/tenant-policy.d.ts +28 -21
  50. package/dist/schema/v2/tenant-policy.d.ts.map +1 -1
  51. package/dist/schema/v2/tenant-policy.js +67 -11
  52. package/dist/schema/v2/tenant-policy.js.map +1 -1
  53. package/dist/sql/bind.d.ts +17 -15
  54. package/dist/sql/bind.d.ts.map +1 -1
  55. package/dist/sql/bind.js +38 -173
  56. package/dist/sql/bind.js.map +1 -1
  57. package/dist/sql/dialect-spec.d.ts +48 -3
  58. package/dist/sql/dialect-spec.d.ts.map +1 -1
  59. package/dist/sql/dialect-spec.js +89 -3
  60. package/dist/sql/dialect-spec.js.map +1 -1
  61. package/dist/sql/generate.d.ts +14 -0
  62. package/dist/sql/generate.d.ts.map +1 -1
  63. package/dist/sql/generate.js +31 -17
  64. package/dist/sql/generate.js.map +1 -1
  65. package/dist/sql/index.d.ts +2 -1
  66. package/dist/sql/index.d.ts.map +1 -1
  67. package/dist/sql/index.js +2 -1
  68. package/dist/sql/index.js.map +1 -1
  69. package/dist/sql/lexer.d.ts +114 -0
  70. package/dist/sql/lexer.d.ts.map +1 -0
  71. package/dist/sql/lexer.js +397 -0
  72. package/dist/sql/lexer.js.map +1 -0
  73. package/dist/sql/prompt-identifiers.d.ts +20 -0
  74. package/dist/sql/prompt-identifiers.d.ts.map +1 -0
  75. package/dist/sql/prompt-identifiers.js +64 -0
  76. package/dist/sql/prompt-identifiers.js.map +1 -0
  77. package/dist/sql/prompt.d.ts +7 -1
  78. package/dist/sql/prompt.d.ts.map +1 -1
  79. package/dist/sql/prompt.js +22 -2
  80. package/dist/sql/prompt.js.map +1 -1
  81. package/dist/sql/reserved-words.d.ts +15 -0
  82. package/dist/sql/reserved-words.d.ts.map +1 -0
  83. package/dist/sql/reserved-words.js +102 -0
  84. package/dist/sql/reserved-words.js.map +1 -0
  85. package/dist/sql/sensitive-guardrail.d.ts +18 -3
  86. package/dist/sql/sensitive-guardrail.d.ts.map +1 -1
  87. package/dist/sql/sensitive-guardrail.js +446 -157
  88. package/dist/sql/sensitive-guardrail.js.map +1 -1
  89. package/dist/sql/tenant-guardrail.d.ts +70 -8
  90. package/dist/sql/tenant-guardrail.d.ts.map +1 -1
  91. package/dist/sql/tenant-guardrail.js +799 -52
  92. package/dist/sql/tenant-guardrail.js.map +1 -1
  93. package/dist/sql/tenant-hierarchy.d.ts +19 -0
  94. package/dist/sql/tenant-hierarchy.d.ts.map +1 -0
  95. package/dist/sql/tenant-hierarchy.js +53 -0
  96. package/dist/sql/tenant-hierarchy.js.map +1 -0
  97. package/dist/sql/tenant-placeholders.d.ts +47 -19
  98. package/dist/sql/tenant-placeholders.d.ts.map +1 -1
  99. package/dist/sql/tenant-placeholders.js +229 -58
  100. package/dist/sql/tenant-placeholders.js.map +1 -1
  101. package/dist/sql/tenant-prompt.d.ts +4 -0
  102. package/dist/sql/tenant-prompt.d.ts.map +1 -1
  103. package/dist/sql/tenant-prompt.js +79 -11
  104. package/dist/sql/tenant-prompt.js.map +1 -1
  105. package/dist/sql/tenant-scope-validate.d.ts +3 -1
  106. package/dist/sql/tenant-scope-validate.d.ts.map +1 -1
  107. package/dist/sql/tenant-scope-validate.js +5 -2
  108. package/dist/sql/tenant-scope-validate.js.map +1 -1
  109. package/dist/sql/validate.d.ts +34 -4
  110. package/dist/sql/validate.d.ts.map +1 -1
  111. package/dist/sql/validate.js +138 -37
  112. package/dist/sql/validate.js.map +1 -1
  113. package/package.json +11 -7
  114. package/dist/exec/postgres.d.ts +0 -6
  115. package/dist/exec/postgres.d.ts.map +0 -1
  116. package/dist/exec/postgres.js +0 -30
  117. package/dist/exec/postgres.js.map +0 -1
  118. package/dist/modes/post-execute-log.d.ts +0 -9
  119. package/dist/modes/post-execute-log.d.ts.map +0 -1
  120. package/dist/modes/post-execute-log.js +0 -26
  121. package/dist/modes/post-execute-log.js.map +0 -1
package/dist/sql/bind.js CHANGED
@@ -1,189 +1,45 @@
1
1
  import { QueryParameterError, } from "../errors.js";
2
2
  import { BUILT_IN_DIALECTS, } from "./dialect-spec.js";
3
+ import { GENERIC_LEXER, lexSql, lexerProfileFor } from "./lexer.js";
3
4
  import { validateSelectSql } from "./validate.js";
4
5
  /**
5
- * Tokenize SQL into contiguous code vs quoted regions.
6
- * Recognizes single-quoted strings (doubled-quote escapes), double-quoted
7
- * identifiers, PostgreSQL dollar-quoting, MySQL backticks, and SQL Server brackets.
6
+ * Split SQL into contiguous code / quoted / comment regions using the shared lexer
7
+ * (`lexer.ts`). With a dialect, strings, quoted identifiers, and comments follow that
8
+ * engine's rules (Postgres `E'…'` and exact-tag `$tag$…$tag$`, MySQL backslash escapes
9
+ * and `#` comments, SQL Server `[…]`, …). Without one, the generic profile recognizes
10
+ * the union of quoting forms. An unterminated quote or comment runs to the end.
8
11
  */
9
- export function tokenizeSqlSpans(sql) {
12
+ export function tokenizeSqlSpans(sql, dialect) {
13
+ const profile = (dialect && lexerProfileFor(dialect)) ?? GENERIC_LEXER;
10
14
  const spans = [];
11
- let i = 0;
12
15
  let codeStart = 0;
13
16
  const pushCode = (end) => {
14
17
  if (end > codeStart)
15
18
  spans.push({ kind: "code", start: codeStart, end });
16
19
  };
17
- while (i < sql.length) {
18
- const ch = sql[i];
19
- if (ch === "'") {
20
- pushCode(i);
21
- const start = i;
22
- i++;
23
- while (i < sql.length) {
24
- if (sql[i] === "'" && sql[i + 1] === "'") {
25
- i += 2;
26
- continue;
27
- }
28
- if (sql[i] === "'") {
29
- i++;
30
- break;
31
- }
32
- i++;
33
- }
34
- spans.push({ kind: "quoted", start, end: i });
35
- codeStart = i;
36
- continue;
37
- }
38
- if (ch === '"') {
39
- pushCode(i);
40
- const start = i;
41
- i++;
42
- while (i < sql.length && sql[i] !== '"') {
43
- if (sql[i] === "\\")
44
- i++;
45
- i++;
46
- }
47
- if (i < sql.length)
48
- i++;
49
- spans.push({ kind: "quoted", start, end: i });
50
- codeStart = i;
51
- continue;
52
- }
53
- if (ch === "`") {
54
- pushCode(i);
55
- const start = i;
56
- i++;
57
- while (i < sql.length && sql[i] !== "`") {
58
- if (sql[i] === "\\")
59
- i++;
60
- i++;
61
- }
62
- if (i < sql.length)
63
- i++;
64
- spans.push({ kind: "quoted", start, end: i });
65
- codeStart = i;
66
- continue;
67
- }
68
- if (ch === "[") {
69
- pushCode(i);
70
- const start = i;
71
- i++;
72
- while (i < sql.length && sql[i] !== "]") {
73
- i++;
74
- }
75
- if (i < sql.length)
76
- i++;
77
- spans.push({ kind: "quoted", start, end: i });
78
- codeStart = i;
79
- continue;
80
- }
81
- // Dollar-quoting: $tag$ … $tag$. Do not treat $1 as a dollar quote.
82
- if (ch === "$" && /^\$\w*\$/.test(sql.slice(i))) {
83
- const tagMatch = /^\$(\w*)\$/.exec(sql.slice(i));
84
- const opener = tagMatch[0];
85
- const closerAt = sql.indexOf(opener, i + opener.length);
86
- if (closerAt === -1) {
87
- // Unterminated — treat remainder as code (matches prior fail-open).
88
- break;
89
- }
90
- pushCode(i);
91
- const end = closerAt + opener.length;
92
- spans.push({ kind: "quoted", start: i, end });
93
- i = end;
94
- codeStart = i;
20
+ for (const token of lexSql(sql, profile)) {
21
+ const kind = token.kind === "string" || token.kind === "quoted_identifier"
22
+ ? "quoted"
23
+ : token.kind === "comment"
24
+ ? "comment"
25
+ : undefined;
26
+ if (!kind)
95
27
  continue;
96
- }
97
- i++;
28
+ pushCode(token.start);
29
+ spans.push({ kind, start: token.start, end: token.end });
30
+ codeStart = token.end;
98
31
  }
99
32
  pushCode(sql.length);
100
33
  return spans;
101
34
  }
35
+ // `(?<!:)` keeps the type in a `value::type` cast from reading as a `:type` placeholder.
36
+ const PLACEHOLDER_TOKEN_RE = /(?<!:):([a-z][a-z0-9_]*)/g;
102
37
  /**
103
- * Strip quoted regions for keyword / multi-statement checks.
104
- * Preserves historical replacement markers for quotes the old stripper knew
105
- * about (`''`, `""`, `$$`); new quote forms (backticks, brackets) become spaces.
106
- */
107
- export function stripSqlStringLiterals(sql) {
108
- // Walk with the same control flow as the historical stripper for ', ", and $$,
109
- // then additionally skip backticks and brackets — producing equivalent output
110
- // for previously-supported forms.
111
- let out = "";
112
- let i = 0;
113
- while (i < sql.length) {
114
- const ch = sql[i];
115
- if (ch === "'") {
116
- i++;
117
- while (i < sql.length) {
118
- if (sql[i] === "'" && sql[i + 1] === "'") {
119
- i += 2;
120
- continue;
121
- }
122
- if (sql[i] === "'") {
123
- i++;
124
- break;
125
- }
126
- i++;
127
- }
128
- out += "''";
129
- continue;
130
- }
131
- if (ch === '"') {
132
- i++;
133
- while (i < sql.length && sql[i] !== '"') {
134
- if (sql[i] === "\\")
135
- i++;
136
- i++;
137
- }
138
- if (i < sql.length)
139
- i++;
140
- out += '""';
141
- continue;
142
- }
143
- if (ch === "`") {
144
- i++;
145
- while (i < sql.length && sql[i] !== "`") {
146
- if (sql[i] === "\\")
147
- i++;
148
- i++;
149
- }
150
- if (i < sql.length)
151
- i++;
152
- out += "``";
153
- continue;
154
- }
155
- if (ch === "[") {
156
- i++;
157
- while (i < sql.length && sql[i] !== "]") {
158
- i++;
159
- }
160
- if (i < sql.length)
161
- i++;
162
- out += "[]";
163
- continue;
164
- }
165
- if (ch === "$" && /^\$\w*\$/.test(sql.slice(i))) {
166
- // Match historical indexOf-based closer scan for observable parity.
167
- const end = sql.indexOf("$", i + 1);
168
- const tagEnd = sql.indexOf("$", end + 1);
169
- if (tagEnd === -1)
170
- return out + sql.slice(i);
171
- i = tagEnd + 1;
172
- out += "$$";
173
- continue;
174
- }
175
- out += ch;
176
- i++;
177
- }
178
- return out;
179
- }
180
- const PLACEHOLDER_TOKEN_RE = /:([a-z][a-z0-9_]*)/g;
181
- /**
182
- * Find `:name` placeholders only outside quoted regions, in source order.
183
- * A quoted `':name'` is invisible by construction.
38
+ * Find `:name` placeholders only in code regions, in source order.
39
+ * A quoted `':name'` or a commented-out `-- :name` is invisible by construction.
184
40
  */
185
- export function scanPlaceholders(sql) {
186
- const spans = tokenizeSqlSpans(sql);
41
+ export function scanPlaceholders(sql, dialect) {
42
+ const spans = tokenizeSqlSpans(sql, dialect);
187
43
  const out = [];
188
44
  for (const span of spans) {
189
45
  if (span.kind !== "code")
@@ -200,8 +56,14 @@ export function scanPlaceholders(sql) {
200
56
  }
201
57
  return out;
202
58
  }
203
- export function scanTenantPlaceholders(sql) {
204
- return scanPlaceholders(sql).filter((p) => /^tenant_[a-z0-9_]+_ids$/.test(p.name));
59
+ /**
60
+ * `:tenant_<root>_ids` placeholders in code regions. Pass the dialect so strings and
61
+ * comments are recognized the way the target engine reads them (MySQL backslash
62
+ * escapes and `#` comments, Postgres nested block comments, …); without one the
63
+ * generic profile is used.
64
+ */
65
+ export function scanTenantPlaceholders(sql, dialect) {
66
+ return scanPlaceholders(sql, dialect).filter((p) => /^tenant_[a-z0-9_]+_ids$/.test(p.name));
205
67
  }
206
68
  // ---------------------------------------------------------------------------
207
69
  // List-context validation
@@ -397,7 +259,7 @@ export function bindPreparedQuery(prepared, values) {
397
259
  const listBinding = listBindingOf(spec);
398
260
  const style = markerStyleForDialect(prepared.dialect);
399
261
  const namedSql = prepared.namedSql;
400
- const occurrences = scanPlaceholders(namedSql);
262
+ const occurrences = scanPlaceholders(namedSql, spec);
401
263
  const declByName = new Map(prepared.parameters.map((p) => [p.name, p]));
402
264
  for (const p of prepared.parameters) {
403
265
  if (!occurrences.some((o) => o.name === p.name)) {
@@ -539,7 +401,7 @@ export function bindPreparedQuery(prepared, values) {
539
401
  sql = sql.slice(0, edit.start) + edit.literal + sql.slice(edit.end);
540
402
  unboundSql = unboundSql.slice(0, edit.start) + edit.marker + unboundSql.slice(edit.end);
541
403
  }
542
- if (scanPlaceholders(sql).length > 0 || scanPlaceholders(unboundSql).length > 0) {
404
+ if (scanPlaceholders(sql, spec).length > 0 || scanPlaceholders(unboundSql, spec).length > 0) {
543
405
  throw paramError("UNRESOLVED_PLACEHOLDER", "One or more placeholders remain after binding.");
544
406
  }
545
407
  validateSelectSql(spec, sql);
@@ -550,10 +412,13 @@ export function bindPreparedQuery(prepared, values) {
550
412
  * Compare two SQL strings structurally for the parameterize consistency check.
551
413
  */
552
414
  export function sqlStructurallyEqual(a, b) {
415
+ // The trailing `;` goes first and the whitespace before it with the final trim:
416
+ // a pattern starting with `\s*` backtracks quadratically on a long whitespace run.
553
417
  const norm = (s) => s
554
418
  .trim()
555
- .replace(/;\s*$/, "")
419
+ .replace(/;$/, "")
556
420
  .replace(/\s+/g, " ")
421
+ .trim()
557
422
  .toLowerCase();
558
423
  return norm(a) === norm(b);
559
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bind.js","sourceRoot":"","sources":["../../src/sql/bind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bind.js","sourceRoot":"","sources":["../../src/sql/bind.ts"],"names":[],"mappings":"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"}
@@ -6,26 +6,71 @@
6
6
  * Authoring guidance:
7
7
  * - Keep `promptBrief` to one short paragraph; surfaced in the model's user prompt.
8
8
  * - `extraForbiddenKeywords` is additive on top of the dialect-agnostic read-only
9
- * denylist (`insert`, `update`, `delete`, `drop`, …) baked into `validateSelectSql`.
9
+ * denylist (`insert`, `update`, `delete`, `drop`, `into`, …) baked into
10
+ * `validateSelectSql`. Matched against unquoted keyword tokens only.
11
+ * - `blockedFunctions` lists functions with side effects (writes, file/network access,
12
+ * sleeping, session changes) that `validateSelectSql` rejects when called.
10
13
  * - `extraValidate` runs *after* the base validator passes; throw a
11
14
  * `SqlValidationError` to reject dialect-specific shapes.
15
+ * - `id` also selects how SQL is lexed (string escapes, quoting, comment syntax) — see
16
+ * `lexer.ts`. Specs that spread a built-in (`{ ...POSTGRES_DIALECT, … }`) inherit its
17
+ * denylists; a spec that overrides `extraForbiddenKeywords` / `blockedFunctions`
18
+ * replaces them.
19
+ *
20
+ * These lists are defense in depth for model-generated SQL, not a security boundary:
21
+ * execute generated SQL under a read-only database role.
12
22
  */
13
23
  /** Stable identifier for a built-in dialect. Connectors may surface this via `IntrospectionResult.provider`. */
14
24
  export type DialectId = "postgres" | "cockroachdb" | "mysql" | "mariadb" | "sqlite" | "sqlserver";
25
+ /**
26
+ * The namespace connectors give an engine's only namespace when it has no Postgres-style
27
+ * schemas (SQLite, single-database MySQL/MariaDB), so table ids stay stable across engines.
28
+ */
29
+ export declare const SINGLE_NAMESPACE_LABEL = "public";
15
30
  export type DialectSpec = {
16
31
  id: DialectId;
17
32
  displayName: string;
18
33
  /** One short paragraph injected into the NL→SQL user prompt. */
19
34
  promptBrief: string;
20
- /** Identifier quoting style — informational; mainly steers `promptBrief`. */
35
+ /**
36
+ * Identifier quoting style — informational; mainly steers `promptBrief`. The prompt's schema block
37
+ * quotes names with `id`'s engine quotes (`promptIdentifierQuoter`); this is used only for an `id`
38
+ * that is no built-in engine family.
39
+ */
21
40
  identifierQuote: '"' | '`';
41
+ /**
42
+ * Words the engine reserves (case-insensitive). The NL→SQL prompt lists a schema, table or column
43
+ * with one of these names quoted, so a model that copies it writes it quoted. The built-in specs
44
+ * set their engine's list; a spec that sets the field replaces it. Whether set or not, the prompt
45
+ * also quotes words `validateSelectSql` rejects unquoted (`copy`), names that aren't plain
46
+ * identifiers, and, on Postgres and CockroachDB, names with capitals.
47
+ */
48
+ reservedWords?: readonly string[];
49
+ /**
50
+ * A namespace name that is not a schema in this engine. Connectors for engines without
51
+ * Postgres-style schemas file the database's tables under {@link SINGLE_NAMESPACE_LABEL}.
52
+ * When it is the schema's only namespace, the NL→SQL prompt lists its tables unqualified
53
+ * and tells the model never to write `<namespace>.<table>`; alongside other namespaces
54
+ * (a MySQL database list that includes a database named `public`) it is a real name and
55
+ * stays qualified. Unset: every table is listed qualified with its schema.
56
+ */
57
+ unqualifiedNamespace?: string;
22
58
  /** Extra keywords to forbid on top of the dialect-agnostic base denylist. */
23
59
  extraForbiddenKeywords?: readonly string[];
60
+ /**
61
+ * Function names `validateSelectSql` rejects when called (`name(`, including
62
+ * schema-qualified and quoted spellings). Case-insensitive.
63
+ */
64
+ blockedFunctions?: readonly string[];
24
65
  /** Optional engine-specific post-validator. Receives SQL already passing the base shape checks. */
25
66
  extraValidate?: (sql: string) => void;
26
67
  /** How list-valued placeholders bind in `unboundSql`. Default "expand" when absent. */
27
68
  listBinding?: "array" | "expand";
28
- /** Whether backslash is an escape character inside string literals. Default false. */
69
+ /**
70
+ * Whether backslash is an escape character inside string literals. Default false for
71
+ * escaping bound values; the validator's lexer treats an unset value on a MySQL-family
72
+ * spec as the server default (escapes on).
73
+ */
29
74
  backslashEscapes?: boolean;
30
75
  };
31
76
  /** PostgreSQL — the original AskDB target. */
@@ -1 +1 @@
1
- {"version":3,"file":"dialect-spec.d.ts","sourceRoot":"","sources":["../../src/sql/dialect-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gHAAgH;AAChH,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,aAAa,GACb,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,eAAe,EAAE,GAAG,GAAG,GAAG,CAAC;IAC3B,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,mGAAmG;IACnG,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,EAAE,WAU9B,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,WAIjC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,WAY3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,WAgB5B,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,WAgB/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOqB,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,EAAE,SAAS,gBAAgB,EAE7B,CAAC;AAEjC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAQhE"}
1
+ {"version":3,"file":"dialect-spec.d.ts","sourceRoot":"","sources":["../../src/sql/dialect-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,gHAAgH;AAChH,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,aAAa,GACb,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,EAAE,GAAG,GAAG,GAAG,CAAC;IAC3B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mGAAmG;IACnG,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AA8CF,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,EAAE,WAY9B,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,WAKjC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,WAuB3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,WAoB5B,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,WAyB/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOqB,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,EAAE,SAAS,gBAAgB,EAE7B,CAAC;AAEjC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAQhE"}
@@ -6,10 +6,69 @@
6
6
  * Authoring guidance:
7
7
  * - Keep `promptBrief` to one short paragraph; surfaced in the model's user prompt.
8
8
  * - `extraForbiddenKeywords` is additive on top of the dialect-agnostic read-only
9
- * denylist (`insert`, `update`, `delete`, `drop`, …) baked into `validateSelectSql`.
9
+ * denylist (`insert`, `update`, `delete`, `drop`, `into`, …) baked into
10
+ * `validateSelectSql`. Matched against unquoted keyword tokens only.
11
+ * - `blockedFunctions` lists functions with side effects (writes, file/network access,
12
+ * sleeping, session changes) that `validateSelectSql` rejects when called.
10
13
  * - `extraValidate` runs *after* the base validator passes; throw a
11
14
  * `SqlValidationError` to reject dialect-specific shapes.
15
+ * - `id` also selects how SQL is lexed (string escapes, quoting, comment syntax) — see
16
+ * `lexer.ts`. Specs that spread a built-in (`{ ...POSTGRES_DIALECT, … }`) inherit its
17
+ * denylists; a spec that overrides `extraForbiddenKeywords` / `blockedFunctions`
18
+ * replaces them.
19
+ *
20
+ * These lists are defense in depth for model-generated SQL, not a security boundary:
21
+ * execute generated SQL under a read-only database role.
22
+ */
23
+ import { COCKROACHDB_EXTRA_RESERVED_WORDS, MYSQL_RESERVED_WORDS, POSTGRES_RESERVED_WORDS, SQLITE_KEYWORDS, SQLSERVER_RESERVED_WORDS, } from "./reserved-words.js";
24
+ /**
25
+ * The namespace connectors give an engine's only namespace when it has no Postgres-style
26
+ * schemas (SQLite, single-database MySQL/MariaDB), so table ids stay stable across engines.
27
+ */
28
+ export const SINGLE_NAMESPACE_LABEL = "public";
29
+ /**
30
+ * Postgres functions with side effects or host/file/network access. Superuser-only
31
+ * functions are listed too: the validator does not know the executing role.
12
32
  */
33
+ const POSTGRES_BLOCKED_FUNCTIONS = [
34
+ // session / server configuration and process control
35
+ "set_config", "pg_reload_conf", "pg_rotate_logfile", "pg_terminate_backend",
36
+ "pg_cancel_backend", "pg_log_backend_memory_contexts", "pg_promote",
37
+ "pg_switch_wal", "pg_create_restore_point", "pg_start_backup", "pg_stop_backup",
38
+ "pg_backup_start", "pg_backup_stop", "pg_import_system_collations",
39
+ // sleeping
40
+ "pg_sleep", "pg_sleep_for", "pg_sleep_until",
41
+ // server file system
42
+ "pg_read_file", "pg_read_binary_file", "pg_ls_dir", "pg_stat_file", "pg_ls_logdir",
43
+ "pg_ls_waldir", "pg_ls_tmpdir", "pg_ls_archive_statusdir", "pg_ls_logicalsnapdir",
44
+ "pg_ls_logicalmapdir", "pg_ls_replslotdir", "pg_file_write", "pg_file_rename",
45
+ "pg_file_unlink", "pg_file_sync",
46
+ // large objects (lo_import / lo_export touch the server file system)
47
+ "lo_import", "lo_export", "lo_unlink", "lo_create", "lo_creat", "lo_from_bytea",
48
+ "lo_put", "lo_open", "lo_write", "lowrite", "lo_truncate", "lo_truncate64",
49
+ // dblink runs SQL on another (or the same) server
50
+ "dblink", "dblink_exec", "dblink_connect", "dblink_connect_u", "dblink_open",
51
+ "dblink_send_query", "dblink_fetch", "dblink_get_result",
52
+ // replication slots, messages, notifications
53
+ "pg_create_physical_replication_slot", "pg_create_logical_replication_slot",
54
+ "pg_drop_replication_slot", "pg_copy_physical_replication_slot",
55
+ "pg_copy_logical_replication_slot", "pg_replication_slot_advance",
56
+ "pg_logical_emit_message", "pg_notify",
57
+ // advisory locks
58
+ "pg_advisory_lock", "pg_advisory_lock_shared", "pg_advisory_xact_lock",
59
+ "pg_advisory_xact_lock_shared", "pg_try_advisory_lock", "pg_try_advisory_lock_shared",
60
+ "pg_try_advisory_xact_lock", "pg_try_advisory_xact_lock_shared", "pg_advisory_unlock",
61
+ "pg_advisory_unlock_shared", "pg_advisory_unlock_all",
62
+ // statistics resets
63
+ "pg_stat_reset", "pg_stat_reset_shared", "pg_stat_reset_single_table_counters",
64
+ "pg_stat_reset_single_function_counters", "pg_stat_reset_slru",
65
+ "pg_stat_reset_replication_slot",
66
+ // sequences
67
+ "nextval", "setval",
68
+ // functions that execute a query passed as a string
69
+ "query_to_xml", "query_to_xmlschema", "query_to_xml_and_xmlschema", "cursor_to_xml",
70
+ "ts_stat",
71
+ ];
13
72
  /** PostgreSQL — the original AskDB target. */
14
73
  export const POSTGRES_DIALECT = {
15
74
  id: "postgres",
@@ -18,6 +77,8 @@ export const POSTGRES_DIALECT = {
18
77
  "Quote identifiers with double quotes when they collide with keywords or contain mixed case. " +
19
78
  'Cast with `value::type`. Use NOW(), CURRENT_DATE, date_trunc(). Concatenate with `||`.',
20
79
  identifierQuote: '"',
80
+ reservedWords: POSTGRES_RESERVED_WORDS,
81
+ blockedFunctions: POSTGRES_BLOCKED_FUNCTIONS,
21
82
  listBinding: "array",
22
83
  backslashEscapes: false,
23
84
  };
@@ -26,6 +87,7 @@ export const COCKROACHDB_DIALECT = {
26
87
  ...POSTGRES_DIALECT,
27
88
  id: "cockroachdb",
28
89
  displayName: "CockroachDB",
90
+ reservedWords: [...POSTGRES_RESERVED_WORDS, ...COCKROACHDB_EXTRA_RESERVED_WORDS],
29
91
  };
30
92
  /** MySQL — backtick identifiers, CONCAT() for concat, no ILIKE. */
31
93
  export const MYSQL_DIALECT = {
@@ -37,6 +99,17 @@ export const MYSQL_DIALECT = {
37
99
  "Concatenate with `CONCAT(a, b)` — `||` is logical OR in MySQL, not string concat. " +
38
100
  "Limit rows with `LIMIT n` (or `LIMIT offset, n`).",
39
101
  identifierQuote: "`",
102
+ // The connection's database; a listed database keeps its own name and stays qualified.
103
+ unqualifiedNamespace: SINGLE_NAMESPACE_LABEL,
104
+ // INTO OUTFILE / DUMPFILE are also covered by the base `into` keyword.
105
+ extraForbiddenKeywords: ["outfile", "dumpfile"],
106
+ // MySQL 8.4 and MariaDB's reserved words together; MariaDB spreads this spec.
107
+ reservedWords: MYSQL_RESERVED_WORDS,
108
+ blockedFunctions: [
109
+ "load_file", "sleep", "benchmark", "get_lock", "release_lock", "release_all_locks",
110
+ "master_pos_wait", "source_pos_wait", "wait_for_executed_gtid_set",
111
+ "wait_until_sql_thread_after_gtids", "sys_exec", "sys_eval",
112
+ ],
40
113
  listBinding: "expand",
41
114
  backslashEscapes: true,
42
115
  };
@@ -60,10 +133,14 @@ export const SQLITE_DIALECT = {
60
133
  "Concatenate with `||`. Limit rows with `LIMIT n` (optionally `LIMIT n OFFSET m`). " +
61
134
  "SQLite uses dynamic typing — keep CAST conservative and prefer text/integer/real over engine-specific types.",
62
135
  identifierQuote: '"',
136
+ unqualifiedNamespace: SINGLE_NAMESPACE_LABEL,
63
137
  // ATTACH/DETACH bring other DBs into scope; PRAGMA is configuration; REINDEX
64
138
  // is maintenance. None belong in a generated read-only SELECT. (`vacuum` is
65
139
  // already in the dialect-agnostic base denylist.)
66
140
  extraForbiddenKeywords: ["attach", "detach", "pragma", "reindex"],
141
+ // load_extension loads native code; readfile/writefile/edit are CLI-shell extensions.
142
+ reservedWords: SQLITE_KEYWORDS,
143
+ blockedFunctions: ["load_extension", "readfile", "writefile", "edit", "fts3_tokenizer"],
67
144
  listBinding: "expand",
68
145
  backslashEscapes: false,
69
146
  };
@@ -79,8 +156,17 @@ export const SQLSERVER_DIALECT = {
79
156
  "Limit rows with `SELECT TOP (n) …` or `ORDER BY … OFFSET m ROWS FETCH NEXT n ROWS ONLY` — there is no LIMIT keyword.",
80
157
  identifierQuote: '"',
81
158
  // T-SQL keywords that shouldn't appear in read-only analytics SQL. (`call`
82
- // is already in the base denylist; T-SQL uses EXEC / EXECUTE for procs.)
83
- extraForbiddenKeywords: ["exec", "execute", "merge", "openrowset", "openquery"],
159
+ // is already in the base denylist; T-SQL uses EXEC / EXECUTE for procs, which also
160
+ // covers `EXEC sp_…` / `EXEC xp_…`.) T-SQL runs a batch without semicolons —
161
+ // `SELECT 1 SHUTDOWN` is two statements — so statement-level verbs are listed here
162
+ // even though they cannot appear inside a SELECT.
163
+ extraForbiddenKeywords: [
164
+ "exec", "execute", "merge", "openrowset", "openquery", "opendatasource",
165
+ "shutdown", "kill", "backup", "restore", "dbcc", "reconfigure", "deny", "waitfor",
166
+ "bulk", "use", "set", "revert", "setuser", "checkpoint", "commit", "rollback",
167
+ "writetext", "updatetext", "disable", "enable", "receive", "send", "xp_cmdshell",
168
+ ],
169
+ reservedWords: SQLSERVER_RESERVED_WORDS,
84
170
  listBinding: "expand",
85
171
  backslashEscapes: false,
86
172
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dialect-spec.js","sourceRoot":"","sources":["../../src/sql/dialect-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialect-spec.js","sourceRoot":"","sources":["../../src/sql/dialect-spec.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export type GenerateSqlDeps = {
37
37
  * are unaffected.
38
38
  */
39
39
  providerOptions?: Record<string, unknown>;
40
+ /** Forwarded to the `generateText` call; an aborted call rejects with `SqlGenerationError`. */
41
+ abortSignal?: AbortSignal;
40
42
  /**
41
43
  * When true, ask the model for unbound SQL + parameter manifest and return
42
44
  * them as optional extras when valid. Forwarded from ask(); default decided there.
@@ -63,6 +65,18 @@ export type GenerateSelectSqlResult = {
63
65
  * Dialect-parameterized NL→SQL generator. Validates inputs, builds the user/system
64
66
  * prompt with the dialect's syntax brief, calls the model, extracts the fenced SQL,
65
67
  * and runs the shared read-only validator (plus any dialect-specific `extraValidate`).
68
+ *
69
+ * When `deps.tenantPolicy` and `deps.tenantScope` are supplied, the tenant guardrail
70
+ * runs on the returned `sql` (and on `unboundNamedSql` when that is returned too);
71
+ * `strict` policies throw `TenantGuardrailError`. Tenant placeholders are left in
72
+ * place — `ask()` substitutes them and re-checks the final SQL.
66
73
  */
67
74
  export declare function generateSelectSql(dialect: DialectSpec, question: string, schema: AnyNormalizedSchema, model: AskDbLanguageModel, deps?: GenerateSqlDeps): Promise<GenerateSelectSqlResult>;
75
+ /**
76
+ * Internal entry used by `ask()`: identical to {@link generateSelectSql} but skips the
77
+ * tenant guardrail, because `ask()` runs it once on the final SQL — after tenant
78
+ * placeholder substitution and the unbound/bound consistency check. Not exported
79
+ * from the package index.
80
+ */
81
+ export declare function generateSelectSqlWithoutTenantGuardrail(dialect: DialectSpec, question: string, schema: AnyNormalizedSchema, model: AskDbLanguageModel, deps?: GenerateSqlDeps): Promise<GenerateSelectSqlResult>;
68
82
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qGAAqG;IACrG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,kEAAkE;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,2GAA2G;AAC3G,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iGAAiG;IACjG,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACrG,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAsIlC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qGAAqG;IACrG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,kEAAkE;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,+FAA+F;IAC/F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,2GAA2G;AAC3G,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iGAAiG;IACjG,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACrG,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAElC;AAED;;;;;GAKG;AACH,wBAAsB,uCAAuC,CAC3D,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAElC"}