@askdb/core 1.0.0-beta.48 → 1.0.0-beta.50

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 (72) hide show
  1. package/README.md +2 -2
  2. package/dist/ask.d.ts +20 -16
  3. package/dist/ask.d.ts.map +1 -1
  4. package/dist/ask.js +70 -107
  5. package/dist/ask.js.map +1 -1
  6. package/dist/errors.d.ts +51 -9
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +4 -1
  9. package/dist/errors.js.map +1 -1
  10. package/dist/retrieval/synthesize-ddl.d.ts +2 -0
  11. package/dist/retrieval/synthesize-ddl.d.ts.map +1 -1
  12. package/dist/retrieval/synthesize-ddl.js +4 -3
  13. package/dist/retrieval/synthesize-ddl.js.map +1 -1
  14. package/dist/schema/v2/loader.js +21 -0
  15. package/dist/schema/v2/loader.js.map +1 -1
  16. package/dist/schema/v2/tracked.d.ts +8 -0
  17. package/dist/schema/v2/tracked.d.ts.map +1 -0
  18. package/dist/schema/v2/tracked.js +9 -0
  19. package/dist/schema/v2/tracked.js.map +1 -0
  20. package/dist/sql/bind.d.ts +12 -1
  21. package/dist/sql/bind.d.ts.map +1 -1
  22. package/dist/sql/bind.js +30 -0
  23. package/dist/sql/bind.js.map +1 -1
  24. package/dist/sql/checked-statement.d.ts +83 -0
  25. package/dist/sql/checked-statement.d.ts.map +1 -0
  26. package/dist/sql/checked-statement.js +204 -0
  27. package/dist/sql/checked-statement.js.map +1 -0
  28. package/dist/sql/dialect-spec.d.ts.map +1 -1
  29. package/dist/sql/dialect-spec.js +3 -0
  30. package/dist/sql/dialect-spec.js.map +1 -1
  31. package/dist/sql/failure-reason.d.ts +15 -0
  32. package/dist/sql/failure-reason.d.ts.map +1 -0
  33. package/dist/sql/failure-reason.js +78 -0
  34. package/dist/sql/failure-reason.js.map +1 -0
  35. package/dist/sql/generate.d.ts +5 -0
  36. package/dist/sql/generate.d.ts.map +1 -1
  37. package/dist/sql/generate.js +4 -3
  38. package/dist/sql/generate.js.map +1 -1
  39. package/dist/sql/lexer.d.ts +38 -0
  40. package/dist/sql/lexer.d.ts.map +1 -1
  41. package/dist/sql/lexer.js +61 -18
  42. package/dist/sql/lexer.js.map +1 -1
  43. package/dist/sql/parameter-manifest.d.ts.map +1 -1
  44. package/dist/sql/parameter-manifest.js +3 -3
  45. package/dist/sql/parameter-manifest.js.map +1 -1
  46. package/dist/sql/prompt.d.ts +7 -1
  47. package/dist/sql/prompt.d.ts.map +1 -1
  48. package/dist/sql/prompt.js +16 -2
  49. package/dist/sql/prompt.js.map +1 -1
  50. package/dist/sql/rebind.d.ts +8 -28
  51. package/dist/sql/rebind.d.ts.map +1 -1
  52. package/dist/sql/rebind.js +26 -140
  53. package/dist/sql/rebind.js.map +1 -1
  54. package/dist/sql/schema-question-precheck.d.ts +5 -0
  55. package/dist/sql/schema-question-precheck.d.ts.map +1 -1
  56. package/dist/sql/schema-question-precheck.js +12 -6
  57. package/dist/sql/schema-question-precheck.js.map +1 -1
  58. package/dist/sql/sensitive-guardrail.d.ts.map +1 -1
  59. package/dist/sql/sensitive-guardrail.js +33 -10
  60. package/dist/sql/sensitive-guardrail.js.map +1 -1
  61. package/dist/sql/tenant-guardrail.d.ts.map +1 -1
  62. package/dist/sql/tenant-guardrail.js +60 -38
  63. package/dist/sql/tenant-guardrail.js.map +1 -1
  64. package/dist/sql/tenant-prompt.d.ts +13 -1
  65. package/dist/sql/tenant-prompt.d.ts.map +1 -1
  66. package/dist/sql/tenant-prompt.js +76 -19
  67. package/dist/sql/tenant-prompt.js.map +1 -1
  68. package/dist/sql/validate.d.ts +7 -5
  69. package/dist/sql/validate.d.ts.map +1 -1
  70. package/dist/sql/validate.js +35 -9
  71. package/dist/sql/validate.js.map +1 -1
  72. package/package.json +1 -1
@@ -0,0 +1,204 @@
1
+ import { QueryParameterError } from "../errors.js";
2
+ import { isTenantPlaceholderName, markerStyleForDialect, renderPreparedQuery, scanPlaceholders, scanTenantPlaceholders, } from "./bind.js";
3
+ import { BUILT_IN_DIALECTS, isBuiltInDialectId } from "./dialect-spec.js";
4
+ import { assertTenantSqlMode, DEFAULT_TENANT_SQL_MODE, resolveTenantSql, } from "./tenant-placeholders.js";
5
+ import { validateSelectSql } from "./validate.js";
6
+ /**
7
+ * One renderer for a checked statement (ADR 0010): the template `ask()` stores, and the forms
8
+ * `ask()` and `bindPreparedQuery()` render from a template or a model's SQL. Both callers run
9
+ * their guardrails on the unrendered forms first; rendering here only swaps placeholders for
10
+ * literals or driver markers, and refuses a result that does more. Internal to `@askdb/core`:
11
+ * it sits above the mechanical renderer (`bind.ts`) and tenant substitution, and below
12
+ * `ask.ts` and `rebind.ts`.
13
+ */
14
+ /** The template `ask()` stores (PreparedQuery v1), with `dialectRules` set from the spec it ran under. */
15
+ export function writePreparedQuery(namedSql, manifest, dialect) {
16
+ return {
17
+ version: 1,
18
+ dialect: dialect.id,
19
+ dialectRules: dialect === BUILT_IN_DIALECTS[dialect.id] ? "builtin" : "host",
20
+ namedSql,
21
+ parameters: [
22
+ ...manifest.parameters.map((p) => ({
23
+ name: p.name,
24
+ placeholder: `:${p.name}`,
25
+ type: p.type,
26
+ cardinality: p.cardinality,
27
+ description: p.description,
28
+ source: "question",
29
+ })),
30
+ ...tenantDecls(namedSql, dialect),
31
+ ],
32
+ };
33
+ }
34
+ /** A declaration per distinct `:tenant_<root>_ids` placeholder in the template. */
35
+ function tenantDecls(namedSql, dialect) {
36
+ const names = new Set(scanTenantPlaceholders(namedSql, dialect).map((p) => p.name));
37
+ return [...names].map((name) => ({
38
+ name,
39
+ placeholder: `:${name}`,
40
+ type: "string",
41
+ cardinality: "many",
42
+ source: "tenant",
43
+ }));
44
+ }
45
+ /**
46
+ * The spec a stored template renders under (ADR 0032). A `"builtin"` template uses its built-in
47
+ * spec unless the host passes one. A `"host"` template, or one stored without `dialectRules`,
48
+ * has rules AskDB can't recover, so it needs the host's spec rather than a guess. Throws
49
+ * `QueryParameterError`: `DIALECT_SPEC_REQUIRED` without the spec it needs,
50
+ * `DIALECT_UNSUPPORTED` for a spec whose id isn't the template's dialect.
51
+ */
52
+ export function readPreparedQueryDialect(prepared, dialect) {
53
+ if (dialect === undefined) {
54
+ if (prepared.dialectRules === "builtin")
55
+ return BUILT_IN_DIALECTS[prepared.dialect];
56
+ const fix = `Pass guardrails.dialect: the DialectSpec ask() ran with, or the built-in id '${prepared.dialect}' ` +
57
+ "if it ran with the built-in rules.";
58
+ const rules = prepared.dialectRules;
59
+ throw new QueryParameterError(rules === "host"
60
+ ? "This template was made by ask() under a host's DialectSpec (dialectRules: 'host'), so " +
61
+ `bindPreparedQuery() checks and renders it only under that spec. ${fix} A constant from another ` +
62
+ "copy of @askdb/core counts as a host's spec."
63
+ : rules === undefined || rules === null
64
+ ? "This template has no dialectRules: it was stored before AskDB recorded which dialect rules ask() " +
65
+ `used, so bindPreparedQuery() won't guess. ${fix}`
66
+ : `This template has dialectRules ${JSON.stringify(rules).replace(/"/g, "'")}, which is neither 'builtin' ` +
67
+ `nor 'host', so bindPreparedQuery() won't guess. ${fix}`, "DIALECT_SPEC_REQUIRED");
68
+ }
69
+ const spec = typeof dialect === "string" ? (isBuiltInDialectId(dialect) ? BUILT_IN_DIALECTS[dialect] : undefined) : dialect;
70
+ if (spec?.id !== prepared.dialect) {
71
+ throw new QueryParameterError(`guardrails.dialect must have the template's dialect id '${prepared.dialect}'.`, "DIALECT_UNSUPPORTED");
72
+ }
73
+ return spec;
74
+ }
75
+ /**
76
+ * `tenantSqlMode` defaulted (`DEFAULT_TENANT_SQL_MODE`) and checked once, for `caller`: a mode
77
+ * that is neither `"sql-params"` nor `"sql-only"` throws `TenantScopeError`
78
+ * (`TENANT_SQL_MODE_REQUIRED`), with or without a policy. Returns undefined without a policy or
79
+ * a scope: nothing renders tenant IDs then. The caller validates the scope.
80
+ */
81
+ export function tenantRendering(policy, scope, mode, caller) {
82
+ const resolved = mode ?? DEFAULT_TENANT_SQL_MODE;
83
+ assertTenantSqlMode(resolved, caller);
84
+ return policy && scope ? { policy, scope, mode: resolved } : undefined;
85
+ }
86
+ /**
87
+ * Both forms of a checked template. Binds the business values from `values`, then, with a
88
+ * tenant rendering, the tenant IDs into `unboundSql` as driver markers (`unboundSql` always
89
+ * binds them; `tenant.mode` governs only the bound form, through {@link renderTenantSql}).
90
+ *
91
+ * Then asserts that rendering only swapped placeholders (ADR 0010, decision 0): no
92
+ * placeholder is left in either form, except the tenant placeholders `businessSql` keeps for
93
+ * {@link renderTenantSql}, and both forms pass `validateSelectSql`.
94
+ *
95
+ * Throws on any failure: the renderer's `QueryParameterError` (with its reason), a
96
+ * `TenantScopeError` from tenant substitution, `QueryParameterError` with
97
+ * `UNRESOLVED_PLACEHOLDER` for a leftover placeholder or `TENANT_PARAM_ALIGNMENT` when the
98
+ * tenant markers can't be aligned with the business params, and `SqlValidationError` from
99
+ * the read-only check.
100
+ */
101
+ export function renderTemplate(prepared, values, dialect, tenant) {
102
+ const business = renderPreparedQuery(prepared, values, { skipTenantPlaceholders: true, dialect });
103
+ const unbound = tenant ? bindTenantIntoUnboundSql(business, prepared.namedSql, tenant, dialect) : business;
104
+ if (!unbound) {
105
+ throw new QueryParameterError("The template's tenant markers can't be aligned with its business parameters in unboundSql.", "TENANT_PARAM_ALIGNMENT");
106
+ }
107
+ assertRenderedSql(business.sql, dialect, tenant !== undefined);
108
+ assertRenderedSql(unbound.unboundSql, dialect);
109
+ return { businessSql: business.sql, unboundSql: unbound.unboundSql, params: unbound.params, bindings: unbound.bindings };
110
+ }
111
+ /**
112
+ * Assert a rendered form holds no placeholder (`QueryParameterError`,
113
+ * `UNRESOLVED_PLACEHOLDER`), apart from tenant placeholders when `keepTenantPlaceholders`
114
+ * says a later step renders them, and passes `validateSelectSql` (`SqlValidationError`).
115
+ */
116
+ export function assertRenderedSql(sql, dialect, keepTenantPlaceholders = false) {
117
+ const left = scanPlaceholders(sql, dialect).filter((p) => !(keepTenantPlaceholders && isTenantPlaceholderName(p.name)));
118
+ if (left.length > 0) {
119
+ throw new QueryParameterError("One or more placeholders remain after binding.", "UNRESOLVED_PLACEHOLDER");
120
+ }
121
+ validateSelectSql(dialect, sql);
122
+ }
123
+ /**
124
+ * A statement's tenant placeholders rendered from `tenant`: driver markers numbered from the
125
+ * first slot, with the IDs in `tenantParams` (`"sql-params"`), or escaped literals
126
+ * (`"sql-only"`). `sql`'s business values are already literals, so its only markers are
127
+ * tenant markers: `sql` + `tenantParams` is an executable pair on its own (ADR 0024).
128
+ * `dialect` is undefined for a custom `AskDialect`, which gets `$N` markers. Throws what
129
+ * `resolveTenantSql()` throws (`TenantScopeError`, `SchemaParseError`).
130
+ */
131
+ export function renderTenantSql(sql, dialect, tenant) {
132
+ const resolved = resolveTenantSql(sql, tenant.policy, tenant.scope, tenant.mode, 1, dialect);
133
+ const tenantParams = resolved.mode === "sql-params" && resolved.params.length > 0 ? resolved.params : undefined;
134
+ return { sql: resolved.sql, ...(tenantParams ? { tenantParams } : {}), tenantBindings: resolved.bindings };
135
+ }
136
+ /**
137
+ * Substitute tenant placeholders in a rendered `unboundSql` (business markers bound,
138
+ * `:tenant_*` placeholders still in place) with driver markers, and fold their values into
139
+ * `params`, so `unboundSql` + `params` is a single executable pair.
140
+ *
141
+ * - `$N` / `@pN` dialects: markers are explicitly numbered, so tenant markers continue
142
+ * after the business slots and tenant values are appended.
143
+ * - `?` dialects: markers are positional, so `params` must follow source order. Business
144
+ * and tenant values are interleaved by walking the named template in order, and
145
+ * `bindings[].indices` are remapped to the new positions.
146
+ *
147
+ * Returns undefined when the business binding and the tenant substitution disagree about
148
+ * the statement's shape, rather than misaligned params.
149
+ */
150
+ function bindTenantIntoUnboundSql(bound,
151
+ /** The template, with business and tenant placeholders. */
152
+ namedSql, tenant, dialect) {
153
+ const business = bound.params;
154
+ const unbound = resolveTenantSql(bound.unboundSql, tenant.policy, tenant.scope, "sql-params", business.length + 1, dialect);
155
+ if (unbound.mode !== "sql-params")
156
+ return undefined;
157
+ const tenantValues = unbound.params;
158
+ const style = isBuiltInDialectId(dialect.id) ? markerStyleForDialect(dialect.id) : "dollar";
159
+ if (style !== "question") {
160
+ return { unboundSql: unbound.sql, params: [...business, ...tenantValues], bindings: bound.bindings };
161
+ }
162
+ const idsByPlaceholder = new Map(unbound.bindings.map((b) => [b.placeholder, b.ids]));
163
+ const bindingByName = new Map(bound.bindings.map((b) => [b.name, b]));
164
+ // Same lexer reading as the renderer and the tenant substitution above.
165
+ const occurrences = scanPlaceholders(namedSql, dialect);
166
+ const occurrenceCount = new Map();
167
+ for (const occ of occurrences) {
168
+ occurrenceCount.set(occ.name, (occurrenceCount.get(occ.name) ?? 0) + 1);
169
+ }
170
+ const combined = [];
171
+ const indexMap = new Map();
172
+ const seen = new Map();
173
+ for (const occ of occurrences) {
174
+ const tenantIds = idsByPlaceholder.get(occ.placeholder);
175
+ if (tenantIds) {
176
+ combined.push(...tenantIds);
177
+ continue;
178
+ }
179
+ // The renderer pushes each occurrence's values contiguously, in source order, so
180
+ // occurrence k of a name owns the k-th equal slice of its indices.
181
+ const binding = bindingByName.get(occ.name);
182
+ const total = occurrenceCount.get(occ.name);
183
+ if (!binding || binding.indices.length % total !== 0)
184
+ return undefined;
185
+ const per = binding.indices.length / total;
186
+ const k = seen.get(occ.name) ?? 0;
187
+ seen.set(occ.name, k + 1);
188
+ for (const idx of binding.indices.slice(k * per, (k + 1) * per)) {
189
+ if (idx >= business.length || indexMap.has(idx))
190
+ return undefined;
191
+ indexMap.set(idx, combined.length);
192
+ combined.push(business[idx]);
193
+ }
194
+ }
195
+ if (indexMap.size !== business.length || combined.length !== business.length + tenantValues.length) {
196
+ return undefined;
197
+ }
198
+ const bindings = bound.bindings.map((b) => ({
199
+ ...b,
200
+ indices: b.indices.map((i) => indexMap.get(i)),
201
+ }));
202
+ return { unboundSql: unbound.sql, params: combined, bindings };
203
+ }
204
+ //# sourceMappingURL=checked-statement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checked-statement.js","sourceRoot":"","sources":["../../src/sql/checked-statement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GAMvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAA2C,MAAM,mBAAmB,CAAC;AAEnH,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,GAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;;GAOG;AAEH,0GAA0G;AAC1G,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAA2B,EAAE,OAAoB;IACpG,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,OAAO,CAAC,EAAsB;QACvC,YAAY,EAAE,OAAO,KAAK,iBAAiB,CAAC,OAAO,CAAC,EAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAChG,QAAQ;QACR,UAAU,EAAE;YACV,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;gBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,UAAmB;aAC5B,CAAC,CAAC;YACH,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAoB;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI;QACJ,WAAW,EAAE,IAAI,IAAI,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAuB,EAAE,OAAwC;IACxG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpF,MAAM,GAAG,GACP,gFAAgF,QAAQ,CAAC,OAAO,IAAI;YACpG,oCAAoC,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAuB,CAAC;QAC/C,MAAM,IAAI,mBAAmB,CAC3B,KAAK,KAAK,MAAM;YACd,CAAC,CAAC,wFAAwF;gBACtF,mEAAmE,GAAG,2BAA2B;gBACjG,8CAA8C;YAClD,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBACrC,CAAC,CAAC,mGAAmG;oBACjG,6CAA6C,GAAG,EAAE;gBACtD,CAAC,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,+BAA+B;oBACvG,mDAAmD,GAAG,EAAE,EAChE,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5H,IAAI,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,mBAAmB,CAC3B,2DAA2D,QAAQ,CAAC,OAAO,IAAI,EAC/E,qBAAqB,CACtB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA0C,EAC1C,KAA8B,EAC9B,IAAa,EACb,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,IAAI,uBAAuB,CAAC;IACjD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAuB,EACvB,MAA4E,EAC5E,OAAoB,EACpB,MAAwB;IAExB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3G,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,mBAAmB,CAC3B,4FAA4F,EAC5F,wBAAwB,CACzB,CAAC;IACJ,CAAC;IACD,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAC/D,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC3H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,OAAoB,EAAE,sBAAsB,GAAG,KAAK;IACjG,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAmB,CAAC,gDAAgD,EAAE,wBAAwB,CAAC,CAAC;IAC5G,CAAC;IACD,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,OAAgC,EAChC,MAAuB;IAEvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC7G,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,wBAAwB,CAC/B,KAAgE;AAChE,2DAA2D;AAC3D,QAAgB,EAChB,MAAuB,EACvB,OAAoB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5H,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,MAA0B,CAAC;IAExD,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5F,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvG,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,wEAAwE;IACxE,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,iFAAiF;QACjF,mEAAmE;QACnE,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YAClE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACnG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAA4B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC;QACJ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;KAChD,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
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,WA6B/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,8FAA8F;AAC9F,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,WA0B3B,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,WA6B/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,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAQhE"}
@@ -109,6 +109,9 @@ export const MYSQL_DIALECT = {
109
109
  "load_file", "sleep", "benchmark", "get_lock", "release_lock", "release_all_locks",
110
110
  "master_pos_wait", "source_pos_wait", "wait_for_executed_gtid_set",
111
111
  "wait_until_sql_thread_after_gtids", "sys_exec", "sys_eval",
112
+ // MariaDB sequences advance or set a sequence from a SELECT, outside the transaction's
113
+ // rollback (#825). MySQL has none. LASTVAL() only reads, so it stays allowed.
114
+ "nextval", "setval",
112
115
  ],
113
116
  listBinding: "expand",
114
117
  backslashEscapes: true,
@@ -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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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A thrown value's message for an error report, with the reason added when the message stops
3
+ * before giving one. A refused connection reaches the model call as the AI SDK's
4
+ * `Cannot connect to API: ` (the cause's empty message) over a message-less `AggregateError`,
5
+ * often inside the retry's `Last error: …`, so the text ends at a colon.
6
+ *
7
+ * The reason comes from the errors under it: an `AggregateError`'s errors, a retry error's
8
+ * `lastError`, else `cause`. Each one that gives no reason itself is read as its `code` with
9
+ * the `address` (or `hostname`) and `port` it names, else its `name`. Unlike the `askdb` CLI's
10
+ * `errorMessage()`, it never copies their message text, which can quote a URL with credentials:
11
+ * shown text is built from allowlisted parts, the rule ADR 0011 sets for connection labels.
12
+ * A message that already gives its reason is returned unchanged. It never throws.
13
+ */
14
+ export declare function failureMessage(error: unknown): string;
15
+ //# sourceMappingURL=failure-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-reason.d.ts","sourceRoot":"","sources":["../../src/sql/failure-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQrD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * A thrown value's message for an error report, with the reason added when the message stops
3
+ * before giving one. A refused connection reaches the model call as the AI SDK's
4
+ * `Cannot connect to API: ` (the cause's empty message) over a message-less `AggregateError`,
5
+ * often inside the retry's `Last error: …`, so the text ends at a colon.
6
+ *
7
+ * The reason comes from the errors under it: an `AggregateError`'s errors, a retry error's
8
+ * `lastError`, else `cause`. Each one that gives no reason itself is read as its `code` with
9
+ * the `address` (or `hostname`) and `port` it names, else its `name`. Unlike the `askdb` CLI's
10
+ * `errorMessage()`, it never copies their message text, which can quote a URL with credentials:
11
+ * shown text is built from allowlisted parts, the rule ADR 0011 sets for connection labels.
12
+ * A message that already gives its reason is returned unchanged. It never throws.
13
+ */
14
+ export function failureMessage(error) {
15
+ if (!(error instanceof Error))
16
+ return String(error);
17
+ const message = messageOf(error);
18
+ if (!stopsBeforeReason(message))
19
+ return message;
20
+ const reasons = [...new Set(reasonsUnder(error, new Set([error]), 0))].join("; ");
21
+ const text = message.trimEnd();
22
+ if (!reasons)
23
+ return text || ownReason(error);
24
+ return text ? `${text} ${reasons}` : reasons;
25
+ }
26
+ const MAX_DEPTH = 8;
27
+ const CODE = /^[A-Z][A-Z0-9_]*$/;
28
+ const NAME = /^[A-Za-z_$][\w$]*$/;
29
+ const IPV4 = /^\d{1,3}(?:\.\d{1,3}){3}$/;
30
+ const IPV6 = /^[0-9A-Fa-f:.]*:[0-9A-Fa-f:.]*$/;
31
+ const HOSTNAME = /^[A-Za-z0-9](?:[A-Za-z0-9.-]{0,251}[A-Za-z0-9])?$/;
32
+ /** `error.message` as a string: a host-built error can set it to anything. */
33
+ function messageOf(error) {
34
+ return typeof error.message === "string" ? error.message : String(error.message);
35
+ }
36
+ function stopsBeforeReason(message) {
37
+ const text = message.trimEnd();
38
+ return text === "" || text.endsWith(":");
39
+ }
40
+ /** The reasons found below `error`, which gave none of its own. */
41
+ function reasonsUnder(error, seen, depth) {
42
+ const { lastError, cause } = error;
43
+ const errors = error instanceof AggregateError ? error.errors : undefined;
44
+ const below = Array.isArray(errors) ? errors : lastError !== undefined ? [lastError] : cause !== undefined ? [cause] : [];
45
+ return below.flatMap((child) => reasonsFor(child, seen, depth + 1));
46
+ }
47
+ /** One error's reason: what lies below it when it stops before giving one, else its own parts. */
48
+ function reasonsFor(error, seen, depth) {
49
+ if (!(error instanceof Error) || seen.has(error) || depth > MAX_DEPTH)
50
+ return [];
51
+ seen.add(error);
52
+ if (stopsBeforeReason(messageOf(error))) {
53
+ const below = reasonsUnder(error, seen, depth);
54
+ if (below.length > 0)
55
+ return below;
56
+ }
57
+ return [ownReason(error)];
58
+ }
59
+ /** `ECONNREFUSED 127.0.0.1:11434`, `ECONNREFUSED`, or the error's name: never its message. */
60
+ function ownReason(error) {
61
+ const { code, address, hostname, port, name } = error;
62
+ if (typeof code !== "string" || !CODE.test(code))
63
+ return typeof name === "string" && NAME.test(name) ? name : "Error";
64
+ const host = hostOf(address) ?? hostOf(hostname);
65
+ if (!host)
66
+ return code;
67
+ return typeof port === "number" && Number.isInteger(port) && port > 0 && port < 65536 ? `${code} ${host}:${port}` : `${code} ${host}`;
68
+ }
69
+ function hostOf(value) {
70
+ if (typeof value !== "string")
71
+ return undefined;
72
+ if (IPV4.test(value) || HOSTNAME.test(value))
73
+ return value;
74
+ if (IPV6.test(value))
75
+ return `[${value}]`;
76
+ return undefined;
77
+ }
78
+ //# sourceMappingURL=failure-reason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-reason.js","sourceRoot":"","sources":["../../src/sql/failure-reason.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,11 @@ export type GenerateSqlDeps = {
25
25
  * directly.
26
26
  */
27
27
  prebuiltDdl?: string;
28
+ /**
29
+ * The ids of the tables `prebuiltDdl` shows, so the prompt's tenant block names no other
30
+ * (#771). Set by `ask({ retriever })` with `prebuiltDdl`.
31
+ */
32
+ promptTableIds?: readonly string[];
28
33
  /** Normalized tenant policy from the schema artifact. Forwarded from ask(). */
29
34
  tenantPolicy?: NormalizedTenantPolicy;
30
35
  /** Validated tenant scope from the host. Forwarded from ask(). */
@@ -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;AACzD,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7F,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;AAIjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,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,2FAA2F;IAC3F,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qGAAqG;IACrG,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;;;;;;;;;;;;GAYG;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,CAclC;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,CAEnD"}
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;AACzD,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7F,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;AAKjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,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;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,+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,2FAA2F;IAC3F,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qGAAqG;IACrG,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;;;;;;;;;;;;GAYG;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,CAclC;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,CAEnD"}
@@ -3,6 +3,7 @@ import { SqlGenerationError, SqlValidationError } from "../errors.js";
3
3
  import { AskDbLogEvent } from "../logging/log-events.js";
4
4
  import { extractSqlFromModelText, extractUnboundSqlFromModelText } from "./extract-sql.js";
5
5
  import { crossValidateManifestAgainstSql, parseParameterManifest, } from "./parameter-manifest.js";
6
+ import { failureMessage } from "./failure-reason.js";
6
7
  import { buildNlToSqlSystemPrompt, buildNlToSqlUserPrompt } from "./prompt.js";
7
8
  import { assertNlToSqlInputs, nlToSqlAmbiguityNotes } from "./schema-question-precheck.js";
8
9
  import { enforceGuardrails } from "./guardrails.js";
@@ -69,7 +70,7 @@ async function runGenerateSelectSql(dialect, question, schema, model, deps) {
69
70
  // (`instructions = system` in its prompt standardization). Passing
70
71
  // `instructions` would be silently dropped on AI SDK 6.
71
72
  system: buildNlToSqlSystemPrompt(dialect),
72
- prompt: buildNlToSqlUserPrompt(dialect, question, schema, ambiguityNotes, logger, nlToSqlSchemaOptions, deps.prebuiltDdl, deps.tenantPolicy, deps.tenantScope, parameterize || undefined),
73
+ prompt: buildNlToSqlUserPrompt(dialect, question, schema, ambiguityNotes, logger, nlToSqlSchemaOptions, deps.prebuiltDdl, deps.tenantPolicy, deps.tenantScope, parameterize || undefined, deps.promptTableIds),
73
74
  temperature: 0,
74
75
  // Cast: AskDB's public `providerOptions` type is a plain opaque bag
75
76
  // (`Record<string, unknown>`) so callers don't need AI SDK JSON types.
@@ -93,8 +94,7 @@ async function runGenerateSelectSql(dialect, question, schema, model, deps) {
93
94
  }
94
95
  }
95
96
  catch (e) {
96
- const message = e instanceof Error ? e.message : String(e);
97
- throw new SqlGenerationError(`Model call failed: ${message}`, e);
97
+ throw new SqlGenerationError(`Model call failed: ${failureMessage(e)}`, e);
98
98
  }
99
99
  // The read-only check is a guardrail finding, decided by the caller; here the SQL is
100
100
  // only normalized (trailing `;` removed) when it passes.
@@ -129,6 +129,7 @@ async function runGenerateSelectSql(dialect, question, schema, model, deps) {
129
129
  }
130
130
  }
131
131
  function logGenerateFailed(logger, e) {
132
+ // A failed model call arrives as the SqlGenerationError above, whose message already names the reason.
132
133
  const msg = e instanceof Error ? e.message : String(e);
133
134
  logger?.error({
134
135
  event: AskDbLogEvent.PipelineFailed,
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@
18
18
  * | `[…]` | — | — | ident (`]]`) | ident |
19
19
  * | `#` line comment | — | yes | — | — |
20
20
  * | `--` line comment | yes | only before whitespace | yes | yes |
21
+ * | `\r` ends a line comment | yes | no (`\n` only) | yes | no |
21
22
  * | nested `/* … *\/` | yes | no (`/*! … *\/` runs) | yes | no |
22
23
  * | `0x`, `1E`, `$`/`€` money | — | — | literal | — |
23
24
  * | U+00A0 etc. end a name | — | — | yes | — |
@@ -62,6 +63,11 @@ export type SqlLexerProfile = {
62
63
  * is its own token, as it is to SQL Server.
63
64
  */
64
65
  tsqlLiterals: boolean;
66
+ /**
67
+ * A `--` or `#` comment ends only at `\n` (MySQL, MariaDB, SQLite, CockroachDB). Unset: it ends
68
+ * at `\r` too, as on Postgres and SQL Server.
69
+ */
70
+ lineCommentEndsAtLfOnly?: boolean;
65
71
  };
66
72
  export declare const POSTGRES_LEXER: SqlLexerProfile;
67
73
  export declare const MYSQL_LEXER: SqlLexerProfile;
@@ -141,6 +147,18 @@ export declare function postgresReadingProfiles(dialect?: Pick<DialectSpec, "id"
141
147
  * report its position, not its text, which may hold a value from the question.
142
148
  */
143
149
  export declare function findEscapeStringContinuation(sql: string, tokens: readonly SqlToken[]): SqlToken | undefined;
150
+ /**
151
+ * A CockroachDB byte string, `b'…'` with a lower-case `b`, that holds a backslash or is continued
152
+ * on a later line. CockroachDB reads it with backslash escapes, and keeps them across the
153
+ * continuation. This lexer reads it under the Postgres profile without them, as Postgres reads a
154
+ * bit string, so where `\'` ends one reading's string the other's goes on. AskDB doesn't model the
155
+ * difference. The checks refuse the string at this boundary, where both readings still agree
156
+ * (#730, ADR 0012). What's lost: a byte string with escapes on CockroachDB, which a hex string
157
+ * cast to bytes (`'\x00'::bytea`) can write instead, and a continued lower-case bit string on Postgres, where a backslash in a bit
158
+ * string is an error. `B'…'` is a bit string on both engines and passes. Returns the `b'…'` token;
159
+ * callers report its position, not its text, which may hold a value from the question.
160
+ */
161
+ export declare function findEscapedByteString(sql: string, tokens: readonly SqlToken[]): SqlToken | undefined;
144
162
  /**
145
163
  * A Postgres Unicode-escaped identifier, as `U&"…"` (either case) with no space between the
146
164
  * parts: the form Postgres's scanner reads as one identifier. With a space, `U& "x"` is the
@@ -153,6 +171,26 @@ export declare function findEscapeStringContinuation(sql: string, tokens: readon
153
171
  * and the tenant check both refuse it instead (#692, #704, ADR 0012).
154
172
  */
155
173
  export declare function findUnicodeEscapedIdentifier(tokens: readonly SqlToken[]): string | undefined;
174
+ /** The forms only a Postgres reading can hold, as {@link findPostgresOnlyForms} finds them. */
175
+ export type PostgresOnlyForms = {
176
+ /** The first `U&"…"` name, as written ({@link findUnicodeEscapedIdentifier}). */
177
+ unicodeEscapedIdentifier: string | undefined;
178
+ /** The `E'…'` token of the first continued escape string ({@link findEscapeStringContinuation}). */
179
+ escapeStringContinuation: SqlToken | undefined;
180
+ /** The first `b'…'` byte string CockroachDB reads differently ({@link findEscapedByteString}). */
181
+ escapedByteString: SqlToken | undefined;
182
+ };
183
+ /**
184
+ * The forms only a Postgres reading of `sql` can hold, under each reading
185
+ * {@link postgresReadingProfiles} gives for `dialect`: a `U&"…"` name, an `E'…'` string continued
186
+ * on a later line, and a `b'…'` byte string that CockroachDB reads with backslash escapes. The
187
+ * checks match names as written and don't model the escapes, so the tenant check and the
188
+ * sensitive check refuse all three through this one function (#703, #704, #707, #730, ADR 0012).
189
+ * The byte string is found under `postgres` too, since a host may point the `postgres` dialect at
190
+ * CockroachDB, which is wire-compatible. Each field holds the first match across
191
+ * the readings; all are `undefined` when the SQL can't be read as Postgres.
192
+ */
193
+ export declare function findPostgresOnlyForms(sql: string, dialect?: Pick<DialectSpec, "id" | "backslashEscapes">): PostgresOnlyForms;
156
194
  /** True when any token ran off the end of the input. */
157
195
  export declare function hasUnterminatedToken(tokens: readonly SqlToken[]): boolean;
158
196
  //# sourceMappingURL=lexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/sql/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,iBAAiB,CAAC;IACtB,sEAAsE;IACtE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4FAA4F;IAC5F,WAAW,EAAE,YAAY,GAAG,QAAQ,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yFAAyF;IACzF,kBAAkB,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,aAAa,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,6FAA6F;IAC7F,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gGAAgG;IAChG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,+FAA+F;IAC/F,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAe5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAezB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAe7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAe1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,eAe3B,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAK3D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GACpD,eAAe,GAAG,SAAS,CAmB7B;AAED,MAAM,MAAM,YAAY;AACtB,sCAAsC;AACpC,MAAM,GACN,mBAAmB,GACnB,QAAQ,GACR,QAAQ;AACV,wCAAwC;GACtC,WAAW;AACb,+EAA+E;GAC7E,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAItF;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,EAAE,CAgSxE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GACrD,eAAe,EAAE,CAMnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,GAAG,SAAS,CAY3G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAG,SAAS,CAiB5F;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/sql/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,iBAAiB,CAAC;IACtB,sEAAsE;IACtE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4FAA4F;IAC5F,WAAW,EAAE,YAAY,GAAG,QAAQ,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yFAAyF;IACzF,kBAAkB,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,aAAa,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,6FAA6F;IAC7F,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gGAAgG;IAChG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,+FAA+F;IAC/F,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAe5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAgBzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAe7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAgB1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,eAe3B,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAK3D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GACpD,eAAe,GAAG,SAAS,CAmB7B;AAED,MAAM,MAAM,YAAY;AACtB,sCAAsC;AACpC,MAAM,GACN,mBAAmB,GACnB,QAAQ,GACR,QAAQ;AACV,wCAAwC;GACtC,WAAW;AACb,+EAA+E;GAC7E,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAItF;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,EAAE,CAmSxE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GACrD,eAAe,EAAE,CAMnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,GAAG,SAAS,CAE3G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,GAAG,SAAS,CAIpG;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAG,SAAS,CAiB5F;AAED,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iFAAiF;IACjF,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,oGAAoG;IACpG,wBAAwB,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/C,kGAAkG;IAClG,iBAAiB,EAAE,QAAQ,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GACrD,iBAAiB,CAanB;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAEzE"}