@hiveforge/hivemind-mcp 3.3.1 → 3.5.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 (78) hide show
  1. package/README.md +89 -309
  2. package/dist/cli/fix/fixer.js +1 -1
  3. package/dist/cli/fix/fixer.js.map +1 -1
  4. package/dist/cli/fix/writer.d.ts.map +1 -1
  5. package/dist/cli/fix/writer.js +75 -3
  6. package/dist/cli/fix/writer.js.map +1 -1
  7. package/dist/cli/init/output.d.ts.map +1 -1
  8. package/dist/cli/init/output.js +6 -5
  9. package/dist/cli/init/output.js.map +1 -1
  10. package/dist/cli/validate/formatter.d.ts.map +1 -1
  11. package/dist/cli/validate/formatter.js +16 -0
  12. package/dist/cli/validate/formatter.js.map +1 -1
  13. package/dist/cli/validate/types.d.ts +3 -0
  14. package/dist/cli/validate/types.d.ts.map +1 -1
  15. package/dist/cli/validate/validator.d.ts.map +1 -1
  16. package/dist/cli/validate/validator.js +32 -1
  17. package/dist/cli/validate/validator.js.map +1 -1
  18. package/dist/cli.js +2 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/graph/database.d.ts +152 -0
  21. package/dist/graph/database.d.ts.map +1 -1
  22. package/dist/graph/database.js +418 -30
  23. package/dist/graph/database.js.map +1 -1
  24. package/dist/mcp/graph-tools.d.ts +78 -0
  25. package/dist/mcp/graph-tools.d.ts.map +1 -0
  26. package/dist/mcp/graph-tools.js +284 -0
  27. package/dist/mcp/graph-tools.js.map +1 -0
  28. package/dist/mcp/timeline-tools.d.ts +116 -0
  29. package/dist/mcp/timeline-tools.d.ts.map +1 -0
  30. package/dist/mcp/timeline-tools.js +317 -0
  31. package/dist/mcp/timeline-tools.js.map +1 -0
  32. package/dist/search/engine.d.ts +186 -0
  33. package/dist/search/engine.d.ts.map +1 -1
  34. package/dist/search/engine.js +263 -0
  35. package/dist/search/engine.js.map +1 -1
  36. package/dist/server.d.ts +52 -0
  37. package/dist/server.d.ts.map +1 -1
  38. package/dist/server.js +472 -0
  39. package/dist/server.js.map +1 -1
  40. package/dist/templates/builtin/worldbuilding.d.ts.map +1 -1
  41. package/dist/templates/builtin/worldbuilding.js +401 -1
  42. package/dist/templates/builtin/worldbuilding.js.map +1 -1
  43. package/dist/templates/community/dnd-35e.d.ts +18 -0
  44. package/dist/templates/community/dnd-35e.d.ts.map +1 -0
  45. package/dist/templates/community/dnd-35e.js +859 -0
  46. package/dist/templates/community/dnd-35e.js.map +1 -0
  47. package/dist/templates/community/dnd-5e.d.ts +16 -0
  48. package/dist/templates/community/dnd-5e.d.ts.map +1 -0
  49. package/dist/templates/community/dnd-5e.js +509 -0
  50. package/dist/templates/community/dnd-5e.js.map +1 -0
  51. package/dist/templates/community/index.d.ts +9 -0
  52. package/dist/templates/community/index.d.ts.map +1 -1
  53. package/dist/templates/community/index.js +16 -0
  54. package/dist/templates/community/index.js.map +1 -1
  55. package/dist/templates/community/pathfinder-2e.d.ts +16 -0
  56. package/dist/templates/community/pathfinder-2e.d.ts.map +1 -0
  57. package/dist/templates/community/pathfinder-2e.js +711 -0
  58. package/dist/templates/community/pathfinder-2e.js.map +1 -0
  59. package/dist/templates/community/ttrpg-base.d.ts +17 -0
  60. package/dist/templates/community/ttrpg-base.d.ts.map +1 -0
  61. package/dist/templates/community/ttrpg-base.js +889 -0
  62. package/dist/templates/community/ttrpg-base.js.map +1 -0
  63. package/dist/templates/loader.d.ts +2 -0
  64. package/dist/templates/loader.d.ts.map +1 -1
  65. package/dist/templates/loader.js +45 -1
  66. package/dist/templates/loader.js.map +1 -1
  67. package/dist/templates/registry.d.ts +49 -2
  68. package/dist/templates/registry.d.ts.map +1 -1
  69. package/dist/templates/registry.js +276 -6
  70. package/dist/templates/registry.js.map +1 -1
  71. package/dist/templates/types.d.ts +28 -1
  72. package/dist/templates/types.d.ts.map +1 -1
  73. package/dist/templates/validator.d.ts +80 -1
  74. package/dist/templates/validator.d.ts.map +1 -1
  75. package/dist/templates/validator.js +22 -5
  76. package/dist/templates/validator.js.map +1 -1
  77. package/dist/types/index.d.ts +18 -18
  78. package/package.json +3 -1
@@ -0,0 +1,317 @@
1
+ /**
2
+ * Timeline MCP tools - date field discovery and validation.
3
+ *
4
+ * Provides date field discovery from template registry and Zod validation
5
+ * schemas for timeline query tools.
6
+ */
7
+ import { z } from 'zod';
8
+ import { templateRegistry } from '../templates/registry.js';
9
+ /**
10
+ * Discovers entity types that have date-typed fields.
11
+ *
12
+ * Scans the active template's entity types and returns information about
13
+ * which types have date fields available for timeline queries.
14
+ *
15
+ * @returns Array of temporal type information, or empty array if no active template
16
+ */
17
+ export function discoverTemporalTypes() {
18
+ const activeTemplate = templateRegistry.getActive();
19
+ if (!activeTemplate) {
20
+ return [];
21
+ }
22
+ const temporalTypes = [];
23
+ for (const entityType of activeTemplate.entityTypes) {
24
+ const dateFields = entityType.fields
25
+ .filter((field) => field.type === 'date')
26
+ .map((field) => ({
27
+ name: field.name,
28
+ required: field.required ?? false,
29
+ description: field.description,
30
+ }));
31
+ if (dateFields.length > 0) {
32
+ temporalTypes.push({
33
+ entityType: entityType.name,
34
+ dateFields,
35
+ });
36
+ }
37
+ }
38
+ return temporalTypes;
39
+ }
40
+ /**
41
+ * Validates that a field exists on an entity type and is a date type.
42
+ *
43
+ * @param entityType - Entity type name to check
44
+ * @param dateField - Field name to validate
45
+ * @returns True if the field exists and is a date type, false otherwise
46
+ */
47
+ export function validateDateField(entityType, dateField) {
48
+ const activeTemplate = templateRegistry.getActive();
49
+ if (!activeTemplate) {
50
+ return false;
51
+ }
52
+ const entityConfig = activeTemplate.entityTypeMap.get(entityType);
53
+ if (!entityConfig) {
54
+ return false;
55
+ }
56
+ const field = entityConfig.fields.find((f) => f.name === dateField);
57
+ if (!field) {
58
+ return false;
59
+ }
60
+ return field.type === 'date';
61
+ }
62
+ /**
63
+ * ISO8601 date string regex (YYYY-MM-DD format only).
64
+ *
65
+ * Validates format but not calendar correctness - SQLite handles string
66
+ * comparison correctly even with invalid dates like 2024-13-45.
67
+ */
68
+ const ISO8601DateRegex = /^\d{4}-\d{2}-\d{2}$/;
69
+ /**
70
+ * Validation schema for query_timeline_range arguments.
71
+ *
72
+ * Finds entities with date fields in a specified range.
73
+ */
74
+ export const QueryTimelineRangeArgsSchema = z.object({
75
+ startDate: z
76
+ .string()
77
+ .regex(ISO8601DateRegex, 'Date must be in YYYY-MM-DD format'),
78
+ endDate: z
79
+ .string()
80
+ .regex(ISO8601DateRegex, 'Date must be in YYYY-MM-DD format'),
81
+ dateField: z.string().describe('Name of the date field to query'),
82
+ entityType: z
83
+ .string()
84
+ .optional()
85
+ .describe('Optional entity type filter'),
86
+ sortOrder: z
87
+ .enum(['asc', 'desc'])
88
+ .optional()
89
+ .default('asc')
90
+ .describe('Sort order for results'),
91
+ limit: z
92
+ .number()
93
+ .min(1)
94
+ .max(1000)
95
+ .optional()
96
+ .default(100)
97
+ .describe('Maximum number of results to return'),
98
+ });
99
+ /**
100
+ * Validation schema for query_timeline_before arguments.
101
+ *
102
+ * Finds entities with date fields before a specified date.
103
+ */
104
+ export const QueryTimelineBeforeArgsSchema = z.object({
105
+ date: z
106
+ .string()
107
+ .regex(ISO8601DateRegex, 'Date must be in YYYY-MM-DD format'),
108
+ dateField: z.string().describe('Name of the date field to query'),
109
+ entityType: z
110
+ .string()
111
+ .optional()
112
+ .describe('Optional entity type filter'),
113
+ sortOrder: z
114
+ .enum(['asc', 'desc'])
115
+ .optional()
116
+ .default('desc')
117
+ .describe('Sort order for results'),
118
+ limit: z
119
+ .number()
120
+ .min(1)
121
+ .max(1000)
122
+ .optional()
123
+ .default(100)
124
+ .describe('Maximum number of results to return'),
125
+ });
126
+ /**
127
+ * Validation schema for query_timeline_after arguments.
128
+ *
129
+ * Finds entities with date fields after a specified date.
130
+ */
131
+ export const QueryTimelineAfterArgsSchema = z.object({
132
+ date: z
133
+ .string()
134
+ .regex(ISO8601DateRegex, 'Date must be in YYYY-MM-DD format'),
135
+ dateField: z.string().describe('Name of the date field to query'),
136
+ entityType: z
137
+ .string()
138
+ .optional()
139
+ .describe('Optional entity type filter'),
140
+ sortOrder: z
141
+ .enum(['asc', 'desc'])
142
+ .optional()
143
+ .default('asc')
144
+ .describe('Sort order for results'),
145
+ limit: z
146
+ .number()
147
+ .min(1)
148
+ .max(1000)
149
+ .optional()
150
+ .default(100)
151
+ .describe('Maximum number of results to return'),
152
+ });
153
+ /**
154
+ * Validation schema for query_timeline_exact arguments.
155
+ *
156
+ * Finds entities with date fields matching an exact date.
157
+ */
158
+ export const QueryTimelineExactArgsSchema = z.object({
159
+ date: z
160
+ .string()
161
+ .regex(ISO8601DateRegex, 'Date must be in YYYY-MM-DD format'),
162
+ dateField: z.string().describe('Name of the date field to query'),
163
+ entityType: z
164
+ .string()
165
+ .optional()
166
+ .describe('Optional entity type filter'),
167
+ sortOrder: z
168
+ .enum(['asc', 'desc'])
169
+ .optional()
170
+ .default('asc')
171
+ .describe('Sort order for results'),
172
+ limit: z
173
+ .number()
174
+ .min(1)
175
+ .max(1000)
176
+ .optional()
177
+ .default(100)
178
+ .describe('Maximum number of results to return'),
179
+ });
180
+ /**
181
+ * Generates MCP tool definitions for timeline queries.
182
+ *
183
+ * Creates four tools: query_timeline_range, query_timeline_before,
184
+ * query_timeline_after, and query_timeline_exact.
185
+ *
186
+ * Tool descriptions dynamically include available date fields per entity type.
187
+ *
188
+ * @param temporalTypes - Entity types with date fields
189
+ * @returns Array of tool definitions for MCP registration
190
+ */
191
+ export function generateTimelineTools(temporalTypes) {
192
+ // Build description of available date fields
193
+ const dateFieldsDescription = buildDateFieldsDescription(temporalTypes);
194
+ // Common properties shared by all timeline tools
195
+ const commonProperties = {
196
+ dateField: {
197
+ type: 'string',
198
+ description: 'Name of the date field to query',
199
+ },
200
+ entityType: {
201
+ type: 'string',
202
+ description: 'Optional: filter to specific entity type',
203
+ },
204
+ sortOrder: {
205
+ type: 'string',
206
+ enum: ['asc', 'desc'],
207
+ description: 'Sort order for results',
208
+ },
209
+ limit: {
210
+ type: 'number',
211
+ description: 'Maximum number of results to return (1-1000, default: 100)',
212
+ minimum: 1,
213
+ maximum: 1000,
214
+ default: 100,
215
+ },
216
+ };
217
+ const tools = [
218
+ {
219
+ name: 'query_timeline_range',
220
+ description: `Query entities with dates in a specified range. Returns entities where the date field falls between startDate and endDate (inclusive).${dateFieldsDescription}`,
221
+ inputSchema: {
222
+ type: 'object',
223
+ properties: {
224
+ startDate: {
225
+ type: 'string',
226
+ description: 'Start date in YYYY-MM-DD format (inclusive)',
227
+ },
228
+ endDate: {
229
+ type: 'string',
230
+ description: 'End date in YYYY-MM-DD format (inclusive)',
231
+ },
232
+ ...commonProperties,
233
+ },
234
+ required: ['startDate', 'endDate', 'dateField'],
235
+ },
236
+ },
237
+ {
238
+ name: 'query_timeline_before',
239
+ description: `Query entities with dates before a specified date. Returns entities where the date field is earlier than the given date.${dateFieldsDescription}`,
240
+ inputSchema: {
241
+ type: 'object',
242
+ properties: {
243
+ date: {
244
+ type: 'string',
245
+ description: 'Date in YYYY-MM-DD format (exclusive upper bound)',
246
+ },
247
+ ...commonProperties,
248
+ sortOrder: {
249
+ ...commonProperties.sortOrder,
250
+ default: 'desc',
251
+ description: 'Sort order for results (default: desc)',
252
+ },
253
+ },
254
+ required: ['date', 'dateField'],
255
+ },
256
+ },
257
+ {
258
+ name: 'query_timeline_after',
259
+ description: `Query entities with dates after a specified date. Returns entities where the date field is later than the given date.${dateFieldsDescription}`,
260
+ inputSchema: {
261
+ type: 'object',
262
+ properties: {
263
+ date: {
264
+ type: 'string',
265
+ description: 'Date in YYYY-MM-DD format (exclusive lower bound)',
266
+ },
267
+ ...commonProperties,
268
+ sortOrder: {
269
+ ...commonProperties.sortOrder,
270
+ default: 'asc',
271
+ description: 'Sort order for results (default: asc)',
272
+ },
273
+ },
274
+ required: ['date', 'dateField'],
275
+ },
276
+ },
277
+ {
278
+ name: 'query_timeline_exact',
279
+ description: `Query entities with dates matching an exact date. Returns entities where the date field exactly matches the given date.${dateFieldsDescription}`,
280
+ inputSchema: {
281
+ type: 'object',
282
+ properties: {
283
+ date: {
284
+ type: 'string',
285
+ description: 'Date in YYYY-MM-DD format (exact match)',
286
+ },
287
+ ...commonProperties,
288
+ sortOrder: {
289
+ ...commonProperties.sortOrder,
290
+ default: 'asc',
291
+ description: 'Sort order for results (default: asc)',
292
+ },
293
+ },
294
+ required: ['date', 'dateField'],
295
+ },
296
+ },
297
+ ];
298
+ return tools;
299
+ }
300
+ /**
301
+ * Builds the date fields description section for tool descriptions.
302
+ *
303
+ * @param temporalTypes - Entity types with date fields
304
+ * @returns Formatted description of available date fields
305
+ */
306
+ function buildDateFieldsDescription(temporalTypes) {
307
+ if (temporalTypes.length === 0) {
308
+ return '';
309
+ }
310
+ let description = '\n\nAvailable date fields:\n';
311
+ for (const typeInfo of temporalTypes) {
312
+ const fieldNames = typeInfo.dateFields.map((f) => f.name).join(', ');
313
+ description += `- ${typeInfo.entityType}: ${fieldNames}\n`;
314
+ }
315
+ return description;
316
+ }
317
+ //# sourceMappingURL=timeline-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-tools.js","sourceRoot":"","sources":["../../src/mcp/timeline-tools.ts"],"names":[],"mappings":"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"}
@@ -53,5 +53,191 @@ export declare class SearchEngine {
53
53
  [k: string]: number;
54
54
  };
55
55
  };
56
+ /**
57
+ * Query nodes by date range with full context
58
+ *
59
+ * @param startDate - Start date (inclusive) in ISO format (YYYY-MM-DD)
60
+ * @param endDate - End date (inclusive) in ISO format (YYYY-MM-DD)
61
+ * @param dateField - Name of the date field to query
62
+ * @param options - Query options (entityType, sortOrder, limit)
63
+ * @returns Results grouped by entity type with relationships and metadata
64
+ */
65
+ queryTimelineRange(startDate: string, endDate: string, dateField: string, options?: {
66
+ entityType?: string;
67
+ sortOrder?: 'asc' | 'desc';
68
+ limit?: number;
69
+ }): Promise<{
70
+ nodes: GraphNode[];
71
+ relationships: GraphEdge[];
72
+ metadata: {
73
+ source: 'timeline';
74
+ executionTime: number;
75
+ totalResults: number;
76
+ dateField: string;
77
+ queryType: 'range';
78
+ };
79
+ }>;
80
+ /**
81
+ * Query nodes before a specific date with full context
82
+ *
83
+ * @param date - Date threshold in ISO format (YYYY-MM-DD)
84
+ * @param dateField - Name of the date field to query
85
+ * @param options - Query options (entityType, sortOrder, limit)
86
+ * @returns Results grouped by entity type with relationships and metadata
87
+ */
88
+ queryTimelineBefore(date: string, dateField: string, options?: {
89
+ entityType?: string;
90
+ sortOrder?: 'asc' | 'desc';
91
+ limit?: number;
92
+ }): Promise<{
93
+ nodes: GraphNode[];
94
+ relationships: GraphEdge[];
95
+ metadata: {
96
+ source: 'timeline';
97
+ executionTime: number;
98
+ totalResults: number;
99
+ dateField: string;
100
+ queryType: 'before';
101
+ };
102
+ }>;
103
+ /**
104
+ * Query nodes after a specific date with full context
105
+ *
106
+ * @param date - Date threshold in ISO format (YYYY-MM-DD)
107
+ * @param dateField - Name of the date field to query
108
+ * @param options - Query options (entityType, sortOrder, limit)
109
+ * @returns Results grouped by entity type with relationships and metadata
110
+ */
111
+ queryTimelineAfter(date: string, dateField: string, options?: {
112
+ entityType?: string;
113
+ sortOrder?: 'asc' | 'desc';
114
+ limit?: number;
115
+ }): Promise<{
116
+ nodes: GraphNode[];
117
+ relationships: GraphEdge[];
118
+ metadata: {
119
+ source: 'timeline';
120
+ executionTime: number;
121
+ totalResults: number;
122
+ dateField: string;
123
+ queryType: 'after';
124
+ };
125
+ }>;
126
+ /**
127
+ * Query nodes by exact date match with full context
128
+ *
129
+ * @param date - Date to match in ISO format (YYYY-MM-DD)
130
+ * @param dateField - Name of the date field to query
131
+ * @param options - Query options (entityType, sortOrder, limit)
132
+ * @returns Results grouped by entity type with relationships and metadata
133
+ */
134
+ queryTimelineExact(date: string, dateField: string, options?: {
135
+ entityType?: string;
136
+ sortOrder?: 'asc' | 'desc';
137
+ limit?: number;
138
+ }): Promise<{
139
+ nodes: GraphNode[];
140
+ relationships: GraphEdge[];
141
+ metadata: {
142
+ source: 'timeline';
143
+ executionTime: number;
144
+ totalResults: number;
145
+ dateField: string;
146
+ queryType: 'exact';
147
+ };
148
+ }>;
149
+ /**
150
+ * Query immediate neighbors (1-hop) of an entity with full node details
151
+ *
152
+ * @param entityId - Entity ID to query
153
+ * @param options - Query options (direction, filters, limits)
154
+ * @returns Results with full node details, relationships, and metadata
155
+ */
156
+ queryGraphNeighbors(entityId: string, options?: {
157
+ direction?: 'outgoing' | 'incoming' | 'both';
158
+ includeRelationships?: string[];
159
+ excludeRelationships?: string[];
160
+ includeEntityTypes?: string[];
161
+ limit?: number;
162
+ }): Promise<{
163
+ neighbors: Array<{
164
+ node: GraphNode;
165
+ relationship: {
166
+ type: string;
167
+ direction: 'outgoing' | 'incoming';
168
+ };
169
+ }>;
170
+ metadata: {
171
+ source: 'graph';
172
+ executionTime: number;
173
+ totalResults: number;
174
+ };
175
+ }>;
176
+ /**
177
+ * Query subgraph (N-hop neighborhood) of an entity with full node details
178
+ *
179
+ * @param entityId - Entity ID to query
180
+ * @param depth - Number of hops (1-5)
181
+ * @param options - Query options (direction, filters, limits)
182
+ * @returns Results with full node details and metadata
183
+ */
184
+ queryGraphSubgraph(entityId: string, depth: number, options?: {
185
+ direction?: 'outgoing' | 'incoming' | 'both';
186
+ includeRelationships?: string[];
187
+ excludeRelationships?: string[];
188
+ includeEntityTypes?: string[];
189
+ includeIntermediateNodes?: boolean;
190
+ limit?: number;
191
+ }): Promise<{
192
+ nodes: GraphNode[];
193
+ metadata: {
194
+ source: 'graph';
195
+ executionTime: number;
196
+ totalResults: number;
197
+ depth: number;
198
+ };
199
+ }>;
200
+ /**
201
+ * Find shortest path between two entities with full node details
202
+ *
203
+ * @param fromEntityId - Starting entity ID
204
+ * @param toEntityId - Target entity ID
205
+ * @param options - Query options (relationship filter, max depth)
206
+ * @returns Path with full node details or not found
207
+ */
208
+ queryGraphPath(fromEntityId: string, toEntityId: string, options?: {
209
+ includeRelationships?: string[];
210
+ maxDepth?: number;
211
+ }): Promise<{
212
+ found: boolean;
213
+ path: GraphNode[];
214
+ edges: Array<{
215
+ from: string;
216
+ to: string;
217
+ type: string;
218
+ }>;
219
+ metadata: {
220
+ source: 'graph';
221
+ executionTime: number;
222
+ pathLength?: number;
223
+ };
224
+ }>;
225
+ /**
226
+ * List all relationship types available in the vault
227
+ *
228
+ * @returns List of relationship types with metadata
229
+ */
230
+ listRelationshipTypes(): Promise<{
231
+ types: Array<{
232
+ id: string;
233
+ label?: string;
234
+ description?: string;
235
+ }>;
236
+ metadata: {
237
+ source: 'template';
238
+ executionTime: number;
239
+ totalResults: number;
240
+ };
241
+ }>;
56
242
  }
57
243
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnC,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;gBAEjB,EAAE,EAAE,gBAAgB;IAIhC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;QACF,oFAAoF;QACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC,WAAW,CAAC;IAoFxB;;;;;;OAMG;IACG,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC;QACV,IAAI,EAAE,SAAS,CAAC;QAChB,aAAa,EAAE,SAAS,EAAE,CAAC;QAC3B,YAAY,EAAE,SAAS,EAAE,CAAC;KAC3B,GAAG,IAAI,CAAC;IA6BT;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIxD;;OAEG;IACH,QAAQ;;;;;;;CAGT"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/search/engine.ts"],"names":[],"mappings":"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"}