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.
Files changed (268) hide show
  1. package/CHANGELOG.md +47 -1
  2. package/README.md +1063 -186
  3. package/dist/actions.d.ts +2 -2
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/actions.js +1 -1
  6. package/dist/actions.js.map +1 -1
  7. package/dist/ai-promise-db.d.ts +52 -23
  8. package/dist/ai-promise-db.d.ts.map +1 -1
  9. package/dist/ai-promise-db.js +185 -164
  10. package/dist/ai-promise-db.js.map +1 -1
  11. package/dist/authorization.d.ts.map +1 -1
  12. package/dist/authorization.js +38 -30
  13. package/dist/authorization.js.map +1 -1
  14. package/dist/cascade-orchestrator.d.ts +404 -0
  15. package/dist/cascade-orchestrator.d.ts.map +1 -0
  16. package/dist/cascade-orchestrator.js +828 -0
  17. package/dist/cascade-orchestrator.js.map +1 -0
  18. package/dist/cascade-write-strategy.d.ts +584 -0
  19. package/dist/cascade-write-strategy.d.ts.map +1 -0
  20. package/dist/cascade-write-strategy.js +590 -0
  21. package/dist/cascade-write-strategy.js.map +1 -0
  22. package/dist/ch-adapter.d.ts +358 -0
  23. package/dist/ch-adapter.d.ts.map +1 -0
  24. package/dist/ch-adapter.js +929 -0
  25. package/dist/ch-adapter.js.map +1 -0
  26. package/dist/client/index.d.ts +42 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +43 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client.d.ts +266 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +81 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/constants.d.ts +64 -1
  35. package/dist/constants.d.ts.map +1 -1
  36. package/dist/constants.js +52 -2
  37. package/dist/constants.js.map +1 -1
  38. package/dist/dataloader.d.ts +99 -0
  39. package/dist/dataloader.d.ts.map +1 -0
  40. package/dist/dataloader.js +225 -0
  41. package/dist/dataloader.js.map +1 -0
  42. package/dist/db-provider-port.d.ts +501 -0
  43. package/dist/db-provider-port.d.ts.map +1 -0
  44. package/dist/db-provider-port.js +113 -0
  45. package/dist/db-provider-port.js.map +1 -0
  46. package/dist/digital-objects-provider.d.ts +49 -0
  47. package/dist/digital-objects-provider.d.ts.map +1 -0
  48. package/dist/digital-objects-provider.js +55 -0
  49. package/dist/digital-objects-provider.js.map +1 -0
  50. package/dist/do-sqlite-adapter.d.ts +402 -0
  51. package/dist/do-sqlite-adapter.d.ts.map +1 -0
  52. package/dist/do-sqlite-adapter.js +745 -0
  53. package/dist/do-sqlite-adapter.js.map +1 -0
  54. package/dist/docs-rels/custom-types.d.ts +134 -0
  55. package/dist/docs-rels/custom-types.d.ts.map +1 -0
  56. package/dist/docs-rels/custom-types.js +70 -0
  57. package/dist/docs-rels/custom-types.js.map +1 -0
  58. package/dist/docs-rels/index.d.ts +16 -0
  59. package/dist/docs-rels/index.d.ts.map +1 -0
  60. package/dist/docs-rels/index.js +16 -0
  61. package/dist/docs-rels/index.js.map +1 -0
  62. package/dist/docs-rels/migrations/index.d.ts +30 -0
  63. package/dist/docs-rels/migrations/index.d.ts.map +1 -0
  64. package/dist/docs-rels/migrations/index.js +128 -0
  65. package/dist/docs-rels/migrations/index.js.map +1 -0
  66. package/dist/docs-rels/schema.d.ts +2961 -0
  67. package/dist/docs-rels/schema.d.ts.map +1 -0
  68. package/dist/docs-rels/schema.js +244 -0
  69. package/dist/docs-rels/schema.js.map +1 -0
  70. package/dist/durable-clickhouse.d.ts.map +1 -1
  71. package/dist/durable-clickhouse.js +16 -13
  72. package/dist/durable-clickhouse.js.map +1 -1
  73. package/dist/durable-promise.d.ts.map +1 -1
  74. package/dist/durable-promise.js +34 -15
  75. package/dist/durable-promise.js.map +1 -1
  76. package/dist/errors.d.ts +127 -0
  77. package/dist/errors.d.ts.map +1 -0
  78. package/dist/errors.js +210 -0
  79. package/dist/errors.js.map +1 -0
  80. package/dist/eventbridge.d.ts +117 -0
  81. package/dist/eventbridge.d.ts.map +1 -0
  82. package/dist/eventbridge.js +238 -0
  83. package/dist/eventbridge.js.map +1 -0
  84. package/dist/events.d.ts +2 -2
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +1 -1
  87. package/dist/events.js.map +1 -1
  88. package/dist/execution-queue.d.ts.map +1 -1
  89. package/dist/execution-queue.js +4 -5
  90. package/dist/execution-queue.js.map +1 -1
  91. package/dist/index.d.ts +37 -8
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +112 -6
  94. package/dist/index.js.map +1 -1
  95. package/dist/linguistic.d.ts +3 -108
  96. package/dist/linguistic.d.ts.map +1 -1
  97. package/dist/linguistic.js +3 -372
  98. package/dist/linguistic.js.map +1 -1
  99. package/dist/logger.d.ts +132 -0
  100. package/dist/logger.d.ts.map +1 -0
  101. package/dist/logger.js +137 -0
  102. package/dist/logger.js.map +1 -0
  103. package/dist/memory-provider.d.ts +129 -0
  104. package/dist/memory-provider.d.ts.map +1 -1
  105. package/dist/memory-provider.js +592 -257
  106. package/dist/memory-provider.js.map +1 -1
  107. package/dist/pg-adapter.d.ts +424 -0
  108. package/dist/pg-adapter.d.ts.map +1 -0
  109. package/dist/pg-adapter.js +921 -0
  110. package/dist/pg-adapter.js.map +1 -0
  111. package/dist/pipelines-iceberg-emitter.d.ts +327 -0
  112. package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
  113. package/dist/pipelines-iceberg-emitter.js +351 -0
  114. package/dist/pipelines-iceberg-emitter.js.map +1 -0
  115. package/dist/provider-capabilities.d.ts +146 -0
  116. package/dist/provider-capabilities.d.ts.map +1 -0
  117. package/dist/provider-capabilities.js +214 -0
  118. package/dist/provider-capabilities.js.map +1 -0
  119. package/dist/rdb-provider-adapter.d.ts +195 -0
  120. package/dist/rdb-provider-adapter.d.ts.map +1 -0
  121. package/dist/rdb-provider-adapter.js +291 -0
  122. package/dist/rdb-provider-adapter.js.map +1 -0
  123. package/dist/schema/cascade.d.ts +49 -10
  124. package/dist/schema/cascade.d.ts.map +1 -1
  125. package/dist/schema/cascade.js +491 -273
  126. package/dist/schema/cascade.js.map +1 -1
  127. package/dist/schema/definition-caches.d.ts +24 -0
  128. package/dist/schema/definition-caches.d.ts.map +1 -0
  129. package/dist/schema/definition-caches.js +26 -0
  130. package/dist/schema/definition-caches.js.map +1 -0
  131. package/dist/schema/dependency-graph.d.ts +45 -0
  132. package/dist/schema/dependency-graph.d.ts.map +1 -0
  133. package/dist/schema/dependency-graph.js +47 -0
  134. package/dist/schema/dependency-graph.js.map +1 -0
  135. package/dist/schema/diff.d.ts +103 -0
  136. package/dist/schema/diff.d.ts.map +1 -0
  137. package/dist/schema/diff.js +329 -0
  138. package/dist/schema/diff.js.map +1 -0
  139. package/dist/schema/entity-operations.d.ts +99 -0
  140. package/dist/schema/entity-operations.d.ts.map +1 -0
  141. package/dist/schema/entity-operations.js +818 -0
  142. package/dist/schema/entity-operations.js.map +1 -0
  143. package/dist/schema/generation-context.d.ts +202 -0
  144. package/dist/schema/generation-context.d.ts.map +1 -0
  145. package/dist/schema/generation-context.js +393 -0
  146. package/dist/schema/generation-context.js.map +1 -0
  147. package/dist/schema/index.d.ts +32 -34
  148. package/dist/schema/index.d.ts.map +1 -1
  149. package/dist/schema/index.js +462 -519
  150. package/dist/schema/index.js.map +1 -1
  151. package/dist/schema/migration.d.ts +205 -0
  152. package/dist/schema/migration.d.ts.map +1 -0
  153. package/dist/schema/migration.js +327 -0
  154. package/dist/schema/migration.js.map +1 -0
  155. package/dist/schema/nl-query-generator.d.ts +68 -0
  156. package/dist/schema/nl-query-generator.d.ts.map +1 -0
  157. package/dist/schema/nl-query-generator.js +362 -0
  158. package/dist/schema/nl-query-generator.js.map +1 -0
  159. package/dist/schema/nl-query.d.ts +65 -0
  160. package/dist/schema/nl-query.d.ts.map +1 -0
  161. package/dist/schema/nl-query.js +178 -0
  162. package/dist/schema/nl-query.js.map +1 -0
  163. package/dist/schema/parse.d.ts.map +1 -1
  164. package/dist/schema/parse.js +152 -89
  165. package/dist/schema/parse.js.map +1 -1
  166. package/dist/schema/provider.d.ts +38 -0
  167. package/dist/schema/provider.d.ts.map +1 -1
  168. package/dist/schema/provider.js +15 -7
  169. package/dist/schema/provider.js.map +1 -1
  170. package/dist/schema/resolve.d.ts +46 -5
  171. package/dist/schema/resolve.d.ts.map +1 -1
  172. package/dist/schema/resolve.js +334 -117
  173. package/dist/schema/resolve.js.map +1 -1
  174. package/dist/schema/search-utils.d.ts +76 -0
  175. package/dist/schema/search-utils.d.ts.map +1 -0
  176. package/dist/schema/search-utils.js +86 -0
  177. package/dist/schema/search-utils.js.map +1 -0
  178. package/dist/schema/seed.d.ts +53 -0
  179. package/dist/schema/seed.d.ts.map +1 -0
  180. package/dist/schema/seed.js +94 -0
  181. package/dist/schema/seed.js.map +1 -0
  182. package/dist/schema/semantic.d.ts +11 -0
  183. package/dist/schema/semantic.d.ts.map +1 -1
  184. package/dist/schema/semantic.js +262 -68
  185. package/dist/schema/semantic.js.map +1 -1
  186. package/dist/schema/sub-apis.d.ts +52 -0
  187. package/dist/schema/sub-apis.d.ts.map +1 -0
  188. package/dist/schema/sub-apis.js +216 -0
  189. package/dist/schema/sub-apis.js.map +1 -0
  190. package/dist/schema/system-entities.d.ts +42 -0
  191. package/dist/schema/system-entities.d.ts.map +1 -0
  192. package/dist/schema/system-entities.js +101 -0
  193. package/dist/schema/system-entities.js.map +1 -0
  194. package/dist/schema/types.d.ts +91 -9
  195. package/dist/schema/types.d.ts.map +1 -1
  196. package/dist/schema/union-fallback.d.ts +219 -0
  197. package/dist/schema/union-fallback.d.ts.map +1 -0
  198. package/dist/schema/union-fallback.js +331 -0
  199. package/dist/schema/union-fallback.js.map +1 -0
  200. package/dist/schema/value-generators/ai.d.ts +54 -0
  201. package/dist/schema/value-generators/ai.d.ts.map +1 -0
  202. package/dist/schema/value-generators/ai.js +136 -0
  203. package/dist/schema/value-generators/ai.js.map +1 -0
  204. package/dist/schema/value-generators/index.d.ts +126 -0
  205. package/dist/schema/value-generators/index.d.ts.map +1 -0
  206. package/dist/schema/value-generators/index.js +219 -0
  207. package/dist/schema/value-generators/index.js.map +1 -0
  208. package/dist/schema/value-generators/placeholder.d.ts +52 -0
  209. package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
  210. package/dist/schema/value-generators/placeholder.js +328 -0
  211. package/dist/schema/value-generators/placeholder.js.map +1 -0
  212. package/dist/schema/value-generators/types.d.ts +116 -0
  213. package/dist/schema/value-generators/types.d.ts.map +1 -0
  214. package/dist/schema/value-generators/types.js +11 -0
  215. package/dist/schema/value-generators/types.js.map +1 -0
  216. package/dist/schema/verb-derivation.d.ts +167 -0
  217. package/dist/schema/verb-derivation.d.ts.map +1 -0
  218. package/dist/schema/verb-derivation.js +281 -0
  219. package/dist/schema/verb-derivation.js.map +1 -0
  220. package/dist/schema/version.d.ts +111 -0
  221. package/dist/schema/version.d.ts.map +1 -0
  222. package/dist/schema/version.js +190 -0
  223. package/dist/schema/version.js.map +1 -0
  224. package/dist/schema.d.ts +1095 -23
  225. package/dist/schema.d.ts.map +1 -1
  226. package/dist/schema.js +2854 -38
  227. package/dist/schema.js.map +1 -1
  228. package/dist/semantic-vectors.d.ts +39 -0
  229. package/dist/semantic-vectors.d.ts.map +1 -0
  230. package/dist/semantic-vectors.js +334 -0
  231. package/dist/semantic-vectors.js.map +1 -0
  232. package/dist/semantic.d.ts +29 -1
  233. package/dist/semantic.d.ts.map +1 -1
  234. package/dist/semantic.js +26 -16
  235. package/dist/semantic.js.map +1 -1
  236. package/dist/telemetry.d.ts +128 -0
  237. package/dist/telemetry.d.ts.map +1 -0
  238. package/dist/telemetry.js +305 -0
  239. package/dist/telemetry.js.map +1 -0
  240. package/dist/tests.d.ts.map +1 -1
  241. package/dist/tests.js +30 -22
  242. package/dist/tests.js.map +1 -1
  243. package/dist/type-guards.d.ts +212 -0
  244. package/dist/type-guards.d.ts.map +1 -0
  245. package/dist/type-guards.js +318 -0
  246. package/dist/type-guards.js.map +1 -0
  247. package/dist/types.d.ts +33 -245
  248. package/dist/types.d.ts.map +1 -1
  249. package/dist/types.js +62 -72
  250. package/dist/types.js.map +1 -1
  251. package/dist/validation.d.ts +165 -0
  252. package/dist/validation.d.ts.map +1 -0
  253. package/dist/validation.js +639 -0
  254. package/dist/validation.js.map +1 -0
  255. package/dist/worker/db-provider.d.ts +168 -0
  256. package/dist/worker/db-provider.d.ts.map +1 -0
  257. package/dist/worker/db-provider.js +277 -0
  258. package/dist/worker/db-provider.js.map +1 -0
  259. package/dist/worker/index.d.ts +35 -0
  260. package/dist/worker/index.d.ts.map +1 -0
  261. package/dist/worker/index.js +37 -0
  262. package/dist/worker/index.js.map +1 -0
  263. package/dist/worker.d.ts +779 -0
  264. package/dist/worker.d.ts.map +1 -0
  265. package/dist/worker.js +2786 -0
  266. package/dist/worker.js.map +1 -0
  267. package/package.json +38 -8
  268. package/src/docs-rels/migrations/0001-init.sql +125 -0
@@ -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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"}