ai-database 2.1.1 → 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 +47 -1
- package/README.md +1063 -186
- 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 +52 -23
- package/dist/ai-promise-db.d.ts.map +1 -1
- package/dist/ai-promise-db.js +185 -164
- 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 +37 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +112 -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 +129 -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 +49 -10
- package/dist/schema/cascade.d.ts.map +1 -1
- package/dist/schema/cascade.js +491 -273
- 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 +45 -0
- package/dist/schema/dependency-graph.d.ts.map +1 -0
- package/dist/schema/dependency-graph.js +47 -0
- package/dist/schema/dependency-graph.js.map +1 -0
- 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/generation-context.d.ts +202 -0
- package/dist/schema/generation-context.d.ts.map +1 -0
- package/dist/schema/generation-context.js +393 -0
- package/dist/schema/generation-context.js.map +1 -0
- package/dist/schema/index.d.ts +32 -34
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +462 -519
- 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 +152 -89
- package/dist/schema/parse.js.map +1 -1
- package/dist/schema/provider.d.ts +38 -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 +334 -117
- 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 +11 -0
- package/dist/schema/semantic.d.ts.map +1 -1
- package/dist/schema/semantic.js +262 -68
- 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 +219 -0
- package/dist/schema/union-fallback.d.ts.map +1 -0
- package/dist/schema/union-fallback.js +331 -0
- package/dist/schema/union-fallback.js.map +1 -0
- 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/verb-derivation.d.ts +167 -0
- package/dist/schema/verb-derivation.d.ts.map +1 -0
- package/dist/schema/verb-derivation.js +281 -0
- package/dist/schema/verb-derivation.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 -23
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2854 -38
- 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 +212 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +318 -0
- package/dist/type-guards.js.map +1 -0
- 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 +165 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +639 -0
- package/dist/validation.js.map +1 -0
- 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 +38 -8
- package/src/docs-rels/migrations/0001-init.sql +125 -0
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error handling utilities for ai-database
|
|
3
|
+
*
|
|
4
|
+
* These utilities help distinguish between expected errors that can be safely
|
|
5
|
+
* ignored and unexpected errors that should be propagated or logged.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Check if an error is a "not found" error that can be safely ignored
|
|
11
|
+
* when the operation is expected to potentially return nothing.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isNotFoundError(error: unknown): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check if an error is a duplicate key/entity exists error.
|
|
16
|
+
* These can be safely ignored when creating entities that may already exist.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isEntityExistsError(error: unknown): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Check if an error is an expected error that can be safely handled
|
|
21
|
+
* without re-throwing. This includes not found and entity exists errors.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isExpectedError(error: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Custom error class for database operations with context
|
|
26
|
+
*/
|
|
27
|
+
export declare class DatabaseError extends Error {
|
|
28
|
+
operation: string;
|
|
29
|
+
entityType: string;
|
|
30
|
+
entityId?: string | undefined;
|
|
31
|
+
cause?: Error | undefined;
|
|
32
|
+
constructor(message: string, operation: string, entityType: string, entityId?: string | undefined, cause?: Error | undefined);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Wrap an error with database operation context
|
|
36
|
+
*/
|
|
37
|
+
export declare function wrapDatabaseError(error: unknown, operation: string, entityType: string, entityId?: string): DatabaseError;
|
|
38
|
+
/**
|
|
39
|
+
* Error thrown when an entity is not found in the database.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* throw new EntityNotFoundError('User', 'user-123', 'get')
|
|
44
|
+
* // Error: Entity not found: User/user-123 (operation: get)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class EntityNotFoundError extends DatabaseError {
|
|
48
|
+
readonly code = "ENTITY_NOT_FOUND";
|
|
49
|
+
constructor(entityType: string, entityId: string, operation?: string, cause?: Error);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Error thrown when attempting to create an entity that already exists.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* throw new EntityAlreadyExistsError('User', 'user-123', 'create')
|
|
57
|
+
* // Error: Entity already exists: User/user-123 (operation: create)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare class EntityAlreadyExistsError extends DatabaseError {
|
|
61
|
+
readonly code = "ENTITY_ALREADY_EXISTS";
|
|
62
|
+
constructor(entityType: string, entityId: string, operation?: string, cause?: Error);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Error thrown when validation of input data fails.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* throw new ValidationError('Invalid email format', 'User', 'email', 'not-an-email')
|
|
70
|
+
* // Error: Validation failed for User.email: Invalid email format
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare class ValidationError extends DatabaseError {
|
|
74
|
+
readonly field?: string | undefined;
|
|
75
|
+
readonly value?: unknown | undefined;
|
|
76
|
+
readonly code = "VALIDATION_ERROR";
|
|
77
|
+
constructor(message: string, entityType: string, field?: string | undefined, value?: unknown | undefined, cause?: Error);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Error thrown when AI generation fails.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* throw new AIGenerationError('Failed to generate description', 'Product', 'description', err)
|
|
85
|
+
* // Error: AI generation failed for Product.description: Failed to generate description
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare class AIGenerationError extends DatabaseError {
|
|
89
|
+
readonly field?: string | undefined;
|
|
90
|
+
readonly code = "AI_GENERATION_ERROR";
|
|
91
|
+
constructor(message: string, entityType: string, field?: string | undefined, cause?: Error);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Error thrown when semantic search operations fail.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* throw new SemanticSearchError('Embedding generation failed', 'Product', 'search query', err)
|
|
99
|
+
* // Error: Semantic search failed for Product: Embedding generation failed
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare class SemanticSearchError extends DatabaseError {
|
|
103
|
+
readonly query?: string | undefined;
|
|
104
|
+
readonly code = "SEMANTIC_SEARCH_ERROR";
|
|
105
|
+
constructor(message: string, entityType: string, query?: string | undefined, cause?: Error);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Error thrown when an adapter cannot perform a Tier 4 (vector search)
|
|
109
|
+
* query because the backing index is not configured.
|
|
110
|
+
*
|
|
111
|
+
* Distinct from {@link CapabilityNotSupportedError}: that error means the
|
|
112
|
+
* adapter never claims vector search; this error means the adapter would
|
|
113
|
+
* support vector search if its sidecar / extension / index were present
|
|
114
|
+
* but at runtime it isn't (e.g., DO SQLite without a Vectorize binding).
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* throw new VectorSearchUnavailableError('do-sqlite', 'no Vectorize binding configured')
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare class VectorSearchUnavailableError extends DatabaseError {
|
|
122
|
+
readonly adapter: string;
|
|
123
|
+
readonly code = "VECTOR_SEARCH_UNAVAILABLE";
|
|
124
|
+
constructor(adapter: string, reason: string, cause?: Error);
|
|
125
|
+
}
|
|
126
|
+
export { CapabilityNotSupportedError, isCapabilityNotSupportedError, } from './provider-capabilities.js';
|
|
127
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAoBvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAuB3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAG7B,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,CAAC,EAAE,MAAM;IACR,KAAK,CAAC,EAAE,KAAK;gBAJ7B,OAAO,EAAE,MAAM,EACR,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,YAAA,EACR,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAIf;AAMD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,SAAgB,IAAI,sBAAqB;gBAE7B,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3F;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;IACzD,SAAgB,IAAI,2BAA0B;gBAElC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAiB,EAAE,KAAK,CAAC,EAAE,KAAK;CAI9F;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,aAAa;aAM9B,KAAK,CAAC,EAAE,MAAM;aACd,KAAK,CAAC,EAAE,OAAO;IANjC,SAAgB,IAAI,sBAAqB;gBAGvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EACF,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,KAAK,CAAC,EAAE,OAAO,YAAA,EAC/B,KAAK,CAAC,EAAE,KAAK;CAOhB;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;aAGe,KAAK,CAAC,EAAE,MAAM;IAF/E,SAAgB,IAAI,yBAAwB;gBAEhC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,YAAA,EAAE,KAAK,CAAC,EAAE,KAAK;CAM/F;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;aAGa,KAAK,CAAC,EAAE,MAAM;IAF/E,SAAgB,IAAI,2BAA0B;gBAElC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,YAAA,EAAE,KAAK,CAAC,EAAE,KAAK;CAK/F;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,4BAA6B,SAAQ,aAAa;aAGjC,OAAO,EAAE,MAAM;IAF3C,SAAgB,IAAI,+BAA8B;gBAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAU3E;AAGD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,4BAA4B,CAAA"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error handling utilities for ai-database
|
|
3
|
+
*
|
|
4
|
+
* These utilities help distinguish between expected errors that can be safely
|
|
5
|
+
* ignored and unexpected errors that should be propagated or logged.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Check if an error is a "not found" error that can be safely ignored
|
|
11
|
+
* when the operation is expected to potentially return nothing.
|
|
12
|
+
*/
|
|
13
|
+
export function isNotFoundError(error) {
|
|
14
|
+
// Check for custom EntityNotFoundError class
|
|
15
|
+
if (error && typeof error === 'object' && 'code' in error) {
|
|
16
|
+
if (error.code === 'ENTITY_NOT_FOUND') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (error instanceof Error) {
|
|
21
|
+
const message = error.message.toLowerCase();
|
|
22
|
+
return (message.includes('not found') ||
|
|
23
|
+
message.includes('does not exist') ||
|
|
24
|
+
message.includes('no such') ||
|
|
25
|
+
error.code === 'NOT_FOUND' ||
|
|
26
|
+
error.code === 'SQLITE_NOTFOUND' ||
|
|
27
|
+
error.code === 'ENOENT');
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if an error is a duplicate key/entity exists error.
|
|
33
|
+
* These can be safely ignored when creating entities that may already exist.
|
|
34
|
+
*/
|
|
35
|
+
export function isEntityExistsError(error) {
|
|
36
|
+
// Check for custom EntityAlreadyExistsError class
|
|
37
|
+
if (error && typeof error === 'object' && 'code' in error) {
|
|
38
|
+
if (error.code === 'ENTITY_ALREADY_EXISTS') {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (error instanceof Error) {
|
|
43
|
+
const message = error.message.toLowerCase();
|
|
44
|
+
return (message.includes('already exists') ||
|
|
45
|
+
message.includes('duplicate key') ||
|
|
46
|
+
message.includes('duplicate entry') ||
|
|
47
|
+
message.includes('unique constraint') ||
|
|
48
|
+
error.code === 'DUPLICATE_KEY' ||
|
|
49
|
+
error.code === 'SQLITE_CONSTRAINT_UNIQUE' ||
|
|
50
|
+
error.code === 'SQLITE_CONSTRAINT_PRIMARYKEY' ||
|
|
51
|
+
error.code === 'ER_DUP_ENTRY' ||
|
|
52
|
+
error.code === '23505' // PostgreSQL unique violation
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if an error is an expected error that can be safely handled
|
|
59
|
+
* without re-throwing. This includes not found and entity exists errors.
|
|
60
|
+
*/
|
|
61
|
+
export function isExpectedError(error) {
|
|
62
|
+
return isNotFoundError(error) || isEntityExistsError(error);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Custom error class for database operations with context
|
|
66
|
+
*/
|
|
67
|
+
export class DatabaseError extends Error {
|
|
68
|
+
operation;
|
|
69
|
+
entityType;
|
|
70
|
+
entityId;
|
|
71
|
+
cause;
|
|
72
|
+
constructor(message, operation, entityType, entityId, cause) {
|
|
73
|
+
super(`${operation} ${entityType}${entityId ? `/${entityId}` : ''}: ${message}`);
|
|
74
|
+
this.operation = operation;
|
|
75
|
+
this.entityType = entityType;
|
|
76
|
+
this.entityId = entityId;
|
|
77
|
+
this.cause = cause;
|
|
78
|
+
this.name = 'DatabaseError';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Wrap an error with database operation context
|
|
83
|
+
*/
|
|
84
|
+
export function wrapDatabaseError(error, operation, entityType, entityId) {
|
|
85
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
+
const cause = error instanceof Error ? error : undefined;
|
|
87
|
+
return new DatabaseError(message, operation, entityType, entityId, cause);
|
|
88
|
+
}
|
|
89
|
+
// =============================================================================
|
|
90
|
+
// Custom Error Classes
|
|
91
|
+
// =============================================================================
|
|
92
|
+
/**
|
|
93
|
+
* Error thrown when an entity is not found in the database.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* throw new EntityNotFoundError('User', 'user-123', 'get')
|
|
98
|
+
* // Error: Entity not found: User/user-123 (operation: get)
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export class EntityNotFoundError extends DatabaseError {
|
|
102
|
+
code = 'ENTITY_NOT_FOUND';
|
|
103
|
+
constructor(entityType, entityId, operation = 'get', cause) {
|
|
104
|
+
super('Entity not found', operation, entityType, entityId, cause);
|
|
105
|
+
this.name = 'EntityNotFoundError';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Error thrown when attempting to create an entity that already exists.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* throw new EntityAlreadyExistsError('User', 'user-123', 'create')
|
|
114
|
+
* // Error: Entity already exists: User/user-123 (operation: create)
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export class EntityAlreadyExistsError extends DatabaseError {
|
|
118
|
+
code = 'ENTITY_ALREADY_EXISTS';
|
|
119
|
+
constructor(entityType, entityId, operation = 'create', cause) {
|
|
120
|
+
super('Entity already exists', operation, entityType, entityId, cause);
|
|
121
|
+
this.name = 'EntityAlreadyExistsError';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Error thrown when validation of input data fails.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* throw new ValidationError('Invalid email format', 'User', 'email', 'not-an-email')
|
|
130
|
+
* // Error: Validation failed for User.email: Invalid email format
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export class ValidationError extends DatabaseError {
|
|
134
|
+
field;
|
|
135
|
+
value;
|
|
136
|
+
code = 'VALIDATION_ERROR';
|
|
137
|
+
constructor(message, entityType, field, value, cause) {
|
|
138
|
+
const fieldInfo = field ? `.${field}` : '';
|
|
139
|
+
const fullMessage = `Validation failed for ${entityType}${fieldInfo}: ${message}`;
|
|
140
|
+
super(fullMessage, 'validate', entityType, undefined, cause);
|
|
141
|
+
this.field = field;
|
|
142
|
+
this.value = value;
|
|
143
|
+
this.name = 'ValidationError';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Error thrown when AI generation fails.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* throw new AIGenerationError('Failed to generate description', 'Product', 'description', err)
|
|
152
|
+
* // Error: AI generation failed for Product.description: Failed to generate description
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export class AIGenerationError extends DatabaseError {
|
|
156
|
+
field;
|
|
157
|
+
code = 'AI_GENERATION_ERROR';
|
|
158
|
+
constructor(message, entityType, field, cause) {
|
|
159
|
+
const fieldInfo = field ? `.${field}` : '';
|
|
160
|
+
const fullMessage = `AI generation failed for ${entityType}${fieldInfo}: ${message}`;
|
|
161
|
+
super(fullMessage, 'generate', entityType, undefined, cause);
|
|
162
|
+
this.field = field;
|
|
163
|
+
this.name = 'AIGenerationError';
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Error thrown when semantic search operations fail.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* throw new SemanticSearchError('Embedding generation failed', 'Product', 'search query', err)
|
|
172
|
+
* // Error: Semantic search failed for Product: Embedding generation failed
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export class SemanticSearchError extends DatabaseError {
|
|
176
|
+
query;
|
|
177
|
+
code = 'SEMANTIC_SEARCH_ERROR';
|
|
178
|
+
constructor(message, entityType, query, cause) {
|
|
179
|
+
const fullMessage = `Semantic search failed for ${entityType}: ${message}`;
|
|
180
|
+
super(fullMessage, 'semanticSearch', entityType, undefined, cause);
|
|
181
|
+
this.query = query;
|
|
182
|
+
this.name = 'SemanticSearchError';
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Error thrown when an adapter cannot perform a Tier 4 (vector search)
|
|
187
|
+
* query because the backing index is not configured.
|
|
188
|
+
*
|
|
189
|
+
* Distinct from {@link CapabilityNotSupportedError}: that error means the
|
|
190
|
+
* adapter never claims vector search; this error means the adapter would
|
|
191
|
+
* support vector search if its sidecar / extension / index were present
|
|
192
|
+
* but at runtime it isn't (e.g., DO SQLite without a Vectorize binding).
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* throw new VectorSearchUnavailableError('do-sqlite', 'no Vectorize binding configured')
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export class VectorSearchUnavailableError extends DatabaseError {
|
|
200
|
+
adapter;
|
|
201
|
+
code = 'VECTOR_SEARCH_UNAVAILABLE';
|
|
202
|
+
constructor(adapter, reason, cause) {
|
|
203
|
+
super(`Vector search unavailable on ${adapter}: ${reason}`, 'vectorSearch', 'unknown', undefined, cause);
|
|
204
|
+
this.adapter = adapter;
|
|
205
|
+
this.name = 'VectorSearchUnavailableError';
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Re-export CapabilityNotSupportedError for convenience
|
|
209
|
+
export { CapabilityNotSupportedError, isCapabilityNotSupportedError, } from './provider-capabilities.js';
|
|
210
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventBridge with Cloudflare Queues
|
|
3
|
+
*
|
|
4
|
+
* Enables publishing database events to Cloudflare Queues for async processing.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Publishing events to queues with optional delays
|
|
7
|
+
* - Batch publishing for efficiency
|
|
8
|
+
* - Event routing based on patterns
|
|
9
|
+
* - Dead letter queue (DLQ) handling for failed events
|
|
10
|
+
* - Message processing with retry logic
|
|
11
|
+
* - Statistics tracking
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Cloudflare Queue message type
|
|
17
|
+
*/
|
|
18
|
+
export interface QueueMessage<T = unknown> {
|
|
19
|
+
id: string;
|
|
20
|
+
timestamp: Date;
|
|
21
|
+
body: T;
|
|
22
|
+
attempts: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Cloudflare Queue binding interface
|
|
26
|
+
*/
|
|
27
|
+
export interface QueueBinding {
|
|
28
|
+
send(message: unknown, options?: {
|
|
29
|
+
delaySeconds?: number;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
sendBatch(messages: Array<{
|
|
32
|
+
body: unknown;
|
|
33
|
+
delaySeconds?: number;
|
|
34
|
+
}>): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* EventBridge configuration
|
|
38
|
+
*/
|
|
39
|
+
export interface EventBridgeConfig {
|
|
40
|
+
/** The Cloudflare Queue binding for publishing events */
|
|
41
|
+
queue?: QueueBinding;
|
|
42
|
+
/** Dead letter queue for failed events */
|
|
43
|
+
dlq?: QueueBinding;
|
|
44
|
+
/** Maximum retry attempts before sending to DLQ */
|
|
45
|
+
maxRetries?: number;
|
|
46
|
+
/** Batch size for bulk publishing */
|
|
47
|
+
batchSize?: number;
|
|
48
|
+
/** Event patterns to route to specific queues */
|
|
49
|
+
routes?: Record<string, QueueBinding>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Event to publish
|
|
53
|
+
*/
|
|
54
|
+
export interface PublishEvent {
|
|
55
|
+
event: string;
|
|
56
|
+
data?: unknown;
|
|
57
|
+
actor?: string;
|
|
58
|
+
object?: string;
|
|
59
|
+
delay?: number;
|
|
60
|
+
meta?: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Published event with generated fields
|
|
64
|
+
*/
|
|
65
|
+
export interface PublishedEvent extends PublishEvent {
|
|
66
|
+
id: string;
|
|
67
|
+
timestamp: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result of processing messages
|
|
71
|
+
*/
|
|
72
|
+
export interface ProcessResult {
|
|
73
|
+
processed: number;
|
|
74
|
+
failed: number;
|
|
75
|
+
retried: number;
|
|
76
|
+
deadLettered: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Queue statistics
|
|
80
|
+
*/
|
|
81
|
+
export interface EventBridgeStats {
|
|
82
|
+
published: number;
|
|
83
|
+
processed: number;
|
|
84
|
+
failed: number;
|
|
85
|
+
deadLettered: number;
|
|
86
|
+
pending: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Subscription handler
|
|
90
|
+
*/
|
|
91
|
+
export type SubscriptionHandler = (message: QueueMessage) => Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* EventBridge API interface
|
|
94
|
+
*/
|
|
95
|
+
export interface EventBridgeAPI {
|
|
96
|
+
/** Publish an event to the queue */
|
|
97
|
+
publish(event: PublishEvent): Promise<void>;
|
|
98
|
+
/** Publish multiple events in a batch */
|
|
99
|
+
publishBatch(events: PublishEvent[]): Promise<void>;
|
|
100
|
+
/** Subscribe to events with a handler */
|
|
101
|
+
subscribe(pattern: string, handler: SubscriptionHandler): () => void;
|
|
102
|
+
/** Process incoming queue messages */
|
|
103
|
+
process(messages: QueueMessage[]): Promise<ProcessResult>;
|
|
104
|
+
/** Get queue statistics */
|
|
105
|
+
getStats(): EventBridgeStats;
|
|
106
|
+
/** Configure the bridge */
|
|
107
|
+
configure(config: EventBridgeConfig): void;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create an EventBridge instance
|
|
111
|
+
*/
|
|
112
|
+
export declare function createEventBridge(): EventBridgeAPI;
|
|
113
|
+
/**
|
|
114
|
+
* Create the EventBridge API factory for DB integration
|
|
115
|
+
*/
|
|
116
|
+
export declare function createEventBridgeAPI(): EventBridgeAPI;
|
|
117
|
+
//# sourceMappingURL=eventbridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventbridge.d.ts","sourceRoot":"","sources":["../src/eventbridge.ts"],"names":[],"mappings":"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"}
|