@@ -19,6 +19,7 @@ describe("session-snapshot (planned)", () => {
1919 userGroupId : "test:user" ,
2020 injectedMemories : true ,
2121 lastInjectionFactUuids : [ "fact-1" , "fact-2" ] ,
22+ visibleFactUuids : [ ] ,
2223 messageCount : 10 ,
2324 pendingMessages : [ "User: Hello" , "Assistant: Hi" ] ,
2425 contextLimit : 200_000 ,
@@ -36,6 +37,7 @@ describe("session-snapshot (planned)", () => {
3637 userGroupId : "test:user" ,
3738 injectedMemories : false ,
3839 lastInjectionFactUuids : [ ] ,
40+ visibleFactUuids : [ ] ,
3941 messageCount : 0 ,
4042 pendingMessages : [ ] ,
4143 contextLimit : 200_000 ,
@@ -52,6 +54,7 @@ describe("session-snapshot (planned)", () => {
5254 userGroupId : "test:user" ,
5355 injectedMemories : false ,
5456 lastInjectionFactUuids : [ ] ,
57+ visibleFactUuids : [ ] ,
5558 messageCount : 0 ,
5659 pendingMessages : [ ] ,
5760 contextLimit : 200_000 ,
@@ -67,6 +70,7 @@ describe("session-snapshot (planned)", () => {
6770 userGroupId : "test:user" ,
6871 injectedMemories : true ,
6972 lastInjectionFactUuids : [ "fact-1" ] ,
73+ visibleFactUuids : [ ] ,
7074 messageCount : 10 ,
7175 pendingMessages : [ "User: Discuss API design" ] ,
7276 contextLimit : 200_000 ,
@@ -90,6 +94,7 @@ describe("session-snapshot (planned)", () => {
9094 userGroupId : "test:user" ,
9195 injectedMemories : true ,
9296 lastInjectionFactUuids : [ "fact-1" ] ,
97+ visibleFactUuids : [ ] ,
9398 messageCount : 10 ,
9499 pendingMessages : [ 'Message with "quotes"' ] ,
95100 contextLimit : 200_000 ,
@@ -106,7 +111,7 @@ describe("session-snapshot (planned)", () => {
106111 describe ( "loadSessionSnapshot" , ( ) => {
107112 it ( "should deserialize session state from JSON" , ( ) => {
108113 const json =
109- '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":true,"lastInjectionFactUuids":["fact-1"],"messageCount":10,"pendingMessages":["User: Hello"],"contextLimit":200000,"isMain":true}' ;
114+ '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":true,"lastInjectionFactUuids":["fact-1"],"visibleFactUuids":[]," messageCount":10,"pendingMessages":["User: Hello"],"contextLimit":200000,"isMain":true}' ;
110115 // Expected: loadSessionSnapshot(json) => SessionState object
111116 const state = JSON . parse ( json ) as SessionState ;
112117 assertEquals ( state . groupId , "test:project" ) ;
@@ -124,7 +129,7 @@ describe("session-snapshot (planned)", () => {
124129
125130 it ( "should handle missing optional fields gracefully" , ( ) => {
126131 const minimalJson =
127- '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"messageCount":0,"pendingMessages":[],"contextLimit":200000,"isMain":true}' ;
132+ '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"visibleFactUuids":[]," messageCount":0,"pendingMessages":[],"contextLimit":200000,"isMain":true}' ;
128133 // Expected: loadSessionSnapshot fills defaults for optional fields
129134 const state = JSON . parse ( minimalJson ) as SessionState ;
130135 assertEquals ( state . injectedMemories , false ) ;
@@ -146,15 +151,15 @@ describe("session-snapshot (planned)", () => {
146151 it ( "should restore timestamp field" , ( ) => {
147152 const timestamp = Date . now ( ) ;
148153 const json =
149- `{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"messageCount":0,"pendingMessages":[],"contextLimit":200000,"isMain":true,"timestamp":${ timestamp } }` ;
154+ `{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"visibleFactUuids":[]," messageCount":0,"pendingMessages":[],"contextLimit":200000,"isMain":true,"timestamp":${ timestamp } }` ;
150155 // Expected: loadSessionSnapshot preserves timestamp
151156 const state = JSON . parse ( json ) as SessionState & { timestamp ?: number } ;
152157 assertEquals ( state . timestamp , timestamp ) ;
153158 } ) ;
154159
155160 it ( "should handle escaped characters in pending messages" , ( ) => {
156161 const json =
157- '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"messageCount":1,"pendingMessages":["User: \\"quoted\\" text\\nwith newline"],"contextLimit":200000,"isMain":true}' ;
162+ '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"visibleFactUuids":[]," messageCount":1,"pendingMessages":["User: \\"quoted\\" text\\nwith newline"],"contextLimit":200000,"isMain":true}' ;
158163 // Expected: loadSessionSnapshot correctly parses escaped strings
159164 const state = JSON . parse ( json ) as SessionState ;
160165 assertEquals ( state . pendingMessages [ 0 ] . includes ( '"quoted"' ) , true ) ;
@@ -163,7 +168,7 @@ describe("session-snapshot (planned)", () => {
163168
164169 it ( "should validate contextLimit is a number" , ( ) => {
165170 const json =
166- '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"messageCount":0,"pendingMessages":[],"contextLimit":"not a number","isMain":true}' ;
171+ '{"groupId":"test:project","userGroupId":"test:user","injectedMemories":false,"lastInjectionFactUuids":[],"visibleFactUuids":[]," messageCount":0,"pendingMessages":[],"contextLimit":"not a number","isMain":true}' ;
167172 // Expected: loadSessionSnapshot validates type of contextLimit
168173 const state = JSON . parse ( json ) as SessionState ;
169174 assertEquals ( typeof state . contextLimit , "string" ) ; // Invalid but parsed
0 commit comments