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
@@ -9,6 +9,45 @@
9
9
  import { hasSemanticSearch } from './provider.js';
10
10
  import { resolveNestedPending } from './resolve.js';
11
11
  import { generateEntity } from './cascade.js';
12
+ import { searchUnionTypes, createProviderSearcher, } from './union-fallback.js';
13
+ import { findBestMatchAcrossTypes } from './search-utils.js';
14
+ /**
15
+ * Perform basic text search across multiple types as fallback when semantic search unavailable
16
+ *
17
+ * This provides graceful degradation for providers that don't support semantic search
18
+ * (e.g., RDB, DigitalObjectsProvider). It uses the provider's basic search() method
19
+ * which typically performs case-insensitive substring matching.
20
+ *
21
+ * @param provider - The database provider
22
+ * @param types - Types to search across
23
+ * @param query - The search query
24
+ * @param limit - Maximum results to return
25
+ * @returns Array of matched entities with $id and $type
26
+ */
27
+ async function textSearchFallback(provider, types, query, limit) {
28
+ const results = [];
29
+ for (const type of types) {
30
+ if (results.length >= limit)
31
+ break;
32
+ try {
33
+ const searchResults = await provider.search(type, query, { limit: limit - results.length });
34
+ for (const result of searchResults) {
35
+ if (results.length >= limit)
36
+ break;
37
+ results.push({
38
+ ...result,
39
+ $id: (result['$id'] ?? result['id']),
40
+ $type: type,
41
+ });
42
+ }
43
+ }
44
+ catch {
45
+ // Ignore search errors for individual types, continue with others
46
+ continue;
47
+ }
48
+ }
49
+ return results;
50
+ }
12
51
  /**
13
52
  * Safely extract the fuzzy threshold from entity schema
14
53
  *
@@ -17,13 +56,11 @@ import { generateEntity } from './cascade.js';
17
56
  *
18
57
  * @param entity - The parsed entity definition
19
58
  * @returns The fuzzy matching threshold (0-1), defaults to 0.75
20
- *
21
- * @internal
22
59
  */
23
- function getFuzzyThreshold(entity) {
60
+ export function getFuzzyThreshold(entity) {
24
61
  const schema = entity.schema;
25
62
  if (schema && '$fuzzyThreshold' in schema) {
26
- const threshold = schema.$fuzzyThreshold;
63
+ const threshold = schema['$fuzzyThreshold'];
27
64
  if (typeof threshold === 'number') {
28
65
  return threshold;
29
66
  }
@@ -59,30 +96,90 @@ export async function resolveBackwardFuzzy(typeName, data, entity, schema, provi
59
96
  }
60
97
  // Get the hint field value - uses fieldNameHint convention
61
98
  const hintKey = `${fieldName}Hint`;
62
- const searchQuery = data[hintKey] || field.prompt || '';
63
- // Skip if no search query available (optional fields without hint)
99
+ let searchQuery = data[hintKey] || field.prompt || '';
100
+ // If no explicit hint or prompt, build context from entity's data
101
+ // This allows backward fuzzy to match based on the entity's own fields
102
+ // Only use entity context for required fields - optional fields should stay null
103
+ if (!searchQuery && !field.isOptional) {
104
+ const contextParts = [];
105
+ for (const [key, value] of Object.entries(data)) {
106
+ if (!key.startsWith('$') && !key.startsWith('_') && typeof value === 'string' && value) {
107
+ contextParts.push(value);
108
+ }
109
+ }
110
+ searchQuery = contextParts.join(' ');
111
+ }
112
+ // Skip if no search query available (optional fields without hint, or entity has no string fields)
64
113
  if (!searchQuery) {
65
114
  continue;
66
115
  }
116
+ // Determine which types to search - all union types or just the primary type
117
+ const typesToSearch = field.unionTypes && field.unionTypes.length > 0 ? field.unionTypes : [field.relatedType];
118
+ // Filter to only types that exist in the schema
119
+ const validTypes = typesToSearch.filter((t) => schema.entities.has(t));
120
+ if (validTypes.length === 0)
121
+ continue;
67
122
  // Check if provider supports semantic search
68
123
  if (hasSemanticSearch(provider)) {
69
- const matches = await provider.semanticSearch(field.relatedType, searchQuery, { minScore: threshold, limit: field.isArray ? 10 : 1 });
70
- if (matches.length > 0) {
71
- if (field.isArray) {
72
- // For array fields, return all matches above threshold
73
- resolved[fieldName] = matches
74
- .filter((m) => m.$score >= threshold)
75
- .map((m) => m.$id);
124
+ // Create a searcher from the provider
125
+ const searcher = createProviderSearcher(provider);
126
+ // Determine search mode:
127
+ // - For single fields with union types, use ordered fallback (search in order, stop on first match)
128
+ // - For array fields, use parallel mode to collect all matches
129
+ const searchMode = field.isArray ? 'parallel' : 'ordered';
130
+ const searchResult = await searchUnionTypes(validTypes, searchQuery, {
131
+ mode: searchMode,
132
+ threshold,
133
+ searcher,
134
+ returnAll: field.isArray, // For arrays, get all matches
135
+ limit: field.isArray ? 10 : 1, // Single fields only need 1 result per type
136
+ });
137
+ if (field.isArray) {
138
+ // For array fields, collect all matches sorted by score
139
+ if (searchResult.matches.length > 0) {
140
+ resolved[fieldName] = searchResult.matches.map((m) => m.$id);
141
+ // Track metadata about the search
142
+ if (searchResult.fallbackTriggered) {
143
+ resolved[`${fieldName}$fallbackUsed`] = true;
144
+ }
145
+ resolved[`${fieldName}$searchedTypes`] = searchResult.searchedTypes;
76
146
  }
77
- else {
78
- // For single fields, return the best match
79
- const firstMatch = matches[0];
80
- if (firstMatch) {
81
- resolved[fieldName] = firstMatch.$id;
147
+ }
148
+ else {
149
+ // For single fields, use the best match (or first match in ordered mode)
150
+ if (searchResult.matches.length > 0) {
151
+ const bestMatch = searchResult.matches[0];
152
+ resolved[fieldName] = bestMatch.$id;
153
+ resolved[`${fieldName}$matchedType`] = bestMatch.$type;
154
+ resolved[`${fieldName}$score`] = bestMatch.$score;
155
+ // Track if fallback was used (matched type != first type in union)
156
+ if (searchResult.fallbackTriggered) {
157
+ resolved[`${fieldName}$fallbackUsed`] = true;
158
+ resolved[`${fieldName}$searchOrder`] = searchResult.searchOrder;
82
159
  }
83
160
  }
84
161
  }
85
162
  }
163
+ else {
164
+ // Fallback to basic text search when semantic search is unavailable
165
+ // This provides graceful degradation for providers like RDB
166
+ const textSearchResults = await textSearchFallback(provider, validTypes, searchQuery, field.isArray ? 10 : 1);
167
+ if (field.isArray) {
168
+ if (textSearchResults.length > 0) {
169
+ resolved[fieldName] = textSearchResults.map((r) => r.$id);
170
+ resolved[`${fieldName}$searchedTypes`] = validTypes;
171
+ resolved[`${fieldName}$textFallback`] = true;
172
+ }
173
+ }
174
+ else {
175
+ if (textSearchResults.length > 0) {
176
+ const bestMatch = textSearchResults[0];
177
+ resolved[fieldName] = bestMatch.$id;
178
+ resolved[`${fieldName}$matchedType`] = bestMatch.$type;
179
+ resolved[`${fieldName}$textFallback`] = true;
180
+ }
181
+ }
182
+ }
86
183
  // Note: <~ typically doesn't generate - it grounds to existing data
87
184
  // If no match found and field is optional, leave as undefined
88
185
  }
@@ -116,15 +213,39 @@ export async function resolveForwardFuzzy(typeName, data, entity, schema, provid
116
213
  const defaultThreshold = getFuzzyThreshold(entity);
117
214
  for (const [fieldName, field] of entity.fields) {
118
215
  if (field.operator === '~>' && field.direction === 'forward') {
119
- // Skip if value already provided
216
+ // If value already provided, still need to track for edge creation
120
217
  if (resolved[fieldName] !== undefined && resolved[fieldName] !== null) {
121
- // If value is provided for array field, we still need to create relationships
218
+ // Get matchedType from metadata if available, otherwise use relatedType
219
+ const matchedTypeKey = `${fieldName}$matchedType`;
220
+ const matchedType = resolved[matchedTypeKey] || field.relatedType;
221
+ const similarityKey = `${fieldName}$score`;
222
+ const similarity = resolved[similarityKey];
122
223
  if (field.isArray && Array.isArray(resolved[fieldName])) {
123
224
  const ids = resolved[fieldName];
124
225
  for (const targetId of ids) {
125
- pendingRelations.push({ fieldName, targetType: field.relatedType, targetId });
226
+ const relation = {
227
+ fieldName,
228
+ targetType: matchedType,
229
+ targetId,
230
+ matchedType,
231
+ };
232
+ if (similarity !== undefined)
233
+ relation.similarity = similarity;
234
+ pendingRelations.push(relation);
126
235
  }
127
236
  }
237
+ else if (typeof resolved[fieldName] === 'string') {
238
+ // Single fuzzy field with value already set - add to pendingRelations for edge creation
239
+ const relation = {
240
+ fieldName,
241
+ targetType: matchedType,
242
+ targetId: resolved[fieldName],
243
+ matchedType,
244
+ };
245
+ if (similarity !== undefined)
246
+ relation.similarity = similarity;
247
+ pendingRelations.push(relation);
248
+ }
128
249
  continue;
129
250
  }
130
251
  // Get the hint field value - uses fieldNameHint convention
@@ -138,53 +259,87 @@ export async function resolveForwardFuzzy(typeName, data, entity, schema, provid
138
259
  const hints = Array.isArray(hintValue) ? hintValue : [hintValue].filter(Boolean);
139
260
  const resultIds = [];
140
261
  const usedEntityIds = new Set(); // Track already-matched entities to avoid duplicates
262
+ // Determine which types to search - all union types or just the primary type
263
+ const typesToSearch = field.unionTypes && field.unionTypes.length > 0 ? field.unionTypes : [field.relatedType];
141
264
  for (const hint of hints) {
142
265
  const hintStr = String(hint || fieldName);
143
266
  let matched = false;
144
- // Try semantic search first
267
+ let matchedType;
268
+ // Try semantic search first - search across all union types
145
269
  if (hasSemanticSearch(provider)) {
146
- const matches = await provider.semanticSearch(field.relatedType, hintStr, { minScore: threshold, limit: 10 } // Get more results to find unused matches
147
- );
148
- // Find the best match that hasn't been used yet
149
- for (const match of matches) {
150
- const matchId = match.$id;
151
- if (match.$score >= threshold && !usedEntityIds.has(matchId)) {
152
- resultIds.push(matchId);
153
- usedEntityIds.add(matchId);
154
- pendingRelations.push({
155
- fieldName,
156
- targetType: field.relatedType,
157
- targetId: matchId,
158
- similarity: match.$score
159
- });
160
- // Update the matched entity with $generated: false and similarity metadata
161
- await provider.update(field.relatedType, matchId, {
162
- $generated: false,
163
- $similarity: match.$score
164
- });
165
- matched = true;
166
- break;
167
- }
270
+ const bestMatchResult = await findBestMatchAcrossTypes(typesToSearch, hintStr, {
271
+ threshold,
272
+ limit: 10,
273
+ excludeIds: usedEntityIds,
274
+ schema,
275
+ provider,
276
+ });
277
+ if (bestMatchResult) {
278
+ const matchId = bestMatchResult.match.$id;
279
+ matchedType = bestMatchResult.type;
280
+ resultIds.push(matchId);
281
+ usedEntityIds.add(matchId);
282
+ pendingRelations.push({
283
+ fieldName,
284
+ targetType: matchedType,
285
+ targetId: matchId,
286
+ similarity: bestMatchResult.match.$score,
287
+ matchedType,
288
+ });
289
+ // Update the matched entity with $generated: false and similarity metadata
290
+ await provider.update(matchedType, matchId, {
291
+ $generated: false,
292
+ $similarity: bestMatchResult.match.$score,
293
+ $matchedType: matchedType,
294
+ });
295
+ matched = true;
296
+ }
297
+ }
298
+ else {
299
+ // Fallback to text search when semantic search unavailable
300
+ const textResults = await textSearchFallback(provider, typesToSearch, hintStr, 10);
301
+ // Filter out already used IDs
302
+ const availableResults = textResults.filter((r) => !usedEntityIds.has(r.$id));
303
+ if (availableResults.length > 0) {
304
+ const bestMatch = availableResults[0];
305
+ matchedType = bestMatch.$type;
306
+ resultIds.push(bestMatch.$id);
307
+ usedEntityIds.add(bestMatch.$id);
308
+ pendingRelations.push({
309
+ fieldName,
310
+ targetType: matchedType,
311
+ targetId: bestMatch.$id,
312
+ matchedType,
313
+ });
314
+ await provider.update(matchedType, bestMatch.$id, {
315
+ $generated: false,
316
+ $matchedType: matchedType,
317
+ });
318
+ matched = true;
168
319
  }
169
320
  }
170
321
  // Generate if no match found (or all matches were already used)
171
322
  if (!matched) {
172
- const generated = await generateEntity(field.relatedType, hintStr, { parent: typeName, parentData: data, parentId }, schema);
323
+ // For generation, use the first union type (or primary relatedType)
324
+ const generateType = typesToSearch[0];
325
+ const generated = await generateEntity(generateType, hintStr, { parent: typeName, parentData: data, parentId }, schema);
173
326
  // Resolve any pending nested relations
174
- const relatedEntity = schema.entities.get(field.relatedType);
327
+ const relatedEntity = schema.entities.get(generateType);
175
328
  if (relatedEntity) {
176
329
  const resolvedGenerated = await resolveNestedPending(generated, relatedEntity, schema, provider);
177
- const created = await provider.create(field.relatedType, undefined, {
330
+ const created = await provider.create(generateType, undefined, {
178
331
  ...resolvedGenerated,
179
332
  $generated: true,
180
333
  $generatedBy: parentId,
181
- $sourceField: fieldName
334
+ $sourceField: fieldName,
335
+ $matchedType: generateType,
182
336
  });
183
- resultIds.push(created.$id);
337
+ resultIds.push(created['$id']);
184
338
  pendingRelations.push({
185
339
  fieldName,
186
- targetType: field.relatedType,
187
- targetId: created.$id
340
+ targetType: generateType,
341
+ targetId: created['$id'],
342
+ matchedType: generateType,
188
343
  });
189
344
  }
190
345
  }
@@ -194,48 +349,87 @@ export async function resolveForwardFuzzy(typeName, data, entity, schema, provid
194
349
  else {
195
350
  // Single fuzzy field
196
351
  let matched = false;
197
- // Try semantic search first
352
+ let matchedType;
353
+ // Determine which types to search - all union types or just the primary type
354
+ const typesToSearch = field.unionTypes && field.unionTypes.length > 0 ? field.unionTypes : [field.relatedType];
355
+ // Try semantic search first - search across all union types
198
356
  if (hasSemanticSearch(provider)) {
199
- const matches = await provider.semanticSearch(field.relatedType, searchQuery, { minScore: threshold, limit: 5 });
200
- const firstMatch = matches[0];
201
- if (firstMatch && firstMatch.$score >= threshold) {
202
- const matchedId = firstMatch.$id;
357
+ const bestMatchResult = await findBestMatchAcrossTypes(typesToSearch, searchQuery, {
358
+ threshold,
359
+ limit: 5,
360
+ schema,
361
+ provider,
362
+ });
363
+ if (bestMatchResult) {
364
+ const matchedId = bestMatchResult.match.$id;
365
+ matchedType = bestMatchResult.type;
203
366
  resolved[fieldName] = matchedId;
204
367
  resolved[`${fieldName}$matched`] = true;
205
- resolved[`${fieldName}$score`] = firstMatch.$score;
368
+ resolved[`${fieldName}$score`] = bestMatchResult.match.$score;
369
+ resolved[`${fieldName}$matchedType`] = matchedType;
206
370
  pendingRelations.push({
207
371
  fieldName,
208
- targetType: field.relatedType,
372
+ targetType: matchedType,
209
373
  targetId: matchedId,
210
- similarity: firstMatch.$score
374
+ similarity: bestMatchResult.match.$score,
375
+ matchedType,
211
376
  });
212
377
  // Update the matched entity with $generated: false and similarity metadata
213
- await provider.update(field.relatedType, matchedId, {
378
+ await provider.update(matchedType, matchedId, {
379
+ $generated: false,
380
+ $similarity: bestMatchResult.match.$score,
381
+ $matchedType: matchedType,
382
+ });
383
+ matched = true;
384
+ }
385
+ }
386
+ else {
387
+ // Fallback to text search when semantic search unavailable
388
+ const textResults = await textSearchFallback(provider, typesToSearch, searchQuery, 5);
389
+ if (textResults.length > 0) {
390
+ const bestMatch = textResults[0];
391
+ matchedType = bestMatch.$type;
392
+ resolved[fieldName] = bestMatch.$id;
393
+ resolved[`${fieldName}$matched`] = true;
394
+ resolved[`${fieldName}$matchedType`] = matchedType;
395
+ resolved[`${fieldName}$textFallback`] = true;
396
+ pendingRelations.push({
397
+ fieldName,
398
+ targetType: matchedType,
399
+ targetId: bestMatch.$id,
400
+ matchedType,
401
+ });
402
+ await provider.update(matchedType, bestMatch.$id, {
214
403
  $generated: false,
215
- $similarity: firstMatch.$score
404
+ $matchedType: matchedType,
216
405
  });
217
406
  matched = true;
218
407
  }
219
408
  }
220
409
  // Generate if no match found
221
410
  if (!matched) {
222
- const generated = await generateEntity(field.relatedType, searchQuery, // Use searchQuery which prioritizes hint over field.prompt
411
+ // For generation, use the first union type (or primary relatedType)
412
+ const generateType = typesToSearch[0];
413
+ const generated = await generateEntity(generateType, searchQuery, // Use searchQuery which prioritizes hint over field.prompt
223
414
  { parent: typeName, parentData: data, parentId }, schema);
224
415
  // Resolve any pending nested relations
225
- const relatedEntity = schema.entities.get(field.relatedType);
416
+ const relatedEntity = schema.entities.get(generateType);
226
417
  if (relatedEntity) {
227
418
  const resolvedGenerated = await resolveNestedPending(generated, relatedEntity, schema, provider);
228
- const created = await provider.create(field.relatedType, undefined, {
419
+ const created = await provider.create(generateType, undefined, {
229
420
  ...resolvedGenerated,
230
421
  $generated: true,
231
422
  $generatedBy: parentId,
232
- $sourceField: fieldName
423
+ $sourceField: fieldName,
424
+ $matchedType: generateType,
233
425
  });
234
- resolved[fieldName] = created.$id;
426
+ resolved[fieldName] = created['$id'];
427
+ resolved[`${fieldName}$matchedType`] = generateType;
235
428
  pendingRelations.push({
236
429
  fieldName,
237
- targetType: field.relatedType,
238
- targetId: created.$id
430
+ targetType: generateType,
431
+ targetId: created['$id'],
432
+ matchedType: generateType,
239
433
  });
240
434
  }
241
435
  }
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/schema/semantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/schema/semantic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Sub-API Factories
3
+ *
4
+ * Creates the Events, Actions, Artifacts, Nouns, and Verbs APIs
5
+ * that are returned alongside the main DB object.
6
+ *
7
+ * These APIs provide access to:
8
+ * - Events: Event sourcing and subscription
9
+ * - Actions: Durable execution tracking
10
+ * - Artifacts: Cached computed content
11
+ * - Nouns: Type introspection
12
+ * - Verbs: Action introspection and conjugation
13
+ */
14
+ import type { EventsAPI, ActionsAPI, ArtifactsAPI, NounsAPI, VerbsAPI } from './types.js';
15
+ import type { Noun, Verb } from '../types.js';
16
+ import type { DBProvider } from './provider.js';
17
+ /**
18
+ * Create the Events API
19
+ *
20
+ * @param resolveProvider - Function to get the database provider
21
+ * @returns EventsAPI implementation
22
+ */
23
+ export declare function createEventsAPI(resolveProvider: () => Promise<DBProvider>): EventsAPI;
24
+ /**
25
+ * Create the Actions API (public version with full DBAction types)
26
+ *
27
+ * @param resolveProvider - Function to get the database provider
28
+ * @returns ActionsAPI implementation
29
+ */
30
+ export declare function createActionsPublicAPI(resolveProvider: () => Promise<DBProvider>): ActionsAPI;
31
+ /**
32
+ * Create the Artifacts API
33
+ *
34
+ * @param resolveProvider - Function to get the database provider
35
+ * @returns ArtifactsAPI implementation
36
+ */
37
+ export declare function createArtifactsAPI(resolveProvider: () => Promise<DBProvider>): ArtifactsAPI;
38
+ /**
39
+ * Create the Nouns API
40
+ *
41
+ * @param nounDefinitions - Map of entity names to Noun definitions
42
+ * @returns NounsAPI implementation
43
+ */
44
+ export declare function createNounsAPI(nounDefinitions: Map<string, Noun>): NounsAPI;
45
+ /**
46
+ * Create the Verbs API
47
+ *
48
+ * @param verbDefinitions - Map of verb actions to Verb definitions
49
+ * @returns VerbsAPI implementation
50
+ */
51
+ export declare function createVerbsAPI(verbDefinitions: Map<string, Verb>): VerbsAPI;
52
+ //# sourceMappingURL=sub-apis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub-apis.d.ts","sourceRoot":"","sources":["../../src/schema/sub-apis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,QAAQ,EAKT,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAI/C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CA8DrF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAsD7F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,YAAY,CAgC3F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,QAAQ,CAc3E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,QAAQ,CAgB3E"}