agentgui 1.0.644 → 1.0.646
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/SYNC_ARCHITECTURE.md +279 -0
- package/docs/SYNC_TO_DISPLAY_REPORT.md +279 -0
- package/ecosystem.config.cjs +22 -0
- package/lib/compressor.js +125 -0
- package/lib/ws-handlers-conv.js +20 -12
- package/loggedin/BrowserMetrics-spare.pma +0 -0
- package/loggedin/Default/Account Web Data +0 -0
- package/loggedin/Default/Account Web Data-journal +0 -0
- package/loggedin/Default/Affiliation Database +0 -0
- package/loggedin/Default/Affiliation Database-journal +0 -0
- package/loggedin/Default/AutofillAiModelCache/LOCK +0 -0
- package/loggedin/Default/AutofillAiModelCache/LOG +0 -0
- package/loggedin/Default/AutofillAiModelCache/LOG.old +0 -0
- package/loggedin/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/loggedin/Default/AutofillStrikeDatabase/LOG +0 -0
- package/loggedin/Default/AutofillStrikeDatabase/LOG.old +0 -0
- package/loggedin/Default/BookmarkMergedSurfaceOrdering +2 -0
- package/loggedin/Default/BudgetDatabase/LOCK +0 -0
- package/loggedin/Default/BudgetDatabase/LOG +0 -0
- package/loggedin/Default/BudgetDatabase/LOG.old +0 -0
- package/loggedin/Default/Cache/Cache_Data/003201f86cea6c9b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/006938640bb02bd3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/00d59e04e625f507_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/02d56ed4cfaf4728_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/02e7136c40809696_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0319805d2dcf43c2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/04fe4266c6198058_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/051e39094e1dd062_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/055af0c7c151bbf6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/06263ac8c2ae173c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/062f8d36bbe3113b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/06308e033d290d36_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/06d597ddfd252f15_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/07f7759c858a3f6b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/080ce0abdc8d0132_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/082ab980b4effb16_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/08358debb9ddfcc8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/09bf9b68a39822df_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0a398d4e5aa46dea_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0aa6a64a8d0023e9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0b2e1968306261af_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0b3f19a154735a4b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0baee8e0bcfcfc33_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0be8af2779924ab2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0c50a10bf3132b68_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0cc5be4c306dea58_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0cd13b80f2436b57_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0d3228b818932140_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0d5c110d8402b8f9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0d6ece6a8198460e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0dcc6105201041d9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0dd4fc755d7de941_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0dd6b517306f5784_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0ea9a6218cafdb52_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/0f9c14b9f37eb6e0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/101c433de7920d29_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/102ca1c0b1e7f6b8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1038e0e0a5559ac4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/10dccba532f14a40_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1158d5b3882cea33_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/11b8525b2d33ed30_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/11c593312862fb72_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/11f4fe0afa21c60b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1295327a00480840_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/12ed6e0c7d56a241_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/131d39682ef045a7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/13eab63691940bd8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/140b3d4fdcb17cc6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/141ff487e8fe8a36_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1423c7ebcdfe529e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1488d525ce5896f5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/162c1653493784d2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/16e050f5cda2a9d9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/16eb80e90bd3c649_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1820e7d65caa882c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/185358b4be1fdd41_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/192e030692c98c42_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/19ee57a9d87a4f94_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1aa7c82fa5a19856_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1aec95fae714aa9f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1afb222f4fb27ea8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1b1f6c77f224871b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1b2894787a5d386e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1b29335114745b13_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1bddb74676ae6b64_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1c242d16d0fbde93_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1c464336fb9aef91_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1d5232c7d0a274fc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1d81fe8b7d477963_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1dba07b76457d209_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1e43bf9a12f88786_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1e605787105af129_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1e67dd1ddd39ef62_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1e9a2db52074d1ff_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1ebfbd109fac3379_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1eda8663fd494b8e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1f1c445d4e63ab25_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1f7faf29a134683b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/1fa955bc2e31d6c8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2016ee08184592e8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/20e301617c21ec3b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/210bee3454a0b33f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/21573459011da142_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/22338befa3822d89_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/234db4f7bcf29eb6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/23f8c701bd36ef95_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2411c0c64dbace94_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/253cc3d433629518_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/25cccf2c35bdb832_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/25d493fde15f22f7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/271f5260a6d7ded5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/283dbc5875f0b09c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/287dbdd8ec2cec32_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/293d3f9bb9a4db67_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/299a05f851dd0a2d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2a2698f970e29d12_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2a534feb7f662914_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2a877c4b77c661eb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2ad11d7c54a2b693_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2b50c6e9f1e9e2f9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2b5c6f12bec3e963_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2b7c6ff9e95bf9e9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2c62cbc900ccb28a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2d5605c2a202d5cd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2d8ab1fabc71735e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2dff89cac1333f6a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/2ff602bffc75a780_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/301ac07ead689bd1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3056a9c7ce4dbe5a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/30f3dd0ddaa97d7f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/314e4c07e1ee112f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/31aebfb6ac4f19ca_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/31ef4814f0f42387_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/31fe2604b0835bc0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/34fd94c74f2de47f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/35b80a7b1e702405_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3664f98e3812cbeb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/36f24a583da39c3c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/37b45a4af06b3382_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/37bb0783eae4fe02_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/37d1fef5733bb327_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/385d6de1cb9d8a8f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/38cfce0805463ae0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/38d024ca4da1ae90_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/38ee99c753f849a2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/394188f4ff7ad751_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/39efac8dc71ca7ec_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3a3d2eefdcaf1968_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3a82e4e171b96d67_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3b331ab89063de97_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3b536ab8619433bc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3b9ee7a740faf7af_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3bb0b0adb54c34ad_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3c163fe8d1f4307a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3c640c6bef6a5ccf_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3c8e090a1f3cb2a7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3ca1b210697ae1c7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3ca64e0372e541a6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3cb1663b21a9611d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3d0581b54ff2ab13_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3daac9cd98fb2141_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3ebd689087f07c75_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3f582059d7269d8a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/3f9c2c08a8717887_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4033f7a40b1b23cb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/40b8503739b21a61_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/410ecb2b61c422f6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/41332c8b55b47250_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4311fdfc1e3061ba_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4342adde68970056_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4344a77bdc95836e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4361c37983c8d810_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/43c5faf6832a1955_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/43cf9a5915948dfc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4445f22006b12f65_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/444c163fd8a005cd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/44786dff50925da3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/447ba76440c7742d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/44c6d1d9e6e3f2c8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/44d27be7dc42c474_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/44f875f60140252e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/451e96da41c2b937_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/452687982de1acb7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4554301241754104_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/455642d27713cd28_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/45c1008ffa08c340_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/45fb3a80813cff6f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/469960b0295c908f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/46c92350c54f43de_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/46cbbf373a6bc426_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4705152348789c5e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/47ce18bce08e656f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/481d474e7275b29c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4859dcd6395250e9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/486cb342bb7ef296_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/48925fa900707a50_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/49345ecb1709f529_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/49e6045301a1466e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4a75d4a1be65552b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4ab4470c01101008_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4c38db34643e4368_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4c84fb4b9fa9355e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4cacbe29e41d5f50_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4d321b91e0fa03fc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4d5269cb701efead_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4d8bb493dfd9a35a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4d9ae92ef5356d4a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4ddba1969633e8d4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4e139028a11fce1f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4e1a72e3dbb919f9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4e6e4f25f7d18443_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/4f255cf2280d8787_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5002322f6e6b6719_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/504e289626e340bd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5088dcf02d7652fa_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/509f231509ab7bd4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/519a2407f4a189c7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/51be76d79525f2b2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/51da7e091bc2a9f8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/528996c3c00f7f26_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/52fb7697a6208529_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/537888309b98e6d4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/540babc768daec52_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/544de42abc13dcd1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5607a9a721456112_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/560e680891ef9622_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/561660a4b64b385f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/56d19c9292c72eae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/56ea69ae8e311571_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/570c782386cea305_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/584490d6da7183c7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5880ea79239e80b9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/58ddf2962030ad88_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/58f17211d6b5fdc4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5970e24d515edf70_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/59815ed95e72c069_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5af073415ffd05f0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5afe862bb90ee7a8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5b5d1763ccbd8af0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5c41e1d0d32a929d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5cb669f921b0fe77_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5cbcc0bd4ce1ed3c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5d45630f76aced81_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5e48c04439b3cc3b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5ef7a6d98358ec43_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5f2232333795b38d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5f4fdcbebfd7af9f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/5f900ef153be6632_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/60ad5d2e05232a90_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/60c50408b2112aa1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/617c02a167953baa_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/627d005422dcd059_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/63a1a69f11303564_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/64093c5b2de2beeb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/648e3db6cff6f16d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/64b0b1893e529767_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/65ffc7f5241f0324_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/661bb5dda928b1c9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/66b40b1fd1456a5f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/66c24e99b4736be0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/66ea89f29b935fe3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/66f574de8a93189f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/672c40da5ff180bb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/683f0ba474864b72_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/68773724b60bbb11_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/68e8a729c67cfc10_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6a061876f3a0181b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6a77c5e50086dfaa_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6aaa996500c2250d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6cbb3e81e9dfcdc5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6d33978d779eceed_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6d7e829997c3bcef_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6da39165fa3bb657_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6f15a92262146ef0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/6f4ddb537a83d4ae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/70d96111b776ba72_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/71954629024f044d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/71acfc1d4a3f4669_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/720bf5ca6e4b5e19_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/72f0653ff25a3ca9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7312d63abda4b086_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/740cc8cc1155a9e9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/754824f95f8cc9ac_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/763c62db2e2b84b5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/76941709133485ae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/76b679e684825066_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/76f9b84ac6411e9f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7895b669629c580c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/78b2d7d952dff981_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/791289f825450743_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7abc28f02af2087c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7abf97ff9ab96e8d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7aebbcab60771599_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7c6348cf937f3647_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7d006f16312fc1de_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7dbab8a819256e85_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7e1fa40020ce532a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7e54ccf1ac07921c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7f12f170e8e9d598_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7f33fdd518c76cae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/7fc392748e29d7bd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/809d196a9a2ade02_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8123c404e8965973_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/81c5ba09429c6dde_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/81e4bb826e33efd5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/82bb25fc65766004_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/83951b48ca84415b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/84e0333de09dc5d8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/851a570031855a03_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/855900c2d9a7621d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/855a7a4c54d501ce_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/85c20ab8d4d683f3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/85c914a48bd796cf_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/85c9ea53b42b621f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/863e79184bb0495a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/86c3c0eef7509aab_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/87b61cc4fb039ef2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/88d34ce6d03d6ab4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8949e2ce7f94e5ba_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8a77fec96ac8d8cc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8a7f828f1545b905_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8ba75e0710cf0c79_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8c033abf9cd4780c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8c491a7454d2ac31_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8c8b33ea2fe0b250_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8cd6d260873b5193_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8cdb2158bf9969a1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8e3cebba0647014e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8e598028090623b3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8e9a2065b9736cc1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8f11ad6b417d76fb_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8f1f419b62883a9b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8f29fc368f20c354_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8f910fecbc938c75_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/8ff6eb155f4b1137_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/900f3ccb19270f9b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/90bd331f7e1eea2d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/91679a5a3af58fef_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9282547935875298_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/92a52bba2be28308_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/939ef9aaed5bbfb1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/941187b1b8acaf4a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/95594d4ad9cb7e91_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9566af6c0a691e12_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/95c2582efe086b83_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/970f6a0ea1360b5a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/97d8c8f1cad9191a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9a804f96a1995751_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9a8e723750d25a9f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9a96cb8ccb98ebea_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9aaec5d9f2b87afc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9b480ef07e464e58_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9b6c4496345229d7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9c5ee0fed7d3ead0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9c8a2963d698390f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9cd6567c966e14ef_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9da2bc3b2ae1018e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9db3ca459a8313e1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9e4f5756eb297578_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/9f6301c02112ba85_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a01be171f5e1d783_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a06301007b7cda37_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a15dd5d82bf0ecb3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a1c832e1a25f4751_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a1d534d4c81411fe_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a302c12740f209f5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a34b9e039fa6c063_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a42c7a3275069c73_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a44f91bfde060925_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a4cb0037ebbfa79b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a60a03c7e46c6943_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a6239850d1528442_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a625c8c8aeef8f51_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a657dd12286a6432_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a659410aa50e5c4a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a6a57b85052e64f9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a6e46e23adfc6a65_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a8d98d955a016fef_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a8ebecc21afa40ec_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/a9f5a69d1c90b9a1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/aa23cb0643dd0d4a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ac69ad73a2b2effd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/acb312512d7848d9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/acdfa24e97ae8dff_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ad3052c3a641162f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ad46a6add8c41674_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/aeab39179acf8d3f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/af259cc0e93d245c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/af28a53296d54fa1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/af2f5873e00410ba_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/af6a6acb885e5eca_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/af907e97a6882a8e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/afb2d0c5ea88d0e8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b000a46652ec9a36_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b0044554711d50a5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b11853a790c21200_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b134bb03721b18dd_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b16b63f45354ad3e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b1be170cb26239b5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b24c1dc319fe1269_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b34f24e3113fe0b3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b3af4b9c6e1dbde4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b519dd165398b5ff_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b5626afe03bbc7e1_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b5a88797115e9d8f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b5e18684c8bed17b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b6c955a0efa173e3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b774ad05037fe633_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/b8c9b10372e91256_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bb2ed8ea9087a5bc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bb93c6744f9de051_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bb955bde4d8c4184_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bc54d848fe181620_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bd67f268675fae10_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bd8dbfbc4c054d75_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/be0d47a1282db95f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/be50d7ce59ce98fe_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bee025fa4619e688_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/bf3d986c5330dd0d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c0598eb323b3d5dc_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c07c00fa3293910e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c09734dd7de73504_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c1a90c698b14f7a5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c217c9d87a73c174_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c2b5644c71e84095_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c2fc9803ddd79c58_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c31eac27872ed673_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c3d543023ff67b14_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c5090953ca817eaa_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c5f259090048d935_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c6ddb9757956b50c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c7135e6bcd4a4aba_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c77f3068e545df1b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c7de1ae11ae65d7c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c83fabdea96eb8d3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/c87e29c1b28becd6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ca02a5047aa2f719_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cb267e8dabeba71b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cc04b6d24da1648a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cc18024f9442e479_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cc8abf926f4327aa_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ccf0c79e29e26de9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ccfe0adc53858e08_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cd18446e5ff634b9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cd43a4df7dd49106_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cd648c0c7188cace_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cd9ff6708b79c960_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cda9c44767bc73be_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ce15e9dbf2859ab7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ce481bff53b5283d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ceffcbc54ba4ca4e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cfbf07e43f39bff8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/cff2c70c8942401d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d06ca2cef4b0ff43_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d08f0c5e602a7d6d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d0e1a429b070c582_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d25bf5d214eca43e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d289451be51eaa1c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d37fad599b446488_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d39dc388ea91af30_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d3d4799d089725c0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d3e1e32d1072452b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d57d319c58e38216_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d5f3b5783fa5cf92_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d5f3efc21d2a021b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d646276f95837823_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d79598190c245f97_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d7ad6d1ea765967d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d7c17d59dbd4c895_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d85f0220303398ae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d86bef90177c633a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d8a493a6c00e7bb7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/d9dfff90e9cec564_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/da060b4294ddaa41_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dad73b108deca793_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dca56046d29d549a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dcf7537e526e0e10_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dd482a2c4280bc3f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/de271d2f349d2737_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/de27f18e48871bc6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/de4d3736b43a8690_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/df9d4a04ca0b70ff_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dfddd05c412d12c9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/dfe9f8a18a8bb8f4_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e09c58ac4aef6c0e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e0a6713e04676a5f_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e0a9dbf2be0d52f9_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e12089f7248084a3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e219d9b46f8dc14c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e2a4ef9010061825_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e35474af367c7d6a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e3fcfe2b75df843d_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e54b632d10c1a2f6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e73e7cd8cc7d206b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e8118a633e0db759_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/e95202457107224e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ea294765ca0e32fe_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/eb45cb99ed6b8e44_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ebc0b88852ca775b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ebeeac46d8c559f7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ec89328ff97c9322_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ecbbd221ebb0529a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ed3e4cf4247b6e19_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ed5152d08612b2ae_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ed6fc5f8cda6b1db_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/eed12fb5e5924236_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ef5416fe390c093e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ef624ee6d503df41_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/efae7d673f2c1d70_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f0338d31d777a682_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f0a5a6420622e2c0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f0ab5ae1a6579065_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f1954aa7a1d47ea7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f218dd1f4993aeb5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f2404d404df93a69_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f28b30274f85cc46_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f2fd023db410bbe0_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f3718b0fc28dfef5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f3bae28053f60023_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f3e98a53c5575189_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f4021f056e21aac3_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f45a4a04d72490f7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f536d18bbc6028a2_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f60d5fcefccac70c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f65c332e2fabb6fe_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f6ea1747196eeb26_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f6f51b93bff46ed6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f78ba468e3c37fdf_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f7e3b88b3f2e805a_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f7e9f36aaf17cc3e_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/f958ca39c7ec5381_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fad59652dfc55cd6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fadc4c64ce4adbf6_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fb617e02b8bf7d88_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fc6b91094e0a37af_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fcaabfc909485f0c_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fcec173e317f05d7_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fd3c34b2e14afb97_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fdacc4feb19d44c8_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fe2cc74250509955_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fe39372ed25e9ba5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fe66c97ab493620b_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/fedc5c00224e06d5_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/ff9df6b96fd1ee13_0 +0 -0
- package/loggedin/Default/Cache/Cache_Data/index +0 -0
- package/loggedin/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/loggedin/Default/Cache/No_Vary_Search/journal.baj +1 -0
- package/loggedin/Default/Cache/No_Vary_Search/snapshot.baf +0 -0
- package/loggedin/Default/ClientCertificates/LOCK +0 -0
- package/loggedin/Default/ClientCertificates/LOG +0 -0
- package/loggedin/Default/ClientCertificates/LOG.old +0 -0
- package/loggedin/Default/Code Cache/js/02a677eb444015d5_0 +0 -0
- package/loggedin/Default/Code Cache/js/02eb93eccbfc8b71_0 +0 -0
- package/loggedin/Default/Code Cache/js/05f0e53f031bbe4a_0 +0 -0
- package/loggedin/Default/Code Cache/js/082f4113db336e35_0 +0 -0
- package/loggedin/Default/Code Cache/js/0909561cde18bcfe_0 +0 -0
- package/loggedin/Default/Code Cache/js/094f5e548f6b0a78_0 +0 -0
- package/loggedin/Default/Code Cache/js/09555bad14151a6e_0 +0 -0
- package/loggedin/Default/Code Cache/js/09985e1a74ec5f01_0 +0 -0
- package/loggedin/Default/Code Cache/js/0bbbff8620079a5a_0 +0 -0
- package/loggedin/Default/Code Cache/js/0bdb6ee2032e3d80_0 +0 -0
- package/loggedin/Default/Code Cache/js/0bf113ed6234523d_0 +0 -0
- package/loggedin/Default/Code Cache/js/0ceb29bde7f2bfee_0 +0 -0
- package/loggedin/Default/Code Cache/js/0e85d564ebd5060d_0 +0 -0
- package/loggedin/Default/Code Cache/js/1052bcc2c0f879d6_0 +0 -0
- package/loggedin/Default/Code Cache/js/10612969ae1e8847_0 +0 -0
- package/loggedin/Default/Code Cache/js/124709d50921985b_0 +0 -0
- package/loggedin/Default/Code Cache/js/13dd261cf717edb4_0 +0 -0
- package/loggedin/Default/Code Cache/js/16a8191ed856f7a1_0 +0 -0
- package/loggedin/Default/Code Cache/js/1720d8e67eec652d_0 +0 -0
- package/loggedin/Default/Code Cache/js/1934102e0cefe95c_0 +0 -0
- package/loggedin/Default/Code Cache/js/1afdfd893122614d_0 +0 -0
- package/loggedin/Default/Code Cache/js/1b3a722f3bf2da74_0 +0 -0
- package/loggedin/Default/Code Cache/js/1c59b339591fd439_0 +0 -0
- package/loggedin/Default/Code Cache/js/1c64f9be9a5b6d57_0 +0 -0
- package/loggedin/Default/Code Cache/js/1d032b1406d120c7_0 +0 -0
- package/loggedin/Default/Code Cache/js/1fb4eff35182c43d_0 +0 -0
- package/loggedin/Default/Code Cache/js/20a5e89b23d5b15c_0 +0 -0
- package/loggedin/Default/Code Cache/js/240f7c23cbd4d115_0 +0 -0
- package/loggedin/Default/Code Cache/js/245e4850cb572838_0 +0 -0
- package/loggedin/Default/Code Cache/js/249f25cbf4fb7501_0 +0 -0
- package/loggedin/Default/Code Cache/js/24b4ae97109789d5_0 +0 -0
- package/loggedin/Default/Code Cache/js/25f846253926b960_0 +0 -0
- package/loggedin/Default/Code Cache/js/26c288ebb2870761_0 +0 -0
- package/loggedin/Default/Code Cache/js/281aa6186c629247_0 +0 -0
- package/loggedin/Default/Code Cache/js/2c0271a321f223d3_0 +0 -0
- package/loggedin/Default/Code Cache/js/2cd6ce521bb432a0_0 +0 -0
- package/loggedin/Default/Code Cache/js/2cecf0d2ca8a630a_0 +0 -0
- package/loggedin/Default/Code Cache/js/2e38b220e395eb3a_0 +0 -0
- package/loggedin/Default/Code Cache/js/3043c149bf73d936_0 +0 -0
- package/loggedin/Default/Code Cache/js/310b61ec7b8d127b_0 +0 -0
- package/loggedin/Default/Code Cache/js/3110d2eb61b58fec_0 +0 -0
- package/loggedin/Default/Code Cache/js/3147a9ed2d61c831_0 +0 -0
- package/loggedin/Default/Code Cache/js/31dc059b11a411fc_0 +0 -0
- package/loggedin/Default/Code Cache/js/331a5c938428f46a_0 +0 -0
- package/loggedin/Default/Code Cache/js/335e69ddec2b9ac6_0 +0 -0
- package/loggedin/Default/Code Cache/js/33d3178af4b6c471_0 +0 -0
- package/loggedin/Default/Code Cache/js/34501a1a4c375242_0 +0 -0
- package/loggedin/Default/Code Cache/js/348b47e22d161e8e_0 +0 -0
- package/loggedin/Default/Code Cache/js/38803fc0f3591ea1_0 +0 -0
- package/loggedin/Default/Code Cache/js/38bdaf8270a2eea9_0 +0 -0
- package/loggedin/Default/Code Cache/js/39a788b26f102870_0 +0 -0
- package/loggedin/Default/Code Cache/js/3bb2eea779d54328_0 +0 -0
- package/loggedin/Default/Code Cache/js/3d5ed2dddcb7fbbf_0 +0 -0
- package/loggedin/Default/Code Cache/js/3d8dd962061fa933_0 +0 -0
- package/loggedin/Default/Code Cache/js/3de77516cf008c10_0 +0 -0
- package/loggedin/Default/Code Cache/js/3e66435b290d190c_0 +0 -0
- package/loggedin/Default/Code Cache/js/3f5de8a53d52d34b_0 +0 -0
- package/loggedin/Default/Code Cache/js/409b6af0466e1d1f_0 +0 -0
- package/loggedin/Default/Code Cache/js/40dffa3a3cc135e8_0 +0 -0
- package/loggedin/Default/Code Cache/js/41f7696a39232dc5_0 +0 -0
- package/loggedin/Default/Code Cache/js/42f46e5991fc0b5c_0 +0 -0
- package/loggedin/Default/Code Cache/js/43064d43ae24385d_0 +0 -0
- package/loggedin/Default/Code Cache/js/430de5821eaebd92_0 +0 -0
- package/loggedin/Default/Code Cache/js/43b9e396b3fd74ec_0 +0 -0
- package/loggedin/Default/Code Cache/js/4426fafe8e53fdd7_0 +0 -0
- package/loggedin/Default/Code Cache/js/446ef81112fa1fe2_0 +0 -0
- package/loggedin/Default/Code Cache/js/44a8e7b527323ae8_0 +0 -0
- package/loggedin/Default/Code Cache/js/45619f073b524faa_0 +0 -0
- package/loggedin/Default/Code Cache/js/4585eaca8c2586f3_0 +0 -0
- package/loggedin/Default/Code Cache/js/45cdf00e1e88fe84_0 +0 -0
- package/loggedin/Default/Code Cache/js/4a12fef1500f7d4e_0 +0 -0
- package/loggedin/Default/Code Cache/js/4aaaa5b02f85b7b5_0 +0 -0
- package/loggedin/Default/Code Cache/js/4ce8010d340012e0_0 +0 -0
- package/loggedin/Default/Code Cache/js/4d19530be8c1d25d_0 +0 -0
- package/loggedin/Default/Code Cache/js/4fa1d510d73c2f11_0 +0 -0
- package/loggedin/Default/Code Cache/js/51083862ec47ec7b_0 +0 -0
- package/loggedin/Default/Code Cache/js/519cc6556e9986a8_0 +0 -0
- package/loggedin/Default/Code Cache/js/52804ae7eecdb355_0 +0 -0
- package/loggedin/Default/Code Cache/js/52b48ab656b3fdfd_0 +0 -0
- package/loggedin/Default/Code Cache/js/539c7f73fd9d867b_0 +0 -0
- package/loggedin/Default/Code Cache/js/54005b571293665d_0 +0 -0
- package/loggedin/Default/Code Cache/js/5402f591fd3fee3b_0 +0 -0
- package/loggedin/Default/Code Cache/js/55b5039bfe0ef979_0 +0 -0
- package/loggedin/Default/Code Cache/js/55e9141a31179b1e_0 +0 -0
- package/loggedin/Default/Code Cache/js/5685ff0930a9e494_0 +0 -0
- package/loggedin/Default/Code Cache/js/577ff7e5fa0a55f0_0 +0 -0
- package/loggedin/Default/Code Cache/js/57863c5d85e71113_0 +0 -0
- package/loggedin/Default/Code Cache/js/57a31d76cc856d8f_0 +0 -0
- package/loggedin/Default/Code Cache/js/594d12bf8db8ed67_0 +0 -0
- package/loggedin/Default/Code Cache/js/5ca5c4562a21d5aa_0 +0 -0
- package/loggedin/Default/Code Cache/js/5d855dd178400c1b_0 +0 -0
- package/loggedin/Default/Code Cache/js/5db2333d10498efa_0 +0 -0
- package/loggedin/Default/Code Cache/js/5dbc47a0e40037a4_0 +0 -0
- package/loggedin/Default/Code Cache/js/6071944c5e8c704f_0 +0 -0
- package/loggedin/Default/Code Cache/js/6167d8ed6ac8aecf_0 +0 -0
- package/loggedin/Default/Code Cache/js/61fd2db9177919a7_0 +0 -0
- package/loggedin/Default/Code Cache/js/6232505f9af746d6_0 +0 -0
- package/loggedin/Default/Code Cache/js/6235a7643cd57ab4_0 +0 -0
- package/loggedin/Default/Code Cache/js/63b5b0065eca8970_0 +0 -0
- package/loggedin/Default/Code Cache/js/648e85602e06e9b1_0 +0 -0
- package/loggedin/Default/Code Cache/js/65577872fb9c4675_0 +0 -0
- package/loggedin/Default/Code Cache/js/6744f008c36a5cf0_0 +0 -0
- package/loggedin/Default/Code Cache/js/67504c107c2824d5_0 +0 -0
- package/loggedin/Default/Code Cache/js/67ae86f99dadf263_0 +0 -0
- package/loggedin/Default/Code Cache/js/67d36ea768dea887_0 +0 -0
- package/loggedin/Default/Code Cache/js/68ef3bd46b509ba8_0 +0 -0
- package/loggedin/Default/Code Cache/js/6a60954ed1ec2838_0 +0 -0
- package/loggedin/Default/Code Cache/js/6a7ce3f7cb73d7b9_0 +0 -0
- package/loggedin/Default/Code Cache/js/6dc30cd96b58b3fd_0 +0 -0
- package/loggedin/Default/Code Cache/js/6debfb1bbf1032d6_0 +0 -0
- package/loggedin/Default/Code Cache/js/6e6f45989aa3d658_0 +0 -0
- package/loggedin/Default/Code Cache/js/72e78b8761a89faf_0 +0 -0
- package/loggedin/Default/Code Cache/js/7375130cb8825fb1_0 +0 -0
- package/loggedin/Default/Code Cache/js/73f8a8cf85c4f983_0 +0 -0
- package/loggedin/Default/Code Cache/js/7428f42e7d87dc5e_0 +0 -0
- package/loggedin/Default/Code Cache/js/7452bfc56fee1509_0 +0 -0
- package/loggedin/Default/Code Cache/js/74e19219410ea20c_0 +0 -0
- package/loggedin/Default/Code Cache/js/764bf1612aee367c_0 +0 -0
- package/loggedin/Default/Code Cache/js/773c34d1760e94b1_0 +0 -0
- package/loggedin/Default/Code Cache/js/7793e1813c9daa45_0 +0 -0
- package/loggedin/Default/Code Cache/js/77fd1b74f81619ee_0 +0 -0
- package/loggedin/Default/Code Cache/js/7bb232657ed1870b_0 +0 -0
- package/loggedin/Default/Code Cache/js/8010b7d244a107a5_0 +0 -0
- package/loggedin/Default/Code Cache/js/81d39bf1d53a4f53_0 +0 -0
- package/loggedin/Default/Code Cache/js/842f43a4eb7bbdeb_0 +0 -0
- package/loggedin/Default/Code Cache/js/886e62dbb85a64b2_0 +0 -0
- package/loggedin/Default/Code Cache/js/8875188e49da0b33_0 +0 -0
- package/loggedin/Default/Code Cache/js/88bb566c7bbece71_0 +0 -0
- package/loggedin/Default/Code Cache/js/88ca67fd7377e5a9_0 +0 -0
- package/loggedin/Default/Code Cache/js/8a428341e1bd0133_0 +0 -0
- package/loggedin/Default/Code Cache/js/8ba1b1ae6d57e06e_0 +0 -0
- package/loggedin/Default/Code Cache/js/8bcf66549424afa7_0 +0 -0
- package/loggedin/Default/Code Cache/js/8bfc5b06bdef85df_0 +0 -0
- package/loggedin/Default/Code Cache/js/8e03731f55ec0425_0 +0 -0
- package/loggedin/Default/Code Cache/js/8e41906d89445a70_0 +0 -0
- package/loggedin/Default/Code Cache/js/90cc8ebf4f3bb535_0 +0 -0
- package/loggedin/Default/Code Cache/js/911abf910d14705e_0 +0 -0
- package/loggedin/Default/Code Cache/js/91240897cf880621_0 +0 -0
- package/loggedin/Default/Code Cache/js/91936bebb0b9d91b_0 +0 -0
- package/loggedin/Default/Code Cache/js/9313580ce576830f_0 +0 -0
- package/loggedin/Default/Code Cache/js/93bbae1084e1aa8e_0 +0 -0
- package/loggedin/Default/Code Cache/js/944b0bcf0e75b5a4_0 +0 -0
- package/loggedin/Default/Code Cache/js/95a34bc196529dfe_0 +0 -0
- package/loggedin/Default/Code Cache/js/960662a17cbf5041_0 +0 -0
- package/loggedin/Default/Code Cache/js/97b36d4dbd2c2464_0 +0 -0
- package/loggedin/Default/Code Cache/js/987ac223fc74144b_0 +0 -0
- package/loggedin/Default/Code Cache/js/9b60821e1c6895cc_0 +0 -0
- package/loggedin/Default/Code Cache/js/9d1d22afd65cfbef_0 +0 -0
- package/loggedin/Default/Code Cache/js/a1f603c48fb228e1_0 +0 -0
- package/loggedin/Default/Code Cache/js/a271122fd3b7aeea_0 +0 -0
- package/loggedin/Default/Code Cache/js/a2f5a9e96492a574_0 +0 -0
- package/loggedin/Default/Code Cache/js/a33a25118e385766_0 +0 -0
- package/loggedin/Default/Code Cache/js/a4957a45688773d6_0 +0 -0
- package/loggedin/Default/Code Cache/js/a4b86d67d1adf390_0 +0 -0
- package/loggedin/Default/Code Cache/js/a5601f394b1c4d1e_0 +0 -0
- package/loggedin/Default/Code Cache/js/a6298c2ee082008f_0 +0 -0
- package/loggedin/Default/Code Cache/js/a69424dc0437ae19_0 +0 -0
- package/loggedin/Default/Code Cache/js/a697a042196f0f78_0 +0 -0
- package/loggedin/Default/Code Cache/js/a6deccf72f200a9c_0 +0 -0
- package/loggedin/Default/Code Cache/js/a781b14472660ebd_0 +0 -0
- package/loggedin/Default/Code Cache/js/a8dcd1762665258f_0 +0 -0
- package/loggedin/Default/Code Cache/js/a9eded8a71f66e8d_0 +0 -0
- package/loggedin/Default/Code Cache/js/aa8cc5b65d61f87c_0 +0 -0
- package/loggedin/Default/Code Cache/js/abf3a0910fc009ef_0 +0 -0
- package/loggedin/Default/Code Cache/js/acdf811c3c15518d_0 +0 -0
- package/loggedin/Default/Code Cache/js/ad9378ad4a2395ec_0 +0 -0
- package/loggedin/Default/Code Cache/js/ae93a6448fc487a5_0 +0 -0
- package/loggedin/Default/Code Cache/js/af2ab6d8cc69d224_0 +0 -0
- package/loggedin/Default/Code Cache/js/b0e6f3590a96dc51_0 +0 -0
- package/loggedin/Default/Code Cache/js/b1aa1350d4481fde_0 +0 -0
- package/loggedin/Default/Code Cache/js/b1dea319b6000491_0 +0 -0
- package/loggedin/Default/Code Cache/js/b9eef565ef6b00e9_0 +0 -0
- package/loggedin/Default/Code Cache/js/bb05c3d4883d43ef_0 +0 -0
- package/loggedin/Default/Code Cache/js/bba5ddcc1118da05_0 +0 -0
- package/loggedin/Default/Code Cache/js/bcbe80e9a695014c_0 +0 -0
- package/loggedin/Default/Code Cache/js/be60bdb4dfaf22e2_0 +0 -0
- package/loggedin/Default/Code Cache/js/be81827df3395598_0 +0 -0
- package/loggedin/Default/Code Cache/js/bf12f231c49b0183_0 +0 -0
- package/loggedin/Default/Code Cache/js/c01411876c5ada52_0 +0 -0
- package/loggedin/Default/Code Cache/js/c170cb0292747b06_0 +0 -0
- package/loggedin/Default/Code Cache/js/c218cb031005ae8b_0 +0 -0
- package/loggedin/Default/Code Cache/js/c546618c466a5586_0 +0 -0
- package/loggedin/Default/Code Cache/js/c894917acaabe613_0 +0 -0
- package/loggedin/Default/Code Cache/js/c8ebe46037aec8b0_0 +0 -0
- package/loggedin/Default/Code Cache/js/ca261546e88116f4_0 +0 -0
- package/loggedin/Default/Code Cache/js/cb8484806a2fa865_0 +0 -0
- package/loggedin/Default/Code Cache/js/cdd23f8ed59bf5fa_0 +0 -0
- package/loggedin/Default/Code Cache/js/cee0ac1ac31fff1a_0 +0 -0
- package/loggedin/Default/Code Cache/js/d403860d5d06b9bb_0 +0 -0
- package/loggedin/Default/Code Cache/js/d40644e7f46754a8_0 +0 -0
- package/loggedin/Default/Code Cache/js/d4deb20d294650d9_0 +0 -0
- package/loggedin/Default/Code Cache/js/d600b9c9974593d0_0 +0 -0
- package/loggedin/Default/Code Cache/js/d60d9943ef76812b_0 +0 -0
- package/loggedin/Default/Code Cache/js/d6c480e823b2ed6a_0 +0 -0
- package/loggedin/Default/Code Cache/js/d6c7801bd3be30df_0 +0 -0
- package/loggedin/Default/Code Cache/js/d77db83135fe9378_0 +0 -0
- package/loggedin/Default/Code Cache/js/d7cc357a7e4e6fd8_0 +0 -0
- package/loggedin/Default/Code Cache/js/da60a09d85c8a39a_0 +0 -0
- package/loggedin/Default/Code Cache/js/db0b06b51758927e_0 +0 -0
- package/loggedin/Default/Code Cache/js/db50b6276845ed92_0 +0 -0
- package/loggedin/Default/Code Cache/js/e074f18caed258f9_0 +0 -0
- package/loggedin/Default/Code Cache/js/e1addd7a425eaf6e_0 +0 -0
- package/loggedin/Default/Code Cache/js/e326c9b6a673b0f9_0 +0 -0
- package/loggedin/Default/Code Cache/js/eba82945560ef5be_0 +0 -0
- package/loggedin/Default/Code Cache/js/ecc0577353daf79c_0 +0 -0
- package/loggedin/Default/Code Cache/js/efa30e832a4bfe40_0 +0 -0
- package/loggedin/Default/Code Cache/js/efe97d2435a94cec_0 +0 -0
- package/loggedin/Default/Code Cache/js/f01a14395db8a5c1_0 +0 -0
- package/loggedin/Default/Code Cache/js/f0e4ccc3186eb77d_0 +0 -0
- package/loggedin/Default/Code Cache/js/f120de6fd50119e2_0 +0 -0
- package/loggedin/Default/Code Cache/js/f25a2f2fb28139b2_0 +0 -0
- package/loggedin/Default/Code Cache/js/f2b3f49d066c15d6_0 +0 -0
- package/loggedin/Default/Code Cache/js/f3376d92bd5101bd_0 +0 -0
- package/loggedin/Default/Code Cache/js/f4ff6859a531317d_0 +0 -0
- package/loggedin/Default/Code Cache/js/f9df73b18b9e5ad3_0 +0 -0
- package/loggedin/Default/Code Cache/js/faa484da1ba8cd74_0 +0 -0
- package/loggedin/Default/Code Cache/js/fd3256827cb8105f_0 +0 -0
- package/loggedin/Default/Code Cache/js/fdef6f8f260905de_0 +0 -0
- package/loggedin/Default/Code Cache/js/ff19af676f8d483b_0 +0 -0
- package/loggedin/Default/Code Cache/js/ffa97664e06252c5_0 +0 -0
- package/loggedin/Default/Code Cache/js/ffafe89b93d8df1e_0 +0 -0
- package/loggedin/Default/Code Cache/js/ffb24406b8f6a79b_0 +0 -0
- package/loggedin/Default/Code Cache/js/index +0 -0
- package/loggedin/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/loggedin/Default/Code Cache/wasm/index +0 -0
- package/loggedin/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/loggedin/Default/Cookies +0 -0
- package/loggedin/Default/Cookies-journal +0 -0
- package/loggedin/Default/DIPS +0 -0
- package/loggedin/Default/DIPS-wal +0 -0
- package/loggedin/Default/DawnGraphiteCache/data_0 +0 -0
- package/loggedin/Default/DawnGraphiteCache/data_1 +0 -0
- package/loggedin/Default/DawnGraphiteCache/data_2 +0 -0
- package/loggedin/Default/DawnGraphiteCache/data_3 +0 -0
- package/loggedin/Default/DawnGraphiteCache/index +0 -0
- package/loggedin/Default/DawnWebGPUCache/data_0 +0 -0
- package/loggedin/Default/DawnWebGPUCache/data_1 +0 -0
- package/loggedin/Default/DawnWebGPUCache/data_2 +0 -0
- package/loggedin/Default/DawnWebGPUCache/data_3 +0 -0
- package/loggedin/Default/DawnWebGPUCache/index +0 -0
- package/loggedin/Default/Extension Rules/CURRENT +1 -0
- package/loggedin/Default/Extension Rules/LOCK +0 -0
- package/loggedin/Default/Extension Rules/LOG +2 -0
- package/loggedin/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/loggedin/Default/Extension Scripts/CURRENT +1 -0
- package/loggedin/Default/Extension Scripts/LOCK +0 -0
- package/loggedin/Default/Extension Scripts/LOG +2 -0
- package/loggedin/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/loggedin/Default/Extension State/CURRENT +1 -0
- package/loggedin/Default/Extension State/LOCK +0 -0
- package/loggedin/Default/Extension State/LOG +3 -0
- package/loggedin/Default/Extension State/LOG.old +2 -0
- package/loggedin/Default/Extension State/MANIFEST-000001 +0 -0
- package/loggedin/Default/Favicons +0 -0
- package/loggedin/Default/Favicons-journal +0 -0
- package/loggedin/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/loggedin/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/loggedin/Default/Feature Engagement Tracker/AvailabilityDB/LOG.old +0 -0
- package/loggedin/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/loggedin/Default/Feature Engagement Tracker/EventDB/LOG +0 -0
- package/loggedin/Default/Feature Engagement Tracker/EventDB/LOG.old +0 -0
- package/loggedin/Default/GCM Store/CURRENT +1 -0
- package/loggedin/Default/GCM Store/LOCK +0 -0
- package/loggedin/Default/GCM Store/LOG +3 -0
- package/loggedin/Default/GCM Store/LOG.old +2 -0
- package/loggedin/Default/GCM Store/MANIFEST-000001 +0 -0
- package/loggedin/Default/GPUCache/data_0 +0 -0
- package/loggedin/Default/GPUCache/data_1 +0 -0
- package/loggedin/Default/GPUCache/data_2 +0 -0
- package/loggedin/Default/GPUCache/data_3 +0 -0
- package/loggedin/Default/GPUCache/index +0 -0
- package/loggedin/Default/History +0 -0
- package/loggedin/Default/History-journal +0 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/000009.ldb +0 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/CURRENT +1 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/LOCK +0 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/LOG +13 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/LOG.old +6 -0
- package/loggedin/Default/IndexedDB/https_docstudio-6bb70.web.app_0.indexeddb.leveldb/MANIFEST-000001 +0 -0
- package/loggedin/Default/LOCK +0 -0
- package/loggedin/Default/LOG +0 -0
- package/loggedin/Default/LOG.old +0 -0
- package/loggedin/Default/Local Storage/leveldb/CURRENT +1 -0
- package/loggedin/Default/Local Storage/leveldb/LOCK +0 -0
- package/loggedin/Default/Local Storage/leveldb/LOG +3 -0
- package/loggedin/Default/Local Storage/leveldb/LOG.old +2 -0
- package/loggedin/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/loggedin/Default/Login Data +0 -0
- package/loggedin/Default/Login Data For Account +0 -0
- package/loggedin/Default/Login Data For Account-journal +0 -0
- package/loggedin/Default/Login Data-journal +0 -0
- package/loggedin/Default/MediaDeviceSalts +0 -0
- package/loggedin/Default/MediaDeviceSalts-journal +0 -0
- package/loggedin/Default/Network Action Predictor +0 -0
- package/loggedin/Default/Network Action Predictor-journal +0 -0
- package/loggedin/Default/Network Persistent State +1 -0
- package/loggedin/Default/PersistentOriginTrials/LOCK +0 -0
- package/loggedin/Default/PersistentOriginTrials/LOG +0 -0
- package/loggedin/Default/PersistentOriginTrials/LOG.old +0 -0
- package/loggedin/Default/Preferences +1 -0
- package/loggedin/Default/PreferredApps +1 -0
- package/loggedin/Default/README +1 -0
- NEL +0 -0
- package/loggedin/Default/Reporting and NEL-journal +0 -0
- package/loggedin/Default/SCT Auditing Pending Reports +1 -0
- package/loggedin/Default/Safe Browsing Cookies +0 -0
- package/loggedin/Default/Safe Browsing Cookies-journal +0 -0
- package/loggedin/Default/Secure Preferences +1 -0
- package/loggedin/Default/Segmentation Platform/SegmentInfoDB/LOCK +0 -0
- package/loggedin/Default/Segmentation Platform/SegmentInfoDB/LOG +0 -0
- package/loggedin/Default/Segmentation Platform/SegmentInfoDB/LOG.old +0 -0
- package/loggedin/Default/Segmentation Platform/SignalDB/LOCK +0 -0
- package/loggedin/Default/Segmentation Platform/SignalDB/LOG +0 -0
- package/loggedin/Default/Segmentation Platform/SignalDB/LOG.old +0 -0
- package/loggedin/Default/Segmentation Platform/SignalStorageConfigDB/LOCK +0 -0
- package/loggedin/Default/Segmentation Platform/SignalStorageConfigDB/LOG +0 -0
- package/loggedin/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old +0 -0
- package/loggedin/Default/ServerCertificate +0 -0
- package/loggedin/Default/ServerCertificate-journal +0 -0
- package/loggedin/Default/Session Storage/CURRENT +1 -0
- package/loggedin/Default/Session Storage/LOCK +0 -0
- package/loggedin/Default/Session Storage/LOG +3 -0
- package/loggedin/Default/Session Storage/LOG.old +2 -0
- package/loggedin/Default/Session Storage/MANIFEST-000001 +0 -0
- package/loggedin/Default/Sessions/Session_13417681599024288 +0 -0
- package/loggedin/Default/Sessions/Session_13417683231893833 +0 -0
- package/loggedin/Default/Sessions/Tabs_13417683232240265 +0 -0
- package/loggedin/Default/Shared Dictionary/cache/index +0 -0
- package/loggedin/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/loggedin/Default/Shared Dictionary/db +0 -0
- package/loggedin/Default/Shared Dictionary/db-journal +0 -0
- package/loggedin/Default/SharedStorage +0 -0
- package/loggedin/Default/SharedStorage-wal +0 -0
- package/loggedin/Default/Shortcuts +0 -0
- package/loggedin/Default/Shortcuts-journal +0 -0
- package/loggedin/Default/Site Characteristics Database/CURRENT +1 -0
- package/loggedin/Default/Site Characteristics Database/LOCK +0 -0
- package/loggedin/Default/Site Characteristics Database/LOG +3 -0
- package/loggedin/Default/Site Characteristics Database/LOG.old +2 -0
- package/loggedin/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/loggedin/Default/Sync Data/LevelDB/CURRENT +1 -0
- package/loggedin/Default/Sync Data/LevelDB/LOCK +0 -0
- package/loggedin/Default/Sync Data/LevelDB/LOG +3 -0
- package/loggedin/Default/Sync Data/LevelDB/LOG.old +2 -0
- package/loggedin/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/loggedin/Default/Top Sites +0 -0
- package/loggedin/Default/Top Sites-journal +0 -0
- package/loggedin/Default/TransportSecurity +1 -0
- package/loggedin/Default/Trust Tokens +0 -0
- package/loggedin/Default/Trust Tokens-journal +0 -0
- package/loggedin/Default/VideoDecodeStats/LOCK +0 -0
- package/loggedin/Default/VideoDecodeStats/LOG +0 -0
- package/loggedin/Default/Web Data +0 -0
- package/loggedin/Default/Web Data-journal +0 -0
- package/loggedin/Default/WebStorage/QuotaManager +0 -0
- package/loggedin/Default/WebStorage/QuotaManager-journal +0 -0
- package/loggedin/Default/chrome_cart_db/LOCK +0 -0
- package/loggedin/Default/chrome_cart_db/LOG +0 -0
- package/loggedin/Default/chrome_cart_db/LOG.old +0 -0
- package/loggedin/Default/commerce_subscription_db/LOCK +0 -0
- package/loggedin/Default/commerce_subscription_db/LOG +0 -0
- package/loggedin/Default/commerce_subscription_db/LOG.old +0 -0
- package/loggedin/Default/discount_infos_db/LOCK +0 -0
- package/loggedin/Default/discount_infos_db/LOG +0 -0
- package/loggedin/Default/discount_infos_db/LOG.old +0 -0
- package/loggedin/Default/discounts_db/LOCK +0 -0
- package/loggedin/Default/discounts_db/LOG +0 -0
- package/loggedin/Default/discounts_db/LOG.old +0 -0
- package/loggedin/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/loggedin/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/loggedin/Default/parcel_tracking_db/LOCK +0 -0
- package/loggedin/Default/parcel_tracking_db/LOG +0 -0
- package/loggedin/Default/parcel_tracking_db/LOG.old +0 -0
- package/loggedin/Default/passkey_enclave_state +1 -0
- package/loggedin/Default/shared_proto_db/CURRENT +1 -0
- package/loggedin/Default/shared_proto_db/LOCK +0 -0
- package/loggedin/Default/shared_proto_db/LOG +3 -0
- package/loggedin/Default/shared_proto_db/LOG.old +2 -0
- package/loggedin/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/loggedin/Default/shared_proto_db/metadata/CURRENT +1 -0
- package/loggedin/Default/shared_proto_db/metadata/LOCK +0 -0
- package/loggedin/Default/shared_proto_db/metadata/LOG +3 -0
- package/loggedin/Default/shared_proto_db/metadata/LOG.old +2 -0
- package/loggedin/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/loggedin/Default/trusted_vault.pb +2 -0
- package/loggedin/Dictionaries/en-US-10-1.bdic +0 -0
- package/loggedin/GrShaderCache/data_0 +0 -0
- package/loggedin/GrShaderCache/data_1 +0 -0
- package/loggedin/GrShaderCache/data_2 +0 -0
- package/loggedin/GrShaderCache/data_3 +0 -0
- package/loggedin/GrShaderCache/index +0 -0
- package/loggedin/GraphiteDawnCache/data_0 +0 -0
- package/loggedin/GraphiteDawnCache/data_1 +0 -0
- package/loggedin/GraphiteDawnCache/data_2 +0 -0
- package/loggedin/GraphiteDawnCache/data_3 +0 -0
- package/loggedin/GraphiteDawnCache/index +0 -0
- package/loggedin/Last Version +1 -0
- package/loggedin/Local State +1 -0
- package/loggedin/ShaderCache/data_0 +0 -0
- package/loggedin/ShaderCache/data_1 +0 -0
- package/loggedin/ShaderCache/data_2 +0 -0
- package/loggedin/ShaderCache/data_3 +0 -0
- package/loggedin/ShaderCache/index +0 -0
- package/loggedin/Variations +1 -0
- package/loggedin/component_crx_cache/metadata.json +1 -0
- package/loggedin/extensions_crx_cache/metadata.json +1 -0
- package/loggedin/first_party_sets.db +0 -0
- package/loggedin/first_party_sets.db-journal +0 -0
- package/loggedin/segmentation_platform/ukm_db +0 -0
- package/loggedin/segmentation_platform/ukm_db-wal +0 -0
- package/package.json +1 -1
- package/server.js +10 -1
- package/static/index.html +13 -6
- package/static/js/client.js +77 -6
- package/static/js/sync-debug.js +148 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# AgentGUI Sync-to-Display Architecture Report
|
|
2
|
+
|
|
3
|
+
## Executive Summary
|
|
4
|
+
|
|
5
|
+
The sync-to-display system handles real-time synchronization of execution state from server to client display. Current implementation has been improved through multiple fixes, particularly for queue display consistency and steering support. This document consolidates the architecture and identifies remaining optimization opportunities.
|
|
6
|
+
|
|
7
|
+
## Architecture Overview
|
|
8
|
+
|
|
9
|
+
### 1. Broadcast System (server.js:4269-4317)
|
|
10
|
+
|
|
11
|
+
**BROADCAST_TYPES** - Global broadcast events sent to ALL connected clients:
|
|
12
|
+
- `message_created`, `conversation_created/updated/deleted`
|
|
13
|
+
- `queue_status`, `queue_updated`
|
|
14
|
+
- `streaming_start`, `streaming_progress`, `streaming_complete`, `streaming_error`
|
|
15
|
+
- `rate_limit_hit`, `rate_limit_clear`
|
|
16
|
+
- Tool-related events (`tool_*`, `tools_*`)
|
|
17
|
+
- Voice/speech events
|
|
18
|
+
- PM2 monitoring events
|
|
19
|
+
|
|
20
|
+
**broadcastSync()** function (line 4288):
|
|
21
|
+
```
|
|
22
|
+
1. Check if event.type is in BROADCAST_TYPES
|
|
23
|
+
2. If broadcast: send to ALL syncClients
|
|
24
|
+
3. If targeted: send to sessionId or conversationId subscribers only
|
|
25
|
+
4. Also dispatch to SSE stream handlers if active
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 2. Client-Side Message Reception (static/js/client.js)
|
|
29
|
+
|
|
30
|
+
**handleWsMessage()** routes events by type:
|
|
31
|
+
```javascript
|
|
32
|
+
case 'message_created': handleMessageCreated(data)
|
|
33
|
+
case 'queue_status': handleQueueStatus(data)
|
|
34
|
+
case 'streaming_start': handleStreamingStart(data)
|
|
35
|
+
case 'streaming_progress': handleStreamingProgress(data)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 3. Display Rendering Layers
|
|
39
|
+
|
|
40
|
+
**Layer 1: Message Rendering** (handleMessageCreated)
|
|
41
|
+
- Checks if message already exists (prevents duplicates)
|
|
42
|
+
- For user messages: finds optimistic message, updates it
|
|
43
|
+
- For assistant messages: skips if streaming (handled by chunks)
|
|
44
|
+
|
|
45
|
+
**Layer 2: Streaming Progress** (handleStreamingProgress)
|
|
46
|
+
- Adds chunks to queue
|
|
47
|
+
- Batches rendering via StreamingRenderer
|
|
48
|
+
- Handles thinking blocks directly
|
|
49
|
+
|
|
50
|
+
**Layer 3: Queue Indicator** (fetchAndRenderQueue)
|
|
51
|
+
- Polls via `q.ls` RPC every interval
|
|
52
|
+
- Displays queued items in yellow control blocks
|
|
53
|
+
- Renders with Edit/Delete/Steer buttons
|
|
54
|
+
|
|
55
|
+
**Layer 4: Conversation State** (handleConversationUpdated)
|
|
56
|
+
- Updates isStreaming flag
|
|
57
|
+
- Refreshes UI based on new state
|
|
58
|
+
|
|
59
|
+
## Recent Fixes & Status
|
|
60
|
+
|
|
61
|
+
### Fixed Issues
|
|
62
|
+
|
|
63
|
+
✅ **Queue Message Duplication** (commit fbfd1ad)
|
|
64
|
+
- Problem: Queued messages appeared as both user prompt + queue item
|
|
65
|
+
- Solution: Skip optimistic message when conversation is streaming
|
|
66
|
+
- Impact: Clean queue display, no duplication
|
|
67
|
+
|
|
68
|
+
✅ **Steering Support** (commit 81d83af)
|
|
69
|
+
- Problem: Steering showed "Process not available" error
|
|
70
|
+
- Solution: Keep stdin open (supportsStdin=true, closeStdin=false)
|
|
71
|
+
- Impact: Users can send follow-up prompts during execution
|
|
72
|
+
|
|
73
|
+
✅ **Chunk Rendering Race** (Session 3a)
|
|
74
|
+
- Problem: Early chunks missed before polling started
|
|
75
|
+
- Solution: Immediate chunk fetch on streaming_start
|
|
76
|
+
- Impact: No missing initial output
|
|
77
|
+
|
|
78
|
+
✅ **Dark Mode Selection** (fsbrowse)
|
|
79
|
+
- Problem: Selection states hard to see in dark mode
|
|
80
|
+
- Solution: Theme-aware colors for hover/focus
|
|
81
|
+
- Impact: Better visual feedback in both themes
|
|
82
|
+
|
|
83
|
+
### Remaining Consistency Issues
|
|
84
|
+
|
|
85
|
+
⚠️ **Queue State Sync Timing**
|
|
86
|
+
- Queue created on server via enqueue()
|
|
87
|
+
- message_created broadcast may arrive before queue is populated
|
|
88
|
+
- Client fetchAndRenderQueue() polls but timing is unpredictable
|
|
89
|
+
- No atomic operation ensuring client sees both message and queue
|
|
90
|
+
|
|
91
|
+
⚠️ **Multiple Sources of Truth**
|
|
92
|
+
- Server: database, active execution map, queue map
|
|
93
|
+
- Client: message list, streaming set, queue indicator
|
|
94
|
+
- Conversation state: isStreaming flag can desync if connection drops
|
|
95
|
+
- No single authoritative state object
|
|
96
|
+
|
|
97
|
+
⚠️ **Optimistic Message Updates**
|
|
98
|
+
- Client creates optimistic "sending" message on submit
|
|
99
|
+
- Server creates actual message and broadcasts
|
|
100
|
+
- handleMessageCreated() finds and updates optimistic message
|
|
101
|
+
- If network is slow, both may briefly exist
|
|
102
|
+
|
|
103
|
+
⚠️ **Queue Execution Transition**
|
|
104
|
+
- Queue items don't explicitly transition to executed
|
|
105
|
+
- Client must poll queue indicator to see it disappear
|
|
106
|
+
- No event indicating "queue item now executing"
|
|
107
|
+
- Confusing UX when queue suddenly empties
|
|
108
|
+
|
|
109
|
+
## Data Flow Examples
|
|
110
|
+
|
|
111
|
+
### Normal Execution (Ctrl+Enter with no active stream)
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
User input: "Write a function"
|
|
115
|
+
↓
|
|
116
|
+
startExecution()
|
|
117
|
+
→ _showOptimisticMessage(pendingId, content) // yellow "sending..." message
|
|
118
|
+
↓
|
|
119
|
+
streamToConversation() → msg.stream RPC
|
|
120
|
+
↓
|
|
121
|
+
Server: msg.stream handler
|
|
122
|
+
→ createMessage(p.id, 'user', prompt)
|
|
123
|
+
→ broadcastSync({ type: 'message_created', ... })
|
|
124
|
+
→ startExecution() -> streaming_start broadcast
|
|
125
|
+
↓
|
|
126
|
+
Client: message_created event
|
|
127
|
+
→ handleMessageCreated()
|
|
128
|
+
→ Finds optimistic message by ID
|
|
129
|
+
→ Updates it (removes "sending" style, adds timestamp)
|
|
130
|
+
↓
|
|
131
|
+
Client: streaming_start event
|
|
132
|
+
→ Disables input, shows "thinking..."
|
|
133
|
+
→ Subscribes to session
|
|
134
|
+
→ Starts chunk polling
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Queue Case (Ctrl+Enter while streaming) - NOW FIXED
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
User input: "Now add subtraction" during execution
|
|
141
|
+
↓
|
|
142
|
+
startExecution()
|
|
143
|
+
→ isStreaming = true
|
|
144
|
+
→ SKIP _showOptimisticMessage ✓ (FIXED)
|
|
145
|
+
↓
|
|
146
|
+
streamToConversation() → msg.stream RPC
|
|
147
|
+
↓
|
|
148
|
+
Server: msg.stream handler
|
|
149
|
+
→ createMessage(p.id, 'user', prompt)
|
|
150
|
+
→ broadcastSync({ type: 'message_created', ... })
|
|
151
|
+
→ activeExecutions.has(p.id) = true
|
|
152
|
+
→ enqueue(p.id, prompt, ...)
|
|
153
|
+
→ broadcastSync({ type: 'queue_status', ... })
|
|
154
|
+
↓
|
|
155
|
+
Client: message_created event
|
|
156
|
+
→ handleMessageCreated()
|
|
157
|
+
→ Message is not in current conversation display
|
|
158
|
+
→ Emit event but don't render
|
|
159
|
+
↓
|
|
160
|
+
Client: queue_status event
|
|
161
|
+
→ handleQueueStatus()
|
|
162
|
+
→ fetchAndRenderQueue()
|
|
163
|
+
→ Displays in yellow queue indicator ✓
|
|
164
|
+
↓
|
|
165
|
+
Result: Message only in queue, no duplication ✓
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Steering (Ctrl+Enter + Steer button during execution)
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
User clicks Steer button on queued message
|
|
172
|
+
↓
|
|
173
|
+
Client: conv.steer RPC with JSON-RPC format
|
|
174
|
+
↓
|
|
175
|
+
Server: conv.steer handler
|
|
176
|
+
→ Finds active process stdin
|
|
177
|
+
→ Writes JSON-RPC prompt request
|
|
178
|
+
→ Removes from queue (optional)
|
|
179
|
+
↓
|
|
180
|
+
Claude Code: Receives JSON-RPC on stdin
|
|
181
|
+
→ Processes prompt immediately
|
|
182
|
+
→ Continues execution with new direction
|
|
183
|
+
↓
|
|
184
|
+
Client: receives streaming_progress chunks
|
|
185
|
+
→ Renders new content below existing output
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Consistency Guarantees
|
|
189
|
+
|
|
190
|
+
### What IS Consistent
|
|
191
|
+
- Messages don't duplicate (handled in handleMessageCreated)
|
|
192
|
+
- Streaming chunks are ordered (via session ID subscription)
|
|
193
|
+
- Queue items maintain order (FIFO in server queue map)
|
|
194
|
+
- Tool installations tracked atomically (per-tool in database)
|
|
195
|
+
|
|
196
|
+
### What IS NOT Guaranteed
|
|
197
|
+
- Client queue display and server queue state may briefly desync
|
|
198
|
+
- If connection drops mid-queue, client state becomes stale
|
|
199
|
+
- No explicit confirmation that user message was queued
|
|
200
|
+
- Queue item execution not signaled with explicit event
|
|
201
|
+
|
|
202
|
+
## Recommendations for Further Improvement
|
|
203
|
+
|
|
204
|
+
### Priority 1: Explicit Queue Lifecycle
|
|
205
|
+
Add dedicated broadcast events:
|
|
206
|
+
```javascript
|
|
207
|
+
'message_queued' // Sent when msg added to queue
|
|
208
|
+
'queue_item_executing' // Sent when queue item becomes active
|
|
209
|
+
'queue_item_completed' // Sent when queue item finished
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Priority 2: Atomic State Snapshots
|
|
213
|
+
Periodically broadcast conversation state:
|
|
214
|
+
```javascript
|
|
215
|
+
{
|
|
216
|
+
type: 'conversation_state',
|
|
217
|
+
conversationId,
|
|
218
|
+
state: {
|
|
219
|
+
isStreaming: boolean,
|
|
220
|
+
messageCount: number,
|
|
221
|
+
queueLength: number,
|
|
222
|
+
lastMessageId: string,
|
|
223
|
+
lastUpdate: timestamp
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Priority 3: Deterministic Client State Machine
|
|
229
|
+
Each conversation has explicit state mode:
|
|
230
|
+
```javascript
|
|
231
|
+
state = {
|
|
232
|
+
mode: 'IDLE' | 'STREAMING' | 'QUEUED',
|
|
233
|
+
messages: [],
|
|
234
|
+
queue: [],
|
|
235
|
+
isTransitioning: boolean // true when queue→execute
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Priority 4: Connection Recovery
|
|
240
|
+
After reconnect, fetch complete conversation state:
|
|
241
|
+
```javascript
|
|
242
|
+
await wsClient.rpc('conv.sync', { id: conversationId })
|
|
243
|
+
// Returns: { messages, queue, isStreaming, chunks }
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Testing Matrix
|
|
247
|
+
|
|
248
|
+
| Scenario | Before Fix | After Fix | Status |
|
|
249
|
+
|----------|-----------|-----------|--------|
|
|
250
|
+
| Ctrl+Enter (not streaming) | ✓ Works | ✓ Works | ✓ OK |
|
|
251
|
+
| Ctrl+Enter (streaming) | ✗ Duplicate | ✓ Single queue item | ✓ FIXED |
|
|
252
|
+
| Queue indicator updates | ⚠️ Polling | ⚠️ Polling | ⚠️ Could improve |
|
|
253
|
+
| Steering works | ✗ "Not available" | ✓ Works | ✓ FIXED |
|
|
254
|
+
| Multiple queued items | ⚠️ Order unclear | ⚠️ Order unclear | ⚠️ OK but could confirm |
|
|
255
|
+
| Page reload with queue | ✗ Queue lost | ✓ Persisted | ✓ OK |
|
|
256
|
+
| Network disconnect | ⚠️ State stale | ⚠️ State stale | ⚠️ Could improve |
|
|
257
|
+
|
|
258
|
+
## Files Modified in Latest Session
|
|
259
|
+
|
|
260
|
+
1. **lib/claude-runner.js** - Steering support
|
|
261
|
+
- Changed `supportsStdin: false` → `true`
|
|
262
|
+
- Changed `closeStdin: true` → `false`
|
|
263
|
+
- Removed positional prompt argument
|
|
264
|
+
|
|
265
|
+
2. **static/js/client.js** - Queue display fix
|
|
266
|
+
- Skip optimistic message when streaming
|
|
267
|
+
- Skip confirm/fail handlers for queued messages
|
|
268
|
+
|
|
269
|
+
3. **static/index.html** - Hamburger animation
|
|
270
|
+
- Added `transition: none` to .sidebar
|
|
271
|
+
|
|
272
|
+
4. **fsbrowse/public/style.css** - Dark mode colors
|
|
273
|
+
- Improved hover states
|
|
274
|
+
- Theme-aware modal focus colors
|
|
275
|
+
|
|
276
|
+
## Conclusion
|
|
277
|
+
|
|
278
|
+
The sync-to-display system is now more consistent with the queue display fix and steering support. The architecture handles the primary use cases well, but could benefit from explicit lifecycle events and atomic state snapshots for guaranteed consistency. The current implementation is pragmatic and performant, trading off some guarantees for simplicity and responsiveness.
|
|
279
|
+
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# AgentGUI Sync-to-Display Architecture Report
|
|
2
|
+
|
|
3
|
+
## Executive Summary
|
|
4
|
+
|
|
5
|
+
The sync-to-display system handles real-time synchronization of execution state from server to client display. Current implementation has been improved through multiple fixes, particularly for queue display consistency and steering support. This document consolidates the architecture and identifies remaining optimization opportunities.
|
|
6
|
+
|
|
7
|
+
## Architecture Overview
|
|
8
|
+
|
|
9
|
+
### 1. Broadcast System (server.js:4269-4317)
|
|
10
|
+
|
|
11
|
+
**BROADCAST_TYPES** - Global broadcast events sent to ALL connected clients:
|
|
12
|
+
- `message_created`, `conversation_created/updated/deleted`
|
|
13
|
+
- `queue_status`, `queue_updated`
|
|
14
|
+
- `streaming_start`, `streaming_progress`, `streaming_complete`, `streaming_error`
|
|
15
|
+
- `rate_limit_hit`, `rate_limit_clear`
|
|
16
|
+
- Tool-related events (`tool_*`, `tools_*`)
|
|
17
|
+
- Voice/speech events
|
|
18
|
+
- PM2 monitoring events
|
|
19
|
+
|
|
20
|
+
**broadcastSync()** function (line 4288):
|
|
21
|
+
```
|
|
22
|
+
1. Check if event.type is in BROADCAST_TYPES
|
|
23
|
+
2. If broadcast: send to ALL syncClients
|
|
24
|
+
3. If targeted: send to sessionId or conversationId subscribers only
|
|
25
|
+
4. Also dispatch to SSE stream handlers if active
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 2. Client-Side Message Reception (static/js/client.js)
|
|
29
|
+
|
|
30
|
+
**handleWsMessage()** routes events by type:
|
|
31
|
+
```javascript
|
|
32
|
+
case 'message_created': handleMessageCreated(data)
|
|
33
|
+
case 'queue_status': handleQueueStatus(data)
|
|
34
|
+
case 'streaming_start': handleStreamingStart(data)
|
|
35
|
+
case 'streaming_progress': handleStreamingProgress(data)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 3. Display Rendering Layers
|
|
39
|
+
|
|
40
|
+
**Layer 1: Message Rendering** (handleMessageCreated)
|
|
41
|
+
- Checks if message already exists (prevents duplicates)
|
|
42
|
+
- For user messages: finds optimistic message, updates it
|
|
43
|
+
- For assistant messages: skips if streaming (handled by chunks)
|
|
44
|
+
|
|
45
|
+
**Layer 2: Streaming Progress** (handleStreamingProgress)
|
|
46
|
+
- Adds chunks to queue
|
|
47
|
+
- Batches rendering via StreamingRenderer
|
|
48
|
+
- Handles thinking blocks directly
|
|
49
|
+
|
|
50
|
+
**Layer 3: Queue Indicator** (fetchAndRenderQueue)
|
|
51
|
+
- Polls via `q.ls` RPC every interval
|
|
52
|
+
- Displays queued items in yellow control blocks
|
|
53
|
+
- Renders with Edit/Delete/Steer buttons
|
|
54
|
+
|
|
55
|
+
**Layer 4: Conversation State** (handleConversationUpdated)
|
|
56
|
+
- Updates isStreaming flag
|
|
57
|
+
- Refreshes UI based on new state
|
|
58
|
+
|
|
59
|
+
## Recent Fixes & Status
|
|
60
|
+
|
|
61
|
+
### Fixed Issues
|
|
62
|
+
|
|
63
|
+
✅ **Queue Message Duplication** (commit fbfd1ad)
|
|
64
|
+
- Problem: Queued messages appeared as both user prompt + queue item
|
|
65
|
+
- Solution: Skip optimistic message when conversation is streaming
|
|
66
|
+
- Impact: Clean queue display, no duplication
|
|
67
|
+
|
|
68
|
+
✅ **Steering Support** (commit 81d83af)
|
|
69
|
+
- Problem: Steering showed "Process not available" error
|
|
70
|
+
- Solution: Keep stdin open (supportsStdin=true, closeStdin=false)
|
|
71
|
+
- Impact: Users can send follow-up prompts during execution
|
|
72
|
+
|
|
73
|
+
✅ **Chunk Rendering Race** (Session 3a)
|
|
74
|
+
- Problem: Early chunks missed before polling started
|
|
75
|
+
- Solution: Immediate chunk fetch on streaming_start
|
|
76
|
+
- Impact: No missing initial output
|
|
77
|
+
|
|
78
|
+
✅ **Dark Mode Selection** (fsbrowse)
|
|
79
|
+
- Problem: Selection states hard to see in dark mode
|
|
80
|
+
- Solution: Theme-aware colors for hover/focus
|
|
81
|
+
- Impact: Better visual feedback in both themes
|
|
82
|
+
|
|
83
|
+
### Remaining Consistency Issues
|
|
84
|
+
|
|
85
|
+
⚠️ **Queue State Sync Timing**
|
|
86
|
+
- Queue created on server via enqueue()
|
|
87
|
+
- message_created broadcast may arrive before queue is populated
|
|
88
|
+
- Client fetchAndRenderQueue() polls but timing is unpredictable
|
|
89
|
+
- No atomic operation ensuring client sees both message and queue
|
|
90
|
+
|
|
91
|
+
⚠️ **Multiple Sources of Truth**
|
|
92
|
+
- Server: database, active execution map, queue map
|
|
93
|
+
- Client: message list, streaming set, queue indicator
|
|
94
|
+
- Conversation state: isStreaming flag can desync if connection drops
|
|
95
|
+
- No single authoritative state object
|
|
96
|
+
|
|
97
|
+
⚠️ **Optimistic Message Updates**
|
|
98
|
+
- Client creates optimistic "sending" message on submit
|
|
99
|
+
- Server creates actual message and broadcasts
|
|
100
|
+
- handleMessageCreated() finds and updates optimistic message
|
|
101
|
+
- If network is slow, both may briefly exist
|
|
102
|
+
|
|
103
|
+
⚠️ **Queue Execution Transition**
|
|
104
|
+
- Queue items don't explicitly transition to executed
|
|
105
|
+
- Client must poll queue indicator to see it disappear
|
|
106
|
+
- No event indicating "queue item now executing"
|
|
107
|
+
- Confusing UX when queue suddenly empties
|
|
108
|
+
|
|
109
|
+
## Data Flow Examples
|
|
110
|
+
|
|
111
|
+
### Normal Execution (Ctrl+Enter with no active stream)
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
User input: "Write a function"
|
|
115
|
+
↓
|
|
116
|
+
startExecution()
|
|
117
|
+
→ _showOptimisticMessage(pendingId, content) // yellow "sending..." message
|
|
118
|
+
↓
|
|
119
|
+
streamToConversation() → msg.stream RPC
|
|
120
|
+
↓
|
|
121
|
+
Server: msg.stream handler
|
|
122
|
+
→ createMessage(p.id, 'user', prompt)
|
|
123
|
+
→ broadcastSync({ type: 'message_created', ... })
|
|
124
|
+
→ startExecution() -> streaming_start broadcast
|
|
125
|
+
↓
|
|
126
|
+
Client: message_created event
|
|
127
|
+
→ handleMessageCreated()
|
|
128
|
+
→ Finds optimistic message by ID
|
|
129
|
+
→ Updates it (removes "sending" style, adds timestamp)
|
|
130
|
+
↓
|
|
131
|
+
Client: streaming_start event
|
|
132
|
+
→ Disables input, shows "thinking..."
|
|
133
|
+
→ Subscribes to session
|
|
134
|
+
→ Starts chunk polling
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Queue Case (Ctrl+Enter while streaming) - NOW FIXED
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
User input: "Now add subtraction" during execution
|
|
141
|
+
↓
|
|
142
|
+
startExecution()
|
|
143
|
+
→ isStreaming = true
|
|
144
|
+
→ SKIP _showOptimisticMessage ✓ (FIXED)
|
|
145
|
+
↓
|
|
146
|
+
streamToConversation() → msg.stream RPC
|
|
147
|
+
↓
|
|
148
|
+
Server: msg.stream handler
|
|
149
|
+
→ createMessage(p.id, 'user', prompt)
|
|
150
|
+
→ broadcastSync({ type: 'message_created', ... })
|
|
151
|
+
→ activeExecutions.has(p.id) = true
|
|
152
|
+
→ enqueue(p.id, prompt, ...)
|
|
153
|
+
→ broadcastSync({ type: 'queue_status', ... })
|
|
154
|
+
↓
|
|
155
|
+
Client: message_created event
|
|
156
|
+
→ handleMessageCreated()
|
|
157
|
+
→ Message is not in current conversation display
|
|
158
|
+
→ Emit event but don't render
|
|
159
|
+
↓
|
|
160
|
+
Client: queue_status event
|
|
161
|
+
→ handleQueueStatus()
|
|
162
|
+
→ fetchAndRenderQueue()
|
|
163
|
+
→ Displays in yellow queue indicator ✓
|
|
164
|
+
↓
|
|
165
|
+
Result: Message only in queue, no duplication ✓
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Steering (Ctrl+Enter + Steer button during execution)
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
User clicks Steer button on queued message
|
|
172
|
+
↓
|
|
173
|
+
Client: conv.steer RPC with JSON-RPC format
|
|
174
|
+
↓
|
|
175
|
+
Server: conv.steer handler
|
|
176
|
+
→ Finds active process stdin
|
|
177
|
+
→ Writes JSON-RPC prompt request
|
|
178
|
+
→ Removes from queue (optional)
|
|
179
|
+
↓
|
|
180
|
+
Claude Code: Receives JSON-RPC on stdin
|
|
181
|
+
→ Processes prompt immediately
|
|
182
|
+
→ Continues execution with new direction
|
|
183
|
+
↓
|
|
184
|
+
Client: receives streaming_progress chunks
|
|
185
|
+
→ Renders new content below existing output
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Consistency Guarantees
|
|
189
|
+
|
|
190
|
+
### What IS Consistent
|
|
191
|
+
- Messages don't duplicate (handled in handleMessageCreated)
|
|
192
|
+
- Streaming chunks are ordered (via session ID subscription)
|
|
193
|
+
- Queue items maintain order (FIFO in server queue map)
|
|
194
|
+
- Tool installations tracked atomically (per-tool in database)
|
|
195
|
+
|
|
196
|
+
### What IS NOT Guaranteed
|
|
197
|
+
- Client queue display and server queue state may briefly desync
|
|
198
|
+
- If connection drops mid-queue, client state becomes stale
|
|
199
|
+
- No explicit confirmation that user message was queued
|
|
200
|
+
- Queue item execution not signaled with explicit event
|
|
201
|
+
|
|
202
|
+
## Recommendations for Further Improvement
|
|
203
|
+
|
|
204
|
+
### Priority 1: Explicit Queue Lifecycle
|
|
205
|
+
Add dedicated broadcast events:
|
|
206
|
+
```javascript
|
|
207
|
+
'message_queued' // Sent when msg added to queue
|
|
208
|
+
'queue_item_executing' // Sent when queue item becomes active
|
|
209
|
+
'queue_item_completed' // Sent when queue item finished
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Priority 2: Atomic State Snapshots
|
|
213
|
+
Periodically broadcast conversation state:
|
|
214
|
+
```javascript
|
|
215
|
+
{
|
|
216
|
+
type: 'conversation_state',
|
|
217
|
+
conversationId,
|
|
218
|
+
state: {
|
|
219
|
+
isStreaming: boolean,
|
|
220
|
+
messageCount: number,
|
|
221
|
+
queueLength: number,
|
|
222
|
+
lastMessageId: string,
|
|
223
|
+
lastUpdate: timestamp
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Priority 3: Deterministic Client State Machine
|
|
229
|
+
Each conversation has explicit state mode:
|
|
230
|
+
```javascript
|
|
231
|
+
state = {
|
|
232
|
+
mode: 'IDLE' | 'STREAMING' | 'QUEUED',
|
|
233
|
+
messages: [],
|
|
234
|
+
queue: [],
|
|
235
|
+
isTransitioning: boolean // true when queue→execute
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Priority 4: Connection Recovery
|
|
240
|
+
After reconnect, fetch complete conversation state:
|
|
241
|
+
```javascript
|
|
242
|
+
await wsClient.rpc('conv.sync', { id: conversationId })
|
|
243
|
+
// Returns: { messages, queue, isStreaming, chunks }
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Testing Matrix
|
|
247
|
+
|
|
248
|
+
| Scenario | Before Fix | After Fix | Status |
|
|
249
|
+
|----------|-----------|-----------|--------|
|
|
250
|
+
| Ctrl+Enter (not streaming) | ✓ Works | ✓ Works | ✓ OK |
|
|
251
|
+
| Ctrl+Enter (streaming) | ✗ Duplicate | ✓ Single queue item | ✓ FIXED |
|
|
252
|
+
| Queue indicator updates | ⚠️ Polling | ⚠️ Polling | ⚠️ Could improve |
|
|
253
|
+
| Steering works | ✗ "Not available" | ✓ Works | ✓ FIXED |
|
|
254
|
+
| Multiple queued items | ⚠️ Order unclear | ⚠️ Order unclear | ⚠️ OK but could confirm |
|
|
255
|
+
| Page reload with queue | ✗ Queue lost | ✓ Persisted | ✓ OK |
|
|
256
|
+
| Network disconnect | ⚠️ State stale | ⚠️ State stale | ⚠️ Could improve |
|
|
257
|
+
|
|
258
|
+
## Files Modified in Latest Session
|
|
259
|
+
|
|
260
|
+
1. **lib/claude-runner.js** - Steering support
|
|
261
|
+
- Changed `supportsStdin: false` → `true`
|
|
262
|
+
- Changed `closeStdin: true` → `false`
|
|
263
|
+
- Removed positional prompt argument
|
|
264
|
+
|
|
265
|
+
2. **static/js/client.js** - Queue display fix
|
|
266
|
+
- Skip optimistic message when streaming
|
|
267
|
+
- Skip confirm/fail handlers for queued messages
|
|
268
|
+
|
|
269
|
+
3. **static/index.html** - Hamburger animation
|
|
270
|
+
- Added `transition: none` to .sidebar
|
|
271
|
+
|
|
272
|
+
4. **fsbrowse/public/style.css** - Dark mode colors
|
|
273
|
+
- Improved hover states
|
|
274
|
+
- Theme-aware modal focus colors
|
|
275
|
+
|
|
276
|
+
## Conclusion
|
|
277
|
+
|
|
278
|
+
The sync-to-display system is now more consistent with the queue display fix and steering support. The architecture handles the primary use cases well, but could benefit from explicit lifecycle events and atomic state snapshots for guaranteed consistency. The current implementation is pragmatic and performant, trading off some guarantees for simplicity and responsiveness.
|
|
279
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
apps: [{
|
|
3
|
+
name: 'agentgui',
|
|
4
|
+
script: 'server.js',
|
|
5
|
+
interpreter: 'node',
|
|
6
|
+
interpreter_args: '--experimental-vm-modules',
|
|
7
|
+
watch: false,
|
|
8
|
+
env: {
|
|
9
|
+
NODE_ENV: 'development',
|
|
10
|
+
PORT: '3000',
|
|
11
|
+
HOT_RELOAD: 'false'
|
|
12
|
+
},
|
|
13
|
+
max_memory_restart: '512M',
|
|
14
|
+
restart_delay: 2000,
|
|
15
|
+
max_restarts: 10,
|
|
16
|
+
exp_backoff_restart_delay: 100,
|
|
17
|
+
error_file: '~/.gmgui/logs/err.log',
|
|
18
|
+
out_file: '~/.gmgui/logs/out.log',
|
|
19
|
+
merge_logs: true,
|
|
20
|
+
time: true
|
|
21
|
+
}]
|
|
22
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compressor: tokenize text fields → msgpackr → optional gzip
|
|
3
|
+
*
|
|
4
|
+
* Transport: event → msgpackr.pack() → gzip if >512B → binary WS frame
|
|
5
|
+
* Storage: text → token array (Uint32) → msgpackr.pack() → BLOB
|
|
6
|
+
*/
|
|
7
|
+
import zlib from 'zlib';
|
|
8
|
+
import { pack, unpack } from 'msgpackr';
|
|
9
|
+
import { encode as encodeTokens, decode as decodeTokens } from 'gpt-tokenizer';
|
|
10
|
+
|
|
11
|
+
// Magic prefix stored at start of compressed BLOBs so we can detect them
|
|
12
|
+
const MAGIC = Buffer.from([0xC0, 0xDE]); // "CODE"
|
|
13
|
+
const GZIP_MAGIC = Buffer.from([0x1f, 0x8b]);
|
|
14
|
+
|
|
15
|
+
// ── Token helpers ─────────────────────────────────────────────────────────────
|
|
16
|
+
|
|
17
|
+
export function tokenize(text) {
|
|
18
|
+
if (typeof text !== 'string' || text.length === 0) return null;
|
|
19
|
+
try {
|
|
20
|
+
return new Uint32Array(encodeTokens(text));
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function detokenize(tokens) {
|
|
27
|
+
try {
|
|
28
|
+
const arr = tokens instanceof Uint32Array ? Array.from(tokens) : tokens;
|
|
29
|
+
return decodeTokens(arr);
|
|
30
|
+
} catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ── Storage compression (text → tokens → msgpack BLOB) ────────────────────────
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Compress a string for database storage.
|
|
39
|
+
* Returns a Buffer starting with MAGIC prefix.
|
|
40
|
+
*/
|
|
41
|
+
export function compressForStorage(text) {
|
|
42
|
+
if (typeof text !== 'string') return null;
|
|
43
|
+
const tokens = tokenize(text);
|
|
44
|
+
if (!tokens) return null;
|
|
45
|
+
const packed = pack({ t: Array.from(tokens) });
|
|
46
|
+
return Buffer.concat([MAGIC, packed]);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Decompress a storage BLOB back to a string.
|
|
51
|
+
* Returns null if not a compressed BLOB (caller should use raw value).
|
|
52
|
+
*/
|
|
53
|
+
export function decompressFromStorage(buf) {
|
|
54
|
+
if (!Buffer.isBuffer(buf) && !(buf instanceof Uint8Array)) return null;
|
|
55
|
+
const b = Buffer.isBuffer(buf) ? buf : Buffer.from(buf);
|
|
56
|
+
if (b.length < MAGIC.length || b[0] !== MAGIC[0] || b[1] !== MAGIC[1]) return null;
|
|
57
|
+
try {
|
|
58
|
+
const { t } = unpack(b.slice(MAGIC.length));
|
|
59
|
+
return detokenize(t);
|
|
60
|
+
} catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ── Transport compression (event → msgpack → gzip → binary frame) ─────────────
|
|
66
|
+
|
|
67
|
+
const GZ_THRESHOLD = 512; // bytes — compress if msgpack payload exceeds this
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Pack one event (or array of events) into a binary buffer for WebSocket transport.
|
|
71
|
+
* Format: [ 0x01 ] + gzip(msgpack(data)) when compressed
|
|
72
|
+
* [ 0x00 ] + msgpack(data) when not compressed
|
|
73
|
+
*/
|
|
74
|
+
export function packForTransport(data) {
|
|
75
|
+
const packed = pack(data);
|
|
76
|
+
if (packed.length > GZ_THRESHOLD) {
|
|
77
|
+
try {
|
|
78
|
+
const compressed = zlib.gzipSync(packed, { level: 6 });
|
|
79
|
+
if (compressed.length < packed.length * 0.9) {
|
|
80
|
+
const out = Buffer.allocUnsafe(1 + compressed.length);
|
|
81
|
+
out[0] = 0x01; // flag: gzipped
|
|
82
|
+
compressed.copy(out, 1);
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
} catch (_) {}
|
|
86
|
+
}
|
|
87
|
+
const out = Buffer.allocUnsafe(1 + packed.length);
|
|
88
|
+
out[0] = 0x00; // flag: plain msgpack
|
|
89
|
+
packed.copy(out, 1);
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Unpack a binary buffer received from WebSocket transport.
|
|
95
|
+
*/
|
|
96
|
+
export function unpackFromTransport(buf) {
|
|
97
|
+
const b = Buffer.isBuffer(buf) ? buf : Buffer.from(buf);
|
|
98
|
+
if (b.length < 2) return null;
|
|
99
|
+
const flag = b[0];
|
|
100
|
+
const payload = b.slice(1);
|
|
101
|
+
if (flag === 0x01) {
|
|
102
|
+
return unpack(zlib.gunzipSync(payload));
|
|
103
|
+
}
|
|
104
|
+
return unpack(payload);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ── Tokenize specific fields in an event object (for storage) ─────────────────
|
|
108
|
+
|
|
109
|
+
const TEXT_FIELDS = ['content', 'text', 'data', 'output', 'input', 'message', 'prompt', 'response'];
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Walk an event object and compress any large text fields in-place for storage.
|
|
113
|
+
* Returns the (possibly mutated) object — safe to pass to JSON.stringify or pack().
|
|
114
|
+
*/
|
|
115
|
+
export function compressEventFields(obj) {
|
|
116
|
+
if (!obj || typeof obj !== 'object') return obj;
|
|
117
|
+
for (const key of TEXT_FIELDS) {
|
|
118
|
+
const val = obj[key];
|
|
119
|
+
if (typeof val === 'string' && val.length > 64) {
|
|
120
|
+
const buf = compressForStorage(val);
|
|
121
|
+
if (buf) obj[key] = buf;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return obj;
|
|
125
|
+
}
|