ai-database 2.1.3 → 2.3.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/CHANGELOG.md +35 -1
- package/README.md +880 -669
- package/dist/actions.d.ts +2 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +1 -1
- package/dist/actions.js.map +1 -1
- package/dist/ai-promise-db.d.ts +49 -23
- package/dist/ai-promise-db.d.ts.map +1 -1
- package/dist/ai-promise-db.js +91 -63
- package/dist/ai-promise-db.js.map +1 -1
- package/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +38 -30
- package/dist/authorization.js.map +1 -1
- package/dist/cascade-orchestrator.d.ts +404 -0
- package/dist/cascade-orchestrator.d.ts.map +1 -0
- package/dist/cascade-orchestrator.js +828 -0
- package/dist/cascade-orchestrator.js.map +1 -0
- package/dist/cascade-write-strategy.d.ts +584 -0
- package/dist/cascade-write-strategy.d.ts.map +1 -0
- package/dist/cascade-write-strategy.js +590 -0
- package/dist/cascade-write-strategy.js.map +1 -0
- package/dist/ch-adapter.d.ts +358 -0
- package/dist/ch-adapter.d.ts.map +1 -0
- package/dist/ch-adapter.js +929 -0
- package/dist/ch-adapter.js.map +1 -0
- package/dist/client/index.d.ts +42 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +43 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client.d.ts +266 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +81 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +64 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +52 -2
- package/dist/constants.js.map +1 -1
- package/dist/dataloader.d.ts +99 -0
- package/dist/dataloader.d.ts.map +1 -0
- package/dist/dataloader.js +225 -0
- package/dist/dataloader.js.map +1 -0
- package/dist/db-provider-port.d.ts +501 -0
- package/dist/db-provider-port.d.ts.map +1 -0
- package/dist/db-provider-port.js +113 -0
- package/dist/db-provider-port.js.map +1 -0
- package/dist/digital-objects-provider.d.ts +49 -0
- package/dist/digital-objects-provider.d.ts.map +1 -0
- package/dist/digital-objects-provider.js +55 -0
- package/dist/digital-objects-provider.js.map +1 -0
- package/dist/do-sqlite-adapter.d.ts +402 -0
- package/dist/do-sqlite-adapter.d.ts.map +1 -0
- package/dist/do-sqlite-adapter.js +745 -0
- package/dist/do-sqlite-adapter.js.map +1 -0
- package/dist/docs-rels/custom-types.d.ts +134 -0
- package/dist/docs-rels/custom-types.d.ts.map +1 -0
- package/dist/docs-rels/custom-types.js +70 -0
- package/dist/docs-rels/custom-types.js.map +1 -0
- package/dist/docs-rels/index.d.ts +16 -0
- package/dist/docs-rels/index.d.ts.map +1 -0
- package/dist/docs-rels/index.js +16 -0
- package/dist/docs-rels/index.js.map +1 -0
- package/dist/docs-rels/migrations/index.d.ts +30 -0
- package/dist/docs-rels/migrations/index.d.ts.map +1 -0
- package/dist/docs-rels/migrations/index.js +128 -0
- package/dist/docs-rels/migrations/index.js.map +1 -0
- package/dist/docs-rels/schema.d.ts +2961 -0
- package/dist/docs-rels/schema.d.ts.map +1 -0
- package/dist/docs-rels/schema.js +244 -0
- package/dist/docs-rels/schema.js.map +1 -0
- package/dist/durable-clickhouse.d.ts.map +1 -1
- package/dist/durable-clickhouse.js +16 -13
- package/dist/durable-clickhouse.js.map +1 -1
- package/dist/durable-promise.d.ts.map +1 -1
- package/dist/durable-promise.js +34 -15
- package/dist/durable-promise.js.map +1 -1
- package/dist/errors.d.ts +127 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +210 -0
- package/dist/errors.js.map +1 -0
- package/dist/eventbridge.d.ts +117 -0
- package/dist/eventbridge.d.ts.map +1 -0
- package/dist/eventbridge.js +238 -0
- package/dist/eventbridge.js.map +1 -0
- package/dist/events.d.ts +2 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/execution-queue.d.ts.map +1 -1
- package/dist/execution-queue.js +4 -5
- package/dist/execution-queue.js.map +1 -1
- package/dist/index.d.ts +35 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -6
- package/dist/index.js.map +1 -1
- package/dist/linguistic.d.ts +3 -108
- package/dist/linguistic.d.ts.map +1 -1
- package/dist/linguistic.js +3 -372
- package/dist/linguistic.js.map +1 -1
- package/dist/logger.d.ts +132 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +137 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory-provider.d.ts +128 -0
- package/dist/memory-provider.d.ts.map +1 -1
- package/dist/memory-provider.js +592 -257
- package/dist/memory-provider.js.map +1 -1
- package/dist/pg-adapter.d.ts +424 -0
- package/dist/pg-adapter.d.ts.map +1 -0
- package/dist/pg-adapter.js +921 -0
- package/dist/pg-adapter.js.map +1 -0
- package/dist/pipelines-iceberg-emitter.d.ts +327 -0
- package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
- package/dist/pipelines-iceberg-emitter.js +351 -0
- package/dist/pipelines-iceberg-emitter.js.map +1 -0
- package/dist/provider-capabilities.d.ts +146 -0
- package/dist/provider-capabilities.d.ts.map +1 -0
- package/dist/provider-capabilities.js +214 -0
- package/dist/provider-capabilities.js.map +1 -0
- package/dist/rdb-provider-adapter.d.ts +195 -0
- package/dist/rdb-provider-adapter.d.ts.map +1 -0
- package/dist/rdb-provider-adapter.js +291 -0
- package/dist/rdb-provider-adapter.js.map +1 -0
- package/dist/schema/cascade.d.ts +48 -17
- package/dist/schema/cascade.d.ts.map +1 -1
- package/dist/schema/cascade.js +477 -278
- package/dist/schema/cascade.js.map +1 -1
- package/dist/schema/definition-caches.d.ts +24 -0
- package/dist/schema/definition-caches.d.ts.map +1 -0
- package/dist/schema/definition-caches.js +26 -0
- package/dist/schema/definition-caches.js.map +1 -0
- package/dist/schema/dependency-graph.d.ts +21 -109
- package/dist/schema/dependency-graph.d.ts.map +1 -1
- package/dist/schema/dependency-graph.js +25 -333
- package/dist/schema/dependency-graph.js.map +1 -1
- package/dist/schema/diff.d.ts +103 -0
- package/dist/schema/diff.d.ts.map +1 -0
- package/dist/schema/diff.js +329 -0
- package/dist/schema/diff.js.map +1 -0
- package/dist/schema/entity-operations.d.ts +99 -0
- package/dist/schema/entity-operations.d.ts.map +1 -0
- package/dist/schema/entity-operations.js +818 -0
- package/dist/schema/entity-operations.js.map +1 -0
- package/dist/schema/index.d.ts +28 -34
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +454 -521
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/migration.d.ts +205 -0
- package/dist/schema/migration.d.ts.map +1 -0
- package/dist/schema/migration.js +327 -0
- package/dist/schema/migration.js.map +1 -0
- package/dist/schema/nl-query-generator.d.ts +68 -0
- package/dist/schema/nl-query-generator.d.ts.map +1 -0
- package/dist/schema/nl-query-generator.js +362 -0
- package/dist/schema/nl-query-generator.js.map +1 -0
- package/dist/schema/nl-query.d.ts +65 -0
- package/dist/schema/nl-query.d.ts.map +1 -0
- package/dist/schema/nl-query.js +178 -0
- package/dist/schema/nl-query.js.map +1 -0
- package/dist/schema/parse.d.ts.map +1 -1
- package/dist/schema/parse.js +144 -89
- package/dist/schema/parse.js.map +1 -1
- package/dist/schema/provider.d.ts +37 -0
- package/dist/schema/provider.d.ts.map +1 -1
- package/dist/schema/provider.js +15 -7
- package/dist/schema/provider.js.map +1 -1
- package/dist/schema/resolve.d.ts +46 -5
- package/dist/schema/resolve.d.ts.map +1 -1
- package/dist/schema/resolve.js +237 -95
- package/dist/schema/resolve.js.map +1 -1
- package/dist/schema/search-utils.d.ts +76 -0
- package/dist/schema/search-utils.d.ts.map +1 -0
- package/dist/schema/search-utils.js +86 -0
- package/dist/schema/search-utils.js.map +1 -0
- package/dist/schema/seed.d.ts +53 -0
- package/dist/schema/seed.d.ts.map +1 -0
- package/dist/schema/seed.js +94 -0
- package/dist/schema/seed.js.map +1 -0
- package/dist/schema/semantic.d.ts +10 -0
- package/dist/schema/semantic.d.ts.map +1 -1
- package/dist/schema/semantic.js +192 -86
- package/dist/schema/semantic.js.map +1 -1
- package/dist/schema/sub-apis.d.ts +52 -0
- package/dist/schema/sub-apis.d.ts.map +1 -0
- package/dist/schema/sub-apis.js +216 -0
- package/dist/schema/sub-apis.js.map +1 -0
- package/dist/schema/system-entities.d.ts +42 -0
- package/dist/schema/system-entities.d.ts.map +1 -0
- package/dist/schema/system-entities.js +101 -0
- package/dist/schema/system-entities.js.map +1 -0
- package/dist/schema/types.d.ts +91 -9
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/union-fallback.d.ts.map +1 -1
- package/dist/schema/union-fallback.js +21 -15
- package/dist/schema/union-fallback.js.map +1 -1
- package/dist/schema/value-generators/ai.d.ts +54 -0
- package/dist/schema/value-generators/ai.d.ts.map +1 -0
- package/dist/schema/value-generators/ai.js +136 -0
- package/dist/schema/value-generators/ai.js.map +1 -0
- package/dist/schema/value-generators/index.d.ts +126 -0
- package/dist/schema/value-generators/index.d.ts.map +1 -0
- package/dist/schema/value-generators/index.js +219 -0
- package/dist/schema/value-generators/index.js.map +1 -0
- package/dist/schema/value-generators/placeholder.d.ts +52 -0
- package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
- package/dist/schema/value-generators/placeholder.js +328 -0
- package/dist/schema/value-generators/placeholder.js.map +1 -0
- package/dist/schema/value-generators/types.d.ts +116 -0
- package/dist/schema/value-generators/types.d.ts.map +1 -0
- package/dist/schema/value-generators/types.js +11 -0
- package/dist/schema/value-generators/types.js.map +1 -0
- package/dist/schema/version.d.ts +111 -0
- package/dist/schema/version.d.ts.map +1 -0
- package/dist/schema/version.js +190 -0
- package/dist/schema/version.js.map +1 -0
- package/dist/schema.d.ts +1095 -24
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2852 -40
- package/dist/schema.js.map +1 -1
- package/dist/semantic-vectors.d.ts +39 -0
- package/dist/semantic-vectors.d.ts.map +1 -0
- package/dist/semantic-vectors.js +334 -0
- package/dist/semantic-vectors.js.map +1 -0
- package/dist/semantic.d.ts +29 -1
- package/dist/semantic.d.ts.map +1 -1
- package/dist/semantic.js +26 -16
- package/dist/semantic.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +305 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tests.d.ts.map +1 -1
- package/dist/tests.js +30 -22
- package/dist/tests.js.map +1 -1
- package/dist/type-guards.d.ts +50 -5
- package/dist/type-guards.d.ts.map +1 -1
- package/dist/type-guards.js +87 -16
- package/dist/type-guards.js.map +1 -1
- package/dist/types.d.ts +33 -245
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +62 -72
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts +2 -5
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +65 -93
- package/dist/validation.js.map +1 -1
- package/dist/worker/db-provider.d.ts +168 -0
- package/dist/worker/db-provider.d.ts.map +1 -0
- package/dist/worker/db-provider.js +277 -0
- package/dist/worker/db-provider.js.map +1 -0
- package/dist/worker/index.d.ts +35 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +37 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker.d.ts +779 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +2786 -0
- package/dist/worker.js.map +1 -0
- package/package.json +46 -16
- package/src/docs-rels/migrations/0001-init.sql +125 -0
- package/LICENSE +0 -21
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RDB Provider Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts RDB's DBProvider interface to ai-database's DBProvider interface.
|
|
5
|
+
*
|
|
6
|
+
* The key interface mismatch addressed:
|
|
7
|
+
* - ai-database search(): (type: string, query: string, options?: SearchOptions) => Promise<Record[]>
|
|
8
|
+
* - RDB search(): (type: string, filter: Filter, options?: SearchOptions) => Promise<Entity[]>
|
|
9
|
+
*
|
|
10
|
+
* This adapter:
|
|
11
|
+
* 1. Converts ai-database's string query to RDB's Filter object (using $regex for text search)
|
|
12
|
+
* 2. Normalizes RDB entities (id/type) to ai-database format ($id/$type)
|
|
13
|
+
* 3. Maintains full compatibility with ai-database's DBProvider interface
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { RDB } from '@dotdo/rdb'
|
|
18
|
+
* import { RDBProviderAdapter } from 'ai-database'
|
|
19
|
+
* import { DB, setProvider } from 'ai-database'
|
|
20
|
+
*
|
|
21
|
+
* // Create RDB instance (Cloudflare D1/DO SQLite)
|
|
22
|
+
* const rdb = new RDB(sqlStorage)
|
|
23
|
+
*
|
|
24
|
+
* // Wrap with adapter for ai-database compatibility
|
|
25
|
+
* const adapter = new RDBProviderAdapter(rdb)
|
|
26
|
+
* setProvider(adapter)
|
|
27
|
+
*
|
|
28
|
+
* // Now use ai-database's schema-first API
|
|
29
|
+
* const { db } = DB({
|
|
30
|
+
* User: { name: 'string', email: 'string' },
|
|
31
|
+
* Post: { title: 'string', author: '->User' }
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* // search() works with string queries (adapter converts to Filter)
|
|
35
|
+
* const results = await db.Post.search('TypeScript')
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @packageDocumentation
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Normalizes an RDB entity to ai-database format
|
|
42
|
+
*
|
|
43
|
+
* RDB uses: { id: 'xxx', type: 'User', name: 'John' }
|
|
44
|
+
* ai-database uses: { $id: 'xxx', $type: 'User', name: 'John' }
|
|
45
|
+
*/
|
|
46
|
+
function normalizeEntity(entity) {
|
|
47
|
+
const { id, type, ...rest } = entity;
|
|
48
|
+
return {
|
|
49
|
+
$id: id,
|
|
50
|
+
$type: type,
|
|
51
|
+
...rest,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Default fields to search when no specific fields are provided.
|
|
56
|
+
* These are common text fields found in most entity types.
|
|
57
|
+
*/
|
|
58
|
+
const DEFAULT_SEARCH_FIELDS = ['title', 'name', 'content', 'description', 'body', 'text'];
|
|
59
|
+
/**
|
|
60
|
+
* Converts a string search query to an RDB Filter object
|
|
61
|
+
*
|
|
62
|
+
* By default, creates a $regex filter that searches across all string fields.
|
|
63
|
+
* If fields option is provided, restricts search to those fields.
|
|
64
|
+
*
|
|
65
|
+
* @param query - The search string
|
|
66
|
+
* @param field - The specific field to search
|
|
67
|
+
* @returns Filter object for RDB search()
|
|
68
|
+
*/
|
|
69
|
+
function stringQueryToFilter(query, field) {
|
|
70
|
+
// Escape regex special characters in the query
|
|
71
|
+
const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
72
|
+
return {
|
|
73
|
+
[field]: { $regex: escapedQuery },
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the list of fields to search
|
|
78
|
+
*
|
|
79
|
+
* @param options - Search options that may include specific fields
|
|
80
|
+
* @returns Array of field names to search
|
|
81
|
+
*/
|
|
82
|
+
function getSearchFields(options) {
|
|
83
|
+
if (options?.fields && options.fields.length > 0) {
|
|
84
|
+
return options.fields;
|
|
85
|
+
}
|
|
86
|
+
return DEFAULT_SEARCH_FIELDS;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* RDB Provider Adapter
|
|
90
|
+
*
|
|
91
|
+
* Wraps an RDB DBProvider to make it compatible with ai-database's DBProvider interface.
|
|
92
|
+
* The primary adaptation is converting string search queries to RDB Filter objects.
|
|
93
|
+
*/
|
|
94
|
+
export class RDBProviderAdapter {
|
|
95
|
+
rdb;
|
|
96
|
+
/**
|
|
97
|
+
* Create a new RDBProviderAdapter
|
|
98
|
+
*
|
|
99
|
+
* @param rdb - An RDB DBProvider instance (from RDB class or D1Provider/DOProvider)
|
|
100
|
+
*/
|
|
101
|
+
constructor(rdb) {
|
|
102
|
+
this.rdb = rdb;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get an entity by type and ID
|
|
106
|
+
*/
|
|
107
|
+
async get(type, id) {
|
|
108
|
+
const entity = await this.rdb.get(type, id);
|
|
109
|
+
return entity ? normalizeEntity(entity) : null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* List entities of a type
|
|
113
|
+
*
|
|
114
|
+
* If a `where` filter is provided, we apply it client-side after fetching
|
|
115
|
+
* since RDB's list() method doesn't support where filters natively.
|
|
116
|
+
*/
|
|
117
|
+
async list(type, options) {
|
|
118
|
+
const listOptions = {};
|
|
119
|
+
// If we have where filters, we need to fetch all and filter client-side
|
|
120
|
+
// We apply pagination after filtering
|
|
121
|
+
const hasWhereFilter = options?.where && Object.keys(options.where).length > 0;
|
|
122
|
+
if (!hasWhereFilter) {
|
|
123
|
+
if (options?.limit !== undefined) {
|
|
124
|
+
listOptions.limit = options.limit;
|
|
125
|
+
}
|
|
126
|
+
if (options?.offset !== undefined) {
|
|
127
|
+
listOptions.offset = options.offset;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (options?.orderBy !== undefined) {
|
|
131
|
+
listOptions.orderBy = options.orderBy;
|
|
132
|
+
}
|
|
133
|
+
if (options?.order !== undefined) {
|
|
134
|
+
listOptions.order = options.order;
|
|
135
|
+
}
|
|
136
|
+
let entities = await this.rdb.list(type, listOptions);
|
|
137
|
+
// Apply where filter client-side
|
|
138
|
+
if (hasWhereFilter && options?.where) {
|
|
139
|
+
const whereFilter = options.where;
|
|
140
|
+
entities = entities.filter((entity) => {
|
|
141
|
+
for (const [key, value] of Object.entries(whereFilter)) {
|
|
142
|
+
if (entity[key] !== value) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
let results = entities.map(normalizeEntity);
|
|
150
|
+
// Apply pagination after client-side filtering
|
|
151
|
+
if (hasWhereFilter) {
|
|
152
|
+
if (options?.offset) {
|
|
153
|
+
results = results.slice(options.offset);
|
|
154
|
+
}
|
|
155
|
+
if (options?.limit) {
|
|
156
|
+
results = results.slice(0, options.limit);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return results;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Search entities using a string query
|
|
163
|
+
*
|
|
164
|
+
* This is the key adaptation point:
|
|
165
|
+
* - ai-database expects: search(type, query: string)
|
|
166
|
+
* - RDB expects: search(type, filter: Filter)
|
|
167
|
+
*
|
|
168
|
+
* The adapter converts the string query to $regex Filters for text search.
|
|
169
|
+
* Since RDB doesn't support $or at the top level, we search each field
|
|
170
|
+
* separately and deduplicate results.
|
|
171
|
+
*/
|
|
172
|
+
async search(type, query, options) {
|
|
173
|
+
const fields = getSearchFields(options);
|
|
174
|
+
const seenIds = new Set();
|
|
175
|
+
const results = [];
|
|
176
|
+
// Search each field and collect unique results
|
|
177
|
+
// This is necessary because RDB doesn't support $or at the top level
|
|
178
|
+
for (const field of fields) {
|
|
179
|
+
const filter = stringQueryToFilter(query, field);
|
|
180
|
+
try {
|
|
181
|
+
const entities = await this.rdb.search(type, filter, {
|
|
182
|
+
// Don't apply limit/offset per-field, we'll apply after deduplication
|
|
183
|
+
});
|
|
184
|
+
for (const entity of entities) {
|
|
185
|
+
if (!seenIds.has(entity.id)) {
|
|
186
|
+
seenIds.add(entity.id);
|
|
187
|
+
results.push(normalizeEntity(entity));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Field might not exist on this entity type, continue to next field
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Apply where filter client-side
|
|
196
|
+
let finalResults = results;
|
|
197
|
+
if (options?.where && Object.keys(options.where).length > 0) {
|
|
198
|
+
const whereFilter = options.where;
|
|
199
|
+
finalResults = finalResults.filter((entity) => {
|
|
200
|
+
for (const [key, value] of Object.entries(whereFilter)) {
|
|
201
|
+
if (entity[key] !== value) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
// Apply limit and offset after collecting and filtering all results
|
|
209
|
+
if (options?.offset) {
|
|
210
|
+
finalResults = finalResults.slice(options.offset);
|
|
211
|
+
}
|
|
212
|
+
if (options?.limit) {
|
|
213
|
+
finalResults = finalResults.slice(0, options.limit);
|
|
214
|
+
}
|
|
215
|
+
return finalResults;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Create a new entity
|
|
219
|
+
*/
|
|
220
|
+
async create(type, id, data) {
|
|
221
|
+
const entity = await this.rdb.create(type, data, id);
|
|
222
|
+
return normalizeEntity(entity);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Update an existing entity
|
|
226
|
+
*/
|
|
227
|
+
async update(type, id, data) {
|
|
228
|
+
const entity = await this.rdb.update(type, id, data);
|
|
229
|
+
return normalizeEntity(entity);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Delete an entity
|
|
233
|
+
*
|
|
234
|
+
* @returns true if deleted, false if entity didn't exist
|
|
235
|
+
*/
|
|
236
|
+
async delete(type, id) {
|
|
237
|
+
try {
|
|
238
|
+
// Check if entity exists first
|
|
239
|
+
const existing = await this.rdb.get(type, id);
|
|
240
|
+
if (!existing) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
await this.rdb.delete(type, id);
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get related entities
|
|
252
|
+
*/
|
|
253
|
+
async related(type, id, relation) {
|
|
254
|
+
const entities = await this.rdb.related(type, id, relation, {
|
|
255
|
+
direction: 'outgoing',
|
|
256
|
+
});
|
|
257
|
+
return entities.map(normalizeEntity);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Create a relationship between entities
|
|
261
|
+
*/
|
|
262
|
+
async relate(fromType, fromId, relation, toType, toId, metadata) {
|
|
263
|
+
await this.rdb.relate(fromType, fromId, relation, toType, toId, metadata);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Remove a relationship between entities
|
|
267
|
+
*/
|
|
268
|
+
async unrelate(fromType, fromId, relation, toType, toId) {
|
|
269
|
+
await this.rdb.unrelate(fromType, fromId, relation, toType, toId);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Create an RDBProviderAdapter from an RDB instance
|
|
274
|
+
*
|
|
275
|
+
* @param rdb - An RDB DBProvider instance
|
|
276
|
+
* @returns Adapted provider compatible with ai-database
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```ts
|
|
280
|
+
* import { RDB } from '@dotdo/rdb'
|
|
281
|
+
* import { createRDBAdapter, setProvider } from 'ai-database'
|
|
282
|
+
*
|
|
283
|
+
* const rdb = new RDB(sqlStorage)
|
|
284
|
+
* const adapter = createRDBAdapter(rdb)
|
|
285
|
+
* setProvider(adapter)
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
export function createRDBAdapter(rdb) {
|
|
289
|
+
return new RDBProviderAdapter(rdb);
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=rdb-provider-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdb-provider-adapter.js","sourceRoot":"","sources":["../src/rdb-provider-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/cascade.d.ts
CHANGED
|
@@ -8,24 +8,52 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ParsedEntity, ParsedSchema } from '../types.js';
|
|
10
10
|
import type { DBProvider } from './provider.js';
|
|
11
|
+
import type { AIGenerationConfig } from './types.js';
|
|
12
|
+
import type { ValueGenerator } from './value-generators/types.js';
|
|
13
|
+
export type { AIGenerationConfig, GenerationDetails } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Hard safety limit for cascade/entity generation recursion depth.
|
|
16
|
+
* Applied even when maxDepth is not explicitly configured to prevent
|
|
17
|
+
* infinite recursion with circular schemas.
|
|
18
|
+
*/
|
|
19
|
+
export declare const DEFAULT_MAX_DEPTH = 10;
|
|
20
|
+
/**
|
|
21
|
+
* Configure the value generator to use for field generation
|
|
22
|
+
*
|
|
23
|
+
* @param generator - The value generator instance to use
|
|
24
|
+
*/
|
|
25
|
+
export declare function setValueGenerator(generator: ValueGenerator): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get the current value generator
|
|
28
|
+
*
|
|
29
|
+
* @returns The current value generator instance
|
|
30
|
+
*/
|
|
31
|
+
export declare function getValueGenerator(): ValueGenerator;
|
|
32
|
+
/**
|
|
33
|
+
* Configure AI generation settings
|
|
34
|
+
*
|
|
35
|
+
* @param config - Partial configuration to merge with defaults
|
|
36
|
+
*/
|
|
37
|
+
export declare function configureAIGeneration(config: Partial<AIGenerationConfig>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get current AI generation configuration
|
|
40
|
+
*/
|
|
41
|
+
export declare function getAIGenerationConfig(): AIGenerationConfig;
|
|
11
42
|
/**
|
|
12
43
|
* Generate a context-aware value for a field
|
|
13
44
|
*
|
|
14
|
-
*
|
|
15
|
-
* contextually appropriate values. This is a minimal deterministic implementation
|
|
16
|
-
* for testing - real AI generation would integrate with LLMs.
|
|
45
|
+
* **DELEGATED TO VALUE-GENERATORS MODULE**
|
|
17
46
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
47
|
+
* This function now delegates to PlaceholderValueGenerator for backward
|
|
48
|
+
* compatibility. The actual generation logic has been extracted to:
|
|
49
|
+
* `./value-generators/placeholder.ts`
|
|
21
50
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* - Allow tests to make specific assertions about generated content
|
|
51
|
+
* For new code, prefer using the ValueGenerator interface directly:
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { getValueGenerator } from './value-generators/index.js'
|
|
54
|
+
* const generator = getValueGenerator()
|
|
55
|
+
* const result = await generator.generate({ fieldName, type, fullContext, hint, parentData })
|
|
56
|
+
* ```
|
|
29
57
|
*
|
|
30
58
|
* @param fieldName - The name of the field being generated
|
|
31
59
|
* @param type - The entity type name
|
|
@@ -55,25 +83,28 @@ export declare function generateContextAwareValue(fieldName: string, type: strin
|
|
|
55
83
|
* @param entityDef - The parsed entity definition
|
|
56
84
|
* @param schema - The parsed schema
|
|
57
85
|
* @param provider - The database provider
|
|
86
|
+
* @param injectedConfig - Optional AI config to use instead of module-level config (for DI)
|
|
58
87
|
* @returns The data with AI-generated fields populated
|
|
59
88
|
*/
|
|
60
|
-
export declare function generateAIFields(data: Record<string, unknown>, typeName: string, entityDef: ParsedEntity, schema: ParsedSchema, provider: DBProvider): Promise<Record<string, unknown>>;
|
|
89
|
+
export declare function generateAIFields(data: Record<string, unknown>, typeName: string, entityDef: ParsedEntity, schema: ParsedSchema, provider: DBProvider, injectedConfig?: AIGenerationConfig): Promise<Record<string, unknown>>;
|
|
61
90
|
/**
|
|
62
91
|
* Generate an entity based on its type and context
|
|
63
92
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
93
|
+
* Uses AI generation via generateObject from ai-functions when available,
|
|
94
|
+
* falling back to deterministic placeholder values for testing or when AI fails.
|
|
66
95
|
*
|
|
67
96
|
* @param type - The type of entity to generate
|
|
68
97
|
* @param prompt - Optional prompt for generation context
|
|
69
98
|
* @param context - Parent context information (parent type name, parentData, and optional parentId)
|
|
70
99
|
* @param schema - The parsed schema
|
|
100
|
+
* @param _depth - Current recursion depth (internal)
|
|
101
|
+
* @param injectedConfig - Optional AI config to use instead of module-level config (for DI)
|
|
71
102
|
*/
|
|
72
103
|
export declare function generateEntity(type: string, prompt: string | undefined, context: {
|
|
73
104
|
parent: string;
|
|
74
105
|
parentData: Record<string, unknown>;
|
|
75
106
|
parentId?: string;
|
|
76
|
-
}, schema: ParsedSchema): Promise<Record<string, unknown>>;
|
|
107
|
+
}, schema: ParsedSchema, _depth?: number, injectedConfig?: AIGenerationConfig): Promise<Record<string, unknown>>;
|
|
77
108
|
/**
|
|
78
109
|
* Resolve forward exact (->) fields by auto-generating related entities
|
|
79
110
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../src/schema/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../src/schema/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,YAAY,CAAA;AASvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAGjE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAenC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAE/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAmKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACvC,MAAM,CA0BR;AAmGD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,UAAU,EACpB,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuIlC;AAkED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACnF,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,MAAU,EAClB,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwFlC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,gBAAgB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrF,CAAC,CAwHD;AAMD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAkER"}
|