@deepagents/text2sql 2.4.0 → 3.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 +70 -4
- package/dist/bin/sql.js +122 -82
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -48
- package/dist/index.js.map +3 -3
- package/dist/lib/adapter-index.d.ts +4 -2
- package/dist/lib/adapter-index.d.ts.map +1 -1
- package/dist/lib/file-cache.d.ts +2 -2
- package/dist/lib/file-cache.d.ts.map +1 -1
- package/dist/lib/index-cache.d.ts +40 -0
- package/dist/lib/index-cache.d.ts.map +1 -0
- package/dist/lib/index-lock.d.ts +31 -0
- package/dist/lib/index-lock.d.ts.map +1 -0
- package/dist/lib/sql.d.ts +4 -1
- package/dist/lib/sql.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type ContextFragment } from '@deepagents/context';
|
|
2
2
|
import { type Adapter, type IntrospectionPhase } from './adapters/adapter.ts';
|
|
3
|
+
import { type IndexCache } from './index-cache.ts';
|
|
4
|
+
import { type IndexLock } from './index-lock.ts';
|
|
3
5
|
export declare const TEXT2SQL_INDEX_PROGRESS_CHUNK = "data-text2sql-index-progress";
|
|
4
6
|
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
7
|
export interface Text2SqlIndexProgressEvent {
|
|
@@ -16,8 +18,8 @@ export interface Text2SqlIndexProgressEvent {
|
|
|
16
18
|
export type Text2SqlIndexProgressHandler = (event: Text2SqlIndexProgressEvent) => void;
|
|
17
19
|
export interface AdapterIndexerOptions {
|
|
18
20
|
adapters: Record<string, Adapter>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
cache?: IndexCache;
|
|
22
|
+
lock?: IndexLock;
|
|
21
23
|
}
|
|
22
24
|
export interface AdapterIndexerIndexOptions {
|
|
23
25
|
adapterNames?: readonly string[];
|
|
@@ -1 +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;
|
|
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;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,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,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;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;CAuH9B"}
|
package/dist/lib/file-cache.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare class FileCache {
|
|
2
2
|
path: string;
|
|
3
|
-
constructor(watermark: string, extension?: string);
|
|
3
|
+
constructor(watermark: string, extension?: string, baseDir?: string);
|
|
4
4
|
get(): Promise<string | null>;
|
|
5
5
|
set(content: string): Promise<void>;
|
|
6
6
|
}
|
|
7
7
|
export declare class JsonCache<T> extends FileCache {
|
|
8
|
-
constructor(watermark: string);
|
|
8
|
+
constructor(watermark: string, baseDir?: string);
|
|
9
9
|
read(): Promise<T | null>;
|
|
10
10
|
write(data: T): Promise<void>;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../../src/lib/file-cache.ts"],"names":[],"mappings":"AAMA,qBAAa,SAAS;IACb,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../../src/lib/file-cache.ts"],"names":[],"mappings":"AAMA,qBAAa,SAAS;IACb,IAAI,EAAE,MAAM,CAAC;gBAElB,SAAS,EAAE,MAAM,EACjB,SAAS,SAAS,EAClB,OAAO,GAAE,MAAiB;IAMtB,GAAG;IAOH,GAAG,CAAC,OAAO,EAAE,MAAM;CAM1B;AAED,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,SAAS;gBAC7B,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAIzC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe/B,KAAK,CAAC,IAAI,EAAE,CAAC;CAGd"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ContextFragment } from '@deepagents/context';
|
|
2
|
+
/**
|
|
3
|
+
* Stores introspected schema fragments per adapter so repeated indexing can
|
|
4
|
+
* reuse them instead of re-introspecting the database.
|
|
5
|
+
*
|
|
6
|
+
* The package defines this contract but does not own the storage. Hosts decide
|
|
7
|
+
* where the cache lives — a shared volume, Redis, S3, a database — by supplying
|
|
8
|
+
* an implementation. When no cache is provided, indexing always introspects.
|
|
9
|
+
*
|
|
10
|
+
* `key` is a stable per-adapter identifier; the same key is reused for the same
|
|
11
|
+
* adapter across processes, so a cache shared across a fleet lets one process's
|
|
12
|
+
* write satisfy another's read. Pair with an
|
|
13
|
+
* {@link import('./index-lock.ts').IndexLock} keyed by the same value to make
|
|
14
|
+
* concurrent introspection single-flight.
|
|
15
|
+
*/
|
|
16
|
+
export interface IndexCache {
|
|
17
|
+
read(key: string): Promise<ContextFragment[] | null>;
|
|
18
|
+
write(key: string, fragments: ContextFragment[]): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface FileIndexCacheOptions {
|
|
21
|
+
/** Directory the cache files live in. Defaults to the OS temp directory. */
|
|
22
|
+
dir?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional invalidation token folded into the cache key. Change it (e.g. a
|
|
25
|
+
* deploy id or schema version) to start a fresh cache generation.
|
|
26
|
+
*/
|
|
27
|
+
namespace?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* File-backed {@link IndexCache} using atomic writes (temp + rename) and
|
|
31
|
+
* treating an unparseable file as a miss. Point {@link FileIndexCacheOptions.dir}
|
|
32
|
+
* at a shared volume to let horizontally-scaled processes share one cache.
|
|
33
|
+
*/
|
|
34
|
+
export declare class FileIndexCache implements IndexCache {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(options?: FileIndexCacheOptions);
|
|
37
|
+
read(key: string): Promise<ContextFragment[] | null>;
|
|
38
|
+
write(key: string, fragments: ContextFragment[]): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=index-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cache.d.ts","sourceRoot":"","sources":["../../src/lib/index-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI3D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC;IACrD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;;gBAInC,OAAO,GAAE,qBAA0B;IAK/C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC;IAIpD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAQhE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coordinates schema indexing across processes so that, for a given cache key,
|
|
3
|
+
* only one introspection runs at a time ("single-flight" indexing).
|
|
4
|
+
*
|
|
5
|
+
* The package defines this contract but ships no implementation and takes no
|
|
6
|
+
* dependency on a lock store. Hosts that run many processes against the same
|
|
7
|
+
* database (e.g. horizontally-scaled daemons) supply an implementation backed
|
|
8
|
+
* by whatever they already operate — a Redis lock, a Postgres advisory lock, a
|
|
9
|
+
* Zookeeper/etcd lease, or an in-process mutex for a single-process deployment.
|
|
10
|
+
*
|
|
11
|
+
* When no lock is provided, indexing behaves exactly as if this interface did
|
|
12
|
+
* not exist.
|
|
13
|
+
*/
|
|
14
|
+
export interface IndexLock {
|
|
15
|
+
/**
|
|
16
|
+
* Run `fn` under an exclusive lock identified by `key`.
|
|
17
|
+
*
|
|
18
|
+
* Implementations MUST acquire the lock (waiting if it is currently held
|
|
19
|
+
* elsewhere), run `fn`, then release it — even if `fn` throws. Failure to
|
|
20
|
+
* acquire the lock MUST reject: callers treat a lock-store failure as fatal
|
|
21
|
+
* (fail-closed) rather than racing an unprotected introspection.
|
|
22
|
+
*
|
|
23
|
+
* @param key - Stable identifier for the work being guarded; the same key
|
|
24
|
+
* is used for the same adapter + index version, so distinct
|
|
25
|
+
* adapters lock independently.
|
|
26
|
+
* @param fn - The critical section to run while the lock is held.
|
|
27
|
+
* @returns The value returned by `fn`.
|
|
28
|
+
*/
|
|
29
|
+
run<T>(key: string, fn: () => Promise<T>): Promise<T>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-lock.d.ts","sourceRoot":"","sources":["../../src/lib/index-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvD"}
|
package/dist/lib/sql.d.ts
CHANGED
|
@@ -2,11 +2,14 @@ import { type AgentModel } from '@deepagents/agent';
|
|
|
2
2
|
import type { ContextFragment } from '@deepagents/context';
|
|
3
3
|
import { type Text2SqlIndexProgressHandler } from './adapter-index.ts';
|
|
4
4
|
import { type Adapter } from './adapters/adapter.ts';
|
|
5
|
+
import { type IndexCache } from './index-cache.ts';
|
|
6
|
+
import { type IndexLock } from './index-lock.ts';
|
|
5
7
|
import { type ExtractedPair, type PairProducer } from './synthesis/types.ts';
|
|
6
8
|
export interface Text2SqlConfig {
|
|
7
9
|
adapters: Record<string, Adapter>;
|
|
8
|
-
version?: string;
|
|
9
10
|
model?: AgentModel;
|
|
11
|
+
cache?: IndexCache;
|
|
12
|
+
lock?: IndexLock;
|
|
10
13
|
}
|
|
11
14
|
export interface Text2SqlRunResult {
|
|
12
15
|
rows: unknown[];
|
package/dist/lib/sql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAE5B,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,
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,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,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAED,QAAA,MAAM,wBAAwB,eAAoC,CAAC;AACnE,QAAA,MAAM,4BAA4B,eAAwC,CAAC;AAE3E,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC;gBAErB,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB;CAMpE;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,CAAC,4BAA4B,CAAC,EAAE,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE;IASzD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,2BAA2B;CAMxE;AAED,qBAAa,QAAQ;;gBAIP,MAAM,EAAE,cAAc;IA8BlC,YAAY,IAAI,MAAM,EAAE;IAIxB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB1D,KAAK,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOrE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D,OAAO,CAAC,CAAC,SAAS,YAAY,EAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC;CAK5B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepagents/text2sql",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -86,9 +86,9 @@
|
|
|
86
86
|
"dependencies": {
|
|
87
87
|
"@ai-sdk/groq": "^3.0.36",
|
|
88
88
|
"@ai-sdk/openai": "^3.0.49",
|
|
89
|
-
"@deepagents/agent": "
|
|
90
|
-
"@deepagents/context": "
|
|
91
|
-
"@deepagents/evals": "
|
|
89
|
+
"@deepagents/agent": "3.0.0",
|
|
90
|
+
"@deepagents/context": "3.0.0",
|
|
91
|
+
"@deepagents/evals": "3.0.0",
|
|
92
92
|
"@google-cloud/bigquery": "8.3.0",
|
|
93
93
|
"ai": "^6.0.174",
|
|
94
94
|
"autoevals": "0.0.132",
|