@askdb/core 0.5.0-beta.0 → 0.5.0-beta.4
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/dist/ask.d.ts +22 -3
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +28 -1
- package/dist/ask.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/schema/v2/loader.js +1 -0
- package/dist/schema/v2/loader.js.map +1 -1
- package/dist/schema/v2/normalized.d.ts +6 -0
- package/dist/schema/v2/normalized.d.ts.map +1 -1
- package/dist/schema/v2/physical.d.ts +9 -0
- package/dist/schema/v2/physical.d.ts.map +1 -1
- package/dist/schema/v2/physical.js +7 -0
- package/dist/schema/v2/physical.js.map +1 -1
- package/dist/sql/dialect-spec.d.ts +65 -0
- package/dist/sql/dialect-spec.d.ts.map +1 -0
- package/dist/sql/dialect-spec.js +108 -0
- package/dist/sql/dialect-spec.js.map +1 -0
- package/dist/sql/generate.d.ts +36 -0
- package/dist/sql/generate.d.ts.map +1 -0
- package/dist/sql/generate.js +60 -0
- package/dist/sql/generate.js.map +1 -0
- package/dist/sql/index.d.ts +7 -0
- package/dist/sql/index.d.ts.map +1 -0
- package/dist/sql/index.js +7 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/prompt.d.ts +21 -0
- package/dist/sql/prompt.d.ts.map +1 -0
- package/dist/sql/prompt.js +68 -0
- package/dist/sql/prompt.js.map +1 -0
- package/dist/sql/schema-question-precheck.d.ts +7 -0
- package/dist/sql/schema-question-precheck.d.ts.map +1 -0
- package/dist/sql/schema-question-precheck.js +37 -0
- package/dist/sql/schema-question-precheck.js.map +1 -0
- package/dist/sql/validate.d.ts +16 -0
- package/dist/sql/validate.d.ts.map +1 -0
- package/dist/sql/validate.js +130 -0
- package/dist/sql/validate.js.map +1 -0
- package/package.json +1 -1
package/dist/ask.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { AskDbLogger } from "./logging/askdb-logger.js";
|
|
|
3
3
|
import type { AnyNormalizedSchema } from "./schema/types.js";
|
|
4
4
|
import { type AskDbModeV1 } from "./modes/types.js";
|
|
5
5
|
import type { Retriever } from "./retrieval/types.js";
|
|
6
|
+
import { type BuiltInDialectId, type DialectSpec } from "./sql/dialect-spec.js";
|
|
6
7
|
/** Options forwarded to a dialect's generator. Stable across dialects. */
|
|
7
8
|
export type AskDialectGenerateOptions = {
|
|
8
9
|
logger?: AskDbLogger;
|
|
@@ -16,10 +17,25 @@ export type AskDialectGenerateResult = {
|
|
|
16
17
|
sql: string;
|
|
17
18
|
explain?: unknown;
|
|
18
19
|
};
|
|
19
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Escape-hatch interface for fully custom NL→SQL generators (agentic flows,
|
|
22
|
+
* tool-calling, non-SELECT targets, fine-tuned models with bespoke prompts).
|
|
23
|
+
*
|
|
24
|
+
* 95% of consumers should pass a {@link BuiltInDialectId} (e.g. `"postgres"`) or
|
|
25
|
+
* a {@link DialectSpec} to `ask({ dialect })` and let the centralized pipeline
|
|
26
|
+
* handle prompt assembly + validation. Implement `AskDialect` only when those
|
|
27
|
+
* defaults won't fit.
|
|
28
|
+
*/
|
|
20
29
|
export type AskDialect = {
|
|
21
30
|
generate(question: string, schema: AnyNormalizedSchema, model: LanguageModel, options?: AskDialectGenerateOptions): Promise<AskDialectGenerateResult>;
|
|
22
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Anything `ask()` accepts as a dialect:
|
|
34
|
+
* - A {@link BuiltInDialectId} string (e.g. `"postgres"`) — looked up in the registry.
|
|
35
|
+
* - A {@link DialectSpec} object — descriptive; uses the centralized generator.
|
|
36
|
+
* - An {@link AskDialect} object — full escape hatch.
|
|
37
|
+
*/
|
|
38
|
+
export type AskDialectInput = BuiltInDialectId | DialectSpec | AskDialect;
|
|
23
39
|
/** Generic deps the pipeline forwards into the dialect (test-time mock for `generateText`, etc.). */
|
|
24
40
|
export type AskGenerateDeps = {
|
|
25
41
|
generateText?: typeof defaultGenerateText;
|
|
@@ -28,8 +44,11 @@ export type AskPipelineOptions = {
|
|
|
28
44
|
question: string;
|
|
29
45
|
schema: AnyNormalizedSchema;
|
|
30
46
|
model: LanguageModel;
|
|
31
|
-
/**
|
|
32
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Required: the SQL dialect. Accepts a {@link BuiltInDialectId} (e.g. `"postgres"`),
|
|
49
|
+
* a {@link DialectSpec} descriptor, or a fully custom {@link AskDialect} adapter.
|
|
50
|
+
*/
|
|
51
|
+
dialect: AskDialectInput;
|
|
33
52
|
/** When true, callers may inspect heuristic guardrail metadata (hosts/CLI). */
|
|
34
53
|
explain?: boolean;
|
|
35
54
|
/**
|
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,aAAa,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AAC7E,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;
|
|
1
|
+
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AAC7E,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;AAGtD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAGjB,MAAM,uBAAuB,CAAC;AAG/B,0EAA0E;AAC1E,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,sGAAsG;AACtG,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE1E,qGAAqG;AACrG,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,OAAO,EAAE,eAAe,CAAC;IACzB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAsB,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4BjF"}
|
package/dist/ask.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AskDbLogEvent } from "./logging/log-events.js";
|
|
2
2
|
import { DEFAULT_ASKDB_MODE } from "./modes/types.js";
|
|
3
3
|
import { synthesizeRetrievedDdl } from "./retrieval/synthesize-ddl.js";
|
|
4
|
+
import { getDialectSpec, isBuiltInDialectId, } from "./sql/dialect-spec.js";
|
|
5
|
+
import { generateSelectSql } from "./sql/generate.js";
|
|
4
6
|
export async function ask(options) {
|
|
5
7
|
const logger = options.logger;
|
|
6
8
|
const mode = options.mode ?? DEFAULT_ASKDB_MODE;
|
|
@@ -12,7 +14,8 @@ export async function ask(options) {
|
|
|
12
14
|
logger,
|
|
13
15
|
omitSensitive,
|
|
14
16
|
});
|
|
15
|
-
const
|
|
17
|
+
const dialect = resolveDialect(options.dialect);
|
|
18
|
+
const generated = await dialect.generate(options.question, options.schema, options.model, {
|
|
16
19
|
logger,
|
|
17
20
|
explain: explainRequested,
|
|
18
21
|
omitSensitiveIdentifiersFromNlToSqlPrompt: omitSensitive || undefined,
|
|
@@ -23,6 +26,30 @@ export async function ask(options) {
|
|
|
23
26
|
const explain = generated.explain;
|
|
24
27
|
return explain !== undefined ? { sql, explain } : { sql };
|
|
25
28
|
}
|
|
29
|
+
function isAskDialect(value) {
|
|
30
|
+
return typeof value.generate === "function";
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Normalize an {@link AskDialectInput} to an {@link AskDialect}. Built-in ids
|
|
34
|
+
* and {@link DialectSpec}s are wrapped around the centralized
|
|
35
|
+
* {@link generateSelectSql} generator; an {@link AskDialect} is passed through.
|
|
36
|
+
*/
|
|
37
|
+
function resolveDialect(input) {
|
|
38
|
+
if (typeof input === "string") {
|
|
39
|
+
if (!isBuiltInDialectId(input)) {
|
|
40
|
+
throw new Error(`Unknown dialect id '${input}'. Pass a built-in DialectId, a DialectSpec object, or a custom AskDialect.`);
|
|
41
|
+
}
|
|
42
|
+
return specToDialect(getDialectSpec(input));
|
|
43
|
+
}
|
|
44
|
+
if (isAskDialect(input))
|
|
45
|
+
return input;
|
|
46
|
+
return specToDialect(input);
|
|
47
|
+
}
|
|
48
|
+
function specToDialect(spec) {
|
|
49
|
+
return {
|
|
50
|
+
generate: (question, schema, model, options) => generateSelectSql(spec, question, schema, model, options),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
26
53
|
/** Default chunk-count threshold below which the full DDL is preferred. */
|
|
27
54
|
const DEFAULT_RETRIEVAL_THRESHOLD_CHUNKS = 30;
|
|
28
55
|
const DEFAULT_RETRIEVAL_K = 8;
|
package/dist/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./errors.js";
|
|
2
|
-
export { ask, type AskPipelineOptions, type AskPipelineResult, type AskDialect, type AskDialectGenerateOptions, type AskDialectGenerateResult, type AskGenerateDeps, } from "./ask.js";
|
|
2
|
+
export { ask, type AskPipelineOptions, type AskPipelineResult, type AskDialect, type AskDialectInput, type AskDialectGenerateOptions, type AskDialectGenerateResult, type AskGenerateDeps, } from "./ask.js";
|
|
3
3
|
export { parseAskDbModeV1, formatAskDbModesV1, DEFAULT_ASKDB_MODE, ASKDB_MODES_V1, type AskDbModeV1, } from "./modes/types.js";
|
|
4
4
|
export { AskDbLogEvent } from "./logging/log-events.js";
|
|
5
5
|
export type { AskDbLogger } from "./logging/askdb-logger.js";
|
|
@@ -14,6 +14,11 @@ export { ENRICHMENT_SYSTEM_PROMPT, buildEnrichmentUserPrompt, parseCandidates, s
|
|
|
14
14
|
export type { EnrichmentCandidate, EnrichmentContext, EnrichmentTarget, SuggestEnrichmentDeps, } from "./enrichment/index.js";
|
|
15
15
|
export { formatSchemaForNlToSql, formatSchemaForPrompt, normalizeAskDbSchema, type FormatNlToSqlOptions, type NlToSqlSchemaFormatStats, } from "./schema/normalize.js";
|
|
16
16
|
export { extractSqlFromModelText } from "./sql/extract-sql.js";
|
|
17
|
+
export { type DialectId, type DialectSpec, type BuiltInDialectId, POSTGRES_DIALECT, COCKROACHDB_DIALECT, MYSQL_DIALECT, MARIADB_DIALECT, SQLITE_DIALECT, SQLSERVER_DIALECT, BUILT_IN_DIALECTS, SUPPORTED_DIALECT_IDS, isBuiltInDialectId, getDialectSpec, } from "./sql/dialect-spec.js";
|
|
18
|
+
export { generateSelectSql, type GenerateSelectSqlResult, type GenerateSqlDeps, } from "./sql/generate.js";
|
|
19
|
+
export { validateSelectSql, buildSelectGuardrailExplanation, type SelectGuardrailExplain, } from "./sql/validate.js";
|
|
20
|
+
export { buildNlToSqlUserPrompt, buildNlToSqlSystemPrompt, } from "./sql/prompt.js";
|
|
21
|
+
export { assertNlToSqlInputs, nlToSqlAmbiguityNotes, } from "./sql/schema-question-precheck.js";
|
|
17
22
|
export { resolveAskDbAiConfig, resolveAskDbEmbeddingConfig, createAskDbLanguageModel, createAskDbLanguageModelFromEnv, createAskDbEmbeddingModel, createAskDbEmbeddingModelFromEnv, askDbAiKeyMissingMessage, type AskDbAiProvider, type AskDbAiConfig, type AskDbAiEnv, type ResolveAskDbAiConfigOptions, type ResolveAskDbEmbeddingConfigOptions, type CreateAskDbEmbeddingModelOptions, } from "./ai/provider.js";
|
|
18
23
|
export type { Retriever, RetrievedChunk, RetrievedChunkType, RetrievedResult, } from "./retrieval/types.js";
|
|
19
24
|
export { synthesizeRetrievedDdl } from "./retrieval/synthesize-ddl.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,GAAG,EACH,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,wBAAwB,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,GACtC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,11 @@ export { loadSchema, loadSchemaFromJson, parseTableMarkdown, parseConceptsMarkdo
|
|
|
10
10
|
export { ENRICHMENT_SYSTEM_PROMPT, buildEnrichmentUserPrompt, parseCandidates, suggestEnrichment, } from "./enrichment/index.js";
|
|
11
11
|
export { formatSchemaForNlToSql, formatSchemaForPrompt, normalizeAskDbSchema, } from "./schema/normalize.js";
|
|
12
12
|
export { extractSqlFromModelText } from "./sql/extract-sql.js";
|
|
13
|
+
export { POSTGRES_DIALECT, COCKROACHDB_DIALECT, MYSQL_DIALECT, MARIADB_DIALECT, SQLITE_DIALECT, SQLSERVER_DIALECT, BUILT_IN_DIALECTS, SUPPORTED_DIALECT_IDS, isBuiltInDialectId, getDialectSpec, } from "./sql/dialect-spec.js";
|
|
14
|
+
export { generateSelectSql, } from "./sql/generate.js";
|
|
15
|
+
export { validateSelectSql, buildSelectGuardrailExplanation, } from "./sql/validate.js";
|
|
16
|
+
export { buildNlToSqlUserPrompt, buildNlToSqlSystemPrompt, } from "./sql/prompt.js";
|
|
17
|
+
export { assertNlToSqlInputs, nlToSqlAmbiguityNotes, } from "./sql/schema-question-precheck.js";
|
|
13
18
|
export { resolveAskDbAiConfig, resolveAskDbEmbeddingConfig, createAskDbLanguageModel, createAskDbLanguageModelFromEnv, createAskDbEmbeddingModel, createAskDbEmbeddingModelFromEnv, askDbAiKeyMissingMessage, } from "./ai/provider.js";
|
|
14
19
|
export { synthesizeRetrievedDdl } from "./retrieval/synthesize-ddl.js";
|
|
15
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,GAAG,GAQJ,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,GAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMvF,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAIL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,+BAA+B,GAEhC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,GAOzB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/schema/v2/loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/schema/v2/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/schema/v2/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,12 @@ export type NormalizedV2Table = {
|
|
|
34
34
|
/** Fully normalized Schema v2 artifact — physical + describable layers merged. */
|
|
35
35
|
export type NormalizedSchemaV2 = {
|
|
36
36
|
schemaId: string;
|
|
37
|
+
/**
|
|
38
|
+
* SQL dialect identifier the connector inferred when introspection produced
|
|
39
|
+
* this schema (e.g. `"postgres"`, `"mysql"`). Hosts may use this to auto-
|
|
40
|
+
* select the NL→SQL dialect; `askdb.config.dialect` overrides it.
|
|
41
|
+
*/
|
|
42
|
+
provider?: string;
|
|
37
43
|
tables: NormalizedV2Table[];
|
|
38
44
|
concepts?: V2Concept[];
|
|
39
45
|
/** Structured warnings from ID validation (orphaned/missing ids). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalized.d.ts","sourceRoot":"","sources":["../../../src/schema/v2/normalized.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,qEAAqE;IACrE,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"normalized.d.ts","sourceRoot":"","sources":["../../../src/schema/v2/normalized.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,qEAAqE;IACrE,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -107,6 +107,13 @@ export declare const v2TableSchema: z.ZodObject<{
|
|
|
107
107
|
export declare const v2SchemaJsonSchema: z.ZodObject<{
|
|
108
108
|
version: z.ZodLiteral<2>;
|
|
109
109
|
schemaId: z.ZodString;
|
|
110
|
+
/**
|
|
111
|
+
* Optional SQL dialect the connector inferred when introspection produced
|
|
112
|
+
* this file (e.g. `"postgres"`, `"mysql"`, `"sqlite"`). Hosts use this to
|
|
113
|
+
* auto-select the NL→SQL dialect; `askdb.config.dialect` overrides it.
|
|
114
|
+
* Matches `DialectId` in `@askdb/core` — kept loose to forward-allow new ids.
|
|
115
|
+
*/
|
|
116
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
110
117
|
tables: z.ZodArray<z.ZodObject<{
|
|
111
118
|
id: z.ZodString;
|
|
112
119
|
name: z.ZodString;
|
|
@@ -201,6 +208,7 @@ export declare const v2SchemaJsonSchema: z.ZodObject<{
|
|
|
201
208
|
}[] | undefined;
|
|
202
209
|
}[];
|
|
203
210
|
schemaId: string;
|
|
211
|
+
provider?: string | undefined;
|
|
204
212
|
}, {
|
|
205
213
|
version: 2;
|
|
206
214
|
tables: {
|
|
@@ -222,6 +230,7 @@ export declare const v2SchemaJsonSchema: z.ZodObject<{
|
|
|
222
230
|
}[] | undefined;
|
|
223
231
|
}[];
|
|
224
232
|
schemaId: string;
|
|
233
|
+
provider?: string | undefined;
|
|
225
234
|
}>;
|
|
226
235
|
export type V2SchemaJson = z.infer<typeof v2SchemaJsonSchema>;
|
|
227
236
|
export type V2Table = z.infer<typeof v2TableSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physical.d.ts","sourceRoot":"","sources":["../../../src/schema/v2/physical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,aAAa;;;IAGxB,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7F,CAAC;AAEH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"physical.d.ts","sourceRoot":"","sources":["../../../src/schema/v2/physical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,aAAa;;;IAGxB,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7F,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;IAG7B;;;;;OAKG;;;;;QAfH,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB7F,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -23,6 +23,13 @@ export const v2TableSchema = z.object({
|
|
|
23
23
|
export const v2SchemaJsonSchema = z.object({
|
|
24
24
|
version: z.literal(2),
|
|
25
25
|
schemaId: z.string().min(1),
|
|
26
|
+
/**
|
|
27
|
+
* Optional SQL dialect the connector inferred when introspection produced
|
|
28
|
+
* this file (e.g. `"postgres"`, `"mysql"`, `"sqlite"`). Hosts use this to
|
|
29
|
+
* auto-select the NL→SQL dialect; `askdb.config.dialect` overrides it.
|
|
30
|
+
* Matches `DialectId` in `@askdb/core` — kept loose to forward-allow new ids.
|
|
31
|
+
*/
|
|
32
|
+
provider: z.string().min(1).optional(),
|
|
26
33
|
tables: z.array(v2TableSchema).min(1),
|
|
27
34
|
});
|
|
28
35
|
//# sourceMappingURL=physical.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physical.js","sourceRoot":"","sources":["../../../src/schema/v2/physical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,6FAA6F;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"physical.js","sourceRoot":"","sources":["../../../src/schema/v2/physical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,6FAA6F;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DialectSpec` — a small descriptor each SQL engine supplies so the centralized
|
|
3
|
+
* NL→SQL pipeline (in this package) can generate dialect-correct SELECT queries
|
|
4
|
+
* without each integration package re-implementing the prompt / validator.
|
|
5
|
+
*
|
|
6
|
+
* Authoring guidance:
|
|
7
|
+
* - Keep `promptBrief` to one short paragraph; surfaced in the model's user prompt.
|
|
8
|
+
* - `extraForbiddenKeywords` is additive on top of the dialect-agnostic read-only
|
|
9
|
+
* denylist (`insert`, `update`, `delete`, `drop`, …) baked into `validateSelectSql`.
|
|
10
|
+
* - `extraValidate` runs *after* the base validator passes; throw a
|
|
11
|
+
* `SqlValidationError` to reject dialect-specific shapes.
|
|
12
|
+
*/
|
|
13
|
+
/** Stable identifier for a built-in dialect. Connectors may surface this via `IntrospectionResult.provider`. */
|
|
14
|
+
export type DialectId = "postgres" | "cockroachdb" | "mysql" | "mariadb" | "sqlite" | "sqlserver";
|
|
15
|
+
export type DialectSpec = {
|
|
16
|
+
id: DialectId;
|
|
17
|
+
displayName: string;
|
|
18
|
+
/** One short paragraph injected into the NL→SQL user prompt. */
|
|
19
|
+
promptBrief: string;
|
|
20
|
+
/** Identifier quoting style — informational; mainly steers `promptBrief`. */
|
|
21
|
+
identifierQuote: '"' | '`';
|
|
22
|
+
/** Extra keywords to forbid on top of the dialect-agnostic base denylist. */
|
|
23
|
+
extraForbiddenKeywords?: readonly string[];
|
|
24
|
+
/** Optional engine-specific post-validator. Receives SQL already passing the base shape checks. */
|
|
25
|
+
extraValidate?: (sql: string) => void;
|
|
26
|
+
};
|
|
27
|
+
/** PostgreSQL — the original AskDB target. */
|
|
28
|
+
export declare const POSTGRES_DIALECT: DialectSpec;
|
|
29
|
+
/** CockroachDB — PostgreSQL-wire-compatible; reuses the Postgres prompt brief. */
|
|
30
|
+
export declare const COCKROACHDB_DIALECT: DialectSpec;
|
|
31
|
+
/** MySQL — backtick identifiers, CONCAT() for concat, no ILIKE. */
|
|
32
|
+
export declare const MYSQL_DIALECT: DialectSpec;
|
|
33
|
+
/**
|
|
34
|
+
* MariaDB — MySQL-protocol-compatible; the SELECT surface is functionally
|
|
35
|
+
* identical for AskDB's purposes, so we reuse the MySQL prompt brief and
|
|
36
|
+
* keep a distinct id for connectors that report `"mariadb"` explicitly.
|
|
37
|
+
*/
|
|
38
|
+
export declare const MARIADB_DIALECT: DialectSpec;
|
|
39
|
+
/** SQLite — single-file DBs with dynamic typing and a smaller function set. */
|
|
40
|
+
export declare const SQLITE_DIALECT: DialectSpec;
|
|
41
|
+
/** Microsoft SQL Server (T-SQL). */
|
|
42
|
+
export declare const SQLSERVER_DIALECT: DialectSpec;
|
|
43
|
+
/**
|
|
44
|
+
* Registry of dialect specs shipped with `@askdb/core`. Connectors that
|
|
45
|
+
* surface `provider` (`@askdb/postgres`, `@askdb/prisma`, …) auto-pick the
|
|
46
|
+
* matching spec; users can override via `askdb.config.dialect`.
|
|
47
|
+
*/
|
|
48
|
+
export declare const BUILT_IN_DIALECTS: {
|
|
49
|
+
readonly postgres: DialectSpec;
|
|
50
|
+
readonly cockroachdb: DialectSpec;
|
|
51
|
+
readonly mysql: DialectSpec;
|
|
52
|
+
readonly mariadb: DialectSpec;
|
|
53
|
+
readonly sqlite: DialectSpec;
|
|
54
|
+
readonly sqlserver: DialectSpec;
|
|
55
|
+
};
|
|
56
|
+
export type BuiltInDialectId = keyof typeof BUILT_IN_DIALECTS;
|
|
57
|
+
export declare const SUPPORTED_DIALECT_IDS: readonly BuiltInDialectId[];
|
|
58
|
+
export declare function isBuiltInDialectId(value: unknown): value is BuiltInDialectId;
|
|
59
|
+
/**
|
|
60
|
+
* Look up a built-in dialect by id. Throws when no spec ships for the id —
|
|
61
|
+
* tell callers (e.g. Prisma auto-detection) to surface a helpful "set
|
|
62
|
+
* `config.dialect` explicitly" message in that case.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getDialectSpec(id: BuiltInDialectId): DialectSpec;
|
|
65
|
+
//# sourceMappingURL=dialect-spec.d.ts.map
|
|
@@ -0,0 +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;CACvC,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,EAAE,WAQ9B,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,WAIjC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,WAU3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,WAc5B,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,WAc/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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DialectSpec` — a small descriptor each SQL engine supplies so the centralized
|
|
3
|
+
* NL→SQL pipeline (in this package) can generate dialect-correct SELECT queries
|
|
4
|
+
* without each integration package re-implementing the prompt / validator.
|
|
5
|
+
*
|
|
6
|
+
* Authoring guidance:
|
|
7
|
+
* - Keep `promptBrief` to one short paragraph; surfaced in the model's user prompt.
|
|
8
|
+
* - `extraForbiddenKeywords` is additive on top of the dialect-agnostic read-only
|
|
9
|
+
* denylist (`insert`, `update`, `delete`, `drop`, …) baked into `validateSelectSql`.
|
|
10
|
+
* - `extraValidate` runs *after* the base validator passes; throw a
|
|
11
|
+
* `SqlValidationError` to reject dialect-specific shapes.
|
|
12
|
+
*/
|
|
13
|
+
/** PostgreSQL — the original AskDB target. */
|
|
14
|
+
export const POSTGRES_DIALECT = {
|
|
15
|
+
id: "postgres",
|
|
16
|
+
displayName: "PostgreSQL",
|
|
17
|
+
promptBrief: "Target PostgreSQL. Use ILIKE for case-insensitive matching. " +
|
|
18
|
+
"Quote identifiers with double quotes when they collide with keywords or contain mixed case. " +
|
|
19
|
+
'Cast with `value::type`. Use NOW(), CURRENT_DATE, date_trunc(). Concatenate with `||`.',
|
|
20
|
+
identifierQuote: '"',
|
|
21
|
+
};
|
|
22
|
+
/** CockroachDB — PostgreSQL-wire-compatible; reuses the Postgres prompt brief. */
|
|
23
|
+
export const COCKROACHDB_DIALECT = {
|
|
24
|
+
...POSTGRES_DIALECT,
|
|
25
|
+
id: "cockroachdb",
|
|
26
|
+
displayName: "CockroachDB",
|
|
27
|
+
};
|
|
28
|
+
/** MySQL — backtick identifiers, CONCAT() for concat, no ILIKE. */
|
|
29
|
+
export const MYSQL_DIALECT = {
|
|
30
|
+
id: "mysql",
|
|
31
|
+
displayName: "MySQL",
|
|
32
|
+
promptBrief: "Target MySQL. Use LIKE (case-insensitive by default on common collations); for case-sensitive matching use BINARY or a `_bin` collation. " +
|
|
33
|
+
"Quote identifiers with backticks when they collide with reserved words. " +
|
|
34
|
+
"Cast with `CAST(value AS type)`. Use NOW(), CURDATE(), DATE_FORMAT(), DATE_SUB(), DATE_ADD(). " +
|
|
35
|
+
"Concatenate with `CONCAT(a, b)` — `||` is logical OR in MySQL, not string concat. " +
|
|
36
|
+
"Limit rows with `LIMIT n` (or `LIMIT offset, n`).",
|
|
37
|
+
identifierQuote: "`",
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* MariaDB — MySQL-protocol-compatible; the SELECT surface is functionally
|
|
41
|
+
* identical for AskDB's purposes, so we reuse the MySQL prompt brief and
|
|
42
|
+
* keep a distinct id for connectors that report `"mariadb"` explicitly.
|
|
43
|
+
*/
|
|
44
|
+
export const MARIADB_DIALECT = {
|
|
45
|
+
...MYSQL_DIALECT,
|
|
46
|
+
id: "mariadb",
|
|
47
|
+
displayName: "MariaDB",
|
|
48
|
+
};
|
|
49
|
+
/** SQLite — single-file DBs with dynamic typing and a smaller function set. */
|
|
50
|
+
export const SQLITE_DIALECT = {
|
|
51
|
+
id: "sqlite",
|
|
52
|
+
displayName: "SQLite",
|
|
53
|
+
promptBrief: "Target SQLite. Use LIKE (case-insensitive for ASCII by default; for full Unicode case-insensitivity wrap operands in LOWER()). " +
|
|
54
|
+
"Quote identifiers with double quotes when they collide with reserved words. " +
|
|
55
|
+
"Cast with `CAST(value AS type)`. Date/time helpers: date('now'), datetime('now'), strftime('%Y-%m', col). " +
|
|
56
|
+
"Concatenate with `||`. Limit rows with `LIMIT n` (optionally `LIMIT n OFFSET m`). " +
|
|
57
|
+
"SQLite uses dynamic typing — keep CAST conservative and prefer text/integer/real over engine-specific types.",
|
|
58
|
+
identifierQuote: '"',
|
|
59
|
+
// ATTACH/DETACH bring other DBs into scope; PRAGMA is configuration; REINDEX
|
|
60
|
+
// is maintenance. None belong in a generated read-only SELECT. (`vacuum` is
|
|
61
|
+
// already in the dialect-agnostic base denylist.)
|
|
62
|
+
extraForbiddenKeywords: ["attach", "detach", "pragma", "reindex"],
|
|
63
|
+
};
|
|
64
|
+
/** Microsoft SQL Server (T-SQL). */
|
|
65
|
+
export const SQLSERVER_DIALECT = {
|
|
66
|
+
id: "sqlserver",
|
|
67
|
+
displayName: "Microsoft SQL Server",
|
|
68
|
+
promptBrief: "Target Microsoft SQL Server (T-SQL). Use LIKE with LOWER() for case-insensitive matching when the collation is case-sensitive (no ILIKE in T-SQL). " +
|
|
69
|
+
"Quote identifiers with [square brackets] or double quotes. " +
|
|
70
|
+
"Cast with `CAST(value AS type)` or `CONVERT(type, value)`. " +
|
|
71
|
+
"Use GETDATE(), SYSUTCDATETIME(), DATEADD(), DATEDIFF(), FORMAT(). " +
|
|
72
|
+
"Concatenate with `+` (strings only — use ISNULL/COALESCE around nullable operands) or `CONCAT(a, b)`. " +
|
|
73
|
+
"Limit rows with `SELECT TOP (n) …` or `ORDER BY … OFFSET m ROWS FETCH NEXT n ROWS ONLY` — there is no LIMIT keyword.",
|
|
74
|
+
identifierQuote: '"',
|
|
75
|
+
// T-SQL keywords that shouldn't appear in read-only analytics SQL. (`call`
|
|
76
|
+
// is already in the base denylist; T-SQL uses EXEC / EXECUTE for procs.)
|
|
77
|
+
extraForbiddenKeywords: ["exec", "execute", "merge", "openrowset", "openquery"],
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Registry of dialect specs shipped with `@askdb/core`. Connectors that
|
|
81
|
+
* surface `provider` (`@askdb/postgres`, `@askdb/prisma`, …) auto-pick the
|
|
82
|
+
* matching spec; users can override via `askdb.config.dialect`.
|
|
83
|
+
*/
|
|
84
|
+
export const BUILT_IN_DIALECTS = {
|
|
85
|
+
postgres: POSTGRES_DIALECT,
|
|
86
|
+
cockroachdb: COCKROACHDB_DIALECT,
|
|
87
|
+
mysql: MYSQL_DIALECT,
|
|
88
|
+
mariadb: MARIADB_DIALECT,
|
|
89
|
+
sqlite: SQLITE_DIALECT,
|
|
90
|
+
sqlserver: SQLSERVER_DIALECT,
|
|
91
|
+
};
|
|
92
|
+
export const SUPPORTED_DIALECT_IDS = Object.keys(BUILT_IN_DIALECTS);
|
|
93
|
+
export function isBuiltInDialectId(value) {
|
|
94
|
+
return typeof value === "string" && value in BUILT_IN_DIALECTS;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Look up a built-in dialect by id. Throws when no spec ships for the id —
|
|
98
|
+
* tell callers (e.g. Prisma auto-detection) to surface a helpful "set
|
|
99
|
+
* `config.dialect` explicitly" message in that case.
|
|
100
|
+
*/
|
|
101
|
+
export function getDialectSpec(id) {
|
|
102
|
+
const spec = BUILT_IN_DIALECTS[id];
|
|
103
|
+
if (!spec) {
|
|
104
|
+
throw new Error(`No DialectSpec is registered for '${id}'. Supported: ${SUPPORTED_DIALECT_IDS.join(", ")}.`);
|
|
105
|
+
}
|
|
106
|
+
return spec;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=dialect-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialect-spec.js","sourceRoot":"","sources":["../../src/sql/dialect-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,YAAY;IACzB,WAAW,EACT,8DAA8D;QAC9D,8FAA8F;QAC9F,wFAAwF;IAC1F,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,GAAG,gBAAgB;IACnB,EAAE,EAAE,aAAa;IACjB,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,OAAO;IACpB,WAAW,EACT,2IAA2I;QAC3I,0EAA0E;QAC1E,gGAAgG;QAChG,oFAAoF;QACpF,mDAAmD;IACrD,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,GAAG,aAAa;IAChB,EAAE,EAAE,SAAS;IACb,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,QAAQ;IACrB,WAAW,EACT,iIAAiI;QACjI,8EAA8E;QAC9E,4GAA4G;QAC5G,oFAAoF;QACpF,8GAA8G;IAChH,eAAe,EAAE,GAAG;IACpB,6EAA6E;IAC7E,4EAA4E;IAC5E,kDAAkD;IAClD,sBAAsB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;CAClE,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC5C,EAAE,EAAE,WAAW;IACf,WAAW,EAAE,sBAAsB;IACnC,WAAW,EACT,qJAAqJ;QACrJ,6DAA6D;QAC7D,6DAA6D;QAC7D,oEAAoE;QACpE,wGAAwG;QACxG,sHAAsH;IACxH,eAAe,EAAE,GAAG;IACpB,2EAA2E;IAC3E,yEAAyE;IACzE,sBAAsB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC;CAChF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,iBAAiB;CACqB,CAAC;AAIpD,MAAM,CAAC,MAAM,qBAAqB,GAAgC,MAAM,CAAC,IAAI,CAC3E,iBAAiB,CACa,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,iBAAiB,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAoB;IACjD,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,qCAAqC,EAAE,iBAAiB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { LanguageModel } from "ai";
|
|
2
|
+
import { generateText as defaultGenerateText } from "ai";
|
|
3
|
+
import type { AskDbLogger } from "../logging/askdb-logger.js";
|
|
4
|
+
import type { AnyNormalizedSchema } from "../schema/types.js";
|
|
5
|
+
import type { DialectSpec } from "./dialect-spec.js";
|
|
6
|
+
import { type SelectGuardrailExplain } from "./validate.js";
|
|
7
|
+
export type GenerateSqlDeps = {
|
|
8
|
+
generateText?: typeof defaultGenerateText;
|
|
9
|
+
logger?: AskDbLogger;
|
|
10
|
+
/** When true, include heuristic guardrail explanation in {@link GenerateSelectSqlResult.explain}. */
|
|
11
|
+
explain?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* When true, omit sensitive identifiers from NL→SQL DDL (stricter). Default false — names are listed
|
|
14
|
+
* with `(sensitive)` so the model can ground queries (see `docs/contracts/sensitive-fields-and-modes.md`).
|
|
15
|
+
*/
|
|
16
|
+
omitSensitiveIdentifiersFromNlToSqlPrompt?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Pre-synthesized DDL block. When supplied, replaces the formatter output
|
|
19
|
+
* in the NL→SQL prompt. Used by `ask({ retriever })` to inject a focused
|
|
20
|
+
* DDL synthesized from retrieved chunks; consumers usually don't set this
|
|
21
|
+
* directly.
|
|
22
|
+
*/
|
|
23
|
+
prebuiltDdl?: string;
|
|
24
|
+
};
|
|
25
|
+
/** Result of NL→SQL generation (always includes `sql`; `explain` when {@link GenerateSqlDeps.explain}). */
|
|
26
|
+
export type GenerateSelectSqlResult = {
|
|
27
|
+
sql: string;
|
|
28
|
+
explain?: SelectGuardrailExplain;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Dialect-parameterized NL→SQL generator. Validates inputs, builds the user/system
|
|
32
|
+
* prompt with the dialect's syntax brief, calls the model, extracts the fenced SQL,
|
|
33
|
+
* and runs the shared read-only validator (plus any dialect-specific `extraValidate`).
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateSelectSql(dialect: DialectSpec, question: string, schema: AnyNormalizedSchema, model: LanguageModel, deps?: GenerateSqlDeps): Promise<GenerateSelectSqlResult>;
|
|
36
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,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;CACtB,CAAC;AAEF,2GAA2G;AAC3G,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,aAAa,EACpB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAgElC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { generateText as defaultGenerateText } from "ai";
|
|
2
|
+
import { SqlGenerationError } from "../errors.js";
|
|
3
|
+
import { AskDbLogEvent } from "../logging/log-events.js";
|
|
4
|
+
import { extractSqlFromModelText } from "./extract-sql.js";
|
|
5
|
+
import { buildNlToSqlSystemPrompt, buildNlToSqlUserPrompt } from "./prompt.js";
|
|
6
|
+
import { assertNlToSqlInputs, nlToSqlAmbiguityNotes } from "./schema-question-precheck.js";
|
|
7
|
+
import { buildSelectGuardrailExplanation, validateSelectSql, } from "./validate.js";
|
|
8
|
+
/**
|
|
9
|
+
* Dialect-parameterized NL→SQL generator. Validates inputs, builds the user/system
|
|
10
|
+
* prompt with the dialect's syntax brief, calls the model, extracts the fenced SQL,
|
|
11
|
+
* and runs the shared read-only validator (plus any dialect-specific `extraValidate`).
|
|
12
|
+
*/
|
|
13
|
+
export async function generateSelectSql(dialect, question, schema, model, deps = {}) {
|
|
14
|
+
assertNlToSqlInputs(schema, question);
|
|
15
|
+
const ambiguityNotes = nlToSqlAmbiguityNotes(question, schema);
|
|
16
|
+
const generateText = deps.generateText ?? defaultGenerateText;
|
|
17
|
+
const logger = deps.logger;
|
|
18
|
+
const nlToSqlSchemaOptions = deps.omitSensitiveIdentifiersFromNlToSqlPrompt === true
|
|
19
|
+
? { omitSensitiveIdentifiersFromPrompt: true }
|
|
20
|
+
: undefined;
|
|
21
|
+
logger?.info({
|
|
22
|
+
event: AskDbLogEvent.PipelineGenerateStart,
|
|
23
|
+
questionLength: question.length,
|
|
24
|
+
tableCount: schema.tables.length,
|
|
25
|
+
}, "nl-to-sql generate start");
|
|
26
|
+
try {
|
|
27
|
+
let text;
|
|
28
|
+
try {
|
|
29
|
+
const result = await generateText({
|
|
30
|
+
model,
|
|
31
|
+
system: buildNlToSqlSystemPrompt(dialect),
|
|
32
|
+
prompt: buildNlToSqlUserPrompt(dialect, question, schema, ambiguityNotes, logger, nlToSqlSchemaOptions, deps.prebuiltDdl),
|
|
33
|
+
temperature: 0,
|
|
34
|
+
});
|
|
35
|
+
text = result.text;
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
39
|
+
throw new SqlGenerationError(`Model call failed: ${message}`, e);
|
|
40
|
+
}
|
|
41
|
+
const extracted = extractSqlFromModelText(text);
|
|
42
|
+
const sql = validateSelectSql(dialect, extracted);
|
|
43
|
+
const explain = deps.explain ? buildSelectGuardrailExplanation(sql) : undefined;
|
|
44
|
+
logger?.info({
|
|
45
|
+
event: AskDbLogEvent.PipelineGenerateComplete,
|
|
46
|
+
sqlCharCount: sql.length,
|
|
47
|
+
}, "nl-to-sql generate complete");
|
|
48
|
+
return explain !== undefined ? { sql, explain } : { sql };
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
52
|
+
logger?.error({
|
|
53
|
+
event: AskDbLogEvent.PipelineFailed,
|
|
54
|
+
phase: "generate",
|
|
55
|
+
errMessage: msg,
|
|
56
|
+
}, "nl-to-sql generate failed");
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/sql/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EACL,+BAA+B,EAC/B,iBAAiB,GAElB,MAAM,eAAe,CAAC;AA2BvB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAoB,EACpB,QAAgB,EAChB,MAA2B,EAC3B,KAAoB,EACpB,OAAwB,EAAE;IAE1B,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,oBAAoB,GACxB,IAAI,CAAC,yCAAyC,KAAK,IAAI;QACrD,CAAC,CAAC,EAAE,kCAAkC,EAAE,IAAI,EAAE;QAC9C,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,EAAE,IAAI,CACV;QACE,KAAK,EAAE,aAAa,CAAC,qBAAqB;QAC1C,cAAc,EAAE,QAAQ,CAAC,MAAM;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;KACjC,EACD,0BAA0B,CAC3B,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,KAAK;gBACL,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC;gBACzC,MAAM,EAAE,sBAAsB,CAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,oBAAoB,EACpB,IAAI,CAAC,WAAW,CACjB;gBACD,WAAW,EAAE,CAAC;aACf,CAAC,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,EAAE,IAAI,CACV;YACE,KAAK,EAAE,aAAa,CAAC,wBAAwB;YAC7C,YAAY,EAAE,GAAG,CAAC,MAAM;SACzB,EACD,6BAA6B,CAC9B,CAAC;QACF,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,KAAK,CACX;YACE,KAAK,EAAE,aAAa,CAAC,cAAc;YACnC,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,GAAG;SAChB,EACD,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { type DialectId, type DialectSpec, type BuiltInDialectId, POSTGRES_DIALECT, COCKROACHDB_DIALECT, MYSQL_DIALECT, MARIADB_DIALECT, SQLITE_DIALECT, SQLSERVER_DIALECT, BUILT_IN_DIALECTS, SUPPORTED_DIALECT_IDS, isBuiltInDialectId, getDialectSpec, } from "./dialect-spec.js";
|
|
2
|
+
export { generateSelectSql, type GenerateSelectSqlResult, type GenerateSqlDeps, } from "./generate.js";
|
|
3
|
+
export { validateSelectSql, buildSelectGuardrailExplanation, type SelectGuardrailExplain, } from "./validate.js";
|
|
4
|
+
export { buildNlToSqlUserPrompt, buildNlToSqlSystemPrompt, } from "./prompt.js";
|
|
5
|
+
export { assertNlToSqlInputs, nlToSqlAmbiguityNotes, } from "./schema-question-precheck.js";
|
|
6
|
+
export { extractSqlFromModelText } from "./extract-sql.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,+BAA+B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { POSTGRES_DIALECT, COCKROACHDB_DIALECT, MYSQL_DIALECT, MARIADB_DIALECT, SQLITE_DIALECT, SQLSERVER_DIALECT, BUILT_IN_DIALECTS, SUPPORTED_DIALECT_IDS, isBuiltInDialectId, getDialectSpec, } from "./dialect-spec.js";
|
|
2
|
+
export { generateSelectSql, } from "./generate.js";
|
|
3
|
+
export { validateSelectSql, buildSelectGuardrailExplanation, } from "./validate.js";
|
|
4
|
+
export { buildNlToSqlUserPrompt, buildNlToSqlSystemPrompt, } from "./prompt.js";
|
|
5
|
+
export { assertNlToSqlInputs, nlToSqlAmbiguityNotes, } from "./schema-question-precheck.js";
|
|
6
|
+
export { extractSqlFromModelText } from "./extract-sql.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,GAGlB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,+BAA+B,GAEhC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AskDbLogger } from "../logging/askdb-logger.js";
|
|
2
|
+
import { type FormatNlToSqlOptions } from "../schema/normalize.js";
|
|
3
|
+
import type { AnyNormalizedSchema } from "../schema/types.js";
|
|
4
|
+
import type { DialectSpec } from "./dialect-spec.js";
|
|
5
|
+
/**
|
|
6
|
+
* Build the dialect-parameterized NL→SQL user prompt. The same scaffolding is used
|
|
7
|
+
* for every dialect; the dialect's `displayName` and `promptBrief` are interpolated
|
|
8
|
+
* to steer the model toward dialect-correct syntax.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildNlToSqlUserPrompt(dialect: DialectSpec, question: string, schema: AnyNormalizedSchema, ambiguityNotes?: readonly string[], logger?: AskDbLogger, nlToSqlSchemaOptions?: FormatNlToSqlOptions,
|
|
11
|
+
/**
|
|
12
|
+
* Optional pre-synthesized DDL block. When supplied, this replaces the
|
|
13
|
+
* formatter output verbatim — used by `ask({ retriever })` to inject a
|
|
14
|
+
* focused DDL built from retrieved chunks. Sensitive-redaction logging
|
|
15
|
+
* still fires using the consumer-supplied `nlToSqlSchemaOptions` to keep
|
|
16
|
+
* observability consistent.
|
|
17
|
+
*/
|
|
18
|
+
prebuiltDdl?: string): string;
|
|
19
|
+
/** Dialect-parameterized system prompt for the NL→SQL generator. */
|
|
20
|
+
export declare function buildNlToSqlSystemPrompt(dialect: DialectSpec): string;
|
|
21
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/sql/prompt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,cAAc,GAAE,SAAS,MAAM,EAAO,EACtC,MAAM,CAAC,EAAE,WAAW,EACpB,oBAAoB,CAAC,EAAE,oBAAoB;AAC3C;;;;;;GAMG;AACH,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAuDR;AAED,oEAAoE;AACpE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAErE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { AskDbLogEvent } from "../logging/log-events.js";
|
|
2
|
+
import { formatSchemaForNlToSql, } from "../schema/normalize.js";
|
|
3
|
+
import { formatSchemaV2ForNlToSql, } from "../schema/v2/index.js";
|
|
4
|
+
function isV2(schema) {
|
|
5
|
+
return "schemaId" in schema;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Build the dialect-parameterized NL→SQL user prompt. The same scaffolding is used
|
|
9
|
+
* for every dialect; the dialect's `displayName` and `promptBrief` are interpolated
|
|
10
|
+
* to steer the model toward dialect-correct syntax.
|
|
11
|
+
*/
|
|
12
|
+
export function buildNlToSqlUserPrompt(dialect, question, schema, ambiguityNotes = [], logger, nlToSqlSchemaOptions,
|
|
13
|
+
/**
|
|
14
|
+
* Optional pre-synthesized DDL block. When supplied, this replaces the
|
|
15
|
+
* formatter output verbatim — used by `ask({ retriever })` to inject a
|
|
16
|
+
* focused DDL built from retrieved chunks. Sensitive-redaction logging
|
|
17
|
+
* still fires using the consumer-supplied `nlToSqlSchemaOptions` to keep
|
|
18
|
+
* observability consistent.
|
|
19
|
+
*/
|
|
20
|
+
prebuiltDdl) {
|
|
21
|
+
const formatted = isV2(schema)
|
|
22
|
+
? formatSchemaV2ForNlToSql(schema, nlToSqlSchemaOptions)
|
|
23
|
+
: formatSchemaForNlToSql(schema, nlToSqlSchemaOptions);
|
|
24
|
+
const ddl = prebuiltDdl ?? formatted.ddl;
|
|
25
|
+
const stats = formatted.stats;
|
|
26
|
+
if (stats.omitSensitiveIdentifiersFromPrompt &&
|
|
27
|
+
(stats.redactedColumnCount > 0 || stats.sensitiveTableStubCount > 0)) {
|
|
28
|
+
logger?.debug?.({
|
|
29
|
+
event: AskDbLogEvent.PromptSensitiveRedacted,
|
|
30
|
+
redactedColumnCount: stats.redactedColumnCount,
|
|
31
|
+
sensitiveTableStubCount: stats.sensitiveTableStubCount,
|
|
32
|
+
}, "nl-to-sql prompt omitted sensitive schema metadata from DDL");
|
|
33
|
+
}
|
|
34
|
+
if (!stats.omitSensitiveIdentifiersFromPrompt &&
|
|
35
|
+
stats.listedSensitiveColumnCount > 0) {
|
|
36
|
+
logger?.debug?.({
|
|
37
|
+
event: AskDbLogEvent.PromptSensitiveIdentifiersListed,
|
|
38
|
+
listedSensitiveColumnCount: stats.listedSensitiveColumnCount,
|
|
39
|
+
}, "nl-to-sql prompt lists sensitive schema identifiers for SQL grounding (names only)");
|
|
40
|
+
}
|
|
41
|
+
const lines = [
|
|
42
|
+
`You translate natural language questions into a single ${dialect.displayName} SELECT (or WITH ... SELECT).`,
|
|
43
|
+
"Rules:",
|
|
44
|
+
`- Output exactly one ${dialect.displayName} SELECT query (CTE WITH is ok). End with optional semicolon.`,
|
|
45
|
+
'- Put the SQL only inside one markdown fenced block labelled ```sql (preferred). No extra commentary.',
|
|
46
|
+
"- Use identifiers from the schema below; qualify table names where it helps readability.",
|
|
47
|
+
"- Do NOT use DDL or write statements (INSERT, UPDATE, DELETE, etc.). SELECT-only.",
|
|
48
|
+
`- Dialect notes: ${dialect.promptBrief}`,
|
|
49
|
+
"",
|
|
50
|
+
"Database schema:",
|
|
51
|
+
ddl,
|
|
52
|
+
"",
|
|
53
|
+
];
|
|
54
|
+
if (ambiguityNotes.length > 0) {
|
|
55
|
+
lines.push("Context (deterministic checks from AskDB—these hints may be irrelevant; weigh them against the question):");
|
|
56
|
+
for (const note of ambiguityNotes) {
|
|
57
|
+
lines.push(`- ${note}`);
|
|
58
|
+
}
|
|
59
|
+
lines.push("");
|
|
60
|
+
}
|
|
61
|
+
lines.push(`Question: ${question}`);
|
|
62
|
+
return lines.join("\n");
|
|
63
|
+
}
|
|
64
|
+
/** Dialect-parameterized system prompt for the NL→SQL generator. */
|
|
65
|
+
export function buildNlToSqlSystemPrompt(dialect) {
|
|
66
|
+
return `You are AskDB SQL generator—correct, deterministic ${dialect.displayName} for analytics. Produce one SELECT (or WITH) only.`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/sql/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EACL,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAG/B,SAAS,IAAI,CAAC,MAA2B;IACvC,OAAO,UAAU,IAAI,MAAM,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,QAAgB,EAChB,MAA2B,EAC3B,iBAAoC,EAAE,EACtC,MAAoB,EACpB,oBAA2C;AAC3C;;;;;;GAMG;AACH,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,CAAC;QACxD,CAAC,CAAC,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,IACE,KAAK,CAAC,kCAAkC;QACxC,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC,EACpE,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,CACb;YACE,KAAK,EAAE,aAAa,CAAC,uBAAuB;YAC5C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;SACvD,EACD,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,IACE,CAAC,KAAK,CAAC,kCAAkC;QACzC,KAAK,CAAC,0BAA0B,GAAG,CAAC,EACpC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,CACb;YACE,KAAK,EAAE,aAAa,CAAC,gCAAgC;YACrD,0BAA0B,EAAE,KAAK,CAAC,0BAA0B;SAC7D,EACD,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG;QACZ,0DAA0D,OAAO,CAAC,WAAW,+BAA+B;QAC5G,QAAQ;QACR,wBAAwB,OAAO,CAAC,WAAW,8DAA8D;QACzG,uGAAuG;QACvG,0FAA0F;QAC1F,mFAAmF;QACnF,oBAAoB,OAAO,CAAC,WAAW,EAAE;QACzC,EAAE;QACF,kBAAkB;QAClB,GAAG;QACH,EAAE;KACH,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CACR,2GAA2G,CAC5G,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAC3D,OAAO,sDAAsD,OAAO,CAAC,WAAW,oDAAoD,CAAC;AACvI,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyNormalizedSchema } from "../schema/types.js";
|
|
2
|
+
export declare function assertNlToSqlInputs(schema: AnyNormalizedSchema, question: string): void;
|
|
3
|
+
/**
|
|
4
|
+
* Deterministic notes appended to the NL→SQL user prompt when the question and schema look misaligned.
|
|
5
|
+
*/
|
|
6
|
+
export declare function nlToSqlAmbiguityNotes(question: string, schema: AnyNormalizedSchema): string[];
|
|
7
|
+
//# sourceMappingURL=schema-question-precheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-question-precheck.d.ts","sourceRoot":"","sources":["../../src/sql/schema-question-precheck.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CASvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CA0B7F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AskDbError } from "../errors.js";
|
|
2
|
+
const JOIN_RELATION_HINT = /\b(join|joined|joins|inner\s+join|left\s+join|right\s+join|full\s+join|together\s+with|along\s+with|versus|vs\.?|compare|both\s+tables|each\s+other|relationship\s+between|how\s+they\s+relate)\b/i;
|
|
3
|
+
/** FROM / JOIN table names in the question (simple identifier; no schema-qualified names in v1). */
|
|
4
|
+
const FROM_JOIN_TABLE = /\b(?:from|join)\s+([a-zA-Z_][\w]*)\b/gi;
|
|
5
|
+
export function assertNlToSqlInputs(schema, question) {
|
|
6
|
+
if (schema.tables.length === 0) {
|
|
7
|
+
throw new AskDbError("Schema has no tables. Add at least one table to the AskDB schema JSON (see fixtures/schemas/ in this repo).");
|
|
8
|
+
}
|
|
9
|
+
if (!question.trim()) {
|
|
10
|
+
throw new AskDbError("Question is empty. Pass a non-blank natural-language question with -q / --question.");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Deterministic notes appended to the NL→SQL user prompt when the question and schema look misaligned.
|
|
15
|
+
*/
|
|
16
|
+
export function nlToSqlAmbiguityNotes(question, schema) {
|
|
17
|
+
const notes = [];
|
|
18
|
+
const tableNames = new Set(schema.tables.map((t) => t.name.toLowerCase()));
|
|
19
|
+
if (schema.tables.length === 1 && JOIN_RELATION_HINT.test(question)) {
|
|
20
|
+
const only = schema.tables[0].name;
|
|
21
|
+
notes.push(`The schema lists only one table (${only}). Do not invent joins to other tables unless their names appear explicitly in the schema excerpt.`);
|
|
22
|
+
}
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
for (const m of question.matchAll(FROM_JOIN_TABLE)) {
|
|
25
|
+
const raw = m[1];
|
|
26
|
+
const low = raw.toLowerCase();
|
|
27
|
+
if (seen.has(low))
|
|
28
|
+
continue;
|
|
29
|
+
seen.add(low);
|
|
30
|
+
if (!tableNames.has(low)) {
|
|
31
|
+
const known = [...tableNames].sort().join(", ");
|
|
32
|
+
notes.push(`The question mentions table "${raw}" which is not in the schema. Known tables: ${known || "(none)"}.`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return notes;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=schema-question-precheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-question-precheck.js","sourceRoot":"","sources":["../../src/sql/schema-question-precheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,kBAAkB,GACtB,oMAAoM,CAAC;AAEvM,oGAAoG;AACpG,MAAM,eAAe,GAAG,wCAAwC,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,MAA2B,EAAE,QAAgB;IAC/E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAClB,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,qFAAqF,CAAC,CAAC;IAC9G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,MAA2B;IACjF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,oCAAoC,IAAI,oGAAoG,CAC7I,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CACR,gCAAgC,GAAG,+CAA+C,KAAK,IAAI,QAAQ,GAAG,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DialectSpec } from "./dialect-spec.js";
|
|
2
|
+
/**
|
|
3
|
+
* Dialect-agnostic read-only SELECT guardrail. Not a SQL parser — blocks obvious
|
|
4
|
+
* foot-guns and multi-statement abuse. The dialect's `extraForbiddenKeywords`
|
|
5
|
+
* augment the base list; `extraValidate` runs after base checks pass.
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateSelectSql(dialect: DialectSpec, sql: string): string;
|
|
8
|
+
/** Explanation of guardrails satisfied by a string already passing {@link validateSelectSql}. */
|
|
9
|
+
export type SelectGuardrailExplain = {
|
|
10
|
+
statementKind: "select" | "with";
|
|
11
|
+
checksVerified: readonly string[];
|
|
12
|
+
remediationNote: string;
|
|
13
|
+
};
|
|
14
|
+
/** Build a structured summary for hosts/CLI `--explain`; input must already be validated. */
|
|
15
|
+
export declare function buildSelectGuardrailExplanation(validatedSql: string): SelectGuardrailExplain;
|
|
16
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/sql/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsBrD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqD3E;AAED,iGAAiG;AACjG,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAgB5F"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { SqlValidationError } from "../errors.js";
|
|
2
|
+
const BASE_FORBIDDEN = [
|
|
3
|
+
"insert",
|
|
4
|
+
"update",
|
|
5
|
+
"delete",
|
|
6
|
+
"drop",
|
|
7
|
+
"truncate",
|
|
8
|
+
"alter",
|
|
9
|
+
"create",
|
|
10
|
+
"grant",
|
|
11
|
+
"revoke",
|
|
12
|
+
"vacuum",
|
|
13
|
+
"analyze",
|
|
14
|
+
"copy",
|
|
15
|
+
"call",
|
|
16
|
+
];
|
|
17
|
+
function validationError(rule, summary, hint) {
|
|
18
|
+
return new SqlValidationError(summary, rule, hint);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Dialect-agnostic read-only SELECT guardrail. Not a SQL parser — blocks obvious
|
|
22
|
+
* foot-guns and multi-statement abuse. The dialect's `extraForbiddenKeywords`
|
|
23
|
+
* augment the base list; `extraValidate` runs after base checks pass.
|
|
24
|
+
*/
|
|
25
|
+
export function validateSelectSql(dialect, sql) {
|
|
26
|
+
const trimmed = sql.trim();
|
|
27
|
+
if (!trimmed) {
|
|
28
|
+
throw validationError("SQL_EMPTY", "Generated SQL is empty after extraction.", "The model reply had no usable ```sql fenced block or the block was blank. Retry with a clearer question or inspect the raw model output with logging.");
|
|
29
|
+
}
|
|
30
|
+
const withoutStrings = stripSqlStringLiterals(trimmed);
|
|
31
|
+
if (/;/.test(withoutStrings)) {
|
|
32
|
+
const parts = withoutStrings.split(";").map((p) => p.trim()).filter(Boolean);
|
|
33
|
+
if (parts.length > 1) {
|
|
34
|
+
throw validationError("SQL_MULTI_STATEMENT", "Multiple SQL statements are not allowed (semicolon separates more than one statement).", "Ask for a single SELECT (WITH … SELECT allowed). Split analytical steps into separate questions or use a CTE instead of multiple statements.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (/--|\/\*/.test(withoutStrings)) {
|
|
38
|
+
throw validationError("SQL_COMMENT", "SQL comments (-- or /* … */) are not allowed under current guardrails.", "Remove comments from generated SQL; rely on clear column aliases and CTE names instead.");
|
|
39
|
+
}
|
|
40
|
+
const head = firstMeaningfulToken(withoutStrings);
|
|
41
|
+
if (head !== "select" && head !== "with") {
|
|
42
|
+
throw validationError("SQL_NOT_SELECT_OR_WITH", `SQL must start with SELECT or WITH (got '${head || "none"}').`, "Regenerate as a read-only SELECT (optionally with WITH). INSERT/UPDATE/DELETE and procedural calls are blocked in dev guardrails.");
|
|
43
|
+
}
|
|
44
|
+
const lower = withoutStrings.toLowerCase();
|
|
45
|
+
const forbidden = [...BASE_FORBIDDEN, ...(dialect.extraForbiddenKeywords ?? [])];
|
|
46
|
+
for (const word of forbidden) {
|
|
47
|
+
const re = new RegExp(`\\b${word}\\b`, "i");
|
|
48
|
+
if (re.test(lower)) {
|
|
49
|
+
throw validationError("SQL_FORBIDDEN_KEYWORD", `Forbidden keyword in generated SQL: ${word.toUpperCase()}.`, `Matched whole-word guardrail keyword "${word}". This build allows read-only SELECT shape only; DDL/DML and similar verbs are rejected.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const normalized = trimmed.replace(/;\s*$/, "").trim();
|
|
53
|
+
dialect.extraValidate?.(normalized);
|
|
54
|
+
return normalized;
|
|
55
|
+
}
|
|
56
|
+
/** Build a structured summary for hosts/CLI `--explain`; input must already be validated. */
|
|
57
|
+
export function buildSelectGuardrailExplanation(validatedSql) {
|
|
58
|
+
const trimmed = validatedSql.trim();
|
|
59
|
+
const head = firstMeaningfulToken(stripSqlStringLiterals(trimmed));
|
|
60
|
+
const statementKind = head === "with" ? "with" : "select";
|
|
61
|
+
return {
|
|
62
|
+
statementKind,
|
|
63
|
+
checksVerified: [
|
|
64
|
+
"non_empty_sql",
|
|
65
|
+
"single_statement",
|
|
66
|
+
"no_line_or_block_comments",
|
|
67
|
+
"leading_select_or_with",
|
|
68
|
+
"no_blocked_write_or_ddl_keywords",
|
|
69
|
+
],
|
|
70
|
+
remediationNote: "Heuristic Phase-2 checks only—not a full SQL parser or production policy engine. Always review before trusted execution.",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function stripSqlStringLiterals(sql) {
|
|
74
|
+
let out = "";
|
|
75
|
+
let i = 0;
|
|
76
|
+
while (i < sql.length) {
|
|
77
|
+
const ch = sql[i];
|
|
78
|
+
if (ch === "'") {
|
|
79
|
+
i++;
|
|
80
|
+
while (i < sql.length) {
|
|
81
|
+
if (sql[i] === "'" && sql[i + 1] === "'") {
|
|
82
|
+
i += 2;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (sql[i] === "'") {
|
|
86
|
+
i++;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
i++;
|
|
90
|
+
}
|
|
91
|
+
out += "''";
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (ch === '"') {
|
|
95
|
+
i++;
|
|
96
|
+
while (i < sql.length && sql[i] !== '"') {
|
|
97
|
+
if (sql[i] === "\\")
|
|
98
|
+
i++;
|
|
99
|
+
i++;
|
|
100
|
+
}
|
|
101
|
+
if (i < sql.length)
|
|
102
|
+
i++;
|
|
103
|
+
out += '""';
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (ch === "$" && /^\$\w*\$/.test(sql.slice(i))) {
|
|
107
|
+
const end = sql.indexOf("$", i + 1);
|
|
108
|
+
const tagEnd = sql.indexOf("$", end + 1);
|
|
109
|
+
if (tagEnd === -1)
|
|
110
|
+
return out + sql.slice(i);
|
|
111
|
+
i = tagEnd + 1;
|
|
112
|
+
out += "$$";
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
out += ch;
|
|
116
|
+
i++;
|
|
117
|
+
}
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
120
|
+
function firstMeaningfulToken(withoutStrings) {
|
|
121
|
+
const token = /([a-zA-Z_][\w$]*|"[^"]*")/.exec(withoutStrings.trim());
|
|
122
|
+
if (!token)
|
|
123
|
+
return "";
|
|
124
|
+
let t = token[1];
|
|
125
|
+
if (t.startsWith('"') && t.endsWith('"')) {
|
|
126
|
+
t = t.slice(1, -1);
|
|
127
|
+
}
|
|
128
|
+
return t.toLowerCase();
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/sql/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askdb/core",
|
|
3
|
-
"version": "0.5.0-beta.
|
|
3
|
+
"version": "0.5.0-beta.4",
|
|
4
4
|
"description": "AskDB core: dialect-agnostic NL→SQL pipeline. Provides ask() orchestration, schema/IR types, modes, logging, and retrieval input. Bring your own dialect (e.g. @askdb/postgres).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"askdb",
|