@deepagents/text2sql 0.36.0 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +46 -5
  2. package/dist/index.d.ts +4 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +404 -727
  5. package/dist/index.js.map +4 -4
  6. package/dist/lib/adapter-name.d.ts +4 -0
  7. package/dist/lib/adapter-name.d.ts.map +1 -0
  8. package/dist/lib/adapters/adapter.d.ts.map +1 -1
  9. package/dist/lib/adapters/bigquery/index.js +35 -6
  10. package/dist/lib/adapters/bigquery/index.js.map +2 -2
  11. package/dist/lib/adapters/mysql/index.js +35 -6
  12. package/dist/lib/adapters/mysql/index.js.map +2 -2
  13. package/dist/lib/adapters/postgres/index.js +35 -6
  14. package/dist/lib/adapters/postgres/index.js.map +2 -2
  15. package/dist/lib/adapters/spreadsheet/index.js +35 -6
  16. package/dist/lib/adapters/spreadsheet/index.js.map +2 -2
  17. package/dist/lib/adapters/sqlite/index.js +35 -6
  18. package/dist/lib/adapters/sqlite/index.js.map +2 -2
  19. package/dist/lib/adapters/sqlserver/index.js +35 -6
  20. package/dist/lib/adapters/sqlserver/index.js.map +2 -2
  21. package/dist/lib/agents/exceptions.d.ts +9 -0
  22. package/dist/lib/agents/exceptions.d.ts.map +1 -1
  23. package/dist/lib/agents/sql-command.d.ts +11 -0
  24. package/dist/lib/agents/sql-command.d.ts.map +1 -0
  25. package/dist/lib/agents/sql-transform-plugins.d.ts +4 -1
  26. package/dist/lib/agents/sql-transform-plugins.d.ts.map +1 -1
  27. package/dist/lib/demo.d.ts +2 -0
  28. package/dist/lib/demo.d.ts.map +1 -0
  29. package/dist/lib/fs/index.d.ts +0 -1
  30. package/dist/lib/fs/index.d.ts.map +1 -1
  31. package/dist/lib/instructions.d.ts.map +1 -1
  32. package/dist/lib/sandbox.d.ts +21 -0
  33. package/dist/lib/sandbox.d.ts.map +1 -0
  34. package/dist/lib/sql.d.ts +23 -37
  35. package/dist/lib/sql.d.ts.map +1 -1
  36. package/dist/lib/synthesis/index.js +12 -0
  37. package/dist/lib/synthesis/index.js.map +2 -2
  38. package/package.json +7 -7
  39. package/dist/lib/agents/explainer.agent.d.ts +0 -7
  40. package/dist/lib/agents/explainer.agent.d.ts.map +0 -1
  41. package/dist/lib/agents/result-tools.d.ts +0 -69
  42. package/dist/lib/agents/result-tools.d.ts.map +0 -1
  43. package/dist/lib/fs/tracked-fs.d.ts +0 -42
  44. package/dist/lib/fs/tracked-fs.d.ts.map +0 -1
@@ -1,6 +1,7 @@
1
1
  declare const sqlValidationMarker: unique symbol;
2
2
  declare const unanswerableSqlMarker: unique symbol;
3
3
  declare const sqlScopeMarker: unique symbol;
4
+ declare const sqlReadOnlyMarker: unique symbol;
4
5
  export type SQLScopeErrorType = 'OUT_OF_SCOPE' | 'SQL_SCOPE_PARSE_ERROR';
5
6
  export interface SQLScopeErrorPayload {
6
7
  error: string;
@@ -38,5 +39,13 @@ export declare class SQLScopeError extends Error {
38
39
  constructor(payload: SQLScopeErrorPayload);
39
40
  static isInstance(error: unknown): error is SQLScopeError;
40
41
  }
42
+ /**
43
+ * Error thrown when a query is not read-only (does not start with SELECT or WITH).
44
+ */
45
+ export declare class SQLReadOnlyError extends Error {
46
+ [sqlReadOnlyMarker]: true;
47
+ constructor(message: string);
48
+ static isInstance(error: unknown): error is SQLReadOnlyError;
49
+ }
41
50
  export {};
42
51
  //# sourceMappingURL=exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/exceptions.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,mBAAmB,eAA+B,CAAC;AACzD,QAAA,MAAM,qBAAqB,eAAiC,CAAC;AAC7D,QAAA,MAAM,cAAc,eAA0B,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,uBAAuB,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC;gBAEhB,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAK/D;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;gBAElB,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB;CAMjE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE1B,OAAO,EAAE,oBAAoB;IAQzC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa;CAG1D"}
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/exceptions.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,mBAAmB,eAA+B,CAAC;AACzD,QAAA,MAAM,qBAAqB,eAAiC,CAAC;AAC7D,QAAA,MAAM,cAAc,eAA0B,CAAC;AAC/C,QAAA,MAAM,iBAAiB,eAA6B,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,uBAAuB,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC;gBAEhB,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAK/D;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;gBAElB,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB;CAMjE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE1B,OAAO,EAAE,oBAAoB;IAQzC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa;CAG1D;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;gBAEd,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB;CAK7D"}
@@ -0,0 +1,11 @@
1
+ import type { Adapter } from '../adapters/adapter.ts';
2
+ export interface SqlCommandOptions {
3
+ /** Directory under which `sql run` writes result JSON files. Default: `/sql`. */
4
+ outputDir?: string;
5
+ }
6
+ export declare function createSqlCommand(adapters: Record<string, Adapter>, { outputDir }?: SqlCommandOptions): {
7
+ command: import("@deepagents/context").ExtensionCommand;
8
+ repair: (raw: string) => string;
9
+ };
10
+ export type { SqlCommandOptions as CreateSqlCommandOptions };
11
+ //# sourceMappingURL=sql-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-command.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/sql-command.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKtD,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,EAAE,SAAkB,EAAE,GAAE,iBAAsB;;;EA+G/C;AAED,YAAY,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,CAAC"}
@@ -1,6 +1,9 @@
1
+ import type { CommandResult } from 'bash-tool';
1
2
  import type { TransformContext, TransformPlugin, TransformResult } from 'just-bash';
2
- export declare class SqlProxyViolationError extends Error {
3
+ import { BashException } from '@deepagents/context';
4
+ export declare class SqlProxyViolationError extends BashException {
3
5
  constructor();
6
+ format(): CommandResult;
4
7
  }
5
8
  export interface SqlProxyEnforcementMetadata {
6
9
  inspected: true;
@@ -1 +1 @@
1
- {"version":3,"file":"sql-transform-plugins.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/sql-transform-plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAChB,eAAe,EACf,eAAe,EAEhB,MAAM,WAAW,CAAC;AA0FnB,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAoyBD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,yBAA0B,YAAW,eAAe,CAAC,2BAA2B,CAAC;IAC5F,IAAI,SAA2B;IAE/B,SAAS,CACP,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAAC,2BAA2B,CAAC;CAehD;AA+BD,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AA6HD,qBAAa,wBAAyB,YAAW,eAAe,CAAC,0BAA0B,CAAC;IAC1F,IAAI,SAA0B;IAE9B,SAAS,CACP,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAAC,0BAA0B,CAAC;CAK/C"}
1
+ {"version":3,"file":"sql-transform-plugins.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/sql-transform-plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAGV,gBAAgB,EAChB,eAAe,EACf,eAAe,EAEhB,MAAM,WAAW,CAAC;AAKnB,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAwCtE,qBAAa,sBAAuB,SAAQ,aAAa;;IAMvD,MAAM,IAAI,aAAa;CAGxB;AAoyBD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,yBAA0B,YAAW,eAAe,CAAC,2BAA2B,CAAC;IAC5F,IAAI,SAA2B;IAE/B,SAAS,CACP,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAAC,2BAA2B,CAAC;CAehD;AA+BD,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AAiID,qBAAa,wBAAyB,YAAW,eAAe,CAAC,0BAA0B,CAAC;IAC1F,IAAI,SAA0B;IAE9B,SAAS,CACP,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAAC,0BAA0B,CAAC;CAK/C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/lib/demo.ts"],"names":[],"mappings":""}
@@ -2,5 +2,4 @@ export * from './sqlite/sqlite-fs.ts';
2
2
  export * from './mssql/mssql-fs.ts';
3
3
  export * from './postgres/postgres-fs.ts';
4
4
  export * from './scoped-fs.ts';
5
- export * from './tracked-fs.ts';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/fs/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/fs/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/lib/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EAYrB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,UAAU,IAAI,eAAe,EAAE,CA4T9C"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/lib/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EAYrB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,UAAU,IAAI,eAAe,EAAE,CA8T9C"}
@@ -0,0 +1,21 @@
1
+ import type { SandboxExtension } from '@deepagents/context';
2
+ import type { Adapter } from './adapters/adapter.ts';
3
+ import { type SqlCommandOptions } from './agents/sql-command.ts';
4
+ export interface SqlSandboxExtensionOptions extends SqlCommandOptions {
5
+ }
6
+ /**
7
+ * Returns the SQL subcommand, transform plugins, and argument-repair hook as
8
+ * a composable {@link SandboxExtension}. Pass it via `hostExtensions` to
9
+ * `createRoutingSandbox`, layered over whichever backend you're using
10
+ * (`createVirtualSandbox`, `createDockerSandbox`, etc.).
11
+ *
12
+ * The LLM routes queries to a specific database via a positional name:
13
+ * `sql run <db> "SELECT ..."` / `sql validate <db> "SELECT ..."`.
14
+ *
15
+ * @param adapters Named map of database adapters. Keys must match
16
+ * `/^[A-Za-z_][A-Za-z0-9_]*$/` and are used as the `<db>` argument.
17
+ * @param options `outputDir` overrides where `sql run` writes result files
18
+ * (default `/sql`). Useful on backends where `/` is not writable.
19
+ */
20
+ export declare function sqlSandboxExtension(adapters: Record<string, Adapter>, options?: SqlSandboxExtensionOptions): SandboxExtension;
21
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/lib/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;CAAG;AAExE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,CAYlB"}
package/dist/lib/sql.d.ts CHANGED
@@ -1,47 +1,33 @@
1
- import { type StreamTextTransform, type Tool, type ToolSet } from 'ai';
2
- import { type IFileSystem } from 'just-bash';
1
+ import type { StreamTextTransform, Tool, ToolSet } from 'ai';
3
2
  import { type AgentModel } from '@deepagents/agent';
4
- import { type ChatMessage, ContextEngine, type ContextFragment } from '@deepagents/context';
3
+ import { type AgentSandbox, type ChatMessage, ContextEngine, type ContextFragment } from '@deepagents/context';
5
4
  import type { Adapter } from './adapters/adapter.ts';
6
5
  import { type ExtractedPair, type PairProducer } from './synthesis/types.ts';
7
6
  export type RenderingTools = Record<string, Tool<unknown, never>>;
7
+ export interface Text2SqlConfig {
8
+ adapters: Record<string, Adapter>;
9
+ sandbox: AgentSandbox;
10
+ context: (...fragments: ContextFragment[]) => ContextEngine;
11
+ version: string;
12
+ tools?: RenderingTools;
13
+ model: AgentModel;
14
+ transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
15
+ }
16
+ /**
17
+ * Text2Sql — the caller owns the sandbox. Build one by passing
18
+ * `hostExtensions: [sqlSandboxExtension({ main: adapter }), ...yourOwnExtensions]`
19
+ * to `createRoutingSandbox`, layered over whichever backend you want
20
+ * (virtual, Docker, Agent OS), then wrap with `createBashTool`. For file
21
+ * event tracking, wrap the fs in `ObservedFs` before passing to the
22
+ * backend and attach `drainFileEvents: () => observed.drain()` to the
23
+ * resulting sandbox.
24
+ */
8
25
  export declare class Text2Sql {
9
26
  #private;
10
- constructor(config: {
11
- adapter: Adapter;
12
- context: (...fragments: ContextFragment[]) => ContextEngine;
13
- version: string;
14
- tools?: RenderingTools;
15
- model: AgentModel;
16
- transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
17
- filesystem: IFileSystem;
18
- });
19
- toSql(input: string): Promise<string>;
20
- /**
21
- * Introspect the database schema and return context fragments.
22
- * Results are cached to avoid repeated introspection.
23
- */
27
+ constructor(config: Text2SqlConfig);
28
+ toSql(input: string, adapterName: string): Promise<string>;
24
29
  index(): Promise<ContextFragment[]>;
25
- /**
26
- * Generate training data pairs using a producer factory.
27
- * The factory receives the configured adapter, so users don't need to pass it manually.
28
- *
29
- * @example
30
- * // Generate questions for existing SQL
31
- * const pairs = await text2sql.toPairs(
32
- * (adapter) => new SqlExtractor(sqls, adapter, { validateSql: true })
33
- * );
34
- *
35
- * @example
36
- * // Extract from chat history with validation
37
- * const pairs = await text2sql.toPairs(
38
- * (adapter) => new ValidatedProducer(
39
- * new MessageExtractor(messages),
40
- * adapter
41
- * )
42
- * );
43
- */
44
- toPairs<T extends PairProducer>(factory: (adapter: Adapter) => T): Promise<ExtractedPair[]>;
30
+ toPairs<T extends PairProducer>(adapterName: string, factory: (adapter: Adapter) => T): Promise<ExtractedPair[]>;
45
31
  chat(messages: ChatMessage[], options?: {
46
32
  abortSignal?: AbortSignal;
47
33
  generateTitle?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,IAAI,EAET,KAAK,OAAO,EAGb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,eAAe,EAQrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAElE,qBAAa,QAAQ;;gBAWP,MAAM,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,KAAK,aAAa,CAAC;QAC5D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,KAAK,EAAE,UAAU,CAAC;QAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,UAAU,EAAE,WAAW,CAAC;KACzB;IAcY,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlD;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAUhD;;;;;;;;;;;;;;;;;;OAkBG;IACU,OAAO,CAAC,CAAC,SAAS,YAAY,EACzC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC;IAKd,IAAI,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE;CA6InE"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,eAAe,EAKrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,eAAe,EAAE,KAAK,aAAa,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3E;AAED;;;;;;;;GAQG;AACH,qBAAa,QAAQ;;gBAMP,MAAM,EAAE,cAAc;IA6BrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D,KAAK,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAmCnC,OAAO,CAAC,CAAC,SAAS,YAAY,EACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC;IAMd,IAAI,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE;CA2BnE"}
@@ -920,6 +920,7 @@ import {
920
920
  var sqlValidationMarker = Symbol("SQLValidationError");
921
921
  var unanswerableSqlMarker = Symbol("UnanswerableSQLError");
922
922
  var sqlScopeMarker = Symbol("SQLScopeError");
923
+ var sqlReadOnlyMarker = Symbol("SQLReadOnlyError");
923
924
  var SQLValidationError = class _SQLValidationError extends Error {
924
925
  [sqlValidationMarker];
925
926
  constructor(message) {
@@ -957,6 +958,17 @@ var SQLScopeError = class _SQLScopeError extends Error {
957
958
  return error instanceof _SQLScopeError && error[sqlScopeMarker] === true;
958
959
  }
959
960
  };
961
+ var SQLReadOnlyError = class _SQLReadOnlyError extends Error {
962
+ [sqlReadOnlyMarker];
963
+ constructor(message) {
964
+ super(message);
965
+ this.name = "SQLReadOnlyError";
966
+ this[sqlReadOnlyMarker] = true;
967
+ }
968
+ static isInstance(error) {
969
+ return error instanceof _SQLReadOnlyError && error[sqlReadOnlyMarker] === true;
970
+ }
971
+ };
960
972
 
961
973
  // packages/text2sql/src/lib/agents/sql.agent.ts
962
974
  import { groq as groq5 } from "@ai-sdk/groq";