@prmichaelsen/remember-mcp 2.6.11 → 2.6.12
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 +24 -0
- package/dist/server-factory.js +106 -25
- package/dist/server.js +106 -25
- package/package.json +1 -1
- package/src/tools/confirm.ts +11 -9
- package/src/weaviate/space-schema.ts +102 -15
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.6.12] - 2026-02-17
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **CRITICAL: Memory_public Schema Mismatch**: Fixed property names to match user memory schema
|
|
13
|
+
- Changed `location_gps_latitude` → `location_gps_lat`
|
|
14
|
+
- Changed `location_gps_longitude` → `location_gps_lng`
|
|
15
|
+
- Changed `location_address_formatted` → `location_address`
|
|
16
|
+
- Changed `location_address_city` → `location_city`
|
|
17
|
+
- Changed `location_address_country` → `location_country`
|
|
18
|
+
- Added missing `location_source` field
|
|
19
|
+
- Changed `context_platform` → `context_summary` and `context_timestamp`
|
|
20
|
+
- Added missing `locale_language` and `locale_timezone` fields
|
|
21
|
+
- Changed `related_memory_ids` → `relationships`
|
|
22
|
+
- Added missing fields: `references`, `template_id`, `access_count`, `last_accessed_at`
|
|
23
|
+
- Added relationship fields: `memory_ids`, `relationship_type`, `observation`, `strength`
|
|
24
|
+
- Added computed fields: `base_weight`, `computed_weight`
|
|
25
|
+
- Added `user_id` field for backwards compatibility
|
|
26
|
+
- Schema now matches user memory schema exactly, allowing spread operator to work
|
|
27
|
+
- Fixes issue where Weaviate rejected all properties due to name mismatches
|
|
28
|
+
- Published memories now store all content correctly
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
8
32
|
## [2.6.11] - 2026-02-17
|
|
9
33
|
|
|
10
34
|
### Changed
|
package/dist/server-factory.js
CHANGED
|
@@ -3774,53 +3774,134 @@ async function createSpaceCollection(client2, spaceId) {
|
|
|
3774
3774
|
dataType: "number",
|
|
3775
3775
|
description: "System confidence in accuracy (0-1)"
|
|
3776
3776
|
},
|
|
3777
|
-
// Location fields (flattened)
|
|
3777
|
+
// Location fields (flattened) - MUST match user memory schema exactly
|
|
3778
3778
|
{
|
|
3779
|
-
name: "
|
|
3779
|
+
name: "location_gps_lat",
|
|
3780
3780
|
dataType: "number",
|
|
3781
3781
|
description: "GPS latitude"
|
|
3782
3782
|
},
|
|
3783
3783
|
{
|
|
3784
|
-
name: "
|
|
3784
|
+
name: "location_gps_lng",
|
|
3785
3785
|
dataType: "number",
|
|
3786
3786
|
description: "GPS longitude"
|
|
3787
3787
|
},
|
|
3788
3788
|
{
|
|
3789
|
-
name: "
|
|
3789
|
+
name: "location_address",
|
|
3790
3790
|
dataType: "text",
|
|
3791
3791
|
description: "Formatted address"
|
|
3792
3792
|
},
|
|
3793
3793
|
{
|
|
3794
|
-
name: "
|
|
3794
|
+
name: "location_city",
|
|
3795
3795
|
dataType: "text",
|
|
3796
|
-
description: "City"
|
|
3796
|
+
description: "City name"
|
|
3797
3797
|
},
|
|
3798
3798
|
{
|
|
3799
|
-
name: "
|
|
3799
|
+
name: "location_country",
|
|
3800
|
+
dataType: "text",
|
|
3801
|
+
description: "Country name"
|
|
3802
|
+
},
|
|
3803
|
+
{
|
|
3804
|
+
name: "location_source",
|
|
3800
3805
|
dataType: "text",
|
|
3801
|
-
description: "
|
|
3806
|
+
description: "Location source (gps, ip, manual, etc.)"
|
|
3802
3807
|
},
|
|
3803
|
-
// Context fields (flattened)
|
|
3808
|
+
// Context fields (flattened) - MUST match user memory schema exactly
|
|
3804
3809
|
{
|
|
3805
3810
|
name: "context_conversation_id",
|
|
3806
3811
|
dataType: "text",
|
|
3807
3812
|
description: "Conversation ID"
|
|
3808
3813
|
},
|
|
3809
3814
|
{
|
|
3810
|
-
name: "
|
|
3815
|
+
name: "context_summary",
|
|
3816
|
+
dataType: "text",
|
|
3817
|
+
description: "Brief context summary"
|
|
3818
|
+
},
|
|
3819
|
+
{
|
|
3820
|
+
name: "context_timestamp",
|
|
3821
|
+
dataType: "date",
|
|
3822
|
+
description: "Context timestamp"
|
|
3823
|
+
},
|
|
3824
|
+
// Locale fields - MUST match user memory schema exactly
|
|
3825
|
+
{
|
|
3826
|
+
name: "locale_language",
|
|
3827
|
+
dataType: "text",
|
|
3828
|
+
description: "Language code (e.g., en, es, fr)"
|
|
3829
|
+
},
|
|
3830
|
+
{
|
|
3831
|
+
name: "locale_timezone",
|
|
3811
3832
|
dataType: "text",
|
|
3812
|
-
description: "
|
|
3833
|
+
description: "Timezone (e.g., America/Los_Angeles)"
|
|
3834
|
+
},
|
|
3835
|
+
// Relationships - MUST match user memory schema exactly
|
|
3836
|
+
{
|
|
3837
|
+
name: "relationships",
|
|
3838
|
+
dataType: "text[]",
|
|
3839
|
+
description: "Array of relationship IDs"
|
|
3840
|
+
},
|
|
3841
|
+
// Access tracking - MUST match user memory schema exactly
|
|
3842
|
+
{
|
|
3843
|
+
name: "access_count",
|
|
3844
|
+
dataType: "number",
|
|
3845
|
+
description: "Total times accessed"
|
|
3846
|
+
},
|
|
3847
|
+
{
|
|
3848
|
+
name: "last_accessed_at",
|
|
3849
|
+
dataType: "date",
|
|
3850
|
+
description: "Most recent access timestamp"
|
|
3813
3851
|
},
|
|
3814
|
-
//
|
|
3852
|
+
// Metadata - MUST match user memory schema exactly
|
|
3815
3853
|
{
|
|
3816
3854
|
name: "tags",
|
|
3817
3855
|
dataType: "text[]",
|
|
3818
|
-
description: "Tags for
|
|
3856
|
+
description: "Tags for organization"
|
|
3857
|
+
},
|
|
3858
|
+
{
|
|
3859
|
+
name: "references",
|
|
3860
|
+
dataType: "text[]",
|
|
3861
|
+
description: "Source URLs"
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
name: "template_id",
|
|
3865
|
+
dataType: "text",
|
|
3866
|
+
description: "Template ID if using template"
|
|
3819
3867
|
},
|
|
3868
|
+
// Relationship-specific fields (for relationships in public space)
|
|
3820
3869
|
{
|
|
3821
|
-
name: "
|
|
3870
|
+
name: "memory_ids",
|
|
3822
3871
|
dataType: "text[]",
|
|
3823
|
-
description: "IDs
|
|
3872
|
+
description: "Connected memory IDs (for relationships)"
|
|
3873
|
+
},
|
|
3874
|
+
{
|
|
3875
|
+
name: "relationship_type",
|
|
3876
|
+
dataType: "text",
|
|
3877
|
+
description: "Relationship type (for relationships)"
|
|
3878
|
+
},
|
|
3879
|
+
{
|
|
3880
|
+
name: "observation",
|
|
3881
|
+
dataType: "text",
|
|
3882
|
+
description: "Relationship observation (vectorized)"
|
|
3883
|
+
},
|
|
3884
|
+
{
|
|
3885
|
+
name: "strength",
|
|
3886
|
+
dataType: "number",
|
|
3887
|
+
description: "Relationship strength (0-1)"
|
|
3888
|
+
},
|
|
3889
|
+
// Computed fields - MUST match user memory schema exactly
|
|
3890
|
+
{
|
|
3891
|
+
name: "base_weight",
|
|
3892
|
+
dataType: "number",
|
|
3893
|
+
description: "User-specified weight"
|
|
3894
|
+
},
|
|
3895
|
+
{
|
|
3896
|
+
name: "computed_weight",
|
|
3897
|
+
dataType: "number",
|
|
3898
|
+
description: "Calculated effective weight"
|
|
3899
|
+
},
|
|
3900
|
+
// User ID field (for backwards compatibility with spread operator)
|
|
3901
|
+
{
|
|
3902
|
+
name: "user_id",
|
|
3903
|
+
dataType: "text",
|
|
3904
|
+
description: "User ID (copied from original memory, same as author_id)"
|
|
3824
3905
|
},
|
|
3825
3906
|
// Timestamps
|
|
3826
3907
|
{
|
|
@@ -4215,23 +4296,23 @@ async function executePublishMemory(request, userId) {
|
|
|
4215
4296
|
});
|
|
4216
4297
|
const originalTags = Array.isArray(originalMemory.properties.tags) ? originalMemory.properties.tags : [];
|
|
4217
4298
|
const additionalTags = Array.isArray(request.payload.additional_tags) ? request.payload.additional_tags : [];
|
|
4299
|
+
if (!request.payload.spaces || !Array.isArray(request.payload.spaces) || request.payload.spaces.length === 0) {
|
|
4300
|
+
throw new Error("Payload missing required field: spaces");
|
|
4301
|
+
}
|
|
4218
4302
|
const publishedMemory = {
|
|
4219
4303
|
...originalMemory.properties,
|
|
4220
|
-
// Add space-specific fields
|
|
4221
|
-
spaces: request.payload.spaces
|
|
4222
|
-
//
|
|
4304
|
+
// Add space-specific fields (don't overwrite existing properties)
|
|
4305
|
+
spaces: request.payload.spaces,
|
|
4306
|
+
// Required field (validated above)
|
|
4223
4307
|
author_id: userId,
|
|
4224
4308
|
// Track original author
|
|
4225
4309
|
published_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4226
4310
|
discovery_count: 0,
|
|
4227
|
-
doc_type: "space_memory",
|
|
4228
4311
|
attribution: "user",
|
|
4229
|
-
// Merge additional tags
|
|
4230
|
-
tags: [...originalTags, ...additionalTags]
|
|
4231
|
-
//
|
|
4232
|
-
|
|
4233
|
-
updated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4234
|
-
version: 1
|
|
4312
|
+
// Merge additional tags with original tags
|
|
4313
|
+
tags: [...originalTags, ...additionalTags]
|
|
4314
|
+
// Keep doc_type as 'memory' (don't change to 'space_memory')
|
|
4315
|
+
// Keep original created_at, updated_at, version (don't overwrite)
|
|
4235
4316
|
};
|
|
4236
4317
|
logger.info("Inserting memory into Memory_public", {
|
|
4237
4318
|
function: "executePublishMemory",
|
package/dist/server.js
CHANGED
|
@@ -3842,53 +3842,134 @@ async function createSpaceCollection(client2, spaceId) {
|
|
|
3842
3842
|
dataType: "number",
|
|
3843
3843
|
description: "System confidence in accuracy (0-1)"
|
|
3844
3844
|
},
|
|
3845
|
-
// Location fields (flattened)
|
|
3845
|
+
// Location fields (flattened) - MUST match user memory schema exactly
|
|
3846
3846
|
{
|
|
3847
|
-
name: "
|
|
3847
|
+
name: "location_gps_lat",
|
|
3848
3848
|
dataType: "number",
|
|
3849
3849
|
description: "GPS latitude"
|
|
3850
3850
|
},
|
|
3851
3851
|
{
|
|
3852
|
-
name: "
|
|
3852
|
+
name: "location_gps_lng",
|
|
3853
3853
|
dataType: "number",
|
|
3854
3854
|
description: "GPS longitude"
|
|
3855
3855
|
},
|
|
3856
3856
|
{
|
|
3857
|
-
name: "
|
|
3857
|
+
name: "location_address",
|
|
3858
3858
|
dataType: "text",
|
|
3859
3859
|
description: "Formatted address"
|
|
3860
3860
|
},
|
|
3861
3861
|
{
|
|
3862
|
-
name: "
|
|
3862
|
+
name: "location_city",
|
|
3863
3863
|
dataType: "text",
|
|
3864
|
-
description: "City"
|
|
3864
|
+
description: "City name"
|
|
3865
3865
|
},
|
|
3866
3866
|
{
|
|
3867
|
-
name: "
|
|
3867
|
+
name: "location_country",
|
|
3868
|
+
dataType: "text",
|
|
3869
|
+
description: "Country name"
|
|
3870
|
+
},
|
|
3871
|
+
{
|
|
3872
|
+
name: "location_source",
|
|
3868
3873
|
dataType: "text",
|
|
3869
|
-
description: "
|
|
3874
|
+
description: "Location source (gps, ip, manual, etc.)"
|
|
3870
3875
|
},
|
|
3871
|
-
// Context fields (flattened)
|
|
3876
|
+
// Context fields (flattened) - MUST match user memory schema exactly
|
|
3872
3877
|
{
|
|
3873
3878
|
name: "context_conversation_id",
|
|
3874
3879
|
dataType: "text",
|
|
3875
3880
|
description: "Conversation ID"
|
|
3876
3881
|
},
|
|
3877
3882
|
{
|
|
3878
|
-
name: "
|
|
3883
|
+
name: "context_summary",
|
|
3884
|
+
dataType: "text",
|
|
3885
|
+
description: "Brief context summary"
|
|
3886
|
+
},
|
|
3887
|
+
{
|
|
3888
|
+
name: "context_timestamp",
|
|
3889
|
+
dataType: "date",
|
|
3890
|
+
description: "Context timestamp"
|
|
3891
|
+
},
|
|
3892
|
+
// Locale fields - MUST match user memory schema exactly
|
|
3893
|
+
{
|
|
3894
|
+
name: "locale_language",
|
|
3895
|
+
dataType: "text",
|
|
3896
|
+
description: "Language code (e.g., en, es, fr)"
|
|
3897
|
+
},
|
|
3898
|
+
{
|
|
3899
|
+
name: "locale_timezone",
|
|
3879
3900
|
dataType: "text",
|
|
3880
|
-
description: "
|
|
3901
|
+
description: "Timezone (e.g., America/Los_Angeles)"
|
|
3902
|
+
},
|
|
3903
|
+
// Relationships - MUST match user memory schema exactly
|
|
3904
|
+
{
|
|
3905
|
+
name: "relationships",
|
|
3906
|
+
dataType: "text[]",
|
|
3907
|
+
description: "Array of relationship IDs"
|
|
3908
|
+
},
|
|
3909
|
+
// Access tracking - MUST match user memory schema exactly
|
|
3910
|
+
{
|
|
3911
|
+
name: "access_count",
|
|
3912
|
+
dataType: "number",
|
|
3913
|
+
description: "Total times accessed"
|
|
3914
|
+
},
|
|
3915
|
+
{
|
|
3916
|
+
name: "last_accessed_at",
|
|
3917
|
+
dataType: "date",
|
|
3918
|
+
description: "Most recent access timestamp"
|
|
3881
3919
|
},
|
|
3882
|
-
//
|
|
3920
|
+
// Metadata - MUST match user memory schema exactly
|
|
3883
3921
|
{
|
|
3884
3922
|
name: "tags",
|
|
3885
3923
|
dataType: "text[]",
|
|
3886
|
-
description: "Tags for
|
|
3924
|
+
description: "Tags for organization"
|
|
3925
|
+
},
|
|
3926
|
+
{
|
|
3927
|
+
name: "references",
|
|
3928
|
+
dataType: "text[]",
|
|
3929
|
+
description: "Source URLs"
|
|
3930
|
+
},
|
|
3931
|
+
{
|
|
3932
|
+
name: "template_id",
|
|
3933
|
+
dataType: "text",
|
|
3934
|
+
description: "Template ID if using template"
|
|
3887
3935
|
},
|
|
3936
|
+
// Relationship-specific fields (for relationships in public space)
|
|
3888
3937
|
{
|
|
3889
|
-
name: "
|
|
3938
|
+
name: "memory_ids",
|
|
3890
3939
|
dataType: "text[]",
|
|
3891
|
-
description: "IDs
|
|
3940
|
+
description: "Connected memory IDs (for relationships)"
|
|
3941
|
+
},
|
|
3942
|
+
{
|
|
3943
|
+
name: "relationship_type",
|
|
3944
|
+
dataType: "text",
|
|
3945
|
+
description: "Relationship type (for relationships)"
|
|
3946
|
+
},
|
|
3947
|
+
{
|
|
3948
|
+
name: "observation",
|
|
3949
|
+
dataType: "text",
|
|
3950
|
+
description: "Relationship observation (vectorized)"
|
|
3951
|
+
},
|
|
3952
|
+
{
|
|
3953
|
+
name: "strength",
|
|
3954
|
+
dataType: "number",
|
|
3955
|
+
description: "Relationship strength (0-1)"
|
|
3956
|
+
},
|
|
3957
|
+
// Computed fields - MUST match user memory schema exactly
|
|
3958
|
+
{
|
|
3959
|
+
name: "base_weight",
|
|
3960
|
+
dataType: "number",
|
|
3961
|
+
description: "User-specified weight"
|
|
3962
|
+
},
|
|
3963
|
+
{
|
|
3964
|
+
name: "computed_weight",
|
|
3965
|
+
dataType: "number",
|
|
3966
|
+
description: "Calculated effective weight"
|
|
3967
|
+
},
|
|
3968
|
+
// User ID field (for backwards compatibility with spread operator)
|
|
3969
|
+
{
|
|
3970
|
+
name: "user_id",
|
|
3971
|
+
dataType: "text",
|
|
3972
|
+
description: "User ID (copied from original memory, same as author_id)"
|
|
3892
3973
|
},
|
|
3893
3974
|
// Timestamps
|
|
3894
3975
|
{
|
|
@@ -4283,23 +4364,23 @@ async function executePublishMemory(request, userId) {
|
|
|
4283
4364
|
});
|
|
4284
4365
|
const originalTags = Array.isArray(originalMemory.properties.tags) ? originalMemory.properties.tags : [];
|
|
4285
4366
|
const additionalTags = Array.isArray(request.payload.additional_tags) ? request.payload.additional_tags : [];
|
|
4367
|
+
if (!request.payload.spaces || !Array.isArray(request.payload.spaces) || request.payload.spaces.length === 0) {
|
|
4368
|
+
throw new Error("Payload missing required field: spaces");
|
|
4369
|
+
}
|
|
4286
4370
|
const publishedMemory = {
|
|
4287
4371
|
...originalMemory.properties,
|
|
4288
|
-
// Add space-specific fields
|
|
4289
|
-
spaces: request.payload.spaces
|
|
4290
|
-
//
|
|
4372
|
+
// Add space-specific fields (don't overwrite existing properties)
|
|
4373
|
+
spaces: request.payload.spaces,
|
|
4374
|
+
// Required field (validated above)
|
|
4291
4375
|
author_id: userId,
|
|
4292
4376
|
// Track original author
|
|
4293
4377
|
published_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4294
4378
|
discovery_count: 0,
|
|
4295
|
-
doc_type: "space_memory",
|
|
4296
4379
|
attribution: "user",
|
|
4297
|
-
// Merge additional tags
|
|
4298
|
-
tags: [...originalTags, ...additionalTags]
|
|
4299
|
-
//
|
|
4300
|
-
|
|
4301
|
-
updated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4302
|
-
version: 1
|
|
4380
|
+
// Merge additional tags with original tags
|
|
4381
|
+
tags: [...originalTags, ...additionalTags]
|
|
4382
|
+
// Keep doc_type as 'memory' (don't change to 'space_memory')
|
|
4383
|
+
// Keep original created_at, updated_at, version (don't overwrite)
|
|
4303
4384
|
};
|
|
4304
4385
|
logger.info("Inserting memory into Memory_public", {
|
|
4305
4386
|
function: "executePublishMemory",
|
package/package.json
CHANGED
package/src/tools/confirm.ts
CHANGED
|
@@ -227,22 +227,24 @@ async function executePublishMemory(
|
|
|
227
227
|
? request.payload.additional_tags
|
|
228
228
|
: [];
|
|
229
229
|
|
|
230
|
-
//
|
|
230
|
+
// Validate payload has required fields
|
|
231
|
+
if (!request.payload.spaces || !Array.isArray(request.payload.spaces) || request.payload.spaces.length === 0) {
|
|
232
|
+
throw new Error('Payload missing required field: spaces');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Create published memory - preserve ALL original properties
|
|
231
236
|
const publishedMemory = {
|
|
232
237
|
...originalMemory.properties,
|
|
233
|
-
// Add space-specific fields
|
|
234
|
-
spaces: request.payload.spaces
|
|
238
|
+
// Add space-specific fields (don't overwrite existing properties)
|
|
239
|
+
spaces: request.payload.spaces, // Required field (validated above)
|
|
235
240
|
author_id: userId, // Track original author
|
|
236
241
|
published_at: new Date().toISOString(),
|
|
237
242
|
discovery_count: 0,
|
|
238
|
-
doc_type: 'space_memory',
|
|
239
243
|
attribution: 'user' as const,
|
|
240
|
-
// Merge additional tags
|
|
244
|
+
// Merge additional tags with original tags
|
|
241
245
|
tags: [...originalTags, ...additionalTags],
|
|
242
|
-
//
|
|
243
|
-
created_at
|
|
244
|
-
updated_at: new Date().toISOString(),
|
|
245
|
-
version: 1,
|
|
246
|
+
// Keep doc_type as 'memory' (don't change to 'space_memory')
|
|
247
|
+
// Keep original created_at, updated_at, version (don't overwrite)
|
|
246
248
|
};
|
|
247
249
|
|
|
248
250
|
logger.info('Inserting memory into Memory_public', {
|
|
@@ -187,55 +187,142 @@ async function createSpaceCollection(
|
|
|
187
187
|
description: 'System confidence in accuracy (0-1)',
|
|
188
188
|
},
|
|
189
189
|
|
|
190
|
-
// Location fields (flattened)
|
|
190
|
+
// Location fields (flattened) - MUST match user memory schema exactly
|
|
191
191
|
{
|
|
192
|
-
name: '
|
|
192
|
+
name: 'location_gps_lat',
|
|
193
193
|
dataType: 'number' as any,
|
|
194
194
|
description: 'GPS latitude',
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
|
-
name: '
|
|
197
|
+
name: 'location_gps_lng',
|
|
198
198
|
dataType: 'number' as any,
|
|
199
199
|
description: 'GPS longitude',
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
|
-
name: '
|
|
202
|
+
name: 'location_address',
|
|
203
203
|
dataType: 'text' as any,
|
|
204
204
|
description: 'Formatted address',
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
|
-
name: '
|
|
207
|
+
name: 'location_city',
|
|
208
208
|
dataType: 'text' as any,
|
|
209
|
-
description: 'City',
|
|
209
|
+
description: 'City name',
|
|
210
210
|
},
|
|
211
211
|
{
|
|
212
|
-
name: '
|
|
212
|
+
name: 'location_country',
|
|
213
213
|
dataType: 'text' as any,
|
|
214
|
-
description: 'Country',
|
|
214
|
+
description: 'Country name',
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: 'location_source',
|
|
218
|
+
dataType: 'text' as any,
|
|
219
|
+
description: 'Location source (gps, ip, manual, etc.)',
|
|
215
220
|
},
|
|
216
221
|
|
|
217
|
-
// Context fields (flattened)
|
|
222
|
+
// Context fields (flattened) - MUST match user memory schema exactly
|
|
218
223
|
{
|
|
219
224
|
name: 'context_conversation_id',
|
|
220
225
|
dataType: 'text' as any,
|
|
221
226
|
description: 'Conversation ID',
|
|
222
227
|
},
|
|
223
228
|
{
|
|
224
|
-
name: '
|
|
229
|
+
name: 'context_summary',
|
|
225
230
|
dataType: 'text' as any,
|
|
226
|
-
description: '
|
|
231
|
+
description: 'Brief context summary',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: 'context_timestamp',
|
|
235
|
+
dataType: 'date' as any,
|
|
236
|
+
description: 'Context timestamp',
|
|
227
237
|
},
|
|
228
238
|
|
|
229
|
-
//
|
|
239
|
+
// Locale fields - MUST match user memory schema exactly
|
|
240
|
+
{
|
|
241
|
+
name: 'locale_language',
|
|
242
|
+
dataType: 'text' as any,
|
|
243
|
+
description: 'Language code (e.g., en, es, fr)',
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: 'locale_timezone',
|
|
247
|
+
dataType: 'text' as any,
|
|
248
|
+
description: 'Timezone (e.g., America/Los_Angeles)',
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
// Relationships - MUST match user memory schema exactly
|
|
252
|
+
{
|
|
253
|
+
name: 'relationships',
|
|
254
|
+
dataType: 'text[]' as any,
|
|
255
|
+
description: 'Array of relationship IDs',
|
|
256
|
+
},
|
|
257
|
+
|
|
258
|
+
// Access tracking - MUST match user memory schema exactly
|
|
259
|
+
{
|
|
260
|
+
name: 'access_count',
|
|
261
|
+
dataType: 'number' as any,
|
|
262
|
+
description: 'Total times accessed',
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: 'last_accessed_at',
|
|
266
|
+
dataType: 'date' as any,
|
|
267
|
+
description: 'Most recent access timestamp',
|
|
268
|
+
},
|
|
269
|
+
|
|
270
|
+
// Metadata - MUST match user memory schema exactly
|
|
230
271
|
{
|
|
231
272
|
name: 'tags',
|
|
232
273
|
dataType: 'text[]' as any,
|
|
233
|
-
description: 'Tags for
|
|
274
|
+
description: 'Tags for organization',
|
|
234
275
|
},
|
|
235
276
|
{
|
|
236
|
-
name: '
|
|
277
|
+
name: 'references',
|
|
237
278
|
dataType: 'text[]' as any,
|
|
238
|
-
description: '
|
|
279
|
+
description: 'Source URLs',
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'template_id',
|
|
283
|
+
dataType: 'text' as any,
|
|
284
|
+
description: 'Template ID if using template',
|
|
285
|
+
},
|
|
286
|
+
|
|
287
|
+
// Relationship-specific fields (for relationships in public space)
|
|
288
|
+
{
|
|
289
|
+
name: 'memory_ids',
|
|
290
|
+
dataType: 'text[]' as any,
|
|
291
|
+
description: 'Connected memory IDs (for relationships)',
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
name: 'relationship_type',
|
|
295
|
+
dataType: 'text' as any,
|
|
296
|
+
description: 'Relationship type (for relationships)',
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
name: 'observation',
|
|
300
|
+
dataType: 'text' as any,
|
|
301
|
+
description: 'Relationship observation (vectorized)',
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
name: 'strength',
|
|
305
|
+
dataType: 'number' as any,
|
|
306
|
+
description: 'Relationship strength (0-1)',
|
|
307
|
+
},
|
|
308
|
+
|
|
309
|
+
// Computed fields - MUST match user memory schema exactly
|
|
310
|
+
{
|
|
311
|
+
name: 'base_weight',
|
|
312
|
+
dataType: 'number' as any,
|
|
313
|
+
description: 'User-specified weight',
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: 'computed_weight',
|
|
317
|
+
dataType: 'number' as any,
|
|
318
|
+
description: 'Calculated effective weight',
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
// User ID field (for backwards compatibility with spread operator)
|
|
322
|
+
{
|
|
323
|
+
name: 'user_id',
|
|
324
|
+
dataType: 'text' as any,
|
|
325
|
+
description: 'User ID (copied from original memory, same as author_id)',
|
|
239
326
|
},
|
|
240
327
|
|
|
241
328
|
// Timestamps
|