@ibgib/core-gib 0.1.9 → 0.1.11
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/dist/agent-helpers.d.mts +36 -0
- package/dist/agent-helpers.d.mts.map +1 -0
- package/dist/agent-helpers.mjs +133 -0
- package/dist/agent-helpers.mjs.map +1 -0
- package/dist/keystone/keystone-config-builder.respec.mjs +4 -4
- package/dist/keystone/keystone-config-builder.respec.mjs.map +1 -1
- package/dist/keystone/keystone-service-v1.respec.mjs +65 -62
- package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
- package/dist/sync/sync-constants.d.mts +17 -0
- package/dist/sync/sync-constants.d.mts.map +1 -0
- package/dist/sync/sync-constants.mjs +16 -0
- package/dist/sync/sync-constants.mjs.map +1 -0
- package/dist/sync/sync-helpers.d.mts +15 -0
- package/dist/sync/sync-helpers.d.mts.map +1 -0
- package/dist/sync/sync-helpers.mjs +46 -0
- package/dist/sync/sync-helpers.mjs.map +1 -0
- package/dist/sync/sync-innerspace.respec.d.mts +8 -0
- package/dist/sync/sync-innerspace.respec.d.mts.map +1 -0
- package/dist/sync/sync-innerspace.respec.mjs +120 -0
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -0
- package/dist/sync/sync-local-spaces.respec.d.mts +2 -0
- package/dist/sync/sync-local-spaces.respec.d.mts.map +1 -0
- package/dist/sync/sync-local-spaces.respec.mjs +159 -0
- package/dist/sync/sync-local-spaces.respec.mjs.map +1 -0
- package/dist/sync/sync-saga-coordinator.d.mts +118 -0
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -0
- package/dist/sync/sync-saga-coordinator.mjs +399 -0
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -0
- package/dist/sync/sync-saga-coordinator.respec.d.mts +2 -0
- package/dist/sync/sync-saga-coordinator.respec.d.mts.map +1 -0
- package/dist/sync/sync-saga-coordinator.respec.mjs +40 -0
- package/dist/sync/sync-saga-coordinator.respec.mjs.map +1 -0
- package/dist/sync/sync-types.d.mts +103 -0
- package/dist/sync/sync-types.d.mts.map +1 -0
- package/dist/sync/sync-types.mjs +2 -0
- package/dist/sync/sync-types.mjs.map +1 -0
- package/dist/test/mock-space.d.mts +39 -0
- package/dist/test/mock-space.d.mts.map +1 -0
- package/dist/test/mock-space.mjs +79 -0
- package/dist/test/mock-space.mjs.map +1 -0
- package/dist/timeline/timeline-api.respec.d.mts +7 -0
- package/dist/timeline/timeline-api.respec.d.mts.map +1 -0
- package/dist/timeline/timeline-api.respec.mjs +183 -0
- package/dist/timeline/timeline-api.respec.mjs.map +1 -0
- package/dist/witness/space/inner-space/inner-space-v1.respec.mjs +163 -201
- package/dist/witness/space/inner-space/inner-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/metaspace/metaspace-base.d.mts.map +1 -1
- package/dist/witness/space/metaspace/metaspace-base.mjs +33 -5
- package/dist/witness/space/metaspace/metaspace-base.mjs.map +1 -1
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.d.mts.map +1 -1
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mjs +3 -2
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mjs.map +1 -1
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.d.mts +7 -0
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.d.mts.map +1 -0
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mjs +67 -0
- package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mjs.map +1 -0
- package/dist/witness/space/space-helper.d.mts.map +1 -1
- package/dist/witness/space/space-helper.mjs +43 -4
- package/dist/witness/space/space-helper.mjs.map +1 -1
- package/dist/witness/space/space-helper.respec.d.mts +2 -0
- package/dist/witness/space/space-helper.respec.d.mts.map +1 -0
- package/dist/witness/space/space-helper.respec.mjs +30 -0
- package/dist/witness/space/space-helper.respec.mjs.map +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/017DF612D9A86192706EE567B059C489EC8DA0B2B558166EFE61F75D8BF1ECEE/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/0EF68E1CA839A24CAEDB224A8AF92F258BD1F364A97E708705150595B3F67985/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/12EF728E4F98DDB89990D4CDAF3AC852729E804CE37E2041AF18CBA239328085/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/152DD42FA80FA6ABD0B4DAAAE9CE1AFCF94E649B210A08955DB8B86E09AF08BE/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/16A46B37492E2688088C69F237E5CDC4F4E8C1015CF8E66D044DC2FE115F6211/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/1F7942767491C1D740FFC87E046C2470697FE8D154806B51876C53E607B7F007/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/35754C7AD2967D57C34396084F1214343C48F9C1AAF1C11CDFB57B5CB95536F5/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/38CFD2C2DFD185FC1E5BEE8C55C8A4FFBD83B03F533B4F92537000C505939E39/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/43635745EEAE9EBD3426CC4AD88D2362DE15B2F8E4D1C694B3AE8687E8C6489D/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/5C4BCD98E1B3494CCFAC355D2C61025DCD43A1D3041E637ABDA83F0E1E7FA0BE/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/5FC1BCCA0F1EB6E656233401E330A7928BF58C09EF6B6B56EC69FCFAC0B3A47A/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/60B8ED34520992236C9E1859FAE4BA9DF206CC6BD75DA574E815EAF7B577C1BD/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/68B53978461355B04CA96CEE33E448CBC39CDEFEA8E907879C1D2E6A542672C4/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/6B62E238B88A3B5050DFF02AB91402C6702A822389315B4150308B774F5A0D01/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/6F7EC702F1109A564CFE009F634B27E5F82D6A309CF51B11F49846ABEEAD04B1/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/7AE69551608DB82E23DBA98CA7D059DF3F5C9E37174E581F7C154935F4362AA7/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/8C851E9DD394053BB50716EA6CDD07A48FA76AF5BB55513F898A18B2A4C64D1F/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/984DAD369079FEF2F83082F1CD944A432690F1CB0A5ECA9F009D50B385C4061A/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/C466B016831B11EEEC611208EDB50FD7BACD7E37D0037C0D1D78BD5B3D892794/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/C5D0AA2C7A2C01C52EFDF70242AA6CAAE06BCA80301A425D4E508E9ACD33DF44/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/CDDFD5D61010F7B15CFD78C49865C0134E8E037779DD80C6B4DED7DEB0D4CBB7/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/DDFAB26C3991470523BD7543D946A24A9CFEC9D5BEC197B7BD963E1507057A93/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/E174442450BBA2A570B0166CDF04844C3A5D1F7199DC59E0FA49F1BBACA47F5F/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/E6CE9621CF266A675DB7E3EBABD5D636E46E8006F116A0F7F0769B87DDDBFBB0/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 -1 1766860935000^7978FD0F9DD4EB6208A2D2113011F95E5C7EE80072BA3B7E4AC737CC771D621B.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 0 1766860935000^013C09075DF303BB5822FEEFE57F26B9F0DEE6DD382B116816FCDC2B7CAF0696.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 1 1766860935000^4EEBAD21A82BAC51A7B952DA32DACB37A653695D5D512A348CF15DB9B7DED5AC.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 10 1766860938000^84544F34B1297ED8F5FD4B437FCD4F1044FD0D40A0B270F8C7E79D89AA058DD6.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 11 1766860938000^023B07336455CD39B03DC52AF523DA19B588FD32ED7A4BB5BBE9ABE59ED75195.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 12 1766860939000^49685AA6F0064868886EBA984B072F6C63F92FC3315C29DDDF750D5B56E87D6B.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 13 1766860939000^A2475B1C99AC9F8B9A4D8B2BD8CB39A76FAA2E13AB2F7CEADA4AB02B42FF8BE4.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 14 1766860939000^2D0C93D837FFF096346E10F276BD1F08ECE4A2EC94BE9BC58759EBABAB1F2E42.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 15 1766860939000^4FA9AFA0EA50B833B342716C7745B9A39A7C0F9A09B4666CA67080A49EAB611B.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 16 1766860939000^A65760BEED125117DE7DF2F481A0F7CD250FFB579138ECC1A19C8401DAFCEB51.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 17 1766860940000^226FA64E1B4591C150F595D8408530502417C7FFEE3915589382F9C3B585053C.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 18 1766860940000^1ABF20687FB34275E0EE737538E7E5D4F15CDCB128C4F332043CB76AC78B0F05.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 19 1766860940000^89A44A1912B20AE873402C287CE09C4D41073F0A5B703CB22FD5272BB907FC19.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 2 1766860936000^A8D1C5244B85155B130EFCA9CF25185A9B7060F549603B993F2CA98FB269B178.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 20 1766860940000^72905A7F6A0A859003049827534B579BE090F0B6A221D14584745DAE6A999943.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 21 1766860948000^71168CE7419FFDB6E945655E1B3597A726111666C305EDA9A76D97FD7215E929.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 22 1766860967000^A5E8805E1AC44CF2A07606613DE14704BC1943268EFF48BF181E7216D8F07AA3.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 3 1766860936000^66806071E91EAC9E8F90A81700DD37FB56B7DFDE7B32FE47E142BAC58907173C.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 4 1766860937000^1A097ACE63079C7D91AC964F783834D172C41CD3FAD0D27A5B95DC6E1E5B7D6A.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 5 1766860937000^746153300B51309B664E4035E092CAE07F487A2B44D5DB79B770C7D9968D45CA.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 6 1766860937000^3F1EFF11C729D6175922400928667D3391E3D7B4B29CECD67987F3259A5003C5.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 7 1766860938000^D2867FC7F2A08C6678BAA320EE449F89E56D81EDC3BFFA79F9DA64BF98701014.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 8 1766860938000^AA9E5246E533F704E42BED13B878B830B91143AE71C8603FFCF187CF39904915.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 9 1766860938000^E4B12653516EB8690ED18ECFF3EA7AB5EA3FF70881D730F5859F193F5872DF15.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/test ib.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/04E79CE54F49DCEA75652ADF674DC9B21BA641944AD97ED7ED1369CF3A880E8D/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/0647EB78DB2C48AF3AE9D3EF7989A3DDA1A797D04BE18DB1210B3504BC39BA4E/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/08B4A7A62BC7DE27C180A3F70FA7C6C8F9728A98E79B200D9B2EE2D11E62CD97/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/0B2FEF92D3630CDFDD14C453DDDA288478022CEB778E0BB4ACC9C9511C770A39/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3757E01592FABCA5D139026F156318A7F86AC097CC10ABA243D4E665EB3550C5/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3A66623B180568E2AE3E95BD6C48684E765B6B8C2147A4DD13426B6808AC2567/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3EADB84024E06764489225E537F285BF7F7F85C3ACC013F0FCB28B79E227DE2D/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/471A5F0BA13425E3412A376452549E5158CD5516C4E005872A50A10D7390CF12/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/6E6EA2A701C3AC1B5BCD766F39C59BA7BC5139AAF0EB5E9DE8814F77C4A192A7/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/7EF033B1C3C39C05359C89C301DEE7365F6F7A816776F6A0E540CE1A212CD612/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/834AECEDC108F37DADA5BD3583FA9C1E612AFA3FFFB1153CA0CD2F51239AD93F/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/8CA9BDE2ED96C7C8039D5AF78AEF620A985E32352238DEACACC7E2329006B9B9/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/90C61CC1159B21E9FE686C06D5C76FF6F5236F8C7D39CC183B8C81CE36471D9C/fork.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/A89842F2240358AEC12AE59014A14875AB6FC5C8EF2A5C50D8BD92EB5F54F4B6/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/B10FBD60588500D94D6CDA19E5E24DF7F4C3EDF66368E5875F13C4BFF9A8FD03/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/B5A0CAF33ACC64A57647ADD18B4F0CAD820F427819BB4615567131994D0399AB/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/C0223AA1B3B147E3AFC4233C60025BE4C975652EBF77C24D8B8FABC413594137/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/D07097470D6970574C539E1E16AEFCE0A3A67987C7554C9EEFA7204D6D1D81D4/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/D92466D1FCE56DB0828A2509590DDA0040FF250FD4FCE7F3E45B5D84887C83F0/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/E035FDD6BDD26B164AF5AD675D0567BC0FFB6E10E14BAFA6617EDB536EE162B9/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/E8B2955902784AFC4B4A251C771EC770D94234440C8B02C63B12628C29447069/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/EF9D3619C817B27EC4402BC215D08CC95A83E5042F4FC35AE2E737AC33B05629/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F0D5006EF21791D68460DB0111983602EC450BBFFB3E47134D357A1BCD9FBD15/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F15D698186AADD2BA9F3028F4F84630505D06220AB6482381FB35755AFC77E5F/mut8.json +1 -0
- package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F1913D9CF3C4F2CDE56C39EA86F8EB9A65D8FA22750DACD2B496EF27D88DE260/mut8.json +1 -0
- package/package.json +2 -2
- package/src/agent-helpers.mts +159 -0
- package/src/keystone/keystone-config-builder.respec.mts +3 -3
- package/src/keystone/keystone-service-v1.respec.mts +66 -60
- package/src/sync/sync-constants.mts +24 -0
- package/src/sync/sync-helpers.mts +59 -0
- package/src/sync/sync-innerspace.respec.mts +144 -0
- package/src/sync/sync-local-spaces.respec.mts +200 -0
- package/src/sync/sync-saga-coordinator.mts +477 -0
- package/src/sync/sync-saga-coordinator.respec.mts +52 -0
- package/src/sync/sync-types.mts +120 -0
- package/src/test/mock-space.mts +85 -0
- package/src/timeline/timeline-api.respec.mts +237 -0
- package/src/witness/space/inner-space/inner-space-v1.respec.mts +181 -228
- package/src/witness/space/metaspace/metaspace-base.mts +31 -5
- package/src/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mts +4 -2
- package/src/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mts +90 -0
- package/src/witness/space/space-helper.mts +42 -4
- package/src/witness/space/space-helper.respec.mts +42 -0
- package/tmp.md +11 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { IbGib_V1, IbGibData_V1, IbGibRel8ns_V1 } from "@ibgib/ts-gib/dist/V1/types.mjs";
|
|
2
|
+
import { KeystoneIbGib_V1 } from "../keystone/keystone-types.mjs";
|
|
3
|
+
import { SYNC_ATOM, SyncStage } from "./sync-constants.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* The "Hello" of the sync protocol.
|
|
6
|
+
* Exchanges knowledge vectors (what I have) and identity (who I am).
|
|
7
|
+
*/
|
|
8
|
+
export interface SyncInitData {
|
|
9
|
+
/**
|
|
10
|
+
* Map of TJP (Traffic Joint Point) to latest known Gib/Hash.
|
|
11
|
+
* Use this to calculate what is missing (Delta).
|
|
12
|
+
*/
|
|
13
|
+
knowledgeVector: {
|
|
14
|
+
[tjp: string]: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The Keystone Identity of the sender.
|
|
18
|
+
* Required for the first handshake or if the receiver doesn't know the sender.
|
|
19
|
+
*/
|
|
20
|
+
identity?: KeystoneIbGib_V1;
|
|
21
|
+
/**
|
|
22
|
+
* What the sender wants to do.
|
|
23
|
+
* e.g. "push" (I have data for you) or "pull" (Give me data).
|
|
24
|
+
* @default 'push'
|
|
25
|
+
*/
|
|
26
|
+
mode?: 'push' | 'pull';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A specific request for data.
|
|
30
|
+
* Used for "pull" based deltas or fixing gaps (packet loss).
|
|
31
|
+
*/
|
|
32
|
+
export interface SyncRequestData {
|
|
33
|
+
/**
|
|
34
|
+
* The ibGib addresses requested.
|
|
35
|
+
*/
|
|
36
|
+
addrs: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The "Body" of the sync protocol.
|
|
40
|
+
* Carries the manifests of data to be transferred.
|
|
41
|
+
*/
|
|
42
|
+
export interface SyncDeltaData {
|
|
43
|
+
/**
|
|
44
|
+
* The list of ibGib addresses being transferred.
|
|
45
|
+
* The actual data is streamed/batched separately.
|
|
46
|
+
*/
|
|
47
|
+
payloadAddrs: string[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The "Seal" of the sync protocol.
|
|
51
|
+
* The authority is derived from the `identity` relation on the Keystone Frame.
|
|
52
|
+
*/
|
|
53
|
+
export interface SyncCommitData {
|
|
54
|
+
/**
|
|
55
|
+
* True if the session completed successfully from the sender's perspective.
|
|
56
|
+
*/
|
|
57
|
+
success: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Optional verification metadata (e.g. success count).
|
|
60
|
+
*/
|
|
61
|
+
successCount?: number;
|
|
62
|
+
/**
|
|
63
|
+
* If failed, the reasons why.
|
|
64
|
+
*/
|
|
65
|
+
errors?: string[];
|
|
66
|
+
}
|
|
67
|
+
export interface SyncIbInfo_V1 {
|
|
68
|
+
atom: typeof SYNC_ATOM;
|
|
69
|
+
uuid: string;
|
|
70
|
+
stage: SyncStage;
|
|
71
|
+
}
|
|
72
|
+
export interface SyncData_V1 extends IbGibData_V1 {
|
|
73
|
+
/**
|
|
74
|
+
* Unique ID for this synchronization session.
|
|
75
|
+
* Corresponds to `uuid` in standard IbGibData.
|
|
76
|
+
*/
|
|
77
|
+
uuid: string;
|
|
78
|
+
/**
|
|
79
|
+
* Current stage of the protocol.
|
|
80
|
+
*/
|
|
81
|
+
stage: SyncStage;
|
|
82
|
+
/**
|
|
83
|
+
* Optional absolute timestamp (Unix ms) after which this frame should be considered void.
|
|
84
|
+
* Useful for:
|
|
85
|
+
* 1. Auth Challenges (Login offers expiring).
|
|
86
|
+
* 2. Rate limiting / Backpressure (Don't process this old request).
|
|
87
|
+
*/
|
|
88
|
+
expirationTimestamp?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Polymorphic payload based on stage.
|
|
91
|
+
*/
|
|
92
|
+
payload: SyncInitData | SyncRequestData | SyncDeltaData | SyncCommitData;
|
|
93
|
+
}
|
|
94
|
+
export interface SyncRel8ns_V1 extends IbGibRel8ns_V1 {
|
|
95
|
+
/**
|
|
96
|
+
* Link to the Keystone Identity performing this step.
|
|
97
|
+
* This MUST point to the specific Keystone Frame that authorizes this sync frame.
|
|
98
|
+
*/
|
|
99
|
+
identity?: string[];
|
|
100
|
+
}
|
|
101
|
+
export interface SyncIbGib_V1 extends IbGib_V1<SyncData_V1, SyncRel8ns_V1> {
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=sync-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-types.d.mts","sourceRoot":"","sources":["../../src/sync/sync-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAiB,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE3C;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,SAAS,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC7C;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,OAAO,EAAE,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;CAC5E;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;CAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-types.mjs","sourceRoot":"","sources":["../../src/sync/sync-types.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* A simple in-memory map acting as a Space.
|
|
4
|
+
* Pure Storage. No Indexing logic.
|
|
5
|
+
*
|
|
6
|
+
* Copied/Adapted from Keystone Respecs.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MockIbGibSpace {
|
|
9
|
+
name: string;
|
|
10
|
+
store: Map<string, IbGib_V1<import("@ibgib/ts-gib/dist/V1/types.mjs").IbGibData_V1, import("@ibgib/ts-gib/dist/V1/types.mjs").IbGibRel8ns_V1>>;
|
|
11
|
+
constructor(name?: string);
|
|
12
|
+
put({ ibGib }: {
|
|
13
|
+
ibGib: IbGib_V1;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
get({ addr }: {
|
|
16
|
+
addr: string;
|
|
17
|
+
}): Promise<IbGib_V1 | null>;
|
|
18
|
+
witness(arg: any): Promise<any>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A partial mock of Metaspace.
|
|
22
|
+
*/
|
|
23
|
+
export declare class MockMetaspaceService {
|
|
24
|
+
space: MockIbGibSpace;
|
|
25
|
+
/**
|
|
26
|
+
* Map of TJP Gib (Timeline ID) -> Latest IbGib Addr (Head)
|
|
27
|
+
*/
|
|
28
|
+
timelineHeads: Map<string, string>;
|
|
29
|
+
constructor(space: MockIbGibSpace);
|
|
30
|
+
getLocalUserSpace({ lock }: {
|
|
31
|
+
lock: boolean;
|
|
32
|
+
}): Promise<MockIbGibSpace>;
|
|
33
|
+
put(args: any): Promise<void>;
|
|
34
|
+
registerNewIbGib(args: {
|
|
35
|
+
ibGib: IbGib_V1;
|
|
36
|
+
space?: any;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=mock-space.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-space.d.mts","sourceRoot":"","sources":["../../src/test/mock-space.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D;;;;;GAKG;AACH,qBAAa,cAAc;IAGJ,IAAI,EAAE,MAAM;IAF/B,KAAK,0IAA+B;gBAEjB,IAAI,GAAE,MAAqB;IAExC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKzD,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAoBxC;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAOV,KAAK,EAAE,cAAc;IALxC;;OAEG;IACH,aAAa,sBAA6B;gBAEvB,KAAK,EAAE,cAAc;IAElC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,gBAAgB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBhF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* A simple in-memory map acting as a Space.
|
|
4
|
+
* Pure Storage. No Indexing logic.
|
|
5
|
+
*
|
|
6
|
+
* Copied/Adapted from Keystone Respecs.
|
|
7
|
+
*/
|
|
8
|
+
export class MockIbGibSpace {
|
|
9
|
+
name;
|
|
10
|
+
store = new Map();
|
|
11
|
+
constructor(name = "mock_space") {
|
|
12
|
+
this.name = name;
|
|
13
|
+
}
|
|
14
|
+
async put({ ibGib }) {
|
|
15
|
+
const addr = getIbGibAddr({ ibGib });
|
|
16
|
+
this.store.set(addr, JSON.parse(JSON.stringify(ibGib))); // Deep copy
|
|
17
|
+
}
|
|
18
|
+
async get({ addr }) {
|
|
19
|
+
const data = this.store.get(addr);
|
|
20
|
+
return data ? JSON.parse(JSON.stringify(data)) : null;
|
|
21
|
+
}
|
|
22
|
+
async witness(arg) {
|
|
23
|
+
const cmd = arg.data?.cmd;
|
|
24
|
+
if (cmd === 'get') {
|
|
25
|
+
const addrs = arg.data.ibGibAddrs || [];
|
|
26
|
+
const ibGibs = [];
|
|
27
|
+
for (const addr of addrs) {
|
|
28
|
+
const ig = await this.get({ addr });
|
|
29
|
+
if (ig)
|
|
30
|
+
ibGibs.push(ig);
|
|
31
|
+
}
|
|
32
|
+
return { ibGibs };
|
|
33
|
+
}
|
|
34
|
+
if (cmd === 'put') {
|
|
35
|
+
const ibGibs = arg.ibGibs || [];
|
|
36
|
+
for (const ibGib of ibGibs) {
|
|
37
|
+
await this.put({ ibGib });
|
|
38
|
+
}
|
|
39
|
+
return { ibGibs: [] }; // Return empty result or whatever witness expects
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A partial mock of Metaspace.
|
|
46
|
+
*/
|
|
47
|
+
export class MockMetaspaceService {
|
|
48
|
+
space;
|
|
49
|
+
/**
|
|
50
|
+
* Map of TJP Gib (Timeline ID) -> Latest IbGib Addr (Head)
|
|
51
|
+
*/
|
|
52
|
+
timelineHeads = new Map();
|
|
53
|
+
constructor(space) {
|
|
54
|
+
this.space = space;
|
|
55
|
+
}
|
|
56
|
+
async getLocalUserSpace({ lock }) {
|
|
57
|
+
return this.space;
|
|
58
|
+
}
|
|
59
|
+
async put(args) {
|
|
60
|
+
const target = args.space || this.space;
|
|
61
|
+
return target.put(args);
|
|
62
|
+
}
|
|
63
|
+
async registerNewIbGib(args) {
|
|
64
|
+
const { ibGib } = args;
|
|
65
|
+
const targetSpace = args.space || this.space;
|
|
66
|
+
// 1. Ensure it is stored
|
|
67
|
+
await targetSpace.put({ ibGib });
|
|
68
|
+
// 2. Extract TJP
|
|
69
|
+
const gib = ibGib.gib || '';
|
|
70
|
+
let tjpGib = gib;
|
|
71
|
+
if (gib.includes('.')) {
|
|
72
|
+
const parts = gib.split('.');
|
|
73
|
+
tjpGib = parts.slice(1).join('.');
|
|
74
|
+
}
|
|
75
|
+
const addr = getIbGibAddr({ ibGib });
|
|
76
|
+
this.timelineHeads.set(tjpGib, addr);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=mock-space.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-space.mjs","sourceRoot":"","sources":["../../src/test/mock-space.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline-api.respec.d.mts","sourceRoot":"","sources":["../../src/timeline/timeline-api.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module timeline-api.respec
|
|
3
|
+
*
|
|
4
|
+
* specs for the high-level timeline api.
|
|
5
|
+
*/
|
|
6
|
+
import { firstOfEach, ifWe, iReckon, respecfully } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
7
|
+
import { getLatestAddrs, getFromSpace } from '../witness/space/space-helper.mjs';
|
|
8
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
9
|
+
import { createTimeline, mut8Timeline, appendToTimeline, getHistory } from './timeline-api.mjs';
|
|
10
|
+
import { Metaspace_Innerspace } from '../witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
|
|
11
|
+
const maam = `[${import.meta.url}]`, sir = maam;
|
|
12
|
+
respecfully(sir, `[timeline-api]`, async () => {
|
|
13
|
+
let space;
|
|
14
|
+
let metaspace;
|
|
15
|
+
firstOfEach(sir, async () => {
|
|
16
|
+
metaspace = new Metaspace_Innerspace(undefined);
|
|
17
|
+
await metaspace.initialize({
|
|
18
|
+
getFnAlert: () => async ({ title, msg }) => { console.log(`[Alert] ${title}: ${msg}`); },
|
|
19
|
+
getFnPrompt: () => async ({ title, msg }) => { console.log(`[Prompt] ${title}: ${msg}`); return ''; },
|
|
20
|
+
getFnPromptPassword: () => async (title, msg) => { console.log(`[PromptPwd] ${title}: ${msg}`); return null; },
|
|
21
|
+
});
|
|
22
|
+
space = metaspace.zeroSpace;
|
|
23
|
+
});
|
|
24
|
+
await ifWe(sir, `createTimeline`, async () => {
|
|
25
|
+
const res = await createTimeline({
|
|
26
|
+
space,
|
|
27
|
+
metaspace,
|
|
28
|
+
data: { note: 'first timeline' },
|
|
29
|
+
ib: 'timeline',
|
|
30
|
+
});
|
|
31
|
+
const newTimeline = res.newIbGib;
|
|
32
|
+
iReckon(sir, newTimeline).asTo('newTimeline').isGonnaBeTruthy();
|
|
33
|
+
const addr = getIbGibAddr({ ibGib: newTimeline });
|
|
34
|
+
// verify persistence
|
|
35
|
+
const resGet = await getFromSpace({ addr, space });
|
|
36
|
+
iReckon(sir, resGet.success).asTo('persisted success').isGonnaBeTrue();
|
|
37
|
+
iReckon(sir, resGet.ibGibs[0]).asTo('persisted ibGib').isGonnaBe(newTimeline);
|
|
38
|
+
});
|
|
39
|
+
await ifWe(sir, `mut8Timeline`, async () => {
|
|
40
|
+
// Arrange
|
|
41
|
+
const resCreate = await createTimeline({
|
|
42
|
+
space,
|
|
43
|
+
metaspace,
|
|
44
|
+
data: { note: 'orig' },
|
|
45
|
+
ib: 'timeline',
|
|
46
|
+
});
|
|
47
|
+
const timeline = resCreate.newIbGib;
|
|
48
|
+
console.log(`[mut8Timeline] created timeline n=${timeline.data.n}`);
|
|
49
|
+
const initialPastLength = timeline.rel8ns?.past?.length || 0;
|
|
50
|
+
console.log(`[mut8Timeline] created timeline past length=${initialPastLength}`);
|
|
51
|
+
// Act
|
|
52
|
+
const mutatedTimeline = await mut8Timeline({
|
|
53
|
+
timeline,
|
|
54
|
+
metaspace,
|
|
55
|
+
space,
|
|
56
|
+
mut8Opts: {
|
|
57
|
+
dataToAddOrPatch: { note: 'mutated' },
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
console.log(`[mut8Timeline] mutated timeline n=${mutatedTimeline.data.n}`);
|
|
61
|
+
// Assert
|
|
62
|
+
iReckon(sir, mutatedTimeline).asTo('mutatedTimeline').isGonnaBeTruthy();
|
|
63
|
+
iReckon(sir, mutatedTimeline.data.note).asTo('data.note').isGonnaBe('mutated');
|
|
64
|
+
// n should increment by 1
|
|
65
|
+
const expectedN = (timeline.data.n || 0) + 1;
|
|
66
|
+
iReckon(sir, mutatedTimeline.data.n).asTo('data.n').isGonnaBe(expectedN);
|
|
67
|
+
iReckon(sir, mutatedTimeline.rel8ns.past).asTo('past').isGonnaBeTruthy();
|
|
68
|
+
// past length should include the previous frame + whatever it had
|
|
69
|
+
iReckon(sir, mutatedTimeline.rel8ns.past.length).asTo('past length').isGonnaBe(initialPastLength + 1);
|
|
70
|
+
iReckon(sir, mutatedTimeline.rel8ns.past.at(-1)).asTo('past addr').isGonnaBe(getIbGibAddr({ ibGib: timeline }));
|
|
71
|
+
});
|
|
72
|
+
await ifWe(sir, `appendToTimeline`, async () => {
|
|
73
|
+
// Arrange
|
|
74
|
+
const resCreate = await createTimeline({
|
|
75
|
+
space,
|
|
76
|
+
metaspace,
|
|
77
|
+
data: { n: 0 },
|
|
78
|
+
ib: 'timeline',
|
|
79
|
+
});
|
|
80
|
+
let timeline = resCreate.newIbGib;
|
|
81
|
+
const rel8nInfos = [{
|
|
82
|
+
rel8nName: 'attachment',
|
|
83
|
+
ibGibs: [timeline] // just attaching itself as a test, weird but valid structure
|
|
84
|
+
}];
|
|
85
|
+
const timelinePastLength = timeline.rel8ns?.past?.length || 0;
|
|
86
|
+
// Act
|
|
87
|
+
const appendedTimeline = await appendToTimeline({
|
|
88
|
+
timeline,
|
|
89
|
+
rel8nInfos,
|
|
90
|
+
metaspace,
|
|
91
|
+
space,
|
|
92
|
+
});
|
|
93
|
+
// Assert
|
|
94
|
+
iReckon(sir, appendedTimeline).asTo('appendedTimeline').isGonnaBeTruthy();
|
|
95
|
+
iReckon(sir, appendedTimeline.rel8ns.attachment).asTo('attachment').isGonnaBeTruthy();
|
|
96
|
+
iReckon(sir, appendedTimeline.rel8ns.past?.length).asTo('past').isGonnaBe(timelinePastLength + 1);
|
|
97
|
+
});
|
|
98
|
+
await ifWe(sir, `getHistory`, async () => {
|
|
99
|
+
// Arrange
|
|
100
|
+
let t0 = (await createTimeline({ space, metaspace, data: { n: 0 }, ib: 'timeline' })).newIbGib;
|
|
101
|
+
let t1 = await mut8Timeline({ timeline: t0, metaspace, space, mut8Opts: { dataToAddOrPatch: { n: 1 } } });
|
|
102
|
+
let t2 = await mut8Timeline({ timeline: t1, metaspace, space, mut8Opts: { dataToAddOrPatch: { n: 2 } } });
|
|
103
|
+
// Act
|
|
104
|
+
const history = await getHistory({
|
|
105
|
+
timeline: t2,
|
|
106
|
+
metaspace,
|
|
107
|
+
space,
|
|
108
|
+
});
|
|
109
|
+
// Assert
|
|
110
|
+
// t0 is actually 2nd frame (fork -> mut8).
|
|
111
|
+
// so history is [genesis, t0, t1]. length 3.
|
|
112
|
+
iReckon(sir, history.orderedPastIbGibs.length).asTo('history length').isGonnaBe(3);
|
|
113
|
+
// index 0 is genesis (the fork)
|
|
114
|
+
// index 1 is t0
|
|
115
|
+
// index 2 is t1
|
|
116
|
+
iReckon(sir, getIbGibAddr({ ibGib: history.orderedPastIbGibs[1] })).asTo('t0').isGonnaBe(getIbGibAddr({ ibGib: t0 }));
|
|
117
|
+
iReckon(sir, getIbGibAddr({ ibGib: history.orderedPastIbGibs[2] })).asTo('t1').isGonnaBe(getIbGibAddr({ ibGib: t1 }));
|
|
118
|
+
iReckon(sir, getIbGibAddr({ ibGib: history.headIbGib })).asTo('head').isGonnaBe(getIbGibAddr({ ibGib: t2 }));
|
|
119
|
+
});
|
|
120
|
+
await ifWe(sir, `Concurrency & Locking (Stress Test)`, async () => {
|
|
121
|
+
// const concurrencyLevels = [1, 2, 5, 50, 1000]; // too slow, because the locking mechanism doesn't scale well.
|
|
122
|
+
const concurrencyLevels = [1, 2, 5, 50];
|
|
123
|
+
for (const N of concurrencyLevels) {
|
|
124
|
+
console.log(`[Stress Test] Testing concurrency level: ${N}`);
|
|
125
|
+
// Arrange: Baseline
|
|
126
|
+
let tInitial = (await createTimeline({
|
|
127
|
+
space,
|
|
128
|
+
metaspace,
|
|
129
|
+
data: { n: 0, testId: `concurrent-${N}` },
|
|
130
|
+
ib: 'timeline',
|
|
131
|
+
})).newIbGib;
|
|
132
|
+
// Initial state check
|
|
133
|
+
const initialN = (tInitial.data.n || 0); // should be 1
|
|
134
|
+
const historyInitial = await getHistory({ timeline: tInitial, metaspace, space });
|
|
135
|
+
const initialHistoryLength = historyInitial.orderedPastIbGibs.length; // should be 1 (genesis)
|
|
136
|
+
// Act: Launch N mutations simultaneously
|
|
137
|
+
const promises = [];
|
|
138
|
+
for (let i = 0; i < N; i++) {
|
|
139
|
+
promises.push(mut8Timeline({
|
|
140
|
+
timeline: tInitial, // All start referencing the same initial frame (or logically the timeline itself)
|
|
141
|
+
// Note: In reality, if we pass the *same* object tInitial, mut8Timeline should
|
|
142
|
+
// resolve the *latest* inside the function.
|
|
143
|
+
metaspace,
|
|
144
|
+
space,
|
|
145
|
+
mut8Opts: {
|
|
146
|
+
dataToAddOrPatch: {
|
|
147
|
+
uniq: i, // distinct data to ensure unique hashes if needed
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// No skipLock! We want them to contend.
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
// Wait for all to complete
|
|
155
|
+
await Promise.all(promises);
|
|
156
|
+
// Verification
|
|
157
|
+
// 1. Get Latest Address
|
|
158
|
+
const resLatest = await getLatestAddrs({ ibGibs: [tInitial], space });
|
|
159
|
+
const latestAddr = resLatest.data.latestAddrsMap[getIbGibAddr({ ibGib: tInitial })];
|
|
160
|
+
iReckon(sir, latestAddr).asTo(`[N=${N}] latestAddr exists`).isGonnaBeTruthy();
|
|
161
|
+
// 2. Load the latest frame
|
|
162
|
+
const resGet = await getFromSpace({ addr: latestAddr, space });
|
|
163
|
+
const latestIbGib = resGet.ibGibs[0];
|
|
164
|
+
// 3. Verify data.n
|
|
165
|
+
// Initial n=1. We did N mutations.
|
|
166
|
+
// Each mutation increments nCounter.
|
|
167
|
+
const expectedN = initialN + N;
|
|
168
|
+
iReckon(sir, latestIbGib.data.n).asTo(`[N=${N}] data.n should be ${expectedN}`).isGonnaBe(expectedN);
|
|
169
|
+
// 4. Verify Lineage (no divergence)
|
|
170
|
+
// History length should be initialHistoryLength + N
|
|
171
|
+
const history = await getHistory({ timeline: latestIbGib, metaspace, space });
|
|
172
|
+
const expectedHistoryLength = initialHistoryLength + N;
|
|
173
|
+
iReckon(sir, history.orderedPastIbGibs.length).asTo(`[N=${N}] history length`).isGonnaBe(expectedHistoryLength);
|
|
174
|
+
console.log(`[Stress Test] [N=${N}] SUCCESS. Final n=${latestIbGib.data.n}`);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.error(`[Stress Test] [N=${N}] FAILED:`, err);
|
|
178
|
+
throw err;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=timeline-api.respec.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline-api.respec.mjs","sourceRoot":"","sources":["../../src/timeline/timeline-api.respec.mts"],"names":[],"mappings":"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"}
|