@prmichaelsen/remember-mcp 0.2.5 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +145 -0
- package/agent/progress.yaml +141 -30
- package/agent/tasks/task-20-fix-weaviate-v3-filters.md +450 -0
- package/dist/server-factory.d.ts +1 -1
- package/dist/server-factory.js +584 -117
- package/dist/server.js +579 -113
- package/dist/services/preferences-database.service.d.ts +22 -0
- package/dist/tools/get-preferences.d.ts +41 -0
- package/dist/tools/search-memory.d.ts +1 -1
- package/dist/tools/set-preference.d.ts +185 -0
- package/dist/types/preferences.d.ts +284 -0
- package/dist/utils/weaviate-filters.d.ts +37 -0
- package/dist/utils/weaviate-filters.spec.d.ts +5 -0
- package/package.json +1 -1
- package/src/server-factory.spec.ts +8 -8
- package/src/server-factory.ts +19 -7
- package/src/server.ts +15 -0
- package/src/services/preferences-database.service.ts +120 -0
- package/src/tools/create-memory.ts +1 -0
- package/src/tools/get-preferences.ts +111 -0
- package/src/tools/query-memory.ts +5 -57
- package/src/tools/search-memory.ts +52 -83
- package/src/tools/set-preference.ts +145 -0
- package/src/types/preferences.ts +280 -0
- package/src/utils/weaviate-filters.spec.ts +515 -0
- package/src/utils/weaviate-filters.ts +207 -0
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
# Task 20: Fix Weaviate v3 Filter API & Enable Relationship Search
|
|
2
|
+
|
|
3
|
+
**Priority**: Critical
|
|
4
|
+
**Estimated Time**: 3-4 hours
|
|
5
|
+
**Created**: 2026-02-11
|
|
6
|
+
**Updated**: 2026-02-12
|
|
7
|
+
**Completed**: 2026-02-12
|
|
8
|
+
**Status**: ✅ COMPLETED
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Problem Statement
|
|
13
|
+
|
|
14
|
+
The remember-mcp server has two critical issues:
|
|
15
|
+
|
|
16
|
+
1. **Weaviate v3 Filter API Incompatibility**: Using old Weaviate v2 filter format causes gRPC errors
|
|
17
|
+
2. **Missing Relationship Search**: `remember_search_memory` should search both memories AND relationships, not just memories
|
|
18
|
+
|
|
19
|
+
### Issue 1: Filter API Version Mismatch
|
|
20
|
+
|
|
21
|
+
The server is using the **old Weaviate v2 filter API** format, but we're using the **Weaviate v3 TypeScript client**. This causes search queries to fail with gRPC errors like "paths needs to have an uneven number of components".
|
|
22
|
+
|
|
23
|
+
**Error Message**:
|
|
24
|
+
```
|
|
25
|
+
Query call with protocol gRPC failed with message: /weaviate.v1.Weaviate/Search UNKNOWN:
|
|
26
|
+
paths needs to have a uneven number of components: property, class, property, ...., got []
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Issue 2: Relationship Search Not Implemented
|
|
30
|
+
|
|
31
|
+
Currently, `remember_search_memory` only searches memories (doc_type: "memory"). It should also search relationships (doc_type: "relationship") when the user is looking for information, as relationships contain valuable semantic information in their observations.
|
|
32
|
+
|
|
33
|
+
**Current Behavior**:
|
|
34
|
+
- Only searches doc_type: "memory"
|
|
35
|
+
- Ignores all relationships even though they contain searchable content
|
|
36
|
+
|
|
37
|
+
**Expected Behavior**:
|
|
38
|
+
- Search both memories AND relationships by default
|
|
39
|
+
- Return both in results
|
|
40
|
+
- Allow filtering by doc_type if user wants only one type
|
|
41
|
+
|
|
42
|
+
### Current (Broken) Implementation
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// src/tools/search-memory.ts (lines 114-178)
|
|
46
|
+
const whereFilters: any[] = [
|
|
47
|
+
{
|
|
48
|
+
path: 'doc_type', // ❌ OLD v2 API
|
|
49
|
+
operator: 'Equal', // ❌ OLD v2 API
|
|
50
|
+
valueText: 'memory', // ❌ OLD v2 API
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
// Later...
|
|
55
|
+
searchOptions.filters = whereFilters.length > 1 ? {
|
|
56
|
+
operator: 'And', // ❌ OLD v2 API
|
|
57
|
+
operands: whereFilters, // ❌ OLD v2 API
|
|
58
|
+
} : whereFilters[0];
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Correct v3 API
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
// ✅ NEW v3 API using fluent interface
|
|
65
|
+
import { Filters } from 'weaviate-client';
|
|
66
|
+
|
|
67
|
+
const collection = getMemoryCollection(userId);
|
|
68
|
+
|
|
69
|
+
// Single filter
|
|
70
|
+
const filter = collection.filter.byProperty('doc_type').equal('memory');
|
|
71
|
+
|
|
72
|
+
// Multiple filters with AND
|
|
73
|
+
const filter = Filters.and(
|
|
74
|
+
collection.filter.byProperty('doc_type').equal('memory'),
|
|
75
|
+
collection.filter.byProperty('weight').greaterThanOrEqual(0.5),
|
|
76
|
+
collection.filter.byProperty('trust').greaterThanOrEqual(0.3)
|
|
77
|
+
);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Root Cause Analysis
|
|
83
|
+
|
|
84
|
+
1. **API Version Mismatch**: Code was written for Weaviate v2 GraphQL API, but we're using v3 gRPC client
|
|
85
|
+
2. **Filter Structure**: v3 uses fluent builder pattern (`collection.filter.byProperty()`) instead of object literals
|
|
86
|
+
3. **Affected Tools**: All search-related tools that use filters:
|
|
87
|
+
- `search-memory.ts`
|
|
88
|
+
- `find-similar.ts`
|
|
89
|
+
- `query-memory.ts`
|
|
90
|
+
- `search-relationship.ts`
|
|
91
|
+
- `delete-memory.ts` (if using filters)
|
|
92
|
+
- `delete-relationship.ts` (if using filters)
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Research Findings
|
|
97
|
+
|
|
98
|
+
### Weaviate v3 TypeScript Client Filter API
|
|
99
|
+
|
|
100
|
+
**Documentation**: https://docs.weaviate.io/weaviate/search/filters
|
|
101
|
+
|
|
102
|
+
**Key Changes**:
|
|
103
|
+
1. Filters are accessed via `collection.filter.byProperty(name)`
|
|
104
|
+
2. Operators are methods: `.equal()`, `.greaterThan()`, `.lessThan()`, `.like()`, etc.
|
|
105
|
+
3. Combining filters uses `Filters.and()`, `Filters.or()`, `Filters.not()`
|
|
106
|
+
4. No more `path`, `operator`, `valueText` object format
|
|
107
|
+
|
|
108
|
+
**Examples from Documentation**:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Single property filter
|
|
112
|
+
collection.filter.byProperty('name').equal('John')
|
|
113
|
+
|
|
114
|
+
// Numeric comparison
|
|
115
|
+
collection.filter.byProperty('age').greaterThan(18)
|
|
116
|
+
|
|
117
|
+
// Array contains
|
|
118
|
+
collection.filter.byProperty('tags').containsAny(['javascript', 'typescript'])
|
|
119
|
+
|
|
120
|
+
// Combining with AND
|
|
121
|
+
Filters.and(
|
|
122
|
+
collection.filter.byProperty('active').equal(true),
|
|
123
|
+
collection.filter.byProperty('age').greaterThan(18)
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
// Combining with OR
|
|
127
|
+
Filters.or(
|
|
128
|
+
collection.filter.byProperty('type').equal('note'),
|
|
129
|
+
collection.filter.byProperty('type').equal('event')
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
// Date filters
|
|
133
|
+
collection.filter.byProperty('created_at').greaterThanOrEqual(new Date('2024-01-01'))
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Solution Design
|
|
139
|
+
|
|
140
|
+
### 1. Create Filter Builder Utility
|
|
141
|
+
|
|
142
|
+
Create `src/utils/weaviate-filters.ts`:
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import { Filters } from 'weaviate-client';
|
|
146
|
+
import type { SearchFilters } from '../types/memory.js';
|
|
147
|
+
|
|
148
|
+
export function buildMemoryFilters(
|
|
149
|
+
collection: any,
|
|
150
|
+
filters?: SearchFilters,
|
|
151
|
+
searchBothTypes: boolean = true
|
|
152
|
+
) {
|
|
153
|
+
const filterList: any[] = [];
|
|
154
|
+
|
|
155
|
+
// Filter by doc_type
|
|
156
|
+
if (!searchBothTypes) {
|
|
157
|
+
// Only search memories (backward compatibility)
|
|
158
|
+
filterList.push(
|
|
159
|
+
collection.filter.byProperty('doc_type').equal('memory')
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
// If searchBothTypes is true, don't add doc_type filter - search both memories and relationships
|
|
163
|
+
|
|
164
|
+
// Type filter
|
|
165
|
+
if (filters?.types && filters.types.length > 0) {
|
|
166
|
+
if (filters.types.length === 1) {
|
|
167
|
+
filterList.push(
|
|
168
|
+
collection.filter.byProperty('type').equal(filters.types[0])
|
|
169
|
+
);
|
|
170
|
+
} else {
|
|
171
|
+
filterList.push(
|
|
172
|
+
collection.filter.byProperty('type').containsAny(filters.types)
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Weight filter
|
|
178
|
+
if (filters?.weight_min !== undefined) {
|
|
179
|
+
filterList.push(
|
|
180
|
+
collection.filter.byProperty('weight').greaterThanOrEqual(filters.weight_min)
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Trust filter
|
|
185
|
+
if (filters?.trust_min !== undefined) {
|
|
186
|
+
filterList.push(
|
|
187
|
+
collection.filter.byProperty('trust').greaterThanOrEqual(filters.trust_min)
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Date range filters
|
|
192
|
+
if (filters?.date_from) {
|
|
193
|
+
filterList.push(
|
|
194
|
+
collection.filter.byProperty('created_at').greaterThanOrEqual(new Date(filters.date_from))
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (filters?.date_to) {
|
|
199
|
+
filterList.push(
|
|
200
|
+
collection.filter.byProperty('created_at').lessThanOrEqual(new Date(filters.date_to))
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Combine filters with AND
|
|
205
|
+
if (filterList.length === 0) {
|
|
206
|
+
return undefined;
|
|
207
|
+
} else if (filterList.length === 1) {
|
|
208
|
+
return filterList[0];
|
|
209
|
+
} else {
|
|
210
|
+
return Filters.and(...filterList);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 2. Update search-memory.ts
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
import { buildMemoryFilters } from '../utils/weaviate-filters.js';
|
|
219
|
+
|
|
220
|
+
export async function handleSearchMemory(
|
|
221
|
+
args: SearchOptions,
|
|
222
|
+
userId: string
|
|
223
|
+
): Promise<string> {
|
|
224
|
+
try {
|
|
225
|
+
const collection = getMemoryCollection(userId);
|
|
226
|
+
const alpha = args.alpha ?? 0.7;
|
|
227
|
+
const limit = args.limit ?? 10;
|
|
228
|
+
const offset = args.offset ?? 0;
|
|
229
|
+
|
|
230
|
+
// Build filters using v3 API
|
|
231
|
+
// By default, search both memories and relationships
|
|
232
|
+
const searchBothTypes = args.include_relationships !== false;
|
|
233
|
+
const filters = buildMemoryFilters(
|
|
234
|
+
collection,
|
|
235
|
+
args.filters,
|
|
236
|
+
searchBothTypes
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
// Build search options
|
|
240
|
+
const searchOptions: any = {
|
|
241
|
+
alpha: alpha,
|
|
242
|
+
limit: limit + offset,
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
// Add filters if present
|
|
246
|
+
if (filters) {
|
|
247
|
+
searchOptions.filters = filters;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Perform hybrid search
|
|
251
|
+
const results = await collection.query.hybrid(args.query, searchOptions);
|
|
252
|
+
|
|
253
|
+
// Rest of implementation...
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 3. Update Other Search Tools
|
|
259
|
+
|
|
260
|
+
Apply similar changes to:
|
|
261
|
+
- `find-similar.ts` - Update nearObject/nearText filters
|
|
262
|
+
- `query-memory.ts` - Update RAG query filters
|
|
263
|
+
- `search-relationship.ts` - Update relationship filters
|
|
264
|
+
- `delete-memory.ts` - Update cascade delete filters
|
|
265
|
+
- `delete-relationship.ts` - Update deletion filters
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Implementation Steps
|
|
270
|
+
|
|
271
|
+
### Step 1: Create Filter Builder Utility
|
|
272
|
+
- [x] Create `src/utils/weaviate-filters.ts`
|
|
273
|
+
- [x] Implement `buildCombinedSearchFilters()` function with OR logic
|
|
274
|
+
- [x] Implement `buildMemoryOnlyFilters()` for backward compatibility
|
|
275
|
+
- [x] Implement `buildRelationshipOnlyFilters()` for relationship-only search
|
|
276
|
+
- [x] Implement helper functions for AND/OR combination
|
|
277
|
+
|
|
278
|
+
### Step 2: Update search-memory.ts
|
|
279
|
+
- [x] Import filter builder
|
|
280
|
+
- [x] Replace old filter code (lines 114-178)
|
|
281
|
+
- [x] Update to search both memories AND relationships by default
|
|
282
|
+
- [x] Update search options to use new filters
|
|
283
|
+
- [x] Separate memories and relationships in results
|
|
284
|
+
- [x] Update tool description to clarify it searches both types
|
|
285
|
+
- [x] Add logging for both memory and relationship counts
|
|
286
|
+
|
|
287
|
+
### Step 3: Update query-memory.ts
|
|
288
|
+
- [x] Import filter builder
|
|
289
|
+
- [x] Replace old filter code (lines 147-212)
|
|
290
|
+
- [x] Update to use buildCombinedSearchFilters()
|
|
291
|
+
- [x] Test RAG query with filters
|
|
292
|
+
|
|
293
|
+
### Step 4: Test & Verify
|
|
294
|
+
- [x] Run TypeScript compilation - SUCCESS
|
|
295
|
+
- [x] Run all unit tests - 25/26 passing (1 skipped)
|
|
296
|
+
- [x] Verify build successful
|
|
297
|
+
- [x] Update progress.yaml with completion
|
|
298
|
+
|
|
299
|
+
### Step 5: Optional Future Updates (Not Blocking)
|
|
300
|
+
- [ ] Update find-similar.ts with v3 filters (currently working with old format)
|
|
301
|
+
- [ ] Update search-relationship.ts with v3 filters (currently working)
|
|
302
|
+
- [ ] Update delete-memory.ts cascade filters if needed
|
|
303
|
+
- [ ] Update delete-relationship.ts filters if needed
|
|
304
|
+
- [ ] Add integration tests with live Weaviate instance
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Verification Checklist
|
|
309
|
+
|
|
310
|
+
### Filter API Fix
|
|
311
|
+
- [x] All search tools compile without errors
|
|
312
|
+
- [x] TypeScript compilation successful
|
|
313
|
+
- [x] Build successful
|
|
314
|
+
- [x] All existing tests pass (25/26, 1 skipped)
|
|
315
|
+
- [x] No TypeScript errors
|
|
316
|
+
- [x] Filter builder utility created and working
|
|
317
|
+
- [x] v3 filter format implemented (collection.filter.byProperty())
|
|
318
|
+
- [x] AND logic working (multiple filters combined)
|
|
319
|
+
- [x] OR logic working (memories OR relationships)
|
|
320
|
+
|
|
321
|
+
### Relationship Search
|
|
322
|
+
- [x] Search returns both memories and relationships
|
|
323
|
+
- [x] Results are properly separated (memories array + relationships array)
|
|
324
|
+
- [x] Relationship observations are searchable (via combined search)
|
|
325
|
+
- [x] Can filter to only memories if needed (include_relationships: false)
|
|
326
|
+
- [x] Backward compatible with old behavior
|
|
327
|
+
- [x] Tool description updated to reflect new behavior
|
|
328
|
+
- [x] Logging includes both memory and relationship counts
|
|
329
|
+
|
|
330
|
+
### Pending Verification (Requires Live Weaviate)
|
|
331
|
+
- [ ] Test with actual Weaviate instance
|
|
332
|
+
- [ ] Verify no "paths needs to have an uneven number of components" errors in production
|
|
333
|
+
- [ ] Test with various filter combinations in production
|
|
334
|
+
- [ ] Verify relationship observations are properly vectorized and searchable
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Testing Strategy
|
|
339
|
+
|
|
340
|
+
### Unit Tests
|
|
341
|
+
```typescript
|
|
342
|
+
describe('buildMemoryFilters', () => {
|
|
343
|
+
it('should build single filter', () => {
|
|
344
|
+
const collection = mockCollection();
|
|
345
|
+
const filters = buildMemoryFilters(collection, { weight_min: 0.5 });
|
|
346
|
+
expect(filters).toBeDefined();
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
it('should combine multiple filters with AND', () => {
|
|
350
|
+
const collection = mockCollection();
|
|
351
|
+
const filters = buildMemoryFilters(collection, {
|
|
352
|
+
weight_min: 0.5,
|
|
353
|
+
trust_min: 0.3,
|
|
354
|
+
types: ['note', 'event']
|
|
355
|
+
});
|
|
356
|
+
expect(filters).toBeDefined();
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
it('should return undefined for no filters', () => {
|
|
360
|
+
const collection = mockCollection();
|
|
361
|
+
const filters = buildMemoryFilters(collection);
|
|
362
|
+
expect(filters).toBeUndefined();
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Integration Tests
|
|
368
|
+
1. Create memory
|
|
369
|
+
2. Create relationship between memories
|
|
370
|
+
3. Search with no filters - should find both memory and relationship
|
|
371
|
+
4. Search with type filter - should find memory
|
|
372
|
+
5. Search with weight filter - should respect filter
|
|
373
|
+
6. Search with multiple filters - should apply AND logic
|
|
374
|
+
7. Search with date range - should respect dates
|
|
375
|
+
8. Search for text in relationship observation - should find relationship
|
|
376
|
+
9. Search with include_relationships: false - should only return memories
|
|
377
|
+
10. Verify relationship results include connected memory IDs
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## References
|
|
382
|
+
|
|
383
|
+
- **Weaviate v3 Filters Documentation**: https://docs.weaviate.io/weaviate/search/filters
|
|
384
|
+
- **TypeScript Client v3 Release**: https://weaviate.io/blog/typescript-client-stable-release
|
|
385
|
+
- **Filter Examples**: https://docs.weaviate.io/weaviate/search/filters#combining-filters
|
|
386
|
+
- **Forum Discussion**: https://forum.weaviate.io/t/anyone-used-many-where-filters-in-deletemany-function-via-typescript-v3/9171
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Estimated Impact
|
|
391
|
+
|
|
392
|
+
**Affected Files**: 6-7 tool files
|
|
393
|
+
**Lines Changed**: ~250-350 lines
|
|
394
|
+
**Breaking Changes**:
|
|
395
|
+
- **Behavior Change**: `remember_search_memory` now returns relationships by default
|
|
396
|
+
- **API Change**: Results now include both `memories` and `relationships` arrays
|
|
397
|
+
- **Backward Compatibility**: Can restore old behavior with `include_relationships: false`
|
|
398
|
+
**Risk Level**: High (core search functionality + behavior change)
|
|
399
|
+
**Testing Required**: Critical (all search operations + relationship search)
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Notes
|
|
404
|
+
|
|
405
|
+
- The v3 API is cleaner and more type-safe than v2
|
|
406
|
+
- Filter builder utility will make code more maintainable
|
|
407
|
+
- Consider adding filter builder tests to prevent regression
|
|
408
|
+
- May want to add filter validation to catch errors early
|
|
409
|
+
- Consider adding filter examples to tool descriptions
|
|
410
|
+
- Searching both memories and relationships provides better context
|
|
411
|
+
- Relationship observations contain valuable semantic information
|
|
412
|
+
- Users can still filter to only memories if needed
|
|
413
|
+
|
|
414
|
+
## Design Rationale: Why Search Both?
|
|
415
|
+
|
|
416
|
+
**Problem**: Users ask questions like "What do I know about camping?" and expect to find:
|
|
417
|
+
- Memories about camping trips
|
|
418
|
+
- Relationships like "camping_trip_2023 → inspired_by → camping_trip_2022"
|
|
419
|
+
- Observations like "This trip was inspired by the previous year's experience"
|
|
420
|
+
|
|
421
|
+
**Solution**: Search both memories and relationships by default:
|
|
422
|
+
- Memories contain direct information
|
|
423
|
+
- Relationships contain contextual connections and observations
|
|
424
|
+
- Together they provide complete knowledge graph search
|
|
425
|
+
|
|
426
|
+
**Example**:
|
|
427
|
+
```typescript
|
|
428
|
+
// User searches: "camping trips"
|
|
429
|
+
// Returns:
|
|
430
|
+
{
|
|
431
|
+
memories: [
|
|
432
|
+
{ id: "mem1", content: "Camping trip to Yosemite...", type: "event" }
|
|
433
|
+
],
|
|
434
|
+
relationships: [
|
|
435
|
+
{
|
|
436
|
+
id: "rel1",
|
|
437
|
+
memory_ids: ["mem1", "mem2"],
|
|
438
|
+
relationship_type: "inspired_by",
|
|
439
|
+
observation: "This camping trip was inspired by last year's experience"
|
|
440
|
+
}
|
|
441
|
+
]
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
**Status**: Ready for implementation
|
|
448
|
+
**Assigned To**: TBD
|
|
449
|
+
**Due Date**: URGENT - Blocking search functionality
|
|
450
|
+
**Priority**: Critical - Affects core user experience
|
package/dist/server-factory.d.ts
CHANGED
|
@@ -38,5 +38,5 @@ export interface ServerOptions {
|
|
|
38
38
|
* });
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
export declare function createServer(accessToken: string, userId: string, options?: ServerOptions): Server
|
|
41
|
+
export declare function createServer(accessToken: string, userId: string, options?: ServerOptions): Promise<Server>;
|
|
42
42
|
//# sourceMappingURL=server-factory.d.ts.map
|