@memberjunction/server 5.23.0 → 5.25.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 (63) hide show
  1. package/dist/agents/skip-sdk.d.ts +12 -0
  2. package/dist/agents/skip-sdk.d.ts.map +1 -1
  3. package/dist/agents/skip-sdk.js +70 -1
  4. package/dist/agents/skip-sdk.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +11 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/generated/generated.d.ts +954 -0
  9. package/dist/generated/generated.d.ts.map +1 -1
  10. package/dist/generated/generated.js +26108 -20749
  11. package/dist/generated/generated.js.map +1 -1
  12. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  13. package/dist/generic/RunViewResolver.js.map +1 -1
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/resolvers/ArtifactFileResolver.d.ts +15 -0
  19. package/dist/resolvers/ArtifactFileResolver.d.ts.map +1 -0
  20. package/dist/resolvers/ArtifactFileResolver.js +74 -0
  21. package/dist/resolvers/ArtifactFileResolver.js.map +1 -0
  22. package/dist/resolvers/AutotagPipelineResolver.d.ts +23 -1
  23. package/dist/resolvers/AutotagPipelineResolver.d.ts.map +1 -1
  24. package/dist/resolvers/AutotagPipelineResolver.js +197 -13
  25. package/dist/resolvers/AutotagPipelineResolver.js.map +1 -1
  26. package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
  27. package/dist/resolvers/FetchEntityVectorsResolver.js +6 -2
  28. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  29. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  30. package/dist/resolvers/FileResolver.js +12 -32
  31. package/dist/resolvers/FileResolver.js.map +1 -1
  32. package/dist/resolvers/GeoResolver.d.ts +58 -0
  33. package/dist/resolvers/GeoResolver.d.ts.map +1 -0
  34. package/dist/resolvers/GeoResolver.js +302 -0
  35. package/dist/resolvers/GeoResolver.js.map +1 -0
  36. package/dist/resolvers/RunAIAgentResolver.d.ts +34 -1
  37. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  38. package/dist/resolvers/RunAIAgentResolver.js +183 -48
  39. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  40. package/dist/resolvers/SearchKnowledgeResolver.d.ts +23 -41
  41. package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
  42. package/dist/resolvers/SearchKnowledgeResolver.js +133 -382
  43. package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
  44. package/dist/resolvers/SearchKnowledgeSystemUserResolver.d.ts +19 -0
  45. package/dist/resolvers/SearchKnowledgeSystemUserResolver.d.ts.map +1 -0
  46. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js +149 -0
  47. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js.map +1 -0
  48. package/package.json +63 -63
  49. package/src/__tests__/search-knowledge-tags.test.ts +255 -0
  50. package/src/__tests__/skip-sdk-organic-keys.test.ts +274 -0
  51. package/src/agents/skip-sdk.ts +83 -2
  52. package/src/config.ts +11 -0
  53. package/src/generated/generated.ts +3690 -1
  54. package/src/generic/RunViewResolver.ts +1 -0
  55. package/src/index.ts +2 -0
  56. package/src/resolvers/ArtifactFileResolver.ts +71 -0
  57. package/src/resolvers/AutotagPipelineResolver.ts +213 -10
  58. package/src/resolvers/FetchEntityVectorsResolver.ts +6 -2
  59. package/src/resolvers/FileResolver.ts +12 -41
  60. package/src/resolvers/GeoResolver.ts +258 -0
  61. package/src/resolvers/RunAIAgentResolver.ts +229 -76
  62. package/src/resolvers/SearchKnowledgeResolver.ts +118 -462
  63. package/src/resolvers/SearchKnowledgeSystemUserResolver.ts +138 -0
@@ -11,12 +11,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { Resolver, Mutation, Arg, Ctx, ObjectType, Field, Float, InputType } from 'type-graphql';
14
- import { LogError, LogStatus, Metadata, RunView, ComputeRRF, EntityRecordNameInput, CompositeKey } from '@memberjunction/core';
14
+ import { LogError } from '@memberjunction/core';
15
15
  import { ResolverBase } from '../generic/ResolverBase.js';
16
- import { AIEngine } from '@memberjunction/aiengine';
17
- import { BaseEmbeddings, GetAIAPIKey } from '@memberjunction/ai';
18
- import { VectorDBBase } from '@memberjunction/ai-vectordb';
19
- import { MJGlobal, UUIDsEqual } from '@memberjunction/global';
16
+ import { SearchEngine } from '@memberjunction/search-engine';
20
17
  /* ───── GraphQL types ───── */
21
18
  let SearchScoreBreakdown = class SearchScoreBreakdown {
22
19
  };
@@ -32,6 +29,10 @@ __decorate([
32
29
  Field(() => Float, { nullable: true }),
33
30
  __metadata("design:type", Number)
34
31
  ], SearchScoreBreakdown.prototype, "Entity", void 0);
32
+ __decorate([
33
+ Field(() => Float, { nullable: true }),
34
+ __metadata("design:type", Number)
35
+ ], SearchScoreBreakdown.prototype, "Storage", void 0);
35
36
  SearchScoreBreakdown = __decorate([
36
37
  ObjectType()
37
38
  ], SearchScoreBreakdown);
@@ -86,6 +87,26 @@ __decorate([
86
87
  Field(),
87
88
  __metadata("design:type", Date)
88
89
  ], SearchKnowledgeResultItem.prototype, "MatchedAt", void 0);
90
+ __decorate([
91
+ Field({ nullable: true }),
92
+ __metadata("design:type", String)
93
+ ], SearchKnowledgeResultItem.prototype, "RawMetadata", void 0);
94
+ __decorate([
95
+ Field(),
96
+ __metadata("design:type", String)
97
+ ], SearchKnowledgeResultItem.prototype, "ResultType", void 0);
98
+ __decorate([
99
+ Field({ nullable: true }),
100
+ __metadata("design:type", String)
101
+ ], SearchKnowledgeResultItem.prototype, "ProviderId", void 0);
102
+ __decorate([
103
+ Field({ nullable: true }),
104
+ __metadata("design:type", String)
105
+ ], SearchKnowledgeResultItem.prototype, "ProviderLabel", void 0);
106
+ __decorate([
107
+ Field({ nullable: true }),
108
+ __metadata("design:type", String)
109
+ ], SearchKnowledgeResultItem.prototype, "ProviderIcon", void 0);
89
110
  SearchKnowledgeResultItem = __decorate([
90
111
  ObjectType()
91
112
  ], SearchKnowledgeResultItem);
@@ -104,10 +125,44 @@ __decorate([
104
125
  Field(),
105
126
  __metadata("design:type", Number)
106
127
  ], SearchSourceCounts.prototype, "Entity", void 0);
128
+ __decorate([
129
+ Field(),
130
+ __metadata("design:type", Number)
131
+ ], SearchSourceCounts.prototype, "Storage", void 0);
107
132
  SearchSourceCounts = __decorate([
108
133
  ObjectType()
109
134
  ], SearchSourceCounts);
110
135
  export { SearchSourceCounts };
136
+ let SearchProviderInfoType = class SearchProviderInfoType {
137
+ };
138
+ __decorate([
139
+ Field(),
140
+ __metadata("design:type", String)
141
+ ], SearchProviderInfoType.prototype, "ID", void 0);
142
+ __decorate([
143
+ Field(),
144
+ __metadata("design:type", String)
145
+ ], SearchProviderInfoType.prototype, "Name", void 0);
146
+ __decorate([
147
+ Field(),
148
+ __metadata("design:type", String)
149
+ ], SearchProviderInfoType.prototype, "DisplayName", void 0);
150
+ __decorate([
151
+ Field(),
152
+ __metadata("design:type", String)
153
+ ], SearchProviderInfoType.prototype, "Icon", void 0);
154
+ __decorate([
155
+ Field(),
156
+ __metadata("design:type", String)
157
+ ], SearchProviderInfoType.prototype, "SourceType", void 0);
158
+ __decorate([
159
+ Field(),
160
+ __metadata("design:type", Number)
161
+ ], SearchProviderInfoType.prototype, "Priority", void 0);
162
+ SearchProviderInfoType = __decorate([
163
+ ObjectType()
164
+ ], SearchProviderInfoType);
165
+ export { SearchProviderInfoType };
111
166
  let SearchKnowledgeResult = class SearchKnowledgeResult {
112
167
  };
113
168
  __decorate([
@@ -130,6 +185,10 @@ __decorate([
130
185
  Field(() => SearchSourceCounts),
131
186
  __metadata("design:type", SearchSourceCounts)
132
187
  ], SearchKnowledgeResult.prototype, "SourceCounts", void 0);
188
+ __decorate([
189
+ Field(() => [SearchProviderInfoType]),
190
+ __metadata("design:type", Array)
191
+ ], SearchKnowledgeResult.prototype, "Providers", void 0);
133
192
  __decorate([
134
193
  Field({ nullable: true }),
135
194
  __metadata("design:type", String)
@@ -156,7 +215,7 @@ SearchFiltersInput = __decorate([
156
215
  InputType()
157
216
  ], SearchFiltersInput);
158
217
  export { SearchFiltersInput };
159
- /* ───── Resolver ───── */
218
+ /* ───── Resolver (thin wrapper around SearchEngine) ───── */
160
219
  let SearchKnowledgeResolver = class SearchKnowledgeResolver extends ResolverBase {
161
220
  async SearchKnowledge(query, maxResults, filters, minScore, { userPayload } = {}) {
162
221
  const startTime = Date.now();
@@ -165,46 +224,17 @@ let SearchKnowledgeResolver = class SearchKnowledgeResolver extends ResolverBase
165
224
  if (!currentUser) {
166
225
  return this.errorResult('Unable to determine current user', startTime);
167
226
  }
168
- if (!query.trim()) {
169
- return this.errorResult('Query cannot be empty', startTime);
170
- }
171
- const topK = maxResults ?? 20;
172
- let t0 = Date.now();
173
- await AIEngine.Instance.Config(false, currentUser);
174
- LogStatus(`SearchKnowledge: AIEngine.Config: ${Date.now() - t0}ms`);
175
- // Run vector search and full-text search in parallel
176
- t0 = Date.now();
177
- const [vectorResults, fullTextResults] = await Promise.all([
178
- this.searchAllVectorIndexes(query, topK, filters, currentUser),
179
- this.searchFullText(query, topK, filters, currentUser)
180
- ]);
181
- LogStatus(`SearchKnowledge: Vector(${vectorResults.length}) + FTS(${fullTextResults.length}): ${Date.now() - t0}ms`);
182
- // Fuse results with RRF if we have results from multiple sources
183
- t0 = Date.now();
184
- const fusedResults = this.fuseResults(vectorResults, fullTextResults, topK);
185
- const dedupedResults = this.deduplicateResults(fusedResults);
186
- // Apply minimum score threshold (post-RRF, so fusion can surface cross-source matches first)
187
- const scoreThreshold = minScore ?? 0;
188
- const filteredResults = scoreThreshold > 0
189
- ? dedupedResults.filter(r => r.Score >= scoreThreshold)
190
- : dedupedResults;
191
- LogStatus(`SearchKnowledge: Fuse + dedup + threshold≥${Math.round(scoreThreshold * 100)}% (${dedupedResults.length} → ${filteredResults.length} results): ${Date.now() - t0}ms`);
192
- // Enrich with entity icons and record names
193
- t0 = Date.now();
194
- await this.enrichResults(filteredResults, currentUser);
195
- LogStatus(`SearchKnowledge: Enrich (icons + names): ${Date.now() - t0}ms`);
196
- LogStatus(`SearchKnowledge: Total: ${Date.now() - startTime}ms`);
197
- return {
198
- Success: true,
199
- Results: filteredResults,
200
- TotalCount: filteredResults.length,
201
- ElapsedMs: Date.now() - startTime,
202
- SourceCounts: {
203
- Vector: vectorResults.length,
204
- FullText: fullTextResults.length,
205
- Entity: 0
206
- },
207
- };
227
+ const result = await SearchEngine.Instance.Search({
228
+ Query: query,
229
+ MaxResults: maxResults,
230
+ MinScore: minScore,
231
+ Filters: filters ? {
232
+ EntityNames: filters.EntityNames,
233
+ SourceTypes: filters.SourceTypes,
234
+ Tags: filters.Tags
235
+ } : undefined
236
+ }, currentUser);
237
+ return this.mapSearchResult(result);
208
238
  }
209
239
  catch (error) {
210
240
  const msg = error instanceof Error ? error.message : String(error);
@@ -212,351 +242,62 @@ let SearchKnowledgeResolver = class SearchKnowledgeResolver extends ResolverBase
212
242
  return this.errorResult(msg, startTime);
213
243
  }
214
244
  }
215
- /**
216
- * Search ALL vector indexes. Groups indexes by embedding model, embeds the query
217
- * in parallel per model, then queries all indexes per model in parallel as each
218
- * embedding completes. Maximum concurrency at every level.
219
- */
220
- async searchAllVectorIndexes(query, topK, filters, contextUser) {
221
- const rv = new RunView();
222
- const indexResult = await rv.RunView({
223
- EntityName: 'MJ: Vector Indexes',
224
- ResultType: 'entity_object'
225
- }, contextUser);
226
- if (!indexResult.Success || indexResult.Results.length === 0) {
227
- LogStatus('SearchKnowledge: No vector indexes configured');
228
- return [];
229
- }
230
- // Group indexes by EmbeddingModelID
231
- const indexesByModel = this.groupIndexesByModel(indexResult.Results);
232
- const pineFilter = this.buildPineconeFilter(filters);
233
- // For each model group: embed query + query all indexes — all in parallel
234
- const modelGroupPromises = Array.from(indexesByModel.entries()).map(([embeddingModelID, indexes]) => this.embedAndQueryGroup(query, embeddingModelID, indexes, topK, pineFilter, contextUser));
235
- const groupResults = await Promise.all(modelGroupPromises);
236
- return groupResults.flat();
237
- }
238
- /** Group vector indexes by their EmbeddingModelID */
239
- groupIndexesByModel(indexes) {
240
- const groups = new Map();
241
- for (const index of indexes) {
242
- const modelId = index.EmbeddingModelID;
243
- const existing = groups.get(modelId);
244
- if (existing) {
245
- existing.push(index);
246
- }
247
- else {
248
- groups.set(modelId, [index]);
249
- }
250
- }
251
- return groups;
252
- }
253
- /**
254
- * Embed query with one model, then immediately query all indexes that use that model.
255
- * The embedding and subsequent queries are chained so index queries fire as soon as
256
- * the embedding completes — without waiting for other models' embeddings.
257
- */
258
- async embedAndQueryGroup(query, embeddingModelID, indexes, topK, filter, contextUser) {
245
+ async PreviewSearch(query, maxResults, { userPayload } = {}) {
246
+ const startTime = Date.now();
259
247
  try {
260
- // Find the AI model for this embedding
261
- const model = AIEngine.Instance.Models.find(m => UUIDsEqual(m.ID, embeddingModelID));
262
- if (!model) {
263
- LogError(`SearchKnowledge: Embedding model ${embeddingModelID} not found`);
264
- return [];
265
- }
266
- // Create embedding instance
267
- const apiKey = GetAIAPIKey(model.DriverClass);
268
- const embedding = MJGlobal.Instance.ClassFactory.CreateInstance(BaseEmbeddings, model.DriverClass, apiKey);
269
- if (!embedding) {
270
- LogError(`SearchKnowledge: Failed to create embedding for ${model.DriverClass}`);
271
- return [];
272
- }
273
- // Embed the query with this model
274
- const embedResult = await embedding.EmbedText({ text: query, model: '' });
275
- if (!embedResult?.vector?.length) {
276
- LogError(`SearchKnowledge: Failed to embed with ${model.Name}`);
277
- return [];
248
+ const currentUser = this.GetUserFromPayload(userPayload);
249
+ if (!currentUser) {
250
+ return this.errorResult('Unable to determine current user', startTime);
278
251
  }
279
- // Query all indexes for this model in parallel
280
- const indexPromises = indexes.map(vectorIndex => this.queryOneIndex(vectorIndex, embedResult.vector, topK, filter, contextUser)
281
- .catch(error => {
282
- LogError(`SearchKnowledge: Error querying index "${vectorIndex.Name}": ${error}`);
283
- return [];
284
- }));
285
- const indexResults = await Promise.all(indexPromises);
286
- return indexResults.flat();
252
+ const result = await SearchEngine.Instance.PreviewSearch(query, maxResults, currentUser);
253
+ return this.mapSearchResult(result);
287
254
  }
288
255
  catch (error) {
289
- LogError(`SearchKnowledge: Error in embedding group ${embeddingModelID}: ${error}`);
290
- return [];
291
- }
292
- }
293
- /**
294
- * Query a single vector index by looking up its VectorDatabase provider and passing the index name.
295
- */
296
- async queryOneIndex(vectorIndex, queryVector, topK, filter, contextUser) {
297
- // Look up the vector database to get the ClassKey
298
- const rv = new RunView();
299
- const dbResult = await rv.RunView({
300
- EntityName: 'MJ: Vector Databases',
301
- ExtraFilter: `ID='${vectorIndex.VectorDatabaseID}'`,
302
- ResultType: 'entity_object'
303
- }, contextUser);
304
- if (!dbResult.Success || dbResult.Results.length === 0) {
305
- LogError(`SearchKnowledge: VectorDatabase not found for index "${vectorIndex.Name}"`);
306
- return [];
307
- }
308
- const vectorDB = dbResult.Results[0];
309
- const apiKey = GetAIAPIKey(vectorDB.ClassKey);
310
- const vectorDBInstance = MJGlobal.Instance.ClassFactory.CreateInstance(VectorDBBase, vectorDB.ClassKey, apiKey);
311
- if (!vectorDBInstance) {
312
- LogError(`SearchKnowledge: Failed to create VectorDB instance for "${vectorDB.ClassKey}"`);
313
- return [];
314
- }
315
- // Query with the specific index name
316
- const response = await vectorDBInstance.QueryIndex({
317
- id: vectorIndex.Name,
318
- vector: queryVector,
319
- topK,
320
- includeMetadata: true,
321
- filter,
322
- });
323
- if (!response.success || !response.data?.matches) {
324
- return [];
256
+ const msg = error instanceof Error ? error.message : String(error);
257
+ LogError(`PreviewSearch mutation failed: ${msg}`);
258
+ return this.errorResult(msg, startTime);
325
259
  }
326
- return this.convertMatches(response.data.matches, vectorIndex.Name);
327
260
  }
328
- /**
329
- * Full-text search using the MJCore Metadata.FullTextSearch() method.
330
- * Delegates to the provider stack which uses database-native FTS
331
- * (SQL Server FREETEXT, PostgreSQL tsvector) via RunView + UserSearchString.
332
- */
333
- async searchFullText(query, topK, filters, contextUser) {
334
- try {
335
- const md = new Metadata();
336
- const ftsResult = await md.FullTextSearch({
337
- SearchText: query,
338
- EntityNames: filters?.EntityNames,
339
- MaxRowsPerEntity: Math.max(3, Math.ceil(topK / 10))
340
- }, contextUser);
341
- if (!ftsResult.Success) {
342
- LogError(`SearchKnowledge: FTS error: ${ftsResult.ErrorMessage}`);
343
- return [];
344
- }
345
- return ftsResult.Results.map(r => ({
346
- ID: `ft-${r.EntityName}-${r.RecordID}`,
261
+ mapSearchResult(result) {
262
+ return {
263
+ Success: result.Success,
264
+ Results: result.Results.map((r) => ({
265
+ ID: r.ID,
347
266
  EntityName: r.EntityName,
348
267
  RecordID: r.RecordID,
349
- SourceType: 'fulltext',
268
+ SourceType: r.SourceType,
269
+ ResultType: r.ResultType,
350
270
  Title: r.Title,
351
271
  Snippet: r.Snippet,
352
272
  Score: r.Score,
353
- ScoreBreakdown: { FullText: r.Score },
354
- Tags: [],
355
- MatchedAt: new Date()
356
- }));
357
- }
358
- catch (error) {
359
- LogError(`SearchKnowledge: Full-text search error: ${error}`);
360
- return [];
361
- }
362
- }
363
- /**
364
- * Fuse vector and full-text results using Reciprocal Rank Fusion (RRF).
365
- * Deduplicates by RecordID, preferring the higher-scored source.
366
- */
367
- fuseResults(vectorResults, fullTextResults, topK) {
368
- if (vectorResults.length === 0 && fullTextResults.length === 0) {
369
- return [];
370
- }
371
- // If only one source has results, just return those
372
- if (fullTextResults.length === 0)
373
- return vectorResults.slice(0, topK);
374
- if (vectorResults.length === 0)
375
- return fullTextResults.slice(0, topK);
376
- // Build scored candidate lists for RRF
377
- const vectorCandidates = vectorResults.map((r, i) => ({
378
- ID: r.RecordID,
379
- Score: r.Score,
380
- Rank: i + 1
381
- }));
382
- const ftCandidates = fullTextResults.map((r, i) => ({
383
- ID: r.RecordID,
384
- Score: r.Score,
385
- Rank: i + 1
386
- }));
387
- // Compute RRF scores
388
- const fused = ComputeRRF([vectorCandidates, ftCandidates]);
389
- // Map fused results back to full result items
390
- const resultMap = new Map();
391
- for (const r of [...vectorResults, ...fullTextResults]) {
392
- if (!resultMap.has(r.RecordID)) {
393
- resultMap.set(r.RecordID, r);
394
- }
395
- }
396
- return fused.slice(0, topK).map(candidate => {
397
- const item = resultMap.get(candidate.ID);
398
- if (item) {
399
- item.Score = candidate.Score;
400
- return item;
401
- }
402
- // Shouldn't happen, but fallback
403
- return {
404
- ID: candidate.ID,
405
- EntityName: 'Unknown',
406
- RecordID: candidate.ID,
407
- SourceType: 'fused',
408
- Title: 'Unknown',
409
- Snippet: '',
410
- Score: candidate.Score,
411
- ScoreBreakdown: {},
412
- Tags: [],
413
- MatchedAt: new Date()
414
- };
415
- });
416
- }
417
- /** Build Pinecone metadata filter from input */
418
- buildPineconeFilter(filters) {
419
- if (!filters)
420
- return undefined;
421
- const conditions = [];
422
- if (filters.EntityNames?.length) {
423
- conditions.push({ Entity: { $in: filters.EntityNames } });
424
- }
425
- if (filters.SourceTypes?.length) {
426
- conditions.push({ SourceType: { $in: filters.SourceTypes } });
427
- }
428
- if (filters.Tags?.length) {
429
- conditions.push({ Tags: { $in: filters.Tags } });
430
- }
431
- if (conditions.length === 0)
432
- return undefined;
433
- if (conditions.length === 1)
434
- return conditions[0];
435
- return { $and: conditions };
436
- }
437
- /** Convert Pinecone matches to SearchKnowledgeResultItem[] using enriched metadata */
438
- convertMatches(matches, indexName) {
439
- return matches.map(match => {
440
- const meta = match.metadata ?? {};
441
- const entityName = meta['Entity'] ?? 'Unknown';
442
- const recordID = meta['RecordID'] ?? match.id;
443
- // Extract display fields from enriched metadata
444
- const title = this.extractDisplayTitle(meta, entityName);
445
- const snippet = this.extractDisplaySnippet(meta, indexName, match.score);
446
- const entityIcon = meta['EntityIcon'] || undefined;
447
- const updatedAt = meta['__mj_UpdatedAt'] ? new Date(meta['__mj_UpdatedAt']) : new Date();
448
- return {
449
- ID: match.id,
450
- EntityName: entityName,
451
- RecordID: recordID,
452
- SourceType: 'vector',
453
- Title: title,
454
- Snippet: snippet,
455
- Score: match.score ?? 0,
456
- ScoreBreakdown: { Vector: match.score ?? 0 },
457
- Tags: [],
458
- EntityIcon: entityIcon,
459
- RecordName: title,
460
- MatchedAt: updatedAt,
461
- };
462
- });
463
- }
464
- /** Extract the best display title from vector metadata */
465
- extractDisplayTitle(meta, fallbackEntity) {
466
- // Check common name fields stored in metadata
467
- const nameFields = ['Name', 'Title', 'Subject', 'Label', 'DisplayName'];
468
- for (const field of nameFields) {
469
- if (meta[field] && typeof meta[field] === 'string') {
470
- return meta[field];
471
- }
472
- }
473
- return `${fallbackEntity} Record`;
474
- }
475
- /** Extract the best display snippet from vector metadata */
476
- extractDisplaySnippet(meta, indexName, score) {
477
- // Check common description fields stored in metadata
478
- const descFields = ['Description', 'Summary', 'Body', 'Content', 'Text', 'Notes'];
479
- for (const field of descFields) {
480
- if (meta[field] && typeof meta[field] === 'string') {
481
- const val = meta[field];
482
- return val.length > 200 ? val.substring(0, 200) + '...' : val;
483
- }
484
- }
485
- // Build a snippet from other metadata fields (exclude system fields)
486
- const skipFields = new Set(['RecordID', 'Entity', 'TemplateID', 'EntityIcon', '__mj_UpdatedAt']);
487
- const parts = [];
488
- for (const [key, val] of Object.entries(meta)) {
489
- if (skipFields.has(key) || val == null)
490
- continue;
491
- const strVal = String(val);
492
- if (strVal.length > 0 && strVal.length < 100) {
493
- parts.push(`${key}: ${strVal}`);
494
- }
495
- if (parts.length >= 3)
496
- break;
497
- }
498
- if (parts.length > 0)
499
- return parts.join(' · ');
500
- return `Matched from index "${indexName}" with score ${(score ?? 0).toFixed(4)}`;
501
- }
502
- /** Remove duplicate results by RecordID, keeping the highest-scored entry */
503
- deduplicateResults(results) {
504
- const seen = new Map();
505
- for (const result of results) {
506
- const key = `${result.EntityName}::${result.RecordID}`;
507
- const existing = seen.get(key);
508
- if (!existing || result.Score > existing.Score) {
509
- seen.set(key, result);
510
- }
511
- }
512
- return Array.from(seen.values()).sort((a, b) => b.Score - a.Score);
513
- }
514
- /** Enrich results with entity icons and record names */
515
- async enrichResults(results, contextUser) {
516
- const md = new Metadata();
517
- // Add entity icons for results that don't already have them from metadata
518
- for (const result of results) {
519
- if (!result.EntityIcon) {
520
- const entity = md.Entities.find(e => e.Name === result.EntityName);
521
- if (entity?.Icon) {
522
- result.EntityIcon = entity.Icon;
523
- }
524
- }
525
- }
526
- // Only resolve record names for results that don't already have them
527
- // (vector results from enriched metadata should already have names)
528
- const needsNameResolution = results.filter(r => !r.RecordName || r.RecordName === `${r.EntityName} Record`);
529
- if (needsNameResolution.length === 0)
530
- return;
531
- try {
532
- const indexedResults = [];
533
- for (const r of needsNameResolution) {
534
- const resultIndex = results.indexOf(r);
535
- const entity = md.Entities.find(e => e.Name === r.EntityName);
536
- if (!entity)
537
- continue;
538
- const key = new CompositeKey();
539
- key.LoadFromURLSegment(entity, r.RecordID);
540
- const input = new EntityRecordNameInput();
541
- input.EntityName = r.EntityName;
542
- input.CompositeKey = key;
543
- indexedResults.push({ index: resultIndex, input });
544
- }
545
- if (indexedResults.length > 0) {
546
- const names = await md.GetEntityRecordNames(indexedResults.map(ir => ir.input), contextUser);
547
- for (let i = 0; i < names.length; i++) {
548
- if (names[i].RecordName) {
549
- const resultIndex = indexedResults[i].index;
550
- results[resultIndex].RecordName = names[i].RecordName;
551
- results[resultIndex].Title = names[i].RecordName;
552
- }
553
- }
554
- }
555
- }
556
- catch (error) {
557
- LogError(`SearchKnowledge: Error resolving record names: ${error}`);
558
- // Non-fatal — results still usable without names
559
- }
273
+ ScoreBreakdown: r.ScoreBreakdown,
274
+ Tags: r.Tags || [],
275
+ EntityIcon: r.EntityIcon,
276
+ RecordName: r.RecordName,
277
+ MatchedAt: r.MatchedAt,
278
+ RawMetadata: r.RawMetadata,
279
+ ProviderId: r.ProviderId,
280
+ ProviderLabel: r.ProviderLabel,
281
+ ProviderIcon: r.ProviderIcon,
282
+ })),
283
+ TotalCount: result.TotalCount,
284
+ ElapsedMs: result.ElapsedMs,
285
+ SourceCounts: {
286
+ Vector: result.SourceCounts.Vector,
287
+ FullText: result.SourceCounts.FullText,
288
+ Entity: result.SourceCounts.Entity,
289
+ Storage: result.SourceCounts.Storage,
290
+ },
291
+ Providers: (result.Providers || []).map((p) => ({
292
+ ID: p.ID,
293
+ Name: p.Name,
294
+ DisplayName: p.DisplayName,
295
+ Icon: p.Icon,
296
+ SourceType: p.SourceType,
297
+ Priority: p.Priority,
298
+ })),
299
+ ErrorMessage: result.ErrorMessage,
300
+ };
560
301
  }
561
302
  errorResult(message, startTime) {
562
303
  return {
@@ -564,8 +305,9 @@ let SearchKnowledgeResolver = class SearchKnowledgeResolver extends ResolverBase
564
305
  Results: [],
565
306
  TotalCount: 0,
566
307
  ElapsedMs: Date.now() - startTime,
567
- SourceCounts: { Vector: 0, FullText: 0, Entity: 0 },
568
- ErrorMessage: message,
308
+ SourceCounts: { Vector: 0, FullText: 0, Entity: 0, Storage: 0 },
309
+ Providers: [],
310
+ ErrorMessage: message
569
311
  };
570
312
  }
571
313
  };
@@ -580,6 +322,15 @@ __decorate([
580
322
  __metadata("design:paramtypes", [String, Number, SearchFiltersInput, Number, Object]),
581
323
  __metadata("design:returntype", Promise)
582
324
  ], SearchKnowledgeResolver.prototype, "SearchKnowledge", null);
325
+ __decorate([
326
+ Mutation(() => SearchKnowledgeResult),
327
+ __param(0, Arg('query')),
328
+ __param(1, Arg('maxResults', () => Float, { nullable: true, defaultValue: 8 })),
329
+ __param(2, Ctx()),
330
+ __metadata("design:type", Function),
331
+ __metadata("design:paramtypes", [String, Number, Object]),
332
+ __metadata("design:returntype", Promise)
333
+ ], SearchKnowledgeResolver.prototype, "PreviewSearch", null);
583
334
  SearchKnowledgeResolver = __decorate([
584
335
  Resolver()
585
336
  ], SearchKnowledgeResolver);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchKnowledgeResolver.js","sourceRoot":"","sources":["../../src/resolvers/SearchKnowledgeResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchKnowledgeResolver.js","sourceRoot":"","sources":["../../src/resolvers/SearchKnowledgeResolver.ts"],"names":[],"mappings":"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"}