@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.
Files changed (157) hide show
  1. package/dist/agent-helpers.d.mts +36 -0
  2. package/dist/agent-helpers.d.mts.map +1 -0
  3. package/dist/agent-helpers.mjs +133 -0
  4. package/dist/agent-helpers.mjs.map +1 -0
  5. package/dist/keystone/keystone-config-builder.respec.mjs +4 -4
  6. package/dist/keystone/keystone-config-builder.respec.mjs.map +1 -1
  7. package/dist/keystone/keystone-service-v1.respec.mjs +65 -62
  8. package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
  9. package/dist/sync/sync-constants.d.mts +17 -0
  10. package/dist/sync/sync-constants.d.mts.map +1 -0
  11. package/dist/sync/sync-constants.mjs +16 -0
  12. package/dist/sync/sync-constants.mjs.map +1 -0
  13. package/dist/sync/sync-helpers.d.mts +15 -0
  14. package/dist/sync/sync-helpers.d.mts.map +1 -0
  15. package/dist/sync/sync-helpers.mjs +46 -0
  16. package/dist/sync/sync-helpers.mjs.map +1 -0
  17. package/dist/sync/sync-innerspace.respec.d.mts +8 -0
  18. package/dist/sync/sync-innerspace.respec.d.mts.map +1 -0
  19. package/dist/sync/sync-innerspace.respec.mjs +120 -0
  20. package/dist/sync/sync-innerspace.respec.mjs.map +1 -0
  21. package/dist/sync/sync-local-spaces.respec.d.mts +2 -0
  22. package/dist/sync/sync-local-spaces.respec.d.mts.map +1 -0
  23. package/dist/sync/sync-local-spaces.respec.mjs +159 -0
  24. package/dist/sync/sync-local-spaces.respec.mjs.map +1 -0
  25. package/dist/sync/sync-saga-coordinator.d.mts +118 -0
  26. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -0
  27. package/dist/sync/sync-saga-coordinator.mjs +399 -0
  28. package/dist/sync/sync-saga-coordinator.mjs.map +1 -0
  29. package/dist/sync/sync-saga-coordinator.respec.d.mts +2 -0
  30. package/dist/sync/sync-saga-coordinator.respec.d.mts.map +1 -0
  31. package/dist/sync/sync-saga-coordinator.respec.mjs +40 -0
  32. package/dist/sync/sync-saga-coordinator.respec.mjs.map +1 -0
  33. package/dist/sync/sync-types.d.mts +103 -0
  34. package/dist/sync/sync-types.d.mts.map +1 -0
  35. package/dist/sync/sync-types.mjs +2 -0
  36. package/dist/sync/sync-types.mjs.map +1 -0
  37. package/dist/test/mock-space.d.mts +39 -0
  38. package/dist/test/mock-space.d.mts.map +1 -0
  39. package/dist/test/mock-space.mjs +79 -0
  40. package/dist/test/mock-space.mjs.map +1 -0
  41. package/dist/timeline/timeline-api.respec.d.mts +7 -0
  42. package/dist/timeline/timeline-api.respec.d.mts.map +1 -0
  43. package/dist/timeline/timeline-api.respec.mjs +183 -0
  44. package/dist/timeline/timeline-api.respec.mjs.map +1 -0
  45. package/dist/witness/space/inner-space/inner-space-v1.respec.mjs +163 -201
  46. package/dist/witness/space/inner-space/inner-space-v1.respec.mjs.map +1 -1
  47. package/dist/witness/space/metaspace/metaspace-base.d.mts.map +1 -1
  48. package/dist/witness/space/metaspace/metaspace-base.mjs +33 -5
  49. package/dist/witness/space/metaspace/metaspace-base.mjs.map +1 -1
  50. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.d.mts.map +1 -1
  51. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mjs +3 -2
  52. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mjs.map +1 -1
  53. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.d.mts +7 -0
  54. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.d.mts.map +1 -0
  55. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mjs +67 -0
  56. package/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mjs.map +1 -0
  57. package/dist/witness/space/space-helper.d.mts.map +1 -1
  58. package/dist/witness/space/space-helper.mjs +43 -4
  59. package/dist/witness/space/space-helper.mjs.map +1 -1
  60. package/dist/witness/space/space-helper.respec.d.mts +2 -0
  61. package/dist/witness/space/space-helper.respec.d.mts.map +1 -0
  62. package/dist/witness/space/space-helper.respec.mjs +30 -0
  63. package/dist/witness/space/space-helper.respec.mjs.map +1 -0
  64. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/017DF612D9A86192706EE567B059C489EC8DA0B2B558166EFE61F75D8BF1ECEE/test ib.json +1 -0
  65. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/0EF68E1CA839A24CAEDB224A8AF92F258BD1F364A97E708705150595B3F67985/test ib.json +1 -0
  66. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/12EF728E4F98DDB89990D4CDAF3AC852729E804CE37E2041AF18CBA239328085/test ib.json +1 -0
  67. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/152DD42FA80FA6ABD0B4DAAAE9CE1AFCF94E649B210A08955DB8B86E09AF08BE/test ib.json +1 -0
  68. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/16A46B37492E2688088C69F237E5CDC4F4E8C1015CF8E66D044DC2FE115F6211/test ib.json +1 -0
  69. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/1F7942767491C1D740FFC87E046C2470697FE8D154806B51876C53E607B7F007/test ib.json +1 -0
  70. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/35754C7AD2967D57C34396084F1214343C48F9C1AAF1C11CDFB57B5CB95536F5/test ib.json +1 -0
  71. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/38CFD2C2DFD185FC1E5BEE8C55C8A4FFBD83B03F533B4F92537000C505939E39/test ib.json +1 -0
  72. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/43635745EEAE9EBD3426CC4AD88D2362DE15B2F8E4D1C694B3AE8687E8C6489D/test ib.json +1 -0
  73. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/5C4BCD98E1B3494CCFAC355D2C61025DCD43A1D3041E637ABDA83F0E1E7FA0BE/test ib.json +1 -0
  74. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/5FC1BCCA0F1EB6E656233401E330A7928BF58C09EF6B6B56EC69FCFAC0B3A47A/test ib.json +1 -0
  75. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/60B8ED34520992236C9E1859FAE4BA9DF206CC6BD75DA574E815EAF7B577C1BD/test ib.json +1 -0
  76. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/68B53978461355B04CA96CEE33E448CBC39CDEFEA8E907879C1D2E6A542672C4/test ib.json +1 -0
  77. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/6B62E238B88A3B5050DFF02AB91402C6702A822389315B4150308B774F5A0D01/test ib.json +1 -0
  78. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/6F7EC702F1109A564CFE009F634B27E5F82D6A309CF51B11F49846ABEEAD04B1/test ib.json +1 -0
  79. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/7AE69551608DB82E23DBA98CA7D059DF3F5C9E37174E581F7C154935F4362AA7/test ib.json +1 -0
  80. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/8C851E9DD394053BB50716EA6CDD07A48FA76AF5BB55513F898A18B2A4C64D1F/test ib.json +1 -0
  81. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/984DAD369079FEF2F83082F1CD944A432690F1CB0A5ECA9F009D50B385C4061A/test ib.json +1 -0
  82. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/C466B016831B11EEEC611208EDB50FD7BACD7E37D0037C0D1D78BD5B3D892794/test ib.json +1 -0
  83. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/C5D0AA2C7A2C01C52EFDF70242AA6CAAE06BCA80301A425D4E508E9ACD33DF44/test ib.json +1 -0
  84. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/CDDFD5D61010F7B15CFD78C49865C0134E8E037779DD80C6B4DED7DEB0D4CBB7/test ib.json +1 -0
  85. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/DDFAB26C3991470523BD7543D946A24A9CFEC9D5BEC197B7BD963E1507057A93/test ib.json +1 -0
  86. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/E174442450BBA2A570B0166CDF04844C3A5D1F7199DC59E0FA49F1BBACA47F5F/test ib.json +1 -0
  87. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/E6CE9621CF266A675DB7E3EBABD5D636E46E8006F116A0F7F0769B87DDDBFBB0/test ib.json +1 -0
  88. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 -1 1766860935000^7978FD0F9DD4EB6208A2D2113011F95E5C7EE80072BA3B7E4AC737CC771D621B.json +1 -0
  89. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 0 1766860935000^013C09075DF303BB5822FEEFE57F26B9F0DEE6DD382B116816FCDC2B7CAF0696.json +1 -0
  90. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 1 1766860935000^4EEBAD21A82BAC51A7B952DA32DACB37A653695D5D512A348CF15DB9B7DED5AC.json +1 -0
  91. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 10 1766860938000^84544F34B1297ED8F5FD4B437FCD4F1044FD0D40A0B270F8C7E79D89AA058DD6.json +1 -0
  92. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 11 1766860938000^023B07336455CD39B03DC52AF523DA19B588FD32ED7A4BB5BBE9ABE59ED75195.json +1 -0
  93. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 12 1766860939000^49685AA6F0064868886EBA984B072F6C63F92FC3315C29DDDF750D5B56E87D6B.json +1 -0
  94. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 13 1766860939000^A2475B1C99AC9F8B9A4D8B2BD8CB39A76FAA2E13AB2F7CEADA4AB02B42FF8BE4.json +1 -0
  95. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 14 1766860939000^2D0C93D837FFF096346E10F276BD1F08ECE4A2EC94BE9BC58759EBABAB1F2E42.json +1 -0
  96. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 15 1766860939000^4FA9AFA0EA50B833B342716C7745B9A39A7C0F9A09B4666CA67080A49EAB611B.json +1 -0
  97. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 16 1766860939000^A65760BEED125117DE7DF2F481A0F7CD250FFB579138ECC1A19C8401DAFCEB51.json +1 -0
  98. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 17 1766860940000^226FA64E1B4591C150F595D8408530502417C7FFEE3915589382F9C3B585053C.json +1 -0
  99. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 18 1766860940000^1ABF20687FB34275E0EE737538E7E5D4F15CDCB128C4F332043CB76AC78B0F05.json +1 -0
  100. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 19 1766860940000^89A44A1912B20AE873402C287CE09C4D41073F0A5B703CB22FD5272BB907FC19.json +1 -0
  101. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 2 1766860936000^A8D1C5244B85155B130EFCA9CF25185A9B7060F549603B993F2CA98FB269B178.json +1 -0
  102. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 20 1766860940000^72905A7F6A0A859003049827534B579BE090F0B6A221D14584745DAE6A999943.json +1 -0
  103. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 21 1766860948000^71168CE7419FFDB6E945655E1B3597A726111666C305EDA9A76D97FD7215E929.json +1 -0
  104. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 22 1766860967000^A5E8805E1AC44CF2A07606613DE14704BC1943268EFF48BF181E7216D8F07AA3.json +1 -0
  105. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 3 1766860936000^66806071E91EAC9E8F90A81700DD37FB56B7DFDE7B32FE47E142BAC58907173C.json +1 -0
  106. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 4 1766860937000^1A097ACE63079C7D91AC964F783834D172C41CD3FAD0D27A5B95DC6E1E5B7D6A.json +1 -0
  107. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 5 1766860937000^746153300B51309B664E4035E092CAE07F487A2B44D5DB79B770C7D9968D45CA.json +1 -0
  108. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 6 1766860937000^3F1EFF11C729D6175922400928667D3391E3D7B4B29CECD67987F3259A5003C5.json +1 -0
  109. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 7 1766860938000^D2867FC7F2A08C6678BAA320EE449F89E56D81EDC3BFFA79F9DA64BF98701014.json +1 -0
  110. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 8 1766860938000^AA9E5246E533F704E42BED13B878B830B91143AE71C8603FFCF187CF39904915.json +1 -0
  111. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/meta_stone F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6 9 1766860938000^E4B12653516EB8690ED18ECFF3EA7AB5EA3FF70881D730F5859F193F5872DF15.json +1 -0
  112. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/F50B84DBC36E937524F482A095F81F7FA3ABC63CCBB65DB2719F5DE80E59D6C6/test ib.json +1 -0
  113. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/04E79CE54F49DCEA75652ADF674DC9B21BA641944AD97ED7ED1369CF3A880E8D/mut8.json +1 -0
  114. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/0647EB78DB2C48AF3AE9D3EF7989A3DDA1A797D04BE18DB1210B3504BC39BA4E/mut8.json +1 -0
  115. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/08B4A7A62BC7DE27C180A3F70FA7C6C8F9728A98E79B200D9B2EE2D11E62CD97/mut8.json +1 -0
  116. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/0B2FEF92D3630CDFDD14C453DDDA288478022CEB778E0BB4ACC9C9511C770A39/mut8.json +1 -0
  117. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3757E01592FABCA5D139026F156318A7F86AC097CC10ABA243D4E665EB3550C5/mut8.json +1 -0
  118. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3A66623B180568E2AE3E95BD6C48684E765B6B8C2147A4DD13426B6808AC2567/mut8.json +1 -0
  119. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/3EADB84024E06764489225E537F285BF7F7F85C3ACC013F0FCB28B79E227DE2D/mut8.json +1 -0
  120. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/471A5F0BA13425E3412A376452549E5158CD5516C4E005872A50A10D7390CF12/mut8.json +1 -0
  121. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/6E6EA2A701C3AC1B5BCD766F39C59BA7BC5139AAF0EB5E9DE8814F77C4A192A7/mut8.json +1 -0
  122. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/7EF033B1C3C39C05359C89C301DEE7365F6F7A816776F6A0E540CE1A212CD612/mut8.json +1 -0
  123. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/834AECEDC108F37DADA5BD3583FA9C1E612AFA3FFFB1153CA0CD2F51239AD93F/mut8.json +1 -0
  124. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/8CA9BDE2ED96C7C8039D5AF78AEF620A985E32352238DEACACC7E2329006B9B9/mut8.json +1 -0
  125. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/90C61CC1159B21E9FE686C06D5C76FF6F5236F8C7D39CC183B8C81CE36471D9C/fork.json +1 -0
  126. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/A89842F2240358AEC12AE59014A14875AB6FC5C8EF2A5C50D8BD92EB5F54F4B6/mut8.json +1 -0
  127. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/B10FBD60588500D94D6CDA19E5E24DF7F4C3EDF66368E5875F13C4BFF9A8FD03/mut8.json +1 -0
  128. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/B5A0CAF33ACC64A57647ADD18B4F0CAD820F427819BB4615567131994D0399AB/mut8.json +1 -0
  129. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/C0223AA1B3B147E3AFC4233C60025BE4C975652EBF77C24D8B8FABC413594137/mut8.json +1 -0
  130. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/D07097470D6970574C539E1E16AEFCE0A3A67987C7554C9EEFA7204D6D1D81D4/mut8.json +1 -0
  131. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/D92466D1FCE56DB0828A2509590DDA0040FF250FD4FCE7F3E45B5D84887C83F0/mut8.json +1 -0
  132. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/E035FDD6BDD26B164AF5AD675D0567BC0FFB6E10E14BAFA6617EDB536EE162B9/mut8.json +1 -0
  133. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/E8B2955902784AFC4B4A251C771EC770D94234440C8B02C63B12628C29447069/mut8.json +1 -0
  134. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/EF9D3619C817B27EC4402BC215D08CC95A83E5042F4FC35AE2E737AC33B05629/mut8.json +1 -0
  135. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F0D5006EF21791D68460DB0111983602EC450BBFFB3E47134D357A1BCD9FBD15/mut8.json +1 -0
  136. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F15D698186AADD2BA9F3028F4F84630505D06220AB6482381FB35755AFC77E5F/mut8.json +1 -0
  137. package/ibgib/registerNewI_troot/4215392c-space_baseDir/tmp/4215392c-space/dna/F1913D9CF3C4F2CDE56C39EA86F8EB9A65D8FA22750DACD2B496EF27D88DE260/mut8.json +1 -0
  138. package/package.json +2 -2
  139. package/src/agent-helpers.mts +159 -0
  140. package/src/keystone/keystone-config-builder.respec.mts +3 -3
  141. package/src/keystone/keystone-service-v1.respec.mts +66 -60
  142. package/src/sync/sync-constants.mts +24 -0
  143. package/src/sync/sync-helpers.mts +59 -0
  144. package/src/sync/sync-innerspace.respec.mts +144 -0
  145. package/src/sync/sync-local-spaces.respec.mts +200 -0
  146. package/src/sync/sync-saga-coordinator.mts +477 -0
  147. package/src/sync/sync-saga-coordinator.respec.mts +52 -0
  148. package/src/sync/sync-types.mts +120 -0
  149. package/src/test/mock-space.mts +85 -0
  150. package/src/timeline/timeline-api.respec.mts +237 -0
  151. package/src/witness/space/inner-space/inner-space-v1.respec.mts +181 -228
  152. package/src/witness/space/metaspace/metaspace-base.mts +31 -5
  153. package/src/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace-helper.mts +4 -2
  154. package/src/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.respec.mts +90 -0
  155. package/src/witness/space/space-helper.mts +42 -4
  156. package/src/witness/space/space-helper.respec.mts +42 -0
  157. package/tmp.md +11 -0
@@ -5,10 +5,11 @@ import {
5
5
  } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
6
6
  const maam = `[${import.meta.url}]`, sir = maam;
7
7
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
- // import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
9
-
8
+ import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
9
+ import { mut8 } from '@ibgib/ts-gib/dist/V1/transforms/mut8.mjs';
10
+ import { rel8 } from '@ibgib/ts-gib/dist/V1/transforms/rel8.mjs';
11
+ import { fork } from '@ibgib/ts-gib/dist/V1/transforms/fork.mjs';
10
12
  import { getTjpAddr } from '../../../common/other/ibgib-helper.mjs';
11
- // import { SyncSpaceOptionsIbGib } from '../outer-space/outer-space-types.mjs';
12
13
 
13
14
  import {
14
15
  testSpace_createAndInit,
@@ -17,235 +18,187 @@ import {
17
18
  testSpace_registerNewIbGib_GetLatest,
18
19
  } from '../space-respec-helper.mjs';
19
20
  import { InnerSpace_V1, } from './inner-space-v1.mjs';
20
- import { createTimeline, getHistory, mut8Timeline } from '../../../timeline/timeline-api.mjs';
21
- import { MetaspaceService } from '../metaspace/metaspace-types.mjs';
22
- import { Metaspace_Innerspace } from '../metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
23
- // import { getLatestAddrs, putInSpace } from '../space-helper.mjs';
21
+ import { DEFAULT_INNER_SPACE_DATA_V1 } from './inner-space-types.mjs';
22
+ import { putInSpace, getFromSpace } from '../space-helper.mjs';
24
23
 
25
24
  const logalot = true;
26
- /**
27
- * not sure where to put this, but we probably will want to reuse this in the
28
- * future (assuming it works)
29
- * @returns metaspace service reference
30
- */
31
- async function getNewInitializedInMemoryMetaspaceForTesting({
32
- defaultSpaceName,
33
- }: {
34
- defaultSpaceName: string,
35
- }): Promise<MetaspaceService> {
36
- const lc = `[${getNewInitializedInMemoryMetaspaceForTesting.name}]`;
37
- try {
38
- if (logalot) { console.log(`${lc} starting... (I: 766d7596addcb73f4820586469233b25)`); }
39
-
40
- let metaspace = new Metaspace_Innerspace(/*cacheSvc*/undefined);
41
- if (logalot) { console.log(`${lc} creating metaspace complete. initializing... (I: 61b74d62e8832c9fa853e4b8c4c2d825)`); }
42
-
43
- await metaspace.initialize({
44
- spaceName: defaultSpaceName,
45
- metaspaceFactory: undefined,
46
- getFnAlert: () => { return async ({ title, msg }) => console.log(title, msg) },
47
- getFnPrompt: () => {
48
- return async ({ title, msg }) => {
49
- // if this is needed, we might set up some way for testing
50
- // to prepare either a queue of prompts or some kind of map
51
- // and put it on the metaspace itself
52
- throw new Error(`not implemented (E: c7ef688a02f8cb74487260f9274ac825)`);
53
- // promptForText({ title, msg, confirm: false });
54
- }
55
- },
56
- getFnPromptPassword: () => {
57
- return async () => {
58
- return 'password';
59
- // promptForSecret({ confirm: true })
60
- }
61
- },
25
+
26
+ await respecfully(sir, `[${InnerSpace_V1.name} specs]`, async () => {
27
+
28
+ await testSpace_createAndInit({
29
+ respecfulTitle: sir,
30
+ // shortcircuitRespec: true,
31
+ fnGetInitialSpaceData: async () => {
32
+ return {
33
+ ...DEFAULT_INNER_SPACE_DATA_V1,
34
+ name: (await getUUID()).substring(0, 8),
35
+ uuid: await getUUID(),
36
+ };
37
+ },
38
+ fnGetInitialSpaceRel8ns: () => {
39
+ return Promise.resolve(undefined);
40
+ },
41
+ fnGetSpace: (initialData: any, initialRel8ns) => {
42
+ return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
43
+ },
44
+ })
45
+
46
+ await testSpace_putGetDelete({
47
+ respecfulTitle: sir,
48
+ // shortcircuitRespec: true,
49
+ fnGetInitialSpaceData: async () => {
50
+ return {
51
+ ...DEFAULT_INNER_SPACE_DATA_V1,
52
+ name: (await getUUID()).substring(0, 8),
53
+ uuid: await getUUID(),
54
+ };
55
+ },
56
+ fnGetInitialSpaceRel8ns: () => {
57
+ return Promise.resolve(undefined);
58
+ },
59
+ fnGetSpace: (initialData: any, initialRel8ns) => {
60
+ return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
61
+ },
62
+ });
63
+
64
+ await testSpace_persistTransformResult({
65
+ respecfulTitle: sir,
66
+ // shortcircuitRespec: true,
67
+ fnGetInitialSpaceData: async () => {
68
+ return {
69
+ ...DEFAULT_INNER_SPACE_DATA_V1,
70
+ name: (await getUUID()).substring(0, 8),
71
+ uuid: await getUUID(),
72
+ };
73
+ },
74
+ fnGetInitialSpaceRel8ns: () => {
75
+ return Promise.resolve(undefined);
76
+ },
77
+ fnGetSpace: (initialData: any, initialRel8ns) => {
78
+ return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
79
+ },
80
+ });
81
+
82
+ await testSpace_registerNewIbGib_GetLatest({
83
+ respecfulTitle: sir,
84
+ // shortcircuitRespec: true,
85
+ fnGetInitialSpaceData: async () => {
86
+ return {
87
+ ...DEFAULT_INNER_SPACE_DATA_V1,
88
+ name: (await getUUID()).substring(0, 8),
89
+ uuid: await getUUID(),
90
+ };
91
+ },
92
+ fnGetInitialSpaceRel8ns: () => {
93
+ return Promise.resolve(undefined);
94
+ },
95
+ fnGetSpace: (initialData: any, initialRel8ns) => {
96
+ return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
97
+ },
98
+ testLatestIterations: 5,
99
+ });
100
+
101
+ await respecfully(sir, 'Advanced Operations (mut8, rel8, fork)', async () => {
102
+
103
+ await ifWe(sir, 'should handle mut8 transform and persistence', async () => {
104
+ const space = new InnerSpace_V1(DEFAULT_INNER_SPACE_DATA_V1, undefined);
105
+ const gib = Factory_V1.primitive({ ib: 'gib' });
106
+
107
+ // 1. Create Origin
108
+ const resOrigin = await Factory_V1.firstGen({
109
+ ib: 'origin',
110
+ data: { initial: 'data' },
111
+ dna: true,
112
+ parentIbGib: gib,
113
+ });
114
+ const origin = resOrigin.newIbGib;
115
+
116
+ // 2. Mut8 (Mutate)
117
+ const resMut8 = await mut8({
118
+ src: origin,
119
+ dataToAddOrPatch: { mutated: 'data' },
120
+ dna: true,
121
+ });
122
+ const mutated = resMut8.newIbGib;
123
+
124
+ // 3. Put in space (should handle both if persisted correctly)
125
+ const resPut = await putInSpace({
126
+ space,
127
+ ibGibs: [origin, mutated],
128
+ });
129
+ iReckon(sir, resPut.success).isGonnaBeTrue();
130
+
131
+ // 4. Verify get
132
+ const resGet = await getFromSpace({
133
+ space,
134
+ addrs: [getIbGibAddr({ ibGib: mutated })],
135
+ });
136
+ iReckon(sir, resGet.success).isGonnaBeTrue();
137
+ // Using non-null assertion as we verified success
138
+ iReckon(sir, resGet.ibGibs![0].data!.mutated).isGonnaBe('data');
139
+ });
140
+
141
+ await ifWe(sir, 'should handle rel8 transform and persistence', async () => {
142
+ const space = new InnerSpace_V1(DEFAULT_INNER_SPACE_DATA_V1, undefined);
143
+ const gib = Factory_V1.primitive({ ib: 'gib' });
144
+
145
+ // 1. Create A and B
146
+ const resA = await Factory_V1.firstGen({ ib: 'A', dna: true, parentIbGib: gib });
147
+ const A = resA.newIbGib;
148
+ const resB = await Factory_V1.firstGen({ ib: 'B', dna: true, parentIbGib: gib });
149
+ const B = resB.newIbGib;
150
+ const bAddr = getIbGibAddr({ ibGib: B });
151
+
152
+ // 2. Rel8 A -> B (A links to B)
153
+ const resRel8 = await rel8({
154
+ src: A,
155
+ rel8nsToAddByAddr: { 'linked_to': [bAddr] },
156
+ dna: true,
157
+ });
158
+ const A_linked = resRel8.newIbGib;
159
+
160
+ // 3. Put in space
161
+ await putInSpace({
162
+ space,
163
+ ibGibs: [A, B, A_linked],
164
+ });
165
+
166
+ // 4. Verify relation
167
+ const resGet = await getFromSpace({
168
+ space,
169
+ addr: getIbGibAddr({ ibGib: A_linked }),
170
+ });
171
+ const retrieved = resGet.ibGibs![0];
172
+ iReckon(sir, retrieved.rel8ns!.linked_to).includes(bAddr);
62
173
  });
63
- return metaspace;
64
- } catch (error) {
65
- console.error(`${lc} ${extractErrorMsg(error)}`);
66
- throw error;
67
- } finally {
68
- if (logalot) { console.log(`${lc} complete.`); }
69
- }
70
- }
71
-
72
- await respecfully(sir, 'metaspace setup itself', async () => {
73
- await ifWe(sir, 'should init a metaspace', async () => {
74
- const testSpaceName = 'TestSpaceName';
75
-
76
- const metaspace = await getNewInitializedInMemoryMetaspaceForTesting({
77
- defaultSpaceName: testSpaceName
174
+
175
+ await ifWe(sir, 'should handle fork persistence', async () => {
176
+ const space = new InnerSpace_V1(DEFAULT_INNER_SPACE_DATA_V1, undefined);
177
+ const gib = Factory_V1.primitive({ ib: 'gib' });
178
+
179
+ // 1. Create Root
180
+ const resRoot = await Factory_V1.firstGen({ ib: 'root', dna: true, parentIbGib: gib });
181
+ const root = resRoot.newIbGib;
182
+
183
+ // 2. Fork
184
+ const resFork = await fork({
185
+ src: root,
186
+ dna: true,
187
+ tjp: { timestamp: true },
188
+ });
189
+ const forkIbGib = resFork.newIbGib;
190
+
191
+ // 3. Put
192
+ await putInSpace({ space, ibGibs: [root, forkIbGib] });
193
+
194
+ // 4. Verify
195
+ const resGet = await getFromSpace({
196
+ space,
197
+ addr: getIbGibAddr({ ibGib: forkIbGib })
198
+ });
199
+ iReckon(sir, resGet.success).isGonnaBeTrue();
78
200
  });
79
201
 
80
- iReckon(sir, metaspace.zeroSpace).asTo('metaspace should have a zero space').isGonnaBeTruthy();
81
202
  });
82
- });
83
203
 
84
- // await respecfully(sir, `[${InnerSpace_V1.name} specs]`, async () => {
85
-
86
- // await testSpace_createAndInit({
87
- // respecfulTitle: sir,
88
- // // shortcircuitRespec: true,
89
- // fnGetInitialSpaceData: async () => {
90
- // return {
91
- // name: (await getUUID()).substring(0, 8),
92
- // uuid: await getUUID(),
93
- // };
94
- // },
95
- // fnGetInitialSpaceRel8ns: () => {
96
- // return Promise.resolve(undefined);
97
- // },
98
- // fnGetSpace: (initialData: any, initialRel8ns) => {
99
- // return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
100
- // },
101
- // })
102
-
103
- // await testSpace_putGetDelete({
104
- // respecfulTitle: sir,
105
- // // shortcircuitRespec: true,
106
- // fnGetInitialSpaceData: async () => {
107
- // return {
108
- // name: (await getUUID()).substring(0, 8),
109
- // uuid: await getUUID(),
110
- // };
111
- // },
112
- // fnGetInitialSpaceRel8ns: () => {
113
- // return Promise.resolve(undefined);
114
- // },
115
- // fnGetSpace: (initialData: any, initialRel8ns) => {
116
- // return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
117
- // },
118
- // });
119
-
120
- // await testSpace_persistTransformResult({
121
- // respecfulTitle: sir,
122
- // // shortcircuitRespec: true,
123
- // fnGetInitialSpaceData: async () => {
124
- // return {
125
- // name: (await getUUID()).substring(0, 8),
126
- // uuid: await getUUID(),
127
- // };
128
- // },
129
- // fnGetInitialSpaceRel8ns: () => {
130
- // return Promise.resolve(undefined);
131
- // },
132
- // fnGetSpace: (initialData: any, initialRel8ns) => {
133
- // return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
134
- // },
135
- // });
136
-
137
- // await testSpace_registerNewIbGib_GetLatest({
138
- // respecfulTitle: sir,
139
- // // shortcircuitRespec: true,
140
- // fnGetInitialSpaceData: async () => {
141
- // return {
142
- // name: (await getUUID()).substring(0, 8),
143
- // uuid: await getUUID(),
144
- // };
145
- // },
146
- // fnGetInitialSpaceRel8ns: () => {
147
- // return Promise.resolve(undefined);
148
- // },
149
- // fnGetSpace: (initialData: any, initialRel8ns) => {
150
- // return Promise.resolve(new InnerSpace_V1(initialData, initialRel8ns));
151
- // },
152
- // testLatestIterations: 5,
153
- // });
154
-
155
- // });
156
-
157
-
158
-
159
- // await respecfully(sir, 'reconciliation', async () => {
160
- // const createSpace = async (name: string): Promise<InnerSpace_V1> => {
161
- // const spaceData: InnerSpaceData_V1 = {
162
- // name,
163
- // classname: InnerSpace_V1.name,
164
- // uuid: await getUUID(),
165
- // };
166
- // const space = new InnerSpace_V1(spaceData);
167
- // await space.initialized;
168
- // return space;
169
- // };
170
-
171
- // const testSpaceName = 'TestSpaceName';
172
-
173
- // // common setup for reconciliation tests
174
- // const metaspace: MetaspaceService = await getNewInitializedInMemoryMetaspaceForTesting({
175
- // defaultSpaceName: testSpaceName
176
- // });
177
- // // const metaspace = new Metaspace_V1();
178
- // // await metaspace.initialize();
179
-
180
- // await ifWe(sir, 'should sync a new timeline to an empty destination space', async () => {
181
- // // ARRANGE
182
- // const local_space = await createSpace('local');
183
- // const outer_space = await createSpace('outer');
184
-
185
- // // Create a timeline in local_space using the new timeline-api
186
- // const { newIbGib: timelineV1 } = await createTimeline({
187
- // parentIb: 'test',
188
- // ib: 'my test timeline',
189
- // data: { foo: 'bar' },
190
- // metaspace,
191
- // space: local_space,
192
- // });
193
-
194
- // const timelineV2 = await mut8Timeline({
195
- // timeline: timelineV1,
196
- // mut8Opts: { dataToAddOrPatch: { foo: 'rab' } },
197
- // metaspace,
198
- // space: local_space,
199
- // });
200
-
201
- // // Get history for sync
202
- // const historyInfo = await getHistory({
203
- // timeline: timelineV2,
204
- // includeDna: true,
205
- // metaspace,
206
- // space: local_space,
207
- // });
208
-
209
- // const timelineIbGibs = [
210
- // ...(Object.values(historyInfo.dnaMap ?? {})),
211
- // ...historyInfo.orderedPastIbGibs,
212
- // historyInfo.headIbGib,
213
- // ];
214
- // const timelineAddrs = timelineIbGibs.map(x => getIbGibAddr({ ibGib: x }));
215
- // const tjpAddr = getTjpAddr({ ibGib: timelineV1 });
216
-
217
- // // ensure outer_space is empty // there is no such functionality
218
- // // const resGetAddrsOuterBefore = await outer_space.getAddrs({});
219
- // // iReckon(sir, 'outer space should be empty initially', resGetAddrsOuterBefore.data.addrs.length, 0);
220
-
221
- // // ACT
222
- // // const syncOpts: SyncSpaceOptionsIbGib = {
223
- // // ib: 'sync opts',
224
- // // gib: 'sync_opts_gib',
225
- // // data: {
226
- // // cmdModifiers: ['sync'],
227
- // // ibGibAddrs: timelineAddrs,
228
- // // },
229
- // // ibGibs: timelineIbGibs,
230
- // // } as any;
231
-
232
- // // // metaspace.syncIbGibs
233
- // // putInSpace({})
234
- // // const resSync = await outer_space.put(syncOpts);
235
-
236
- // // ASSERT
237
- // // iReckon(sir, `sync result success should be true. res: ${pretty(resSync)}`, resSync.data.success, true);
238
- // // iReckon(sir, resSync?.data?.success).asTo(`sync result success`).isGonnaBeTrue();
239
-
240
- // // const resGetAddrsOuterAfter = await outer_space.getAddrs({});
241
- // // iReckon(sir, 'outer space should have all timeline ibgibs after sync', resGetAddrsOuterAfter.data.addrs.length, timelineAddrs.length);
242
-
243
- // // const resGetLatest = await outer_space.getLatestAddrs({ data: { ibGibAddrs: [tjpAddr] } } as any);
244
- // // const resGetLatest = getLatestAddrs({
245
- // // tjpAddrs: tjpAddrs,
246
- // // space: outer_space,
247
- // // });
248
- // // iReckon(sir, 'latest addr in outer space should match latest from local', resGetLatest.data.latestAddrsMap[tjpAddr], getIbGibAddr({ ibGib: timelineV2 }));
249
- // });
250
-
251
- // });
204
+ });
@@ -1539,11 +1539,37 @@ export abstract class MetaspaceBase implements MetaspaceService {
1539
1539
  if (!resGetLatest) { throw new Error(`resGetLatest falsy (E: 3851bbe4427ae11771f222234e8c6622)`); }
1540
1540
  if (!resGetLatest.data) { throw new Error(`invalid resGetLatest: data falsy (E: 134e0f1f65edc69c6951c32e00a4bb22)`); }
1541
1541
  if (resGetLatest.data.success) {
1542
- if (resGetLatest.data.addrs?.length === 1) {
1543
- return resGetLatest.data.addrs[0];
1544
- } else if (resGetLatest.data.addrsNotFound?.length === 1) {
1545
- return undefined;
1546
- } else if (resGetLatest.data.addrsErrored?.length === 1) {
1542
+ // Should have addrs map
1543
+ const latestAddrsMap = resGetLatest.data.latestAddrsMap;
1544
+ if (!latestAddrsMap) {
1545
+ // fallback to old way just in case? Or just error.
1546
+ // The error I saw had latestAddrsMap but no addrs.
1547
+ // So we should look at the map.
1548
+ if (resGetLatest.data.addrs?.length === 1) {
1549
+ return resGetLatest.data.addrs[0];
1550
+ } else if (resGetLatest.data.addrsNotFound?.length === 1) {
1551
+ return undefined;
1552
+ }
1553
+ } else {
1554
+ // We have the map. Ideally we want the one entry.
1555
+ const keys = Object.keys(latestAddrsMap);
1556
+ if (keys.length === 1) {
1557
+ return latestAddrsMap[keys[0]] || undefined;
1558
+ } else if (keys.length === 0) {
1559
+ // could be not found?
1560
+ if (resGetLatest.data.addrsNotFound?.length === 1) {
1561
+ return undefined;
1562
+ } else {
1563
+ // If we didn't find it, and success is true, maybe it's just undefined?
1564
+ // But usually getLatestAddrs returns map entries for found ones.
1565
+ return undefined;
1566
+ }
1567
+ } else {
1568
+ throw new Error(`(UNEXPECTED) latestAddrsMap has multiple entries? We only asked for one. (E: 790518290f6b46729017684698539222)`);
1569
+ }
1570
+ }
1571
+
1572
+ if (resGetLatest.data.addrsErrored?.length === 1) {
1547
1573
  const emsg = resGetLatest.data.errors?.join('|') ?? "[unspecified error(s)] (E: 24f338036aa84ac99e3c39a660207222)";
1548
1574
  throw new Error(`resGetLatest had error(s): ${emsg}`);
1549
1575
  } else {
@@ -9,6 +9,7 @@ import { DEFAULT_LOCAL_SPACE_POLLING_INTERVAL_MS, } from "../../../../witness/sp
9
9
  import { InnerSpace_V1, } from "../../inner-space/inner-space-v1.mjs";
10
10
  import { InnerSpaceData_V1 } from "../../inner-space/inner-space-types.mjs";
11
11
 
12
+
12
13
  const innerSpaces: { [tjpGib: string]: IbGibSpaceAny } = {};
13
14
 
14
15
  export const fnCreateNewLocalSpace: LocalSpaceFactoryFunction = async ({
@@ -96,10 +97,11 @@ export const fnDtoToSpace: DtoToSpaceFunction = async (spaceDto) => {
96
97
  if ((spaceDto as InnerSpace_V1).ibGibs) {
97
98
  return spaceDto as InnerSpace_V1;
98
99
  } else {
99
- console.log(`${lc} spaceDto: ${pretty(spaceDto)} (I: d69ab87f2fa8360ff8e60e78aa15c825)`);
100
+ // test is outputting a lot of these logs
101
+ // console.log(`${lc} spaceDto: ${pretty(spaceDto)} (I: d69ab87f2fa8360ff8e60e78aa15c825)`); // I want to keep this in if we need to turn the logging back on
100
102
 
101
103
  if (!spaceDto.data) { throw new Error(`invalid spaceDto. InnerSpace_V1 should have truthy data. (E: d402fda7a6a53668b655c2885029a423)`); }
102
- console.dir(spaceDto);
104
+ // console.dir(spaceDto); // I want to keep this in if we need to turn the logging back on
103
105
 
104
106
  const gibInfo = getGibInfo({ gib: spaceDto.gib });
105
107
  const tjpGib = gibInfo.tjpGib ?? spaceDto.gib!;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @module metaspace-innerspace.respec
3
+ *
4
+ * specs for the in-memory metaspace implementation.
5
+ */
6
+
7
+ import {
8
+ firstOfEach, firstOfAll, ifWe,
9
+ lastOfEach, lastOfAll,
10
+ ifWeMight, iReckon, respecfully, respecfullyDear
11
+ } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
12
+
13
+ import { IbGib_V1, IbGibData_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
14
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
15
+ import { InnerSpace_V1 } from '../../../../witness/space/inner-space/inner-space-v1.mjs';
16
+ import { Metaspace_Innerspace } from './metaspace-innerspace.mjs';
17
+ import { createTimeline, mut8Timeline } from '../../../../timeline/timeline-api.mjs';
18
+ import { MetaspaceService } from '../metaspace-types.mjs';
19
+
20
+ const maam = `[${import.meta.url}]`, sir = maam;
21
+
22
+ respecfully(sir, `[metaspace-innerspace]`, async () => {
23
+
24
+ let metaspace: Metaspace_Innerspace;
25
+
26
+ firstOfEach(sir, async () => {
27
+ metaspace = new Metaspace_Innerspace(undefined); // no cache for now
28
+ await metaspace.initialize({
29
+ getFnAlert: () => async ({ title, msg }) => { console.log(`[Alert] ${title}: ${msg}`); },
30
+ getFnPrompt: () => async ({ title, msg }) => { console.log(`[Prompt] ${title}: ${msg}`); return ''; },
31
+ getFnPromptPassword: () => async (title, msg) => { console.log(`[PromptPwd] ${title}: ${msg}`); return null; },
32
+ });
33
+ });
34
+
35
+ await ifWeMight(sir, `can instantiate`, async () => {
36
+ iReckon(sir, metaspace).asTo('metaspace').isGonnaBeTruthy();
37
+ iReckon(sir, metaspace.initialized).asTo('initialized').isGonnaBeTrue();
38
+ });
39
+
40
+ await ifWeMight(sir, `has zeroSpace`, async () => {
41
+ const zs = metaspace.zeroSpace;
42
+ iReckon(sir, zs).asTo('zeroSpace').isGonnaBeTruthy();
43
+ });
44
+
45
+ await ifWeMight(sir, `can createTimeline and track latest`, async () => {
46
+ // This implicitly tests getLatestAddr/s via timeline-api usage if we were using it,
47
+ // but here we call it directly or via minimal timeline op.
48
+
49
+ // 1. Create a timeline via timeline-api using this metaspace
50
+ const resCreate = await createTimeline({
51
+ space: metaspace.zeroSpace,
52
+ metaspace: metaspace,
53
+ data: { n: 0 },
54
+ ib: 'timeline'
55
+ });
56
+ const t0 = resCreate.newIbGib;
57
+ const t0Addr = getIbGibAddr({ ibGib: t0 });
58
+
59
+ // 2. Verify we can get latest addr
60
+ // Ideally metaspace should track this automatically if registerNewIbGib is called inside createTimeline,
61
+ // which calls metaspace.registerNewIbGib.
62
+
63
+ // Note: timeline-api calls metaspace.registerNewIbGib.
64
+ // So we check if metaspace has it.
65
+
66
+ const latestAddr = await metaspace.getLatestAddr({
67
+ ibGib: t0,
68
+ space: metaspace.zeroSpace,
69
+ });
70
+
71
+ iReckon(sir, latestAddr).asTo('latestAddr matches initial').isGonnaBe(t0Addr);
72
+
73
+ // 3. Mutate
74
+ const t1 = await mut8Timeline({
75
+ timeline: t0,
76
+ metaspace,
77
+ space: metaspace.zeroSpace,
78
+ mut8Opts: { dataToAddOrPatch: { n: 1 } }
79
+ });
80
+ const t1Addr = getIbGibAddr({ ibGib: t1 });
81
+
82
+ // 4. Verify latest addr updated
83
+ const latestAddr2 = await metaspace.getLatestAddr({
84
+ ibGib: t0, // asking about t0's latest
85
+ space: metaspace.zeroSpace,
86
+ });
87
+ iReckon(sir, latestAddr2).asTo('latestAddr2 matches mutated').isGonnaBe(t1Addr);
88
+ });
89
+
90
+ });
@@ -2693,11 +2693,49 @@ export async function lockSpace({
2693
2693
  expirationUTC: getExpirationUTCString({ seconds: secondsValid }),
2694
2694
  }
2695
2695
  } as IbGibSpaceLockIbGib;
2696
- const resPut = await putInSpace({ ibGib: resLockIbGib, force: true, space });
2697
- if (resPut.success) {
2698
- resLockIbGib.data!.success = true;
2696
+
2697
+ // We must use space.witness (via argy) directly here instead of
2698
+ // `putInSpace` helper, because we need to check
2699
+ // `addrsAlreadyHave`. If the space already has the addr, then
2700
+ // we have lost a race condition and the space is ALREADY locked.
2701
+ const argPut = await space.argy({
2702
+ ibMetadata: getSpaceArgMetadata({ space }),
2703
+ argData: {
2704
+ cmd: 'put',
2705
+ force: true,
2706
+ ibGibAddrs: [spaceLockAddr],
2707
+ },
2708
+ ibGibs: [resLockIbGib],
2709
+ });
2710
+ const resPut = await space.witness(argPut);
2711
+
2712
+ if (resPut.data?.success) {
2713
+ if ((resPut.data.addrsAlreadyHave ?? []).includes(spaceLockAddr)) {
2714
+ // Race condition lost! The lock was put by someone else in the interim.
2715
+ if (logalot) { console.log(`${lc} racelost! addrsAlreadyHave includes spaceLockAddr (${spaceLockAddr}) (I: 2e8a1562947c40698110b64251141753)`); }
2716
+
2717
+ // get the existing lock that beat us
2718
+ const getLockRace = await getFromSpace({
2719
+ addr: spaceLockAddr, space, force: true
2720
+ });
2721
+ if (getLockRace.success && getLockRace.ibGibs?.length === 1) {
2722
+ const existingLockRace = getLockRace.ibGibs[0] as IbGibSpaceLockIbGib;
2723
+ resLockIbGib = clone(existingLockRace) as IbGibSpaceLockIbGib;
2724
+ resLockIbGib.data!.alreadyLocked = true;
2725
+ resLockIbGib.data!.success = false;
2726
+ } else {
2727
+ // Should be unreachable if addrsAlreadyHave is true, but handle gracefully
2728
+ const emsg = `${lc} (UNEXPECTED) addrsAlreadyHave true, but couldn't get lock? (E: 8374a2b6628b49369363bc5843105763)`;
2729
+ console.error(emsg);
2730
+ resLockIbGib.data!.success = false;
2731
+ resLockIbGib.data!.errorMsg = emsg;
2732
+ }
2733
+ } else {
2734
+ // Success! We put the lock and it was new.
2735
+ resLockIbGib.data!.success = true;
2736
+ }
2699
2737
  } else {
2700
- const emsg = `${lc} there was an error putting the lock in the space: ${resPut.errorMsg}`;
2738
+ const emsg = `${lc} there was an error putting the lock in the space: ${resPut.data?.errors?.join('|')}`;
2701
2739
  resLockIbGib.data!.success = false;
2702
2740
  resLockIbGib.data!.errorMsg = emsg;
2703
2741
  console.error(emsg);