@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
package/README.md CHANGED
@@ -26,8 +26,14 @@ import { groq } from '@ai-sdk/groq';
26
26
  import { InMemoryFs } from 'just-bash';
27
27
  import pg from 'pg';
28
28
 
29
- import { ContextEngine, InMemoryContextStore } from '@deepagents/context';
30
- import { Text2Sql } from '@deepagents/text2sql';
29
+ import {
30
+ ContextEngine,
31
+ InMemoryContextStore,
32
+ createBashTool,
33
+ createRoutingSandbox,
34
+ createVirtualSandbox,
35
+ } from '@deepagents/context';
36
+ import { Text2Sql, sqlSandboxExtension } from '@deepagents/text2sql';
31
37
  import {
32
38
  Postgres,
33
39
  columnValues,
@@ -59,12 +65,18 @@ const adapter = new Postgres({
59
65
  columnValues(),
60
66
  ],
61
67
  });
68
+ const sandbox = await createBashTool({
69
+ sandbox: await createRoutingSandbox({
70
+ backend: await createVirtualSandbox({ fs: new InMemoryFs() }),
71
+ hostExtensions: [sqlSandboxExtension({ main: adapter })],
72
+ }),
73
+ });
62
74
 
63
75
  const text2sql = new Text2Sql({
64
76
  version: 'v1',
65
77
  model: groq('openai/gpt-oss-20b'),
66
- filesystem: new InMemoryFs(),
67
- adapter,
78
+ sandbox,
79
+ adapters: { main: adapter },
68
80
  context: (...fragments) => {
69
81
  const engine = new ContextEngine({
70
82
  store,
@@ -77,14 +89,36 @@ const text2sql = new Text2Sql({
77
89
  });
78
90
 
79
91
  // Generate SQL
80
- const sql = await text2sql.toSql('Show me the top 10 customers by revenue');
92
+ const sql = await text2sql.toSql(
93
+ 'Show me the top 10 customers by revenue',
94
+ 'main',
95
+ );
81
96
  console.log(sql);
82
97
  ```
83
98
 
99
+ The adapter-map key (`main` here) is the adapter name. Reuse that same key in
100
+ `text2sql.toSql(..., 'main')` and in any `sql validate <db> "..."` /
101
+ `sql run <db> "..."` sandbox calls.
102
+
103
+ Adapter names must match `/^[A-Za-z_][A-Za-z0-9_]*$/`. If you build adapter
104
+ maps dynamically, use `isValidAdapterName(name)` to check one key or
105
+ `validateAdapterNames(names)` to fail fast before constructing `Text2Sql` or
106
+ `sqlSandboxExtension`.
107
+
84
108
  ## AI Model Providers
85
109
 
86
110
  Text2SQL works with any model provider supported by the [Vercel AI SDK](https://sdk.vercel.ai/docs), including OpenAI, Anthropic, Google, Groq, and more.
87
111
 
112
+ ## Advanced: Composing Sandbox Extensions
113
+
114
+ `Text2Sql` takes a caller-owned `sandbox`. `sqlSandboxExtension(adaptersMap)`
115
+ returns a `SandboxExtension` that bundles the `sql` subcommand, transform
116
+ plugins, and arg-repair hook. In the simplest case, that map is
117
+ `{ main: adapter }`. Compose it (alongside any of your own extensions) via
118
+ `createBashTool` + `createRoutingSandbox` + `createVirtualSandbox`.
119
+ See [Caller-Owned Sandbox](https://januarylabs.github.io/deepagents/docs/text2sql/sqlv3)
120
+ for composition patterns.
121
+
88
122
  ## Fragments
89
123
 
90
124
  Inject domain knowledge using fragments from `@deepagents/context` inside the
@@ -170,8 +204,14 @@ const followUp = await text2sql.chat([
170
204
  ]);
171
205
  ```
172
206
 
207
+ `toSql()` is stateless. It reads the current schema fragments, but it does not
208
+ write messages, titles, or usage into your context store.
209
+
173
210
  ## Direct SQL Generation with Extra Fragments
174
211
 
212
+ This lower-level helper still takes a single `adapter` because it bypasses the
213
+ multi-adapter `Text2Sql` wrapper entirely.
214
+
175
215
  ```typescript
176
216
  import { term } from '@deepagents/context';
177
217
  import { toSql } from '@deepagents/text2sql';
@@ -195,6 +235,7 @@ Full documentation available at [januarylabs.github.io/deepagents](https://janua
195
235
 
196
236
  - [Getting Started](https://januarylabs.github.io/deepagents/docs/text2sql/getting-started)
197
237
  - [Generate SQL](https://januarylabs.github.io/deepagents/docs/text2sql/to-sql)
238
+ - [Caller-Owned Sandbox](https://januarylabs.github.io/deepagents/docs/text2sql/sqlv3)
198
239
  - [Teach the System](https://januarylabs.github.io/deepagents/docs/text2sql/teach-the-system)
199
240
  - [Build Conversations](https://januarylabs.github.io/deepagents/docs/text2sql/build-conversations)
200
241
  - [Grounding](https://januarylabs.github.io/deepagents/docs/text2sql/grounding)
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
+ export { isValidAdapterName, validateAdapterNames, } from './lib/adapter-name.ts';
1
2
  export * from './lib/adapters/adapter.ts';
2
3
  export * from './lib/agents/exceptions.ts';
3
- export * from './lib/agents/result-tools.ts';
4
+ export * from './lib/agents/sql-command.ts';
5
+ export * from './lib/agents/sql-transform-plugins.ts';
4
6
  export * from './lib/agents/sql.agent.ts';
5
7
  export * from './lib/agents/suggestions.agents.ts';
6
8
  export * from './lib/checkpoint.ts';
@@ -8,5 +10,6 @@ export * from './lib/file-cache.ts';
8
10
  export * from './lib/fragments/schema.ts';
9
11
  export * from './lib/fs/index.ts';
10
12
  export * from './lib/instructions.ts';
13
+ export * from './lib/sandbox.ts';
11
14
  export * from './lib/sql.ts';
12
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}