@deepagents/text2sql 0.39.0 → 1.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.
Files changed (39) hide show
  1. package/README.md +130 -73
  2. package/dist/bin/sql.js +699 -0
  3. package/dist/index.d.ts +2 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +3376 -3309
  6. package/dist/index.js.map +4 -4
  7. package/dist/lib/adapter-index.d.ts +35 -0
  8. package/dist/lib/adapter-index.d.ts.map +1 -0
  9. package/dist/lib/agents/question.agent.d.ts.map +1 -1
  10. package/dist/lib/agents/sql-transform-plugins.d.ts +3 -3
  11. package/dist/lib/agents/sql-transform-plugins.d.ts.map +1 -1
  12. package/dist/lib/agents/sql.agent.d.ts.map +1 -1
  13. package/dist/lib/instructions.d.ts +1 -1
  14. package/dist/lib/instructions.d.ts.map +1 -1
  15. package/dist/lib/sql-hooks.d.ts +15 -0
  16. package/dist/lib/sql-hooks.d.ts.map +1 -0
  17. package/dist/lib/sql-meta-hook.d.ts +20 -0
  18. package/dist/lib/sql-meta-hook.d.ts.map +1 -0
  19. package/dist/lib/sql-repair.d.ts +2 -0
  20. package/dist/lib/sql-repair.d.ts.map +1 -0
  21. package/dist/lib/sql-transform.d.ts +2 -0
  22. package/dist/lib/sql-transform.d.ts.map +1 -0
  23. package/dist/lib/sql.d.ts +5 -38
  24. package/dist/lib/sql.d.ts.map +1 -1
  25. package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
  26. package/dist/lib/synthesis/extractors/segmented-context-extractor.d.ts.map +1 -1
  27. package/dist/lib/synthesis/extractors/sql-extractor.d.ts.map +1 -1
  28. package/dist/lib/synthesis/index.js +59 -2
  29. package/dist/lib/synthesis/index.js.map +4 -4
  30. package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts.map +1 -1
  31. package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -1
  32. package/dist/lib/synthesis/synthesizers/persona-generator.d.ts.map +1 -1
  33. package/package.json +8 -4
  34. package/dist/lib/agents/sql-command.d.ts +0 -11
  35. package/dist/lib/agents/sql-command.d.ts.map +0 -1
  36. package/dist/lib/demo.d.ts +0 -2
  37. package/dist/lib/demo.d.ts.map +0 -1
  38. package/dist/lib/sandbox.d.ts +0 -21
  39. package/dist/lib/sandbox.d.ts.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { type ContextFragment } from '@deepagents/context';
2
+ import { type Adapter, type IntrospectionPhase } from './adapters/adapter.ts';
3
+ export declare const TEXT2SQL_INDEX_PROGRESS_CHUNK = "data-text2sql-index-progress";
4
+ export type Text2SqlIndexProgressEventType = 'index:start' | 'index:end' | 'adapter:start' | 'adapter:end' | 'adapter:cache-hit' | 'adapter:cache-miss' | 'phase:start' | 'phase:progress' | 'phase:end' | 'adapter:error' | 'index:error';
5
+ export interface Text2SqlIndexProgressEvent {
6
+ type: Text2SqlIndexProgressEventType;
7
+ adapter?: string;
8
+ phase?: IntrospectionPhase;
9
+ table?: string;
10
+ message: string;
11
+ current?: number;
12
+ total?: number;
13
+ cached?: boolean;
14
+ timestampMs?: number;
15
+ }
16
+ export type Text2SqlIndexProgressHandler = (event: Text2SqlIndexProgressEvent) => void;
17
+ export interface AdapterIndexerOptions {
18
+ adapters: Record<string, Adapter>;
19
+ version?: string;
20
+ cacheKey?: (adapterName: string) => string | undefined;
21
+ }
22
+ export interface AdapterIndexerIndexOptions {
23
+ adapterNames?: readonly string[];
24
+ onProgress?: Text2SqlIndexProgressHandler;
25
+ }
26
+ export interface AdapterIndexerAdapterOptions {
27
+ onProgress?: Text2SqlIndexProgressHandler;
28
+ }
29
+ export declare class AdapterIndexer {
30
+ #private;
31
+ constructor(options: AdapterIndexerOptions);
32
+ index(options?: AdapterIndexerIndexOptions): Promise<ContextFragment[]>;
33
+ indexAdapter(name: string, options?: AdapterIndexerAdapterOptions): Promise<ContextFragment[]>;
34
+ }
35
+ //# sourceMappingURL=adapter-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-index.d.ts","sourceRoot":"","sources":["../../src/lib/adapter-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAE5E,MAAM,MAAM,8BAA8B,GACtC,aAAa,GACb,WAAW,GACX,eAAe,GACf,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,eAAe,GACf,aAAa,CAAC;AAElB,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,4BAA4B,GAAG,CACzC,KAAK,EAAE,0BAA0B,KAC9B,IAAI,CAAC;AAEV,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAgBD,qBAAa,cAAc;;gBAKb,OAAO,EAAE,qBAAqB;IAYpC,KAAK,CACT,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,eAAe,EAAE,CAAC;IA+CvB,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,eAAe,EAAE,CAAC;CAiH9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"question.agent.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/question.agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,UAAU,GACV,SAAS,GACT,cAAc,CAAC;AAgDnB,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,UAAU,EAAE,kBAAkB,CAAC;IAC/B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CA6DlC"}
1
+ {"version":3,"file":"question.agent.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/question.agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAYpD,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,UAAU,GACV,SAAS,GACT,cAAc,CAAC;AAgDnB,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,UAAU,EAAE,kBAAkB,CAAC;IAC/B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CA6DlC"}
@@ -12,11 +12,11 @@ export declare class SqlProxyEnforcementPlugin implements TransformPlugin<SqlPro
12
12
  name: string;
13
13
  transform(context: TransformContext): TransformResult<SqlProxyEnforcementMetadata>;
14
14
  }
15
- export interface SqlBacktickRewriteMetadata {
15
+ export interface SqlCommandRewriteMetadata {
16
16
  rewritten: boolean;
17
17
  }
18
- export declare class SqlBacktickRewritePlugin implements TransformPlugin<SqlBacktickRewriteMetadata> {
18
+ export declare class SqlCommandRewritePlugin implements TransformPlugin<SqlCommandRewriteMetadata> {
19
19
  name: string;
20
- transform(context: TransformContext): TransformResult<SqlBacktickRewriteMetadata>;
20
+ transform(context: TransformContext): TransformResult<SqlCommandRewriteMetadata>;
21
21
  }
22
22
  //# sourceMappingURL=sql-transform-plugins.d.ts.map
@@ -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,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"}
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;AA8BD,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;CACpB;AA8JD,qBAAa,uBAAwB,YAAW,eAAe,CAAC,yBAAyB,CAAC;IACxF,IAAI,SAAyB;IAE7B,SAAS,CACP,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAAC,yBAAyB,CAAC;CAK9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql.agent.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/sql.agent.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA+ND,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmJvE"}
1
+ {"version":3,"file":"sql.agent.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/sql.agent.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAOtD,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA+PD,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsKvE"}
@@ -1,3 +1,3 @@
1
1
  import { type ContextFragment } from '@deepagents/context';
2
- export declare function guidelines(): ContextFragment[];
2
+ export declare function instructions(): ContextFragment[];
3
3
  //# sourceMappingURL=instructions.d.ts.map
@@ -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,CA8T9C"}
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,YAAY,IAAI,eAAe,EAAE,CAmUhD"}
@@ -0,0 +1,15 @@
1
+ import { type CreateSqlMetaHookOptions } from './sql-meta-hook.ts';
2
+ export { createSqlMetaHook } from './sql-meta-hook.ts';
3
+ export type { CreateSqlMetaHookOptions, SqlCommandFormatter, } from './sql-meta-hook.ts';
4
+ export { repairSqlCommand } from './sql-repair.ts';
5
+ export { transformSqlCommand } from './sql-transform.ts';
6
+ export type CreateSqlCommandHooksOptions = CreateSqlMetaHookOptions;
7
+ export declare function createSqlCommandHooks({ adapters, }: CreateSqlCommandHooksOptions): {
8
+ onBeforeBashCall: ({ command }: {
9
+ command: string;
10
+ }) => {
11
+ command: string;
12
+ };
13
+ onAfterBashCall: ({ command }: import("./sql-meta-hook.ts").SqlMetaAfterHookInput) => undefined;
14
+ };
15
+ //# sourceMappingURL=sql-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/sql-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EACV,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,GACT,EAAE,4BAA4B;oCAIK;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;EAQtD"}
@@ -0,0 +1,20 @@
1
+ import type { CommandResult } from 'bash-tool';
2
+ export interface SqlCommandFormatter {
3
+ format(sql: string): string;
4
+ }
5
+ export interface CreateSqlMetaHookOptions {
6
+ adapters: Record<string, SqlCommandFormatter>;
7
+ }
8
+ export interface SqlMetaTrackInput {
9
+ repaired: string;
10
+ transformed: string;
11
+ }
12
+ export interface SqlMetaAfterHookInput {
13
+ command: string;
14
+ result: CommandResult;
15
+ }
16
+ export declare function createSqlMetaHook({ adapters }: CreateSqlMetaHookOptions): {
17
+ track({ repaired, transformed }: SqlMetaTrackInput): void;
18
+ onAfterBashCall({ command }: SqlMetaAfterHookInput): undefined;
19
+ };
20
+ //# sourceMappingURL=sql-meta-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-meta-hook.d.ts","sourceRoot":"","sources":["../../src/lib/sql-meta-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS/C,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB;AAUD,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,wBAAwB;qCAInC,iBAAiB,GAAG,IAAI;iCAQ5B,qBAAqB;EAwBrD"}
@@ -0,0 +1,2 @@
1
+ export declare function repairSqlCommand(command: string): string;
2
+ //# sourceMappingURL=sql-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-repair.d.ts","sourceRoot":"","sources":["../../src/lib/sql-repair.ts"],"names":[],"mappings":"AAsCA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,2 @@
1
+ export declare function transformSqlCommand(command: string): string;
2
+ //# sourceMappingURL=sql-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-transform.d.ts","sourceRoot":"","sources":["../../src/lib/sql-transform.ts"],"names":[],"mappings":"AAYA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS3D"}
package/dist/lib/sql.d.ts CHANGED
@@ -1,54 +1,21 @@
1
- import { type StreamTextTransform, type Tool, type ToolSet } from 'ai';
2
1
  import { type AgentModel } from '@deepagents/agent';
3
- import { type AgentSandbox, ContextEngine, type ContextFragment } from '@deepagents/context';
4
- import { type Adapter, type IntrospectionPhase } from './adapters/adapter.ts';
2
+ import { type Adapter } from './adapters/adapter.ts';
5
3
  import { type ExtractedPair, type PairProducer } from './synthesis/types.ts';
6
- export type RenderingTools = Record<string, Tool<unknown, never>>;
7
- export declare const TEXT2SQL_INDEX_PROGRESS_CHUNK: "data-text2sql-index-progress";
8
- export type Text2SqlIndexProgressEventType = 'index:start' | 'index:end' | 'adapter:start' | 'adapter:end' | 'adapter:cache-hit' | 'adapter:cache-miss' | 'phase:start' | 'phase:progress' | 'phase:end' | 'adapter:error' | 'index:error';
9
- export interface Text2SqlIndexProgressEvent {
10
- type: Text2SqlIndexProgressEventType;
11
- adapter?: string;
12
- phase?: IntrospectionPhase;
13
- table?: string;
14
- message: string;
15
- current?: number;
16
- total?: number;
17
- cached?: boolean;
18
- timestampMs?: number;
19
- }
20
4
  export interface Text2SqlConfig {
21
5
  adapters: Record<string, Adapter>;
22
- sandbox: AgentSandbox;
23
- /**
24
- * Context engine driving the conversation. Text2Sql appends its
25
- * guidelines and index fragments to this engine before each chat turn.
26
- * The same engine instance must be used for `continue()` calls upstream.
27
- */
28
- context: ContextEngine;
29
6
  version: string;
30
- tools?: RenderingTools;
31
7
  model: AgentModel;
32
- transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
33
8
  }
34
9
  /**
35
- * Text2Sql — the caller owns the sandbox. Build one by passing
36
- * `hostExtensions: [sqlSandboxExtension({ main: adapter }), ...yourOwnExtensions]`
37
- * to `createRoutingSandbox`, layered over whichever backend you want
38
- * (virtual, Docker, Agent OS), then wrap with `createBashTool`. For file
39
- * event tracking, wrap the fs in `ObservedFs` before passing to the
40
- * backend and attach `drainFileEvents: () => observed.drain()` to the
41
- * resulting sandbox.
10
+ * Stateless `toSql` for one or more configured adapters.
11
+ * Build the streaming chat agent yourself with `agent` + `chat` from
12
+ * `@deepagents/context`, passing `instructions()` and fragments from
13
+ * `AdapterIndexer` into the engine.
42
14
  */
43
15
  export declare class Text2Sql {
44
16
  #private;
45
17
  constructor(config: Text2SqlConfig);
46
18
  toSql(input: string, adapterName: string): Promise<string>;
47
- index(): Promise<ContextFragment[]>;
48
19
  toPairs<T extends PairProducer>(adapterName: string, factory: (adapter: Adapter) => T): Promise<ExtractedPair[]>;
49
- chat(options?: {
50
- abortSignal?: AbortSignal;
51
- generateTitle?: boolean;
52
- }): Promise<ReadableStream<import("ai").InferUIMessageChunk<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>>>;
53
20
  }
54
21
  //# sourceMappingURL=sql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACT,KAAK,OAAO,EAEb,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,eAAe,EAKrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAK/B,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,eAAO,MAAM,6BAA6B,EACxC,8BAAuC,CAAC;AAE1C,MAAM,MAAM,8BAA8B,GACtC,aAAa,GACb,WAAW,GACX,eAAe,GACf,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,eAAe,GACf,aAAa,CAAC;AAElB,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,OAAO,EAAE,aAAa,CAAC;IACvB,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;IAgInC,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,CAAC,OAAO,CAAC,EAAE;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;CAyCF"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,QAAQ;;gBAIP,MAAM,EAAE,cAAc;IAsBrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D,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;CAK5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-contextual-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/base-contextual-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,IAAI,CAAC;AAa7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDhC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAGzD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,uBAAwB,SAAQ,YAAY;IAChE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAM;IACzC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;gBAGhD,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,8BAAmC;IAQ9C;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;IAyBjD;;OAEG;YACW,sBAAsB;IAmBpC;;OAEG;YACW,oBAAoB;IAsDlC;;OAEG;cACc,gBAAgB,CAC/B,aAAa,EAAE,MAAM,GACpB,cAAc,CAAC,aAAa,EAAE,CAAC;IAmBlC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM,EAAE;CAClD"}
1
+ {"version":3,"file":"base-contextual-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/base-contextual-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,IAAI,CAAC;AAc7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDhC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAGzD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,uBAAwB,SAAQ,YAAY;IAChE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAM;IACzC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;gBAGhD,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,8BAAmC;IAQ9C;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;IAyBjD;;OAEG;YACW,sBAAsB;IAmBpC;;OAEG;YACW,oBAAoB;IAsDlC;;OAEG;cACc,gBAAgB,CAC/B,aAAa,EAAE,MAAM,GACpB,cAAc,CAAC,aAAa,EAAE,CAAC;IAmBlC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM,EAAE;CAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"segmented-context-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/segmented-context-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAapC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EAGpC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAyE9E;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,SAAQ,uBAAuB;gBAElE,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,gCAAqC;IAKhD;;;;;;OAMG;cACa,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,EAAE;IAIxC;;;;;;OAMG;YACW,mBAAmB;CAWlC"}
1
+ {"version":3,"file":"segmented-context-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/segmented-context-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAcpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EAGpC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAyE9E;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,SAAQ,uBAAuB;gBAElE,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,gCAAqC;IAKhD;;;;;;OAMG;cACa,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,EAAE;IAIxC;;;;;;OAMG;YACW,mBAAmB;CAWlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/sql-extractor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;;IAK5C;;;;OAIG;gBAED,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EACtB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB;IAQnC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CA6ElD"}
1
+ {"version":3,"file":"sql-extractor.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/extractors/sql-extractor.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;;IAK5C;;;;OAIG;gBAED,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EACtB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB;IAQnC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CA6ElD"}
@@ -999,9 +999,34 @@ import {
999
999
  user as user5,
1000
1000
  workflow
1001
1001
  } from "@deepagents/context";
1002
+
1003
+ // packages/text2sql/src/lib/adapters/runtime-scope.ts
1004
+ import nodeSqlParser3 from "node-sql-parser";
1005
+ var { Parser: Parser3 } = nodeSqlParser3;
1006
+ var parser3 = new Parser3();
1007
+ function buildScopeParseErrorPayload(sql, dialect, error) {
1008
+ const parserError = error instanceof Error ? error.message : String(error ?? "Unknown error");
1009
+ return {
1010
+ error: `SQL scope analysis failed before validation/execution: ${parserError}`,
1011
+ error_type: "SQL_SCOPE_PARSE_ERROR",
1012
+ suggestion: "Rewrite the query into simpler SQL that can be analyzed safely, or extend parser coverage for this dialect feature.",
1013
+ sql_attempted: sql,
1014
+ parser_dialect: dialect,
1015
+ parser_error: parserError
1016
+ };
1017
+ }
1018
+
1019
+ // packages/text2sql/src/lib/agents/sql.agent.ts
1002
1020
  var RETRY_TEMPERATURES = [0, 0.2, 0.3];
1003
1021
  var SQL_AGENT_ROLE = "Expert SQL query generator.";
1004
1022
  var SQL_AGENT_OBJECTIVE = "Generate precise SQL grounded in provided schema.";
1023
+ var FORMATTER_SCOPE_DIALECTS = /* @__PURE__ */ new Map([
1024
+ ["sqlite", "sqlite"],
1025
+ ["postgresql", "postgresql"],
1026
+ ["bigquery", "bigquery"],
1027
+ ["transactsql", "transactsql"],
1028
+ ["mysql", "mysql"]
1029
+ ]);
1005
1030
  var SQL_AGENT_POLICIES = [
1006
1031
  fragment5(
1007
1032
  "schema_mapping",
@@ -1207,6 +1232,26 @@ function extractSql(output) {
1207
1232
  const match = output.match(/```sql\n?([\s\S]*?)```/);
1208
1233
  return match ? match[1].trim() : output.trim();
1209
1234
  }
1235
+ function scopeDialectFor(adapter) {
1236
+ const dialect = FORMATTER_SCOPE_DIALECTS.get(adapter.formatterLanguage);
1237
+ if (!dialect) {
1238
+ throw new TypeError(
1239
+ `No scope dialect mapping for formatter language "${adapter.formatterLanguage}".`
1240
+ );
1241
+ }
1242
+ return dialect;
1243
+ }
1244
+ function fencedMarkdownParseError(sql, adapter) {
1245
+ return new SQLValidationError(
1246
+ JSON.stringify(
1247
+ buildScopeParseErrorPayload(
1248
+ sql,
1249
+ scopeDialectFor(adapter),
1250
+ new Error("SQL response was fenced markdown, not executable SQL.")
1251
+ )
1252
+ )
1253
+ );
1254
+ }
1210
1255
  async function toSql(options) {
1211
1256
  const { maxRetries = 3 } = options;
1212
1257
  return withRetry(
@@ -1277,7 +1322,19 @@ Question: ${options.input}
1277
1322
  });
1278
1323
  const { result: output } = await sqlOutput.generate();
1279
1324
  const finalizeSql = async (rawSql) => {
1280
- const sql = options.adapter.format(extractSql(rawSql));
1325
+ const extractedSql = extractSql(rawSql);
1326
+ const errorsOrUndefined = errors.length ? errors.map(formatErrorMessage) : void 0;
1327
+ if (extractedSql === "") {
1328
+ return {
1329
+ attempts,
1330
+ sql: "",
1331
+ errors: errorsOrUndefined
1332
+ };
1333
+ }
1334
+ const sql = options.adapter.format(extractedSql);
1335
+ if (rawSql.trimStart().startsWith("```") && extractedSql === rawSql.trim()) {
1336
+ throw fencedMarkdownParseError(sql, options.adapter);
1337
+ }
1281
1338
  const validationError = await options.adapter.validate(sql);
1282
1339
  if (validationError) {
1283
1340
  throw new SQLValidationError(validationError);
@@ -1285,7 +1342,7 @@ Question: ${options.input}
1285
1342
  return {
1286
1343
  attempts,
1287
1344
  sql,
1288
- errors: errors.length ? errors.map(formatErrorMessage) : void 0
1345
+ errors: errorsOrUndefined
1289
1346
  };
1290
1347
  };
1291
1348
  if ("error" in output) {