@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.
- package/README.md +2 -2
- package/dist/ask.d.ts +20 -16
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +70 -107
- package/dist/ask.js.map +1 -1
- package/dist/errors.d.ts +51 -9
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -1
- package/dist/errors.js.map +1 -1
- package/dist/retrieval/synthesize-ddl.d.ts +2 -0
- package/dist/retrieval/synthesize-ddl.d.ts.map +1 -1
- package/dist/retrieval/synthesize-ddl.js +4 -3
- package/dist/retrieval/synthesize-ddl.js.map +1 -1
- package/dist/schema/v2/loader.js +21 -0
- package/dist/schema/v2/loader.js.map +1 -1
- package/dist/schema/v2/tracked.d.ts +8 -0
- package/dist/schema/v2/tracked.d.ts.map +1 -0
- package/dist/schema/v2/tracked.js +9 -0
- package/dist/schema/v2/tracked.js.map +1 -0
- package/dist/sql/bind.d.ts +12 -1
- package/dist/sql/bind.d.ts.map +1 -1
- package/dist/sql/bind.js +30 -0
- package/dist/sql/bind.js.map +1 -1
- package/dist/sql/checked-statement.d.ts +83 -0
- package/dist/sql/checked-statement.d.ts.map +1 -0
- package/dist/sql/checked-statement.js +204 -0
- package/dist/sql/checked-statement.js.map +1 -0
- package/dist/sql/dialect-spec.d.ts.map +1 -1
- package/dist/sql/dialect-spec.js +3 -0
- package/dist/sql/dialect-spec.js.map +1 -1
- package/dist/sql/failure-reason.d.ts +15 -0
- package/dist/sql/failure-reason.d.ts.map +1 -0
- package/dist/sql/failure-reason.js +78 -0
- package/dist/sql/failure-reason.js.map +1 -0
- package/dist/sql/generate.d.ts +5 -0
- package/dist/sql/generate.d.ts.map +1 -1
- package/dist/sql/generate.js +4 -3
- package/dist/sql/generate.js.map +1 -1
- package/dist/sql/lexer.d.ts +38 -0
- package/dist/sql/lexer.d.ts.map +1 -1
- package/dist/sql/lexer.js +61 -18
- package/dist/sql/lexer.js.map +1 -1
- package/dist/sql/parameter-manifest.d.ts.map +1 -1
- package/dist/sql/parameter-manifest.js +3 -3
- package/dist/sql/parameter-manifest.js.map +1 -1
- package/dist/sql/prompt.d.ts +7 -1
- package/dist/sql/prompt.d.ts.map +1 -1
- package/dist/sql/prompt.js +16 -2
- package/dist/sql/prompt.js.map +1 -1
- package/dist/sql/rebind.d.ts +8 -28
- package/dist/sql/rebind.d.ts.map +1 -1
- package/dist/sql/rebind.js +26 -140
- package/dist/sql/rebind.js.map +1 -1
- package/dist/sql/schema-question-precheck.d.ts +5 -0
- package/dist/sql/schema-question-precheck.d.ts.map +1 -1
- package/dist/sql/schema-question-precheck.js +12 -6
- package/dist/sql/schema-question-precheck.js.map +1 -1
- package/dist/sql/sensitive-guardrail.d.ts.map +1 -1
- package/dist/sql/sensitive-guardrail.js +33 -10
- package/dist/sql/sensitive-guardrail.js.map +1 -1
- package/dist/sql/tenant-guardrail.d.ts.map +1 -1
- package/dist/sql/tenant-guardrail.js +60 -38
- package/dist/sql/tenant-guardrail.js.map +1 -1
- package/dist/sql/tenant-prompt.d.ts +13 -1
- package/dist/sql/tenant-prompt.d.ts.map +1 -1
- package/dist/sql/tenant-prompt.js +76 -19
- package/dist/sql/tenant-prompt.js.map +1 -1
- package/dist/sql/validate.d.ts +7 -5
- package/dist/sql/validate.d.ts.map +1 -1
- package/dist/sql/validate.js +35 -9
- package/dist/sql/validate.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ pnpm add @askdb/ai
|
|
|
25
25
|
|
|
26
26
|
`@askdb/core` itself does not depend on `pg`. The optional `pg` peer lives on `@askdb/postgres` for live Postgres introspection.
|
|
27
27
|
|
|
28
|
-
Runtime AI configuration helpers live in `@askdb/ai`, which has built-in providers for OpenAI, Azure/Foundry, Google, Anthropic, and the Vercel AI Gateway (install the matching `@ai-sdk/*` package). If you use [`@askdb/config`](https://github.com/Ygilany/AskDB/blob/main/packages/config/README.md), call `bootstrapAskDbEnv()`, create an AI registry, then pass **`getAskDbRuntimeConfig().ai.
|
|
28
|
+
Runtime AI configuration helpers live in `@askdb/ai`, which has built-in providers for OpenAI, Azure/Foundry, Google, Anthropic, and the Vercel AI Gateway (install the matching `@ai-sdk/*` package). If you use [`@askdb/config`](https://github.com/Ygilany/AskDB/blob/main/packages/config/README.md), call `bootstrapAskDbEnv()`, create an AI registry, then pass **`getAskDbRuntimeConfig().ai.language`** to `registry.createLanguageModelFromSection(...)`.
|
|
29
29
|
|
|
30
30
|
## Schema format
|
|
31
31
|
|
|
@@ -97,7 +97,7 @@ Key rules:
|
|
|
97
97
|
- If the model's extra blocks are missing or inconsistent, the extras are omitted and `result.sql` is unaffected. No new error reaches a caller who does not call `bindPreparedQuery()`.
|
|
98
98
|
- The model decides what to parameterize, so a mistake changes the *form*, not the query. Constrain form inputs using returned `type` and `description`.
|
|
99
99
|
- `bindPreparedQuery(prepared, values, { schema, tenantScope?, sensitiveGuardrailMode?, acceptWarnings?, dialect? })` re-runs the read-only, tenant and sensitive checks on the stored template under the schema, scope and modes you pass, then binds. Pass `dialect`, the `DialectSpec` you gave `ask()`, when `preparedQuery.dialectRules` is `"host"` or missing: the rebind refuses rather than fall back to the built-in rules. Tenant IDs come from `tenantScope`, never from `values`. Under a policy with `enforcement: warn`, a template that fails the tenant check is refused unless `acceptWarnings` includes `"tenant"`. Authorizing `tenantScope` is the host's job, exactly as for `ask()`. Expand a `subtree` scope with `expandTenantScope()` first.
|
|
100
|
-
- Each SQL form runs with its own array: `unboundSql` with `params` (tenant IDs included), `sql` with `tenantParams`. Never swap or concatenate them. `tenantSqlMode: "sql-only"` inlines the tenant IDs in `sql` instead, and refuses one that isn't printable ASCII or contains a backslash. With a tenant scope and a custom `AskDialect
|
|
100
|
+
- Each SQL form runs with its own array: `unboundSql` with `params` (tenant IDs included), `sql` with `tenantParams`. Never swap or concatenate them. `tenantSqlMode: "sql-only"` inlines the tenant IDs in `sql` instead, and refuses one that isn't printable ASCII or contains a backslash. With a tenant scope and a custom `AskDialect` set `tenantSqlMode` yourself: there's no default.
|
|
101
101
|
- List parameters are arity-stable in `unboundSql` only on PostgreSQL/CockroachDB (`= ANY($n)`); elsewhere a changed list length changes the marker count — rebind through `bindPreparedQuery()` rather than swapping the array.
|
|
102
102
|
- Markers: `$N` (Postgres/CockroachDB), `?` (MySQL/MariaDB/SQLite), `@pN` (SQL Server, 0-based). Map values via `parameters[].markers` for SQL Server.
|
|
103
103
|
|
package/dist/ask.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type AskDbModeV1 } from "./modes/types.js";
|
|
|
6
6
|
import type { Retriever } from "./retrieval/types.js";
|
|
7
7
|
import type { TenantScope } from "./schema/v2/tenant-policy.js";
|
|
8
8
|
import { type BuiltInDialectId, type DialectSpec } from "./sql/dialect-spec.js";
|
|
9
|
-
import {
|
|
9
|
+
import type { TenantSqlOutputMode, TenantBinding } from "./sql/tenant-placeholders.js";
|
|
10
10
|
import { type ResolveTenantDescendants, type TenantIdsByRoot } from "./sql/tenant-scope-expand.js";
|
|
11
11
|
import { type SensitiveGuardrailMode, type SensitiveGuardrailResult } from "./sql/sensitive-guardrail.js";
|
|
12
12
|
import { type GuardrailVerdict } from "./errors.js";
|
|
@@ -22,6 +22,12 @@ export type AskDialectGenerateOptions = {
|
|
|
22
22
|
/** The caller's {@link AskPipelineOptions.abortSignal}. A custom dialect passes it to its model call. */
|
|
23
23
|
abortSignal?: AbortSignal;
|
|
24
24
|
prebuiltDdl?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The ids of the tables `prebuiltDdl` shows (the retrieved ones), so the prompt's tenant block
|
|
27
|
+
* names no other (#771). Set with `prebuiltDdl`; a custom dialect that builds its own prompt
|
|
28
|
+
* can use it the same way.
|
|
29
|
+
*/
|
|
30
|
+
promptTableIds?: readonly string[];
|
|
25
31
|
tenantPolicy?: import("./schema/v2/tenant-policy.js").NormalizedTenantPolicy;
|
|
26
32
|
tenantScope?: TenantScope;
|
|
27
33
|
/**
|
|
@@ -140,22 +146,21 @@ export type AskPipelineOptions = {
|
|
|
140
146
|
*/
|
|
141
147
|
mode?: AskDbModeV1;
|
|
142
148
|
/**
|
|
143
|
-
* Optional retriever from `@askdb/rag` (or any compatible implementation).
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
149
|
+
* Optional retriever from `@askdb/rag` (or any compatible implementation). With a v2 schema
|
|
150
|
+
* it is called with the user question whenever it is supplied, and the retrieved chunks
|
|
151
|
+
* replace the full DDL block in the NL→SQL prompt. The full DDL is inlined instead when the
|
|
152
|
+
* host passes {@link totalSchemaChunkCount} at or below {@link retrievalThresholdChunks}
|
|
153
|
+
* (default 30), which skips the call, or when the retriever returns no chunks.
|
|
148
154
|
*
|
|
149
|
-
* When omitted, the
|
|
150
|
-
* v2 fields exist).
|
|
155
|
+
* When omitted, the full DDL is inlined.
|
|
151
156
|
*/
|
|
152
157
|
retriever?: Retriever;
|
|
153
158
|
/** Top-k forwarded to the retriever. Default 8. */
|
|
154
159
|
retrievalK?: number;
|
|
155
160
|
/**
|
|
156
|
-
* Chunk-count threshold above which retrieval is preferred. When the
|
|
157
|
-
*
|
|
158
|
-
*
|
|
161
|
+
* Chunk-count threshold above which retrieval is preferred. When the host passes
|
|
162
|
+
* {@link totalSchemaChunkCount} at or below this number, the full DDL is inlined even if
|
|
163
|
+
* a retriever is supplied. Without a count the threshold doesn't apply. Default 30.
|
|
159
164
|
*/
|
|
160
165
|
retrievalThresholdChunks?: number;
|
|
161
166
|
/**
|
|
@@ -177,11 +182,10 @@ export type AskPipelineOptions = {
|
|
|
177
182
|
* ({@link DEFAULT_TENANT_SQL_MODE}) replaces them with the dialect's driver
|
|
178
183
|
* markers (`$N` for Postgres/CockroachDB, `?` for MySQL/MariaDB/SQLite, `@pN` for
|
|
179
184
|
* SQL Server): run `sql` with `tenantParams`, or `unboundSql` with `params`, never
|
|
180
|
-
* with the two arrays concatenated. A custom `AskDialect
|
|
181
|
-
*
|
|
182
|
-
* (`
|
|
183
|
-
*
|
|
184
|
-
* a value that is neither `"sql-params"` nor `"sql-only"`.
|
|
185
|
+
* with the two arrays concatenated. A custom `AskDialect` has no default: with a
|
|
186
|
+
* tenant scope it must set this (`"sql-params"` gives `$N` markers), or `ask()` throws
|
|
187
|
+
* `TenantScopeError` (`TENANT_SQL_MODE_REQUIRED`) before the model call, as it does on
|
|
188
|
+
* every dialect for a value that is neither `"sql-params"` nor `"sql-only"`.
|
|
185
189
|
* `"sql-only"` inlines the IDs as escaped literals, for a caller that can't bind
|
|
186
190
|
* parameters (a tool that takes one SQL string); `unboundSql` still binds them, in
|
|
187
191
|
* every mode. It throws `TenantScopeError`
|
package/dist/ask.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
package/dist/ask.js
CHANGED
|
@@ -3,20 +3,20 @@ import { DEFAULT_ASKDB_MODE } from "./modes/types.js";
|
|
|
3
3
|
import { synthesizeRetrievedDdl } from "./retrieval/synthesize-ddl.js";
|
|
4
4
|
import { unqualifiedNamespaceFor } from "./sql/prompt.js";
|
|
5
5
|
import { promptIdentifierQuoter } from "./sql/prompt-identifiers.js";
|
|
6
|
-
import {
|
|
6
|
+
import { getDialectSpec, isBuiltInDialectId, } from "./sql/dialect-spec.js";
|
|
7
7
|
import { generateSelectSqlForAsk } from "./sql/generate.js";
|
|
8
8
|
import { enforceGuardrails } from "./sql/guardrails.js";
|
|
9
|
-
import {
|
|
10
|
-
import { assertTenantSqlMode, DEFAULT_TENANT_SQL_MODE, resolveTenantSql, } from "./sql/tenant-placeholders.js";
|
|
9
|
+
import { assertRenderedSql, renderTemplate, renderTenantSql, tenantRendering, writePreparedQuery } from "./sql/checked-statement.js";
|
|
11
10
|
import { expandTenantScope, } from "./sql/tenant-scope-expand.js";
|
|
12
11
|
import { validateTenantScope } from "./sql/tenant-scope-validate.js";
|
|
13
12
|
import { logTenantPolicyWarningsOnce } from "./sql/tenant-policy-warnings.js";
|
|
14
|
-
import { TenantScopeError, UnknownDialectError, } from "./errors.js";
|
|
15
|
-
import {
|
|
13
|
+
import { QueryParameterError, TenantScopeError, UnknownDialectError, } from "./errors.js";
|
|
14
|
+
import { sqlStructurallyEqual, } from "./sql/bind.js";
|
|
16
15
|
export async function ask(options) {
|
|
17
16
|
const logger = options.logger;
|
|
18
17
|
const mode = options.mode ?? DEFAULT_ASKDB_MODE;
|
|
19
18
|
logger?.info({ event: AskDbLogEvent.PipelineMode, mode }, "pipeline mode");
|
|
19
|
+
assertBuiltInSpecId(options.dialect);
|
|
20
20
|
// Tenant scope validation (fail closed when policy exists but no scope provided)
|
|
21
21
|
const tenantPolicy = isV2Schema(options.schema) ? options.schema.tenantPolicy : undefined;
|
|
22
22
|
if (tenantPolicy) {
|
|
@@ -34,14 +34,15 @@ export async function ask(options) {
|
|
|
34
34
|
const tenantScope = tenantPolicy && options.tenantScope
|
|
35
35
|
? await expandTenantScope(tenantPolicy, options.tenantScope, options.resolveTenantDescendants)
|
|
36
36
|
: options.tenantScope;
|
|
37
|
-
// AskDB picks driver markers only for an engine it knows. For
|
|
37
|
+
// AskDB picks driver markers only for an engine it knows. For a custom AskDialect, the `$N`
|
|
38
38
|
// the default would emit can be a money constant (SQL Server: `agency_id = $1` runs and
|
|
39
39
|
// matches agency 1), so the host chooses the mode, before any retrieval or model call
|
|
40
40
|
// (ADR 0024). A mode that isn't one of the two is refused on every dialect.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
const tenant = tenantPolicy
|
|
42
|
+
? tenantRendering(tenantPolicy, tenantScope, options.tenantSqlMode, "ask()")
|
|
43
|
+
: undefined;
|
|
44
|
+
if (tenantPolicy && options.tenantSqlMode == null && isCustomAskDialect(options.dialect)) {
|
|
45
|
+
throw new TenantScopeError("A custom AskDialect needs an explicit " +
|
|
45
46
|
"tenantSqlMode with a tenant scope: AskDB can't tell which parameter markers its driver takes. " +
|
|
46
47
|
"Set tenantSqlMode: 'sql-params' if the driver binds $1, $2, … (not SQL Server, which reads $1 as a " +
|
|
47
48
|
"money constant), or 'sql-only' to inline the IDs as escaped literals.", "TENANT_SQL_MODE_REQUIRED");
|
|
@@ -50,7 +51,7 @@ export async function ask(options) {
|
|
|
50
51
|
const omitSensitive = options.omitSensitiveIdentifiersFromNlToSqlPrompt ?? false;
|
|
51
52
|
const parameterize = options.parameterize !== false; // default true
|
|
52
53
|
const dialectSpec = resolveDialectSpec(options.dialect);
|
|
53
|
-
const
|
|
54
|
+
const retrieved = await maybeRetrieveDdl({
|
|
54
55
|
options,
|
|
55
56
|
logger,
|
|
56
57
|
omitSensitive,
|
|
@@ -65,7 +66,8 @@ export async function ask(options) {
|
|
|
65
66
|
generateText: options.deps?.generateText,
|
|
66
67
|
providerOptions: options.deps?.providerOptions,
|
|
67
68
|
abortSignal: options.abortSignal,
|
|
68
|
-
prebuiltDdl,
|
|
69
|
+
prebuiltDdl: retrieved?.ddl,
|
|
70
|
+
promptTableIds: retrieved?.tableIds,
|
|
69
71
|
tenantPolicy,
|
|
70
72
|
tenantScope,
|
|
71
73
|
// Custom AskDialect implementations ignore this; built-in path uses it.
|
|
@@ -76,7 +78,6 @@ export async function ask(options) {
|
|
|
76
78
|
// still in place. Rendering below only swaps placeholders for literals or driver
|
|
77
79
|
// markers, so one check covers every tenantSqlMode, dialect and output form. A deny
|
|
78
80
|
// throws here, after logging pipeline.failed.
|
|
79
|
-
const tenant = tenantPolicy && tenantScope ? { policy: tenantPolicy, scope: tenantScope } : undefined;
|
|
80
81
|
const enforced = enforceGuardrails({
|
|
81
82
|
path: "ask",
|
|
82
83
|
forms: {
|
|
@@ -101,132 +102,94 @@ export async function ask(options) {
|
|
|
101
102
|
result.sensitiveGuardrail = enforced.sensitiveGuardrail;
|
|
102
103
|
if (generated.usage !== undefined)
|
|
103
104
|
result.usage = generated.usage;
|
|
104
|
-
// Reuse artifacts:
|
|
105
|
-
//
|
|
106
|
-
//
|
|
105
|
+
// Reuse artifacts: render the template's two forms (tenant IDs bound into `unboundSql`) and
|
|
106
|
+
// keep them only when its bound form reproduces the model's `sql`. Any failure drops the
|
|
107
|
+
// artifacts only, never `sql`.
|
|
107
108
|
if (parameterize &&
|
|
108
109
|
dialectSpec &&
|
|
109
110
|
generated.unboundNamedSql &&
|
|
110
111
|
generated.parameterManifest &&
|
|
111
112
|
generated.parameterManifest.parameters.length > 0) {
|
|
112
|
-
const prepared =
|
|
113
|
-
version: 1,
|
|
114
|
-
dialect: dialectSpec.id,
|
|
115
|
-
dialectRules: dialectSpec === BUILT_IN_DIALECTS[dialectSpec.id] ? "builtin" : "host",
|
|
116
|
-
namedSql: generated.unboundNamedSql,
|
|
117
|
-
parameters: [
|
|
118
|
-
...generated.parameterManifest.parameters.map((p) => ({
|
|
119
|
-
name: p.name,
|
|
120
|
-
placeholder: `:${p.name}`,
|
|
121
|
-
type: p.type,
|
|
122
|
-
cardinality: p.cardinality,
|
|
123
|
-
description: p.description,
|
|
124
|
-
source: "question",
|
|
125
|
-
})),
|
|
126
|
-
...tenantDecls(generated.unboundNamedSql, dialectSpec),
|
|
127
|
-
],
|
|
128
|
-
};
|
|
113
|
+
const prepared = writePreparedQuery(generated.unboundNamedSql, generated.parameterManifest, dialectSpec);
|
|
129
114
|
const values = {};
|
|
130
115
|
for (const p of generated.parameterManifest.parameters) {
|
|
131
116
|
values[p.name] = p.value;
|
|
132
117
|
}
|
|
133
118
|
try {
|
|
134
|
-
const
|
|
135
|
-
if (!sqlStructurallyEqual(
|
|
136
|
-
logger
|
|
137
|
-
event: AskDbLogEvent.PipelineParameterized,
|
|
138
|
-
parameterCount: 0,
|
|
139
|
-
listParameterCount: 0,
|
|
140
|
-
reason: "consistency_mismatch",
|
|
141
|
-
}, "parameterize extras dropped");
|
|
119
|
+
const rendered = renderTemplate(prepared, values, dialectSpec, tenant);
|
|
120
|
+
if (!sqlStructurallyEqual(rendered.businessSql, generated.sql)) {
|
|
121
|
+
logParameterizeDropped(logger, "consistency_mismatch");
|
|
142
122
|
}
|
|
143
123
|
else {
|
|
144
124
|
result.preparedQuery = prepared;
|
|
145
|
-
result.parameters =
|
|
146
|
-
result.unboundSql =
|
|
147
|
-
result.params =
|
|
125
|
+
result.parameters = rendered.bindings;
|
|
126
|
+
result.unboundSql = rendered.unboundSql;
|
|
127
|
+
result.params = rendered.params;
|
|
148
128
|
logger?.info({
|
|
149
129
|
event: AskDbLogEvent.PipelineParameterized,
|
|
150
|
-
parameterCount:
|
|
151
|
-
listParameterCount:
|
|
130
|
+
parameterCount: rendered.bindings.length,
|
|
131
|
+
listParameterCount: rendered.bindings.filter((b) => b.cardinality === "many").length,
|
|
152
132
|
}, "parameterize extras attached");
|
|
153
133
|
}
|
|
154
134
|
}
|
|
155
|
-
catch {
|
|
156
|
-
logger
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
listParameterCount: 0,
|
|
160
|
-
reason: "bind_failed",
|
|
161
|
-
}, "parameterize extras dropped");
|
|
135
|
+
catch (error) {
|
|
136
|
+
logParameterizeDropped(logger, error instanceof QueryParameterError && error.reason === "TENANT_PARAM_ALIGNMENT"
|
|
137
|
+
? "tenant_param_alignment"
|
|
138
|
+
: "bind_failed");
|
|
162
139
|
}
|
|
163
140
|
}
|
|
141
|
+
// The model's `sql` carries business values as inlined literals, so its only markers are
|
|
142
|
+
// tenant markers, numbered from the first slot: `sql` runs with `tenantParams` alone. The
|
|
143
|
+
// mode governs `sql` only: `unboundSql` always binds the tenant IDs, as the rebind does.
|
|
164
144
|
if (tenant) {
|
|
165
|
-
const
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
result.sql = resolved.sql;
|
|
172
|
-
if (resolved.bindings.length > 0)
|
|
173
|
-
result.tenantBindings = resolved.bindings;
|
|
174
|
-
if (resolved.mode === "sql-params" && resolved.params.length > 0) {
|
|
175
|
-
result.tenantParams = resolved.params;
|
|
176
|
-
}
|
|
177
|
-
if (result.preparedQuery && result.unboundSql !== undefined && result.params && result.parameters) {
|
|
178
|
-
const rendered = bindTenantIntoUnboundSql({ unboundSql: result.unboundSql, params: result.params, bindings: result.parameters }, {
|
|
179
|
-
namedSql: result.preparedQuery.namedSql,
|
|
180
|
-
tenantPolicy: tenant.policy,
|
|
181
|
-
tenantScope: tenant.scope,
|
|
182
|
-
dialectSpec,
|
|
183
|
-
});
|
|
184
|
-
if (rendered) {
|
|
185
|
-
result.unboundSql = rendered.unboundSql;
|
|
186
|
-
result.params = rendered.params;
|
|
187
|
-
result.parameters = rendered.bindings;
|
|
145
|
+
const rendered = renderTenantSql(result.sql, dialectSpec, tenant);
|
|
146
|
+
// Re-check the rendered `sql`, as bindPreparedQuery() does: rendering a tenant literal
|
|
147
|
+
// must not change how the statement reads (GHSA-wjgj-mf9h-6g68).
|
|
148
|
+
if (dialectSpec) {
|
|
149
|
+
try {
|
|
150
|
+
assertRenderedSql(rendered.sql, dialectSpec);
|
|
188
151
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
event: AskDbLogEvent.PipelineParameterized,
|
|
193
|
-
parameterCount: 0,
|
|
194
|
-
listParameterCount: 0,
|
|
195
|
-
reason: "tenant_param_alignment",
|
|
196
|
-
}, "parameterize extras dropped");
|
|
152
|
+
catch (e) {
|
|
153
|
+
logger?.error({ event: AskDbLogEvent.PipelineFailed, phase: "generate", errMessage: e instanceof Error ? e.message : String(e) }, "nl-to-sql generate failed");
|
|
154
|
+
throw e;
|
|
197
155
|
}
|
|
198
156
|
}
|
|
157
|
+
result.sql = rendered.sql;
|
|
158
|
+
if (rendered.tenantBindings.length > 0)
|
|
159
|
+
result.tenantBindings = rendered.tenantBindings;
|
|
160
|
+
if (rendered.tenantParams)
|
|
161
|
+
result.tenantParams = rendered.tenantParams;
|
|
199
162
|
}
|
|
200
163
|
return result;
|
|
201
164
|
}
|
|
202
|
-
function
|
|
203
|
-
|
|
204
|
-
delete result.params;
|
|
205
|
-
delete result.parameters;
|
|
206
|
-
delete result.preparedQuery;
|
|
207
|
-
}
|
|
208
|
-
/** A declaration per distinct `:tenant_<root>_ids` placeholder in the template. */
|
|
209
|
-
function tenantDecls(namedSql, dialect) {
|
|
210
|
-
const names = new Set(scanTenantPlaceholders(namedSql, dialect).map((p) => p.name));
|
|
211
|
-
return [...names].map((name) => ({
|
|
212
|
-
name,
|
|
213
|
-
placeholder: `:${name}`,
|
|
214
|
-
type: "string",
|
|
215
|
-
cardinality: "many",
|
|
216
|
-
source: "tenant",
|
|
217
|
-
}));
|
|
165
|
+
function logParameterizeDropped(logger, reason) {
|
|
166
|
+
logger?.debug?.({ event: AskDbLogEvent.PipelineParameterized, parameterCount: 0, listParameterCount: 0, reason }, "parameterize extras dropped");
|
|
218
167
|
}
|
|
219
168
|
function isAskDialect(value) {
|
|
220
169
|
return typeof value.generate === "function";
|
|
221
170
|
}
|
|
222
171
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
172
|
+
* A `DialectSpec` must keep a built-in id: core lexes, quotes and binds SQL by `id`, so a spec
|
|
173
|
+
* under another id would be checked under guessed lexers. A variant of an engine spreads its
|
|
174
|
+
* built-in spec and keeps the id; another engine implements `AskDialect` (ADR 0029, #717).
|
|
175
|
+
* Refused before any tenant check, retrieval or model call. An unknown string id is refused
|
|
176
|
+
* later, by {@link resolveDialect}.
|
|
177
|
+
*/
|
|
178
|
+
function assertBuiltInSpecId(dialect) {
|
|
179
|
+
if (typeof dialect === "string" || isAskDialect(dialect) || isBuiltInDialectId(dialect.id))
|
|
180
|
+
return;
|
|
181
|
+
const id = String(dialect.id);
|
|
182
|
+
throw new UnknownDialectError(`A DialectSpec's id must be a built-in dialect id, not '${id}'. For a variant of a built-in engine, ` +
|
|
183
|
+
"spread its spec and keep its id ({ ...MYSQL_DIALECT, displayName, promptBrief }); for another " +
|
|
184
|
+
"engine, implement AskDialect.", id);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Whether `dialect` is a custom `AskDialect`, whose driver markers AskDB can't know. A string id
|
|
188
|
+
* or a `DialectSpec` ({@link assertBuiltInSpecId} holds its id to a built-in one) names an engine
|
|
189
|
+
* AskDB knows; an unknown string id is refused later, by {@link resolveDialect}.
|
|
225
190
|
*/
|
|
226
|
-
function
|
|
227
|
-
|
|
228
|
-
return true;
|
|
229
|
-
return !isAskDialect(dialect) && isBuiltInDialectId(dialect.id);
|
|
191
|
+
function isCustomAskDialect(dialect) {
|
|
192
|
+
return typeof dialect !== "string" && isAskDialect(dialect);
|
|
230
193
|
}
|
|
231
194
|
/** Return the DialectSpec when the input is a built-in id or spec; undefined for custom AskDialect. */
|
|
232
195
|
function resolveDialectSpec(input) {
|
|
@@ -314,7 +277,7 @@ async function maybeRetrieveDdl(args) {
|
|
|
314
277
|
threshold,
|
|
315
278
|
totalChunks: total === Number.POSITIVE_INFINITY ? null : total,
|
|
316
279
|
}, "retriever supplied focused DDL");
|
|
317
|
-
return synth.ddl;
|
|
280
|
+
return { ddl: synth.ddl, tableIds: synth.tableIds };
|
|
318
281
|
}
|
|
319
282
|
function isV2Schema(schema) {
|
|
320
283
|
return "schemaId" in schema;
|
package/dist/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -7,7 +7,10 @@ export declare class SchemaParseError extends AskDbError {
|
|
|
7
7
|
}
|
|
8
8
|
/** Machine-readable ids for CLI and logs (Phase 2 guardrails). */
|
|
9
9
|
export type SqlValidationRuleCode = "SQL_EMPTY" | "SQL_MULTI_STATEMENT" | "SQL_COMMENT" | "SQL_NOT_SELECT_OR_WITH" | "SQL_FORBIDDEN_KEYWORD"
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* A call to a function in the dialect's `blockedFunctions` (e.g. `pg_sleep(`, `LOAD_FILE(`), or, on
|
|
12
|
+
* every dialect, `NEXT VALUE FOR`, which advances a sequence on MariaDB and SQL Server.
|
|
13
|
+
*/
|
|
11
14
|
| "SQL_FORBIDDEN_FUNCTION"
|
|
12
15
|
/** A string, quoted identifier, dollar-quoted string, or block comment never closes. */
|
|
13
16
|
| "SQL_UNTERMINATED"
|
|
@@ -17,6 +20,12 @@ export type SqlValidationRuleCode = "SQL_EMPTY" | "SQL_MULTI_STATEMENT" | "SQL_C
|
|
|
17
20
|
* read code as a string; refused at the boundary (#703).
|
|
18
21
|
*/
|
|
19
22
|
| "SQL_STRING_CONTINUATION"
|
|
23
|
+
/**
|
|
24
|
+
* Postgres family: a `b'…'` byte string (lower-case `b`) that holds a backslash or is continued
|
|
25
|
+
* on a later line. CockroachDB reads it with backslash escapes and the checks don't, so they
|
|
26
|
+
* could read code as a string; refused at the boundary (#730).
|
|
27
|
+
*/
|
|
28
|
+
| "SQL_ESCAPED_BYTE_STRING"
|
|
20
29
|
/**
|
|
21
30
|
* Postgres family: a Unicode-escaped identifier (`U&"set\005fconfig"`). Its escapes can spell
|
|
22
31
|
* a name the other checks look for, such as a denylisted function, so it is refused (#692).
|
|
@@ -45,7 +54,10 @@ export declare class SqlValidationError extends AskDbError {
|
|
|
45
54
|
export declare class SqlGenerationError extends AskDbError {
|
|
46
55
|
constructor(message: string, cause?: unknown);
|
|
47
56
|
}
|
|
48
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* A `dialect` passed to `ask()` that isn't a built-in dialect id: a string, or a `DialectSpec`
|
|
59
|
+
* whose `id` isn't one (#717). `dialectId` is the id it got.
|
|
60
|
+
*/
|
|
49
61
|
export declare class UnknownDialectError extends AskDbError {
|
|
50
62
|
readonly dialectId: string;
|
|
51
63
|
constructor(message: string, dialectId: string);
|
|
@@ -76,10 +88,9 @@ export type TenantScopeRejectionReason = "MISSING_SCOPE" | "UNKNOWN_TENANT_ROOT"
|
|
|
76
88
|
*/
|
|
77
89
|
| "UNESCAPABLE_TENANT_ID"
|
|
78
90
|
/**
|
|
79
|
-
* `ask()` got a tenant scope, no `tenantSqlMode`, and a custom `AskDialect
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* must choose `"sql-params"` or `"sql-only"`.
|
|
91
|
+
* `ask()` got a tenant scope, no `tenantSqlMode`, and a custom `AskDialect`. AskDB can't
|
|
92
|
+
* know which driver markers such a dialect takes, and its `$N` default is a money
|
|
93
|
+
* constant on SQL Server, so the host must choose `"sql-params"` or `"sql-only"`.
|
|
83
94
|
* Also thrown, on every dialect, when `ask()` (with a tenant scope) or
|
|
84
95
|
* `resolveTenantSql()` gets a `tenantSqlMode` that is neither of the two.
|
|
85
96
|
*/
|
|
@@ -99,7 +110,12 @@ export type QueryParameterRejectionReason = "INVALID_VALUE" | "MISSING_VALUE" |
|
|
|
99
110
|
* `bindPreparedQuery()` needs `guardrails.dialect`: the template was made under a host's
|
|
100
111
|
* `DialectSpec` (`dialectRules: "host"`), or stored without `dialectRules`.
|
|
101
112
|
*/
|
|
102
|
-
| "DIALECT_SPEC_REQUIRED"
|
|
113
|
+
| "DIALECT_SPEC_REQUIRED"
|
|
114
|
+
/**
|
|
115
|
+
* A parameter in the stored template declares a `type` or `cardinality` AskDB doesn't support.
|
|
116
|
+
* The template is broken: regenerate it rather than passing another value.
|
|
117
|
+
*/
|
|
118
|
+
| "INVALID_DECLARATION";
|
|
103
119
|
export declare class QueryParameterError extends AskDbError {
|
|
104
120
|
readonly reason: QueryParameterRejectionReason;
|
|
105
121
|
constructor(message: string, reason: QueryParameterRejectionReason);
|
|
@@ -138,7 +154,15 @@ export type TenantGuardrailRuleCode = "MISSING_TENANT_PREDICATE" | "MISSING_TYPE
|
|
|
138
154
|
* whole SQL, with `tableId: ""`, whenever the SQL may be read as Postgres: postgres,
|
|
139
155
|
* cockroachdb, a custom `AskDialect`, or no dialect; not under a `global` scope (#703).
|
|
140
156
|
*/
|
|
141
|
-
| "STRING_CONTINUATION"
|
|
157
|
+
| "STRING_CONTINUATION"
|
|
158
|
+
/**
|
|
159
|
+
* A `b'…'` byte string (lower-case `b`) that holds a backslash or is continued on a later line,
|
|
160
|
+
* which CockroachDB reads with backslash escapes and the tenant check doesn't, so a table or
|
|
161
|
+
* call after it could be hidden. Reported for the whole SQL, with `tableId: ""`, whenever the
|
|
162
|
+
* SQL may be read as Postgres: postgres, cockroachdb, a custom `AskDialect`, or no dialect; not
|
|
163
|
+
* under a `global` scope (#730).
|
|
164
|
+
*/
|
|
165
|
+
| "ESCAPED_BYTE_STRING";
|
|
142
166
|
export type TenantGuardrailWarning = {
|
|
143
167
|
rule: TenantGuardrailRuleCode;
|
|
144
168
|
tableId: string;
|
|
@@ -184,7 +208,25 @@ export type SensitiveScopeIssue =
|
|
|
184
208
|
/** A table source that is not a relation name (table function, `VALUES`, …). */
|
|
185
209
|
| "OPAQUE_TABLE_SOURCE"
|
|
186
210
|
/** A string, quoted identifier, or comment never closes, so the rest of the statement could not be scanned. */
|
|
187
|
-
| "UNTERMINATED_TOKEN"
|
|
211
|
+
| "UNTERMINATED_TOKEN"
|
|
212
|
+
/**
|
|
213
|
+
* A Postgres Unicode-escaped name (`U&"p\0061ssword"`), which Postgres decodes and the check
|
|
214
|
+
* matches as written, so it can't tell which column it names. Raised whenever the SQL may be
|
|
215
|
+
* read as Postgres: postgres, cockroachdb, a custom `AskDialect`, or no dialect (#707, #692).
|
|
216
|
+
*/
|
|
217
|
+
| "UNICODE_ESCAPED_IDENTIFIER"
|
|
218
|
+
/**
|
|
219
|
+
* An `E'…'` string continued on a later line, which Postgres reads with backslash escapes and
|
|
220
|
+
* the check doesn't, so a column after it could be hidden. Raised whenever the SQL may be read
|
|
221
|
+
* as Postgres (#707, #703).
|
|
222
|
+
*/
|
|
223
|
+
| "STRING_CONTINUATION"
|
|
224
|
+
/**
|
|
225
|
+
* A `b'…'` byte string (lower-case `b`) that holds a backslash or is continued on a later line,
|
|
226
|
+
* which CockroachDB reads with backslash escapes and the check doesn't, so a column after it
|
|
227
|
+
* could be hidden. Raised whenever the SQL may be read as Postgres (#730).
|
|
228
|
+
*/
|
|
229
|
+
| "ESCAPED_BYTE_STRING";
|
|
188
230
|
/** Conservative-failure report attached when scope resolution was incomplete. */
|
|
189
231
|
export type SensitiveScopeReport = {
|
|
190
232
|
issues: SensitiveScopeIssue[];
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;aAGjB,KAAK,CAAC,EAAE,OAAO;gBAD/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAED,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAI7C;AAED,kEAAkE;AAClE,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,qBAAqB,GACrB,aAAa,GACb,wBAAwB,GACxB,uBAAuB;AACzB
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -36,7 +36,10 @@ export class SqlGenerationError extends AskDbError {
|
|
|
36
36
|
this.name = "SqlGenerationError";
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* A `dialect` passed to `ask()` that isn't a built-in dialect id: a string, or a `DialectSpec`
|
|
41
|
+
* whose `id` isn't one (#717). `dialectId` is the id it got.
|
|
42
|
+
*/
|
|
40
43
|
export class UnknownDialectError extends AskDbError {
|
|
41
44
|
dialectId;
|
|
42
45
|
constructor(message, dialectId) {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IAFlB,YACE,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IAFlB,YACE,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAwCD,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAU9B;IAEA;IAXlB;;;;OAIG;IACH,OAAO,CAAoB;IAE3B,YACE,OAAe,EACC,IAA2B;IAC3C,8DAA8D;IAC9C,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAuB;QAE3B,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAG/B;IAFlB,YACE,OAAe,EACC,SAAiB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAuCD,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAG5B;IAFlB,YACE,OAAe,EACC,MAAkC;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,WAAM,GAAN,MAAM,CAA4B;QAGlD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAyBD,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAG/B;IAFlB,YACE,OAAe,EACC,MAAqC;QAErD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,WAAM,GAAN,MAAM,CAA+B;QAGrD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAwDD,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAMhC;IALlB,sFAAsF;IACtF,OAAO,CAAoB;IAE3B,YACE,OAAe,EACC,QAAkC;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,aAAQ,GAAR,QAAQ,CAA0B;QAGlD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AA2ED,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IAMnC;IACA;IACA;IAPlB,sFAAsF;IACtF,OAAO,CAAoB;IAE3B,YACE,OAAe,EACC,IAAgC,EAChC,UAAgC,EAChC,eAAsC;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAA4B;QAChC,eAAU,GAAV,UAAU,CAAsB;QAChC,oBAAe,GAAf,eAAe,CAAuB;QAGtD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,8BAA+B,SAAQ,UAAU;IAC5D;QACE,KAAK,CACH,6HAA6H,CAC9H,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -32,6 +32,8 @@ export declare function synthesizeRetrievedDdl(args: {
|
|
|
32
32
|
}): {
|
|
33
33
|
ddl: string;
|
|
34
34
|
tablesEmitted: number;
|
|
35
|
+
/** The ids of the tables `ddl` shows, in schema order: the prompt's tables under retrieval (#771). */
|
|
36
|
+
tableIds: string[];
|
|
35
37
|
chunksUsed: number;
|
|
36
38
|
/** With omission on: schema texts and chunks withheld because they name a sensitive column or are flagged `sensitive`. */
|
|
37
39
|
mentionDroppedCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize-ddl.d.ts","sourceRoot":"","sources":["../../src/retrieval/synthesize-ddl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iFAAiF;IACjF,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,GAAG;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,0HAA0H;IAC1H,mBAAmB,EAAE,MAAM,CAAC;CAC7B,
|
|
1
|
+
{"version":3,"file":"synthesize-ddl.d.ts","sourceRoot":"","sources":["../../src/retrieval/synthesize-ddl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iFAAiF;IACjF,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,GAAG;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,sGAAsG;IACtG,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0HAA0H;IAC1H,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CA8IA"}
|