@deepagents/text2sql 6.1.0 → 7.0.0
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 +16 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +2 -2
- package/dist/lib/adapters/adapter.d.ts +1 -0
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/index.js +91 -8
- package/dist/lib/adapters/bigquery/index.js.map +3 -3
- package/dist/lib/adapters/clickhouse/index.js +5 -2
- package/dist/lib/adapters/clickhouse/index.js.map +2 -2
- package/dist/lib/adapters/duckdb/duckdb-identifiers.d.ts +8 -0
- package/dist/lib/adapters/duckdb/duckdb-identifiers.d.ts.map +1 -0
- package/dist/lib/adapters/duckdb/duckdb.d.ts +40 -0
- package/dist/lib/adapters/duckdb/duckdb.d.ts.map +1 -0
- package/dist/lib/adapters/duckdb/duckdb.groundings.d.ts +58 -0
- package/dist/lib/adapters/duckdb/duckdb.groundings.d.ts.map +1 -0
- package/dist/lib/adapters/duckdb/duckdb.sql-policy.d.ts +8 -0
- package/dist/lib/adapters/duckdb/duckdb.sql-policy.d.ts.map +1 -0
- package/dist/lib/adapters/duckdb/index.d.ts +34 -0
- package/dist/lib/adapters/duckdb/index.d.ts.map +1 -0
- package/dist/lib/adapters/duckdb/index.js +1933 -0
- package/dist/lib/adapters/duckdb/index.js.map +7 -0
- package/dist/lib/adapters/mysql/index.js +91 -8
- package/dist/lib/adapters/mysql/index.js.map +3 -3
- package/dist/lib/adapters/parser-sql-policy.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/index.js +91 -8
- package/dist/lib/adapters/postgres/index.js.map +3 -3
- package/dist/lib/adapters/postgres/postgres-parser-workaround.d.ts +8 -0
- package/dist/lib/adapters/postgres/postgres-parser-workaround.d.ts.map +1 -0
- package/dist/lib/adapters/posthog/index.js +18 -4
- package/dist/lib/adapters/posthog/index.js.map +2 -2
- package/dist/lib/adapters/posthog/posthog.d.ts +2 -1
- package/dist/lib/adapters/posthog/posthog.d.ts.map +1 -1
- package/dist/lib/adapters/posthog/types.d.ts +2 -0
- package/dist/lib/adapters/posthog/types.d.ts.map +1 -1
- package/dist/lib/adapters/spreadsheet/index.js +91 -8
- package/dist/lib/adapters/spreadsheet/index.js.map +3 -3
- package/dist/lib/adapters/sqlite/index.js +91 -8
- package/dist/lib/adapters/sqlite/index.js.map +3 -3
- package/dist/lib/adapters/sqlserver/index.js +91 -8
- package/dist/lib/adapters/sqlserver/index.js.map +3 -3
- package/dist/lib/agents/question.agent.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/index.js.map +2 -2
- package/package.json +18 -19
|
@@ -120,6 +120,7 @@ export declare abstract class Adapter {
|
|
|
120
120
|
format(sql: string): string;
|
|
121
121
|
validate(sql: string): Promise<string | void>;
|
|
122
122
|
execute(sql: string): Promise<any[]>;
|
|
123
|
+
protected enforceExecutionPolicy(sql: string): Promise<string>;
|
|
123
124
|
abstract executeImpl(sql: string): Promise<any[]> | any[];
|
|
124
125
|
abstract validateImpl(sql: string): Promise<string | void> | string | void;
|
|
125
126
|
abstract runQuery<Row>(sql: string): Promise<Row[]> | Row[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAY3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAEzE,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB,EAAE,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1D,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACF,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;IAC9E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,EAAE,EAAE,MAAM,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAC7B,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,aAAa,GACb,SAAS,GACT,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,aAAa,CAAC;AAElB,MAAM,MAAM,yBAAyB,GACnC,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,yBAAyB,CAAC;IAChC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,iBAAiB,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AAE5C,8BAAsB,OAAO;;IAG3B;;OAEG;IACH,SAAS,aAAa,cAAc,EAAE,iBAAiB;IAIvD,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IAElC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAE1C;;;;;;;;OAQG;IACG,UAAU,CAAC,GAAG,mBAA2B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4B5E;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuOjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA+BrB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ7C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -398,7 +398,7 @@ var Adapter = class {
|
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
400
|
#decodeShellEscapes(sql) {
|
|
401
|
-
return sql.replace(/\\n/g, "\n").replace(/\\t/g, " ").replace(/\\([()
|
|
401
|
+
return sql.replace(/\\n/g, "\n").replace(/\\t/g, " ").replace(/\\([().*$])/g, "$1").replace(/\\(?=$)/gm, "");
|
|
402
402
|
}
|
|
403
403
|
#cachedAllowedEntities = null;
|
|
404
404
|
async #resolveScope() {
|
|
@@ -419,6 +419,9 @@ var Adapter = class {
|
|
|
419
419
|
return this.validateImpl(decoded);
|
|
420
420
|
}
|
|
421
421
|
async execute(sql) {
|
|
422
|
+
return this.executeImpl(await this.enforceExecutionPolicy(sql));
|
|
423
|
+
}
|
|
424
|
+
async enforceExecutionPolicy(sql) {
|
|
422
425
|
const decoded = this.#decodeShellEscapes(sql);
|
|
423
426
|
const violation = await this.#analyzePolicy(decoded);
|
|
424
427
|
if (violation?.kind === "read-only") {
|
|
@@ -427,7 +430,7 @@ var Adapter = class {
|
|
|
427
430
|
if (violation?.kind === "scope") {
|
|
428
431
|
throw new SQLScopeError(violation.payload);
|
|
429
432
|
}
|
|
430
|
-
return
|
|
433
|
+
return decoded;
|
|
431
434
|
}
|
|
432
435
|
/**
|
|
433
436
|
* Convert unknown database value to number.
|
|
@@ -814,6 +817,71 @@ function buildScopeParseErrorPayload(sql, parserDialect, error) {
|
|
|
814
817
|
};
|
|
815
818
|
}
|
|
816
819
|
|
|
820
|
+
// packages/text2sql/src/lib/adapters/postgres/postgres-parser-workaround.ts
|
|
821
|
+
var TYPE_BEFORE_LITERAL = /(?<type>(?:pg_catalog\.)?[A-Za-z_][A-Za-z0-9_$]*(?:\s+(?:varying|precision))?(?:\s*\(\s*\d+(?:\s*,\s*\d+)?\s*\))?(?:\s+(?:with|without)\s+time\s+zone)?)\s*$/i;
|
|
822
|
+
var TIME_ZONE_SUFFIX = /^\s+time\s+zone\s+/i;
|
|
823
|
+
var TIME_BEFORE_SUFFIX = /(?<type>time(?:stamp)?(?:\s*\(\s*\d+\s*\))?)\s+(?<qualifier>with|without)$/i;
|
|
824
|
+
function recoverPostgresTypedLiteralParserGap(sql, error) {
|
|
825
|
+
const errorOffset = parserErrorOffset(error);
|
|
826
|
+
if (errorOffset === null) return null;
|
|
827
|
+
const prefix = sql.slice(0, errorOffset);
|
|
828
|
+
let literalStart = errorOffset;
|
|
829
|
+
let literalEnd = findLiteralEnd(sql, literalStart);
|
|
830
|
+
let typeMatch = TYPE_BEFORE_LITERAL.exec(prefix);
|
|
831
|
+
let type = typeMatch?.groups?.type;
|
|
832
|
+
if (literalEnd === null) {
|
|
833
|
+
const suffixMatch = TIME_ZONE_SUFFIX.exec(sql.slice(errorOffset));
|
|
834
|
+
typeMatch = TIME_BEFORE_SUFFIX.exec(prefix);
|
|
835
|
+
type = typeMatch?.groups?.type && typeMatch.groups.qualifier && suffixMatch ? `${typeMatch.groups.type} ${typeMatch.groups.qualifier} TIME ZONE` : void 0;
|
|
836
|
+
literalStart = errorOffset + (suffixMatch?.[0].length ?? 0);
|
|
837
|
+
literalEnd = findLiteralEnd(sql, literalStart);
|
|
838
|
+
}
|
|
839
|
+
if (!type || typeMatch?.index === void 0 || literalEnd === null)
|
|
840
|
+
return null;
|
|
841
|
+
return prefix.slice(0, typeMatch.index) + `CAST(${sql.slice(literalStart, literalEnd)} AS ${parserType(type)})` + sql.slice(literalEnd);
|
|
842
|
+
}
|
|
843
|
+
function parserErrorOffset(error) {
|
|
844
|
+
if (typeof error !== "object" || error === null) return null;
|
|
845
|
+
const location = Reflect.get(error, "location");
|
|
846
|
+
if (typeof location !== "object" || location === null) return null;
|
|
847
|
+
const start = Reflect.get(location, "start");
|
|
848
|
+
if (typeof start !== "object" || start === null) return null;
|
|
849
|
+
const offset = Reflect.get(start, "offset");
|
|
850
|
+
return typeof offset === "number" ? offset : null;
|
|
851
|
+
}
|
|
852
|
+
function findLiteralEnd(sql, start) {
|
|
853
|
+
if (sql[start] !== "'") {
|
|
854
|
+
const delimiter = /^\$(?:[A-Za-z_][A-Za-z0-9_]*)?\$/.exec(
|
|
855
|
+
sql.slice(start)
|
|
856
|
+
)?.[0];
|
|
857
|
+
if (!delimiter) return null;
|
|
858
|
+
const end = sql.indexOf(delimiter, start + delimiter.length);
|
|
859
|
+
return end === -1 ? null : end + delimiter.length;
|
|
860
|
+
}
|
|
861
|
+
let offset = start + 1;
|
|
862
|
+
while (offset < sql.length) {
|
|
863
|
+
if (sql[offset] === "\\") {
|
|
864
|
+
offset += 2;
|
|
865
|
+
continue;
|
|
866
|
+
}
|
|
867
|
+
if (sql[offset] !== "'") {
|
|
868
|
+
offset++;
|
|
869
|
+
continue;
|
|
870
|
+
}
|
|
871
|
+
if (sql[offset + 1] === "'") {
|
|
872
|
+
offset += 2;
|
|
873
|
+
continue;
|
|
874
|
+
}
|
|
875
|
+
return offset + 1;
|
|
876
|
+
}
|
|
877
|
+
return null;
|
|
878
|
+
}
|
|
879
|
+
function parserType(type) {
|
|
880
|
+
const unqualified = type.replace(/^pg_catalog\./i, "");
|
|
881
|
+
const timetz = /^timetz(\s*\([^)]*\))?$/i.exec(unqualified);
|
|
882
|
+
return timetz ? `TIME${timetz[1] ?? ""} WITH TIME ZONE` : unqualified;
|
|
883
|
+
}
|
|
884
|
+
|
|
817
885
|
// packages/text2sql/src/lib/adapters/parser-sql-policy.ts
|
|
818
886
|
var READ_ONLY_MESSAGE = "only SELECT or WITH queries allowed";
|
|
819
887
|
var { Parser } = nodeSqlParser;
|
|
@@ -838,7 +906,7 @@ var ParserSqlPolicyAnalyzer = class {
|
|
|
838
906
|
#readParsedStatements(sql) {
|
|
839
907
|
for (const dialect of this.dialects) {
|
|
840
908
|
try {
|
|
841
|
-
return parseStatements(sql, dialect);
|
|
909
|
+
return this.#parseStatements(sql, dialect);
|
|
842
910
|
} catch {
|
|
843
911
|
}
|
|
844
912
|
}
|
|
@@ -850,7 +918,7 @@ var ParserSqlPolicyAnalyzer = class {
|
|
|
850
918
|
let lastDialect = this.dialects[0];
|
|
851
919
|
for (const dialect of this.dialects) {
|
|
852
920
|
try {
|
|
853
|
-
references = extractBaseEntityReferences(sql, dialect);
|
|
921
|
+
references = extractBaseEntityReferences(this.#parseAst(sql, dialect));
|
|
854
922
|
break;
|
|
855
923
|
} catch (error) {
|
|
856
924
|
lastDialect = dialect;
|
|
@@ -885,9 +953,25 @@ var ParserSqlPolicyAnalyzer = class {
|
|
|
885
953
|
});
|
|
886
954
|
return outOfScope.length === 0 ? null : buildOutOfScopePayload(sql, outOfScope, [...allowedEntities]);
|
|
887
955
|
}
|
|
956
|
+
#parseStatements(sql, dialect) {
|
|
957
|
+
return parseStatements(this.#parseAst(sql, dialect));
|
|
958
|
+
}
|
|
959
|
+
#parseAst(sql, dialect) {
|
|
960
|
+
let parserSql = sql;
|
|
961
|
+
const attempted = /* @__PURE__ */ new Set([sql]);
|
|
962
|
+
while (true) {
|
|
963
|
+
try {
|
|
964
|
+
return parser.astify(parserSql, { database: dialect });
|
|
965
|
+
} catch (error) {
|
|
966
|
+
const recovered = dialect === "postgresql" ? recoverPostgresTypedLiteralParserGap(parserSql, error) : null;
|
|
967
|
+
if (!recovered || attempted.has(recovered)) throw error;
|
|
968
|
+
attempted.add(recovered);
|
|
969
|
+
parserSql = recovered;
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
}
|
|
888
973
|
};
|
|
889
|
-
function parseStatements(
|
|
890
|
-
const ast = parser.astify(sql, { database: dialect });
|
|
974
|
+
function parseStatements(ast) {
|
|
891
975
|
const statements = Array.isArray(ast) ? ast : [ast];
|
|
892
976
|
return statements.filter(isAstLike);
|
|
893
977
|
}
|
|
@@ -944,8 +1028,7 @@ function appendIdentifierParts(parts, value) {
|
|
|
944
1028
|
...value.toLowerCase().split(".").filter((part) => part.length > 0)
|
|
945
1029
|
);
|
|
946
1030
|
}
|
|
947
|
-
function extractBaseEntityReferences(
|
|
948
|
-
const ast = parser.astify(sql, { database: dialect });
|
|
1031
|
+
function extractBaseEntityReferences(ast) {
|
|
949
1032
|
const state = {
|
|
950
1033
|
cteNames: /* @__PURE__ */ new Set(),
|
|
951
1034
|
references: /* @__PURE__ */ new Map()
|