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,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Capability Detection and Management
|
|
3
|
+
*
|
|
4
|
+
* This module provides runtime detection of provider capabilities,
|
|
5
|
+
* enabling graceful degradation when advanced features are unavailable.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { logWarn } from './logger.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Capability Detection
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Cache for detected capabilities to avoid repeated introspection
|
|
15
|
+
*/
|
|
16
|
+
const capabilityCache = new WeakMap();
|
|
17
|
+
/**
|
|
18
|
+
* Detect which capabilities a provider supports by examining its methods
|
|
19
|
+
*
|
|
20
|
+
* Probes the provider for the presence of advanced methods to determine
|
|
21
|
+
* which features are available. Results are cached per-provider.
|
|
22
|
+
*
|
|
23
|
+
* @param provider - The database provider to inspect
|
|
24
|
+
* @returns Detected capabilities
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const provider = createMemoryProvider()
|
|
29
|
+
* const capabilities = await detectCapabilities(provider)
|
|
30
|
+
*
|
|
31
|
+
* if (capabilities.hasSemanticSearch) {
|
|
32
|
+
* const results = await provider.semanticSearch('Post', 'machine learning')
|
|
33
|
+
* } else {
|
|
34
|
+
* const results = await provider.search('Post', 'machine learning')
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export async function detectCapabilities(provider) {
|
|
39
|
+
// Check cache first
|
|
40
|
+
const cached = capabilityCache.get(provider);
|
|
41
|
+
if (cached) {
|
|
42
|
+
return cached;
|
|
43
|
+
}
|
|
44
|
+
// Cast to unknown first, then to Record for method inspection
|
|
45
|
+
const p = provider;
|
|
46
|
+
const capabilities = {
|
|
47
|
+
// Semantic search: requires semanticSearch and setEmbeddingsConfig methods
|
|
48
|
+
hasSemanticSearch: typeof p['semanticSearch'] === 'function' && typeof p['setEmbeddingsConfig'] === 'function',
|
|
49
|
+
// Events: requires on, emit, and listEvents methods
|
|
50
|
+
hasEvents: typeof p['on'] === 'function' &&
|
|
51
|
+
typeof p['emit'] === 'function' &&
|
|
52
|
+
typeof p['listEvents'] === 'function',
|
|
53
|
+
// Actions: requires createAction, getAction, and updateAction methods
|
|
54
|
+
hasActions: typeof p['createAction'] === 'function' &&
|
|
55
|
+
typeof p['getAction'] === 'function' &&
|
|
56
|
+
typeof p['updateAction'] === 'function',
|
|
57
|
+
// Artifacts: requires getArtifact and setArtifact methods
|
|
58
|
+
hasArtifacts: typeof p['getArtifact'] === 'function' && typeof p['setArtifact'] === 'function',
|
|
59
|
+
// Batch operations: requires withConcurrency or mapWithConcurrency methods
|
|
60
|
+
hasBatchOperations: typeof p['withConcurrency'] === 'function' || typeof p['mapWithConcurrency'] === 'function',
|
|
61
|
+
};
|
|
62
|
+
// Cache the result
|
|
63
|
+
capabilityCache.set(provider, capabilities);
|
|
64
|
+
return capabilities;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clear the capability cache for a specific provider
|
|
68
|
+
*
|
|
69
|
+
* Useful when a provider's capabilities change dynamically.
|
|
70
|
+
*
|
|
71
|
+
* @param provider - The provider to clear from cache
|
|
72
|
+
*/
|
|
73
|
+
export function clearCapabilityCache(provider) {
|
|
74
|
+
capabilityCache.delete(provider);
|
|
75
|
+
}
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// CapabilityNotSupportedError
|
|
78
|
+
// =============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Error thrown when attempting to use a feature that the provider doesn't support
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* try {
|
|
85
|
+
* await provider.semanticSearch('Post', 'query')
|
|
86
|
+
* } catch (e) {
|
|
87
|
+
* if (isCapabilityNotSupportedError(e)) {
|
|
88
|
+
* console.log(`${e.capability} is not supported, using fallback...`)
|
|
89
|
+
* }
|
|
90
|
+
* throw e
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export class CapabilityNotSupportedError extends Error {
|
|
95
|
+
capability;
|
|
96
|
+
alternative;
|
|
97
|
+
code = 'CAPABILITY_NOT_SUPPORTED';
|
|
98
|
+
name = 'CapabilityNotSupportedError';
|
|
99
|
+
constructor(
|
|
100
|
+
/** The capability that was requested but not supported */
|
|
101
|
+
capability,
|
|
102
|
+
/** Optional custom error message */
|
|
103
|
+
message,
|
|
104
|
+
/** Optional suggested alternative */
|
|
105
|
+
alternative) {
|
|
106
|
+
const defaultMessage = `Capability '${capability}' is not supported by this provider`;
|
|
107
|
+
super(message ?? defaultMessage);
|
|
108
|
+
this.capability = capability;
|
|
109
|
+
this.alternative = alternative;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Type guard to check if an error is a CapabilityNotSupportedError
|
|
114
|
+
*
|
|
115
|
+
* @param error - The error to check
|
|
116
|
+
* @returns True if the error is a CapabilityNotSupportedError
|
|
117
|
+
*/
|
|
118
|
+
export function isCapabilityNotSupportedError(error) {
|
|
119
|
+
return (error instanceof CapabilityNotSupportedError ||
|
|
120
|
+
(error !== null &&
|
|
121
|
+
typeof error === 'object' &&
|
|
122
|
+
'code' in error &&
|
|
123
|
+
error.code === 'CAPABILITY_NOT_SUPPORTED'));
|
|
124
|
+
}
|
|
125
|
+
// =============================================================================
|
|
126
|
+
// Capability Enforcement
|
|
127
|
+
// =============================================================================
|
|
128
|
+
/**
|
|
129
|
+
* Require a capability to be available, throwing if not
|
|
130
|
+
*
|
|
131
|
+
* Use this before calling methods that require specific capabilities.
|
|
132
|
+
*
|
|
133
|
+
* @param capabilities - The detected capabilities
|
|
134
|
+
* @param capability - The capability key to require
|
|
135
|
+
* @param message - Optional custom error message
|
|
136
|
+
* @throws CapabilityNotSupportedError if the capability is not available
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const capabilities = await detectCapabilities(provider)
|
|
141
|
+
* requireCapability(capabilities, 'hasSemanticSearch')
|
|
142
|
+
* // Safe to call semanticSearch now
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export function requireCapability(capabilities, capability, message) {
|
|
146
|
+
if (!capabilities[capability]) {
|
|
147
|
+
throw new CapabilityNotSupportedError(capability, message);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// =============================================================================
|
|
151
|
+
// Runtime Warnings
|
|
152
|
+
// =============================================================================
|
|
153
|
+
/**
|
|
154
|
+
* Track which warnings have already been shown to avoid spam
|
|
155
|
+
*/
|
|
156
|
+
const shownWarnings = new Set();
|
|
157
|
+
/**
|
|
158
|
+
* Log a warning if a capability is unavailable (only once per capability)
|
|
159
|
+
*
|
|
160
|
+
* @param capabilities - The detected capabilities
|
|
161
|
+
* @param capability - The capability key to check
|
|
162
|
+
* @param featureName - Human-readable name for the warning message
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* warnIfUnavailable(capabilities, 'hasSemanticSearch', 'semanticSearch')
|
|
167
|
+
* // Logs: "Warning: semanticSearch is not available with this provider"
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
export function warnIfUnavailable(capabilities, capability, featureName) {
|
|
171
|
+
if (!capabilities[capability] && !shownWarnings.has(featureName)) {
|
|
172
|
+
logWarn(`${featureName} is not available with this provider`);
|
|
173
|
+
shownWarnings.add(featureName);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Clear warning suppression (useful for testing)
|
|
178
|
+
*/
|
|
179
|
+
export function clearWarningHistory() {
|
|
180
|
+
shownWarnings.clear();
|
|
181
|
+
}
|
|
182
|
+
// =============================================================================
|
|
183
|
+
// Capability Matrix (Documentation)
|
|
184
|
+
// =============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Standard capability matrix for known providers
|
|
187
|
+
*
|
|
188
|
+
* This is a reference for documentation purposes. Actual capabilities
|
|
189
|
+
* are detected at runtime using detectCapabilities().
|
|
190
|
+
*/
|
|
191
|
+
export const PROVIDER_CAPABILITY_MATRIX = {
|
|
192
|
+
MemoryProvider: {
|
|
193
|
+
hasSemanticSearch: true,
|
|
194
|
+
hasEvents: true,
|
|
195
|
+
hasActions: true,
|
|
196
|
+
hasArtifacts: true,
|
|
197
|
+
hasBatchOperations: true,
|
|
198
|
+
},
|
|
199
|
+
RDBProvider: {
|
|
200
|
+
hasSemanticSearch: false,
|
|
201
|
+
hasEvents: false,
|
|
202
|
+
hasActions: false,
|
|
203
|
+
hasArtifacts: false,
|
|
204
|
+
hasBatchOperations: false,
|
|
205
|
+
},
|
|
206
|
+
DigitalObjectsProvider: {
|
|
207
|
+
hasSemanticSearch: false,
|
|
208
|
+
hasEvents: false,
|
|
209
|
+
hasActions: false,
|
|
210
|
+
hasArtifacts: false,
|
|
211
|
+
hasBatchOperations: false,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=provider-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-capabilities.js","sourceRoot":"","sources":["../src/provider-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
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
|
+
import type { DBProvider } from './schema/provider.js';
|
|
41
|
+
import type { ListOptions, SearchOptions } from './schema/types.js';
|
|
42
|
+
/**
|
|
43
|
+
* RDB Entity interface (from @dotdo/rdb)
|
|
44
|
+
*
|
|
45
|
+
* This is a simplified version of the interface for adapter use.
|
|
46
|
+
* The actual RDB Entity uses id/type at the top level.
|
|
47
|
+
*/
|
|
48
|
+
interface RDBEntity {
|
|
49
|
+
id: string;
|
|
50
|
+
type: string;
|
|
51
|
+
[key: string]: unknown;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* RDB Filter type (from @dotdo/rdb)
|
|
55
|
+
*
|
|
56
|
+
* MongoDB-style filter operators for search operations.
|
|
57
|
+
*/
|
|
58
|
+
type FilterOperator = {
|
|
59
|
+
$eq: unknown;
|
|
60
|
+
} | {
|
|
61
|
+
$ne: unknown;
|
|
62
|
+
} | {
|
|
63
|
+
$gt: number | string;
|
|
64
|
+
} | {
|
|
65
|
+
$gte: number | string;
|
|
66
|
+
} | {
|
|
67
|
+
$lt: number | string;
|
|
68
|
+
} | {
|
|
69
|
+
$lte: number | string;
|
|
70
|
+
} | {
|
|
71
|
+
$in: unknown[];
|
|
72
|
+
} | {
|
|
73
|
+
$nin: unknown[];
|
|
74
|
+
} | {
|
|
75
|
+
$regex: string;
|
|
76
|
+
} | {
|
|
77
|
+
$exists: boolean;
|
|
78
|
+
};
|
|
79
|
+
type FilterValue = unknown | FilterOperator;
|
|
80
|
+
type Filter = Record<string, FilterValue>;
|
|
81
|
+
/**
|
|
82
|
+
* RDB DBProvider interface (from @dotdo/rdb)
|
|
83
|
+
*
|
|
84
|
+
* Simplified interface for adapter compatibility.
|
|
85
|
+
*/
|
|
86
|
+
interface RDBProvider {
|
|
87
|
+
get(type: string, id: string): Promise<RDBEntity | null>;
|
|
88
|
+
list(type: string, options?: {
|
|
89
|
+
limit?: number;
|
|
90
|
+
offset?: number;
|
|
91
|
+
orderBy?: string;
|
|
92
|
+
order?: 'asc' | 'desc';
|
|
93
|
+
}): Promise<RDBEntity[]>;
|
|
94
|
+
search(type: string, filter: Filter, options?: {
|
|
95
|
+
limit?: number;
|
|
96
|
+
offset?: number;
|
|
97
|
+
}): Promise<RDBEntity[]>;
|
|
98
|
+
create(type: string, data: Record<string, unknown>, id?: string): Promise<RDBEntity>;
|
|
99
|
+
update(type: string, id: string, data: Record<string, unknown>): Promise<RDBEntity>;
|
|
100
|
+
delete(type: string, id: string): Promise<void>;
|
|
101
|
+
relate(fromType: string, fromId: string, relation: string, toType: string, toId: string, metadata?: Record<string, unknown>): Promise<void>;
|
|
102
|
+
unrelate(fromType: string, fromId: string, relation: string, toType: string, toId: string): Promise<void>;
|
|
103
|
+
related(type: string, id: string, relation: string, options?: {
|
|
104
|
+
direction?: 'outgoing' | 'incoming' | 'both';
|
|
105
|
+
limit?: number;
|
|
106
|
+
offset?: number;
|
|
107
|
+
}): Promise<RDBEntity[]>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* RDB Provider Adapter
|
|
111
|
+
*
|
|
112
|
+
* Wraps an RDB DBProvider to make it compatible with ai-database's DBProvider interface.
|
|
113
|
+
* The primary adaptation is converting string search queries to RDB Filter objects.
|
|
114
|
+
*/
|
|
115
|
+
export declare class RDBProviderAdapter implements DBProvider {
|
|
116
|
+
private rdb;
|
|
117
|
+
/**
|
|
118
|
+
* Create a new RDBProviderAdapter
|
|
119
|
+
*
|
|
120
|
+
* @param rdb - An RDB DBProvider instance (from RDB class or D1Provider/DOProvider)
|
|
121
|
+
*/
|
|
122
|
+
constructor(rdb: RDBProvider);
|
|
123
|
+
/**
|
|
124
|
+
* Get an entity by type and ID
|
|
125
|
+
*/
|
|
126
|
+
get(type: string, id: string): Promise<Record<string, unknown> | null>;
|
|
127
|
+
/**
|
|
128
|
+
* List entities of a type
|
|
129
|
+
*
|
|
130
|
+
* If a `where` filter is provided, we apply it client-side after fetching
|
|
131
|
+
* since RDB's list() method doesn't support where filters natively.
|
|
132
|
+
*/
|
|
133
|
+
list(type: string, options?: ListOptions): Promise<Record<string, unknown>[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Search entities using a string query
|
|
136
|
+
*
|
|
137
|
+
* This is the key adaptation point:
|
|
138
|
+
* - ai-database expects: search(type, query: string)
|
|
139
|
+
* - RDB expects: search(type, filter: Filter)
|
|
140
|
+
*
|
|
141
|
+
* The adapter converts the string query to $regex Filters for text search.
|
|
142
|
+
* Since RDB doesn't support $or at the top level, we search each field
|
|
143
|
+
* separately and deduplicate results.
|
|
144
|
+
*/
|
|
145
|
+
search(type: string, query: string, options?: SearchOptions): Promise<Record<string, unknown>[]>;
|
|
146
|
+
/**
|
|
147
|
+
* Create a new entity
|
|
148
|
+
*/
|
|
149
|
+
create(type: string, id: string | undefined, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
150
|
+
/**
|
|
151
|
+
* Update an existing entity
|
|
152
|
+
*/
|
|
153
|
+
update(type: string, id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
154
|
+
/**
|
|
155
|
+
* Delete an entity
|
|
156
|
+
*
|
|
157
|
+
* @returns true if deleted, false if entity didn't exist
|
|
158
|
+
*/
|
|
159
|
+
delete(type: string, id: string): Promise<boolean>;
|
|
160
|
+
/**
|
|
161
|
+
* Get related entities
|
|
162
|
+
*/
|
|
163
|
+
related(type: string, id: string, relation: string): Promise<Record<string, unknown>[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Create a relationship between entities
|
|
166
|
+
*/
|
|
167
|
+
relate(fromType: string, fromId: string, relation: string, toType: string, toId: string, metadata?: {
|
|
168
|
+
matchMode?: 'exact' | 'fuzzy';
|
|
169
|
+
similarity?: number;
|
|
170
|
+
matchedType?: string;
|
|
171
|
+
}): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* Remove a relationship between entities
|
|
174
|
+
*/
|
|
175
|
+
unrelate(fromType: string, fromId: string, relation: string, toType: string, toId: string): Promise<void>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Create an RDBProviderAdapter from an RDB instance
|
|
179
|
+
*
|
|
180
|
+
* @param rdb - An RDB DBProvider instance
|
|
181
|
+
* @returns Adapted provider compatible with ai-database
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```ts
|
|
185
|
+
* import { RDB } from '@dotdo/rdb'
|
|
186
|
+
* import { createRDBAdapter, setProvider } from 'ai-database'
|
|
187
|
+
*
|
|
188
|
+
* const rdb = new RDB(sqlStorage)
|
|
189
|
+
* const adapter = createRDBAdapter(rdb)
|
|
190
|
+
* setProvider(adapter)
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export declare function createRDBAdapter(rdb: RDBProvider): DBProvider;
|
|
194
|
+
export {};
|
|
195
|
+
//# sourceMappingURL=rdb-provider-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdb-provider-adapter.d.ts","sourceRoot":"","sources":["../src/rdb-provider-adapter.ts"],"names":[],"mappings":"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"}
|