@ibgib/space-gib 0.0.5 → 0.0.7
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/README.md +20 -0
- package/dist/client/bootstrap.mjs +31 -31
- package/dist/client/bootstrap.mjs.map +3 -3
- package/dist/client/chunk-RXFIBFRK.mjs +42 -0
- package/dist/client/chunk-RXFIBFRK.mjs.map +7 -0
- package/dist/client/chunk-ULFNE26Y.mjs +2216 -0
- package/dist/client/chunk-ULFNE26Y.mjs.map +7 -0
- package/dist/client/index.html +35 -14
- package/dist/client/index.mjs +1 -1
- package/dist/client/script.mjs +1 -1
- package/dist/client/style.css +29 -5
- package/dist/server/server.mjs +1447 -270
- package/dist/server/server.mjs.map +4 -4
- package/package.json +5 -5
- package/space-gib.localhost-1783713259760.log +45 -0
- package/src/client/AUTO-GENERATED-version.mts +1 -1
- package/src/client/bootstrap.mts +9 -0
- package/src/client/components/identity-header/identity-header.css +40 -2
- package/src/client/components/identity-header/identity-header.html +3 -2
- package/src/client/components/identity-header/identity-header.mts +127 -49
- package/src/client/components/identity-manager/identity-manager.css +57 -353
- package/src/client/components/identity-manager/identity-manager.html +0 -94
- package/src/client/components/identity-manager/identity-manager.mts +356 -484
- package/src/client/components/keystone-creator/keystone-creator.mts +90 -13
- package/src/client/components/keystone-details/keystone-details.css +472 -0
- package/src/client/components/keystone-details/keystone-details.html +99 -0
- package/src/client/components/keystone-details/keystone-details.mts +821 -0
- package/src/client/components/keystone-scrubber/SCRUBBER_IMPLEMENTATION.md +33 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.css +46 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.html +15 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.mts +356 -0
- package/src/client/dev-tools/common.mts +505 -10
- package/src/client/dev-tools/phase-4-1.mts +19 -4
- package/src/client/dev-tools/phase-4-10.mts +77 -305
- package/src/client/dev-tools/phase-4-2.mts +46 -212
- package/src/client/dev-tools/phase-4-3.mts +57 -198
- package/src/client/dev-tools/phase-4-4.mts +57 -170
- package/src/client/dev-tools/phase-4-5.mts +48 -204
- package/src/client/dev-tools/phase-4-6.mts +37 -103
- package/src/client/dev-tools/phase-4-7.mts +44 -228
- package/src/client/dev-tools/phase-4-8.mts +33 -136
- package/src/client/dev-tools/phase-4-9.mts +33 -137
- package/src/client/dev-tools/phase-4.mts +30 -6
- package/src/client/dev-tools.mts +18 -0
- package/src/client/index.html +35 -14
- package/src/client/style.css +29 -5
- package/src/client/types.mts +4 -1
- package/src/client/ui/shell/space-gib-shell-service.mts +4 -0
- package/src/server/path-constants.mts +12 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-config.handler.mts +66 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-link.handler.mts +119 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-login.handler.mts +189 -0
- package/src/server/server.mts +6 -0
- package/dist/client/chunk-ANGVYAEK.mjs +0 -42
- package/dist/client/chunk-ANGVYAEK.mjs.map +0 -7
- package/dist/client/chunk-IRGFDQRD.mjs +0 -1920
- package/dist/client/chunk-IRGFDQRD.mjs.map +0 -7
- package/dist/respec-gib.node.mjs +0 -5
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
// #region Imports
|
|
2
|
-
import { extractErrorMsg, getUUID,
|
|
2
|
+
import { extractErrorMsg, getUUID, pretty } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
3
3
|
import { Factory_V1 as factory } from '@ibgib/ts-gib/dist/V1/factory.mjs';
|
|
4
4
|
import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
|
|
5
5
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
6
6
|
import { KeystoneIbGib_V1 } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
|
|
7
|
-
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
8
7
|
import { getGlobalMetaspace_waitIfNeeded } from "@ibgib/web-gib/dist/helpers.mjs";
|
|
9
8
|
import { mut8Timeline, appendToTimeline } from '@ibgib/core-gib/dist/timeline/timeline-api.mjs';
|
|
10
9
|
import { getTjpAddr } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
|
|
11
|
-
import { SyncPeerWebSocketSender_V1 } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs';
|
|
12
10
|
import { SyncSagaCoordinator } from '@ibgib/core-gib/dist/sync/sync-saga-coordinator.mjs';
|
|
13
|
-
import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
|
|
14
11
|
import { GRAFT_BASE_REL8N_NAME, GRAFT_ORPHAN_REL8N_NAME, GRAFT_INFO_REL8N_NAME } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-constants.mjs';
|
|
15
|
-
import { SESSION_KEYSTONE_POLICY, getSpaceGibPoolConfig } from "../../common/keystone-policies.mjs";
|
|
16
12
|
import { SpaceGibApiBridge } from '../api/space-gib-api-bridge.mjs';
|
|
17
13
|
|
|
18
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
debugState, devLog, lc,
|
|
16
|
+
setupDomainAndDelegateIdentities, runSyncPass, runSyncPassFromSpace, copyIdentitiesToSpace
|
|
17
|
+
} from './common.mjs';
|
|
19
18
|
import { IbGibAddr } from '@ibgib/ts-gib/dist/types.mjs';
|
|
20
19
|
// #endregion Imports
|
|
21
20
|
|
|
@@ -51,34 +50,20 @@ export function init4_10bSetupButton(): void {
|
|
|
51
50
|
const space = await metaspace.getLocalUserSpace({}) as any;
|
|
52
51
|
if (!space) { throw new Error("No default space."); }
|
|
53
52
|
|
|
54
|
-
const
|
|
55
|
-
const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
53
|
+
const apiBridge = new SpaceGibApiBridge();
|
|
56
54
|
|
|
57
|
-
// 1.
|
|
58
|
-
|
|
55
|
+
// 1. Create domain + delegate identities (DRY helper)
|
|
56
|
+
await setupDomainAndDelegateIdentities({
|
|
59
57
|
masterSecret: 'test-sender-secret-phase4-10b',
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
metaspace,
|
|
65
|
-
space,
|
|
66
|
-
frameDetails: { client: 'space-gib-web-dev', timestamp: getTimestamp() }
|
|
58
|
+
syncSalt: 'senderidentitysyncsaltphase4-10b',
|
|
59
|
+
manageSalt: 'senderidentitymanagesaltphase4-10b',
|
|
60
|
+
metaspace, space, apiBridge,
|
|
61
|
+
phaseText: '4.10B'
|
|
67
62
|
});
|
|
68
|
-
|
|
63
|
+
const domainI = debugState.domainI!;
|
|
69
64
|
state.domainI_initial = domainI;
|
|
70
65
|
state.domainI_latest = domainI;
|
|
71
|
-
let domainI_latest = domainI;
|
|
72
66
|
const domainAddr = getIbGibAddr({ ibGib: domainI });
|
|
73
|
-
devLog(`4.10B Setup: ✓ Created identity: ${domainAddr}`);
|
|
74
|
-
|
|
75
|
-
// Register on server
|
|
76
|
-
const apiBridge = new SpaceGibApiBridge();
|
|
77
|
-
const resGenesis = await apiBridge.postGenesisKeystone(domainI);
|
|
78
|
-
if (!resGenesis.success) {
|
|
79
|
-
throw new Error(`Server rejected genesis domain keystone: ${resGenesis.message}`);
|
|
80
|
-
}
|
|
81
|
-
devLog('4.10B Setup: ✓ Identity registered on server.');
|
|
82
67
|
|
|
83
68
|
// 2. Create the divergent "remote" space
|
|
84
69
|
devLog('4.10B Setup: Creating temporary remote space...');
|
|
@@ -92,9 +77,8 @@ export function init4_10bSetupButton(): void {
|
|
|
92
77
|
await remoteSpace.initialized;
|
|
93
78
|
state.remoteSpace = remoteSpace;
|
|
94
79
|
|
|
95
|
-
// Copy user identity to remote space
|
|
96
|
-
await
|
|
97
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space: remoteSpace });
|
|
80
|
+
// Copy user identity and delegate to remote space
|
|
81
|
+
await copyIdentitiesToSpace({ domainI, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
98
82
|
|
|
99
83
|
// 3. Seed common history (Round 1) locally in default space
|
|
100
84
|
devLog('4.10B Setup: Creating common history for alpha...');
|
|
@@ -119,43 +103,17 @@ export function init4_10bSetupButton(): void {
|
|
|
119
103
|
|
|
120
104
|
// Sync alpha_v0 to server immediately so server has it
|
|
121
105
|
devLog('4.10B Setup: Seeding alpha_v0 to server...');
|
|
122
|
-
|
|
123
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
124
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
125
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
126
|
-
});
|
|
127
|
-
const coordinatorInit = new SyncSagaCoordinator();
|
|
128
|
-
await senderPeerInit.initializeOpts({
|
|
129
|
-
localMetaspace: metaspace,
|
|
130
|
-
localSpace: space,
|
|
131
|
-
senderIdentity: domainI,
|
|
132
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
133
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
134
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
135
|
-
targetAddrs: [domainAddr]
|
|
136
|
-
});
|
|
137
|
-
const syncSagaInit = await coordinatorInit.sync({
|
|
106
|
+
await runSyncPass({
|
|
138
107
|
domainIbGibs: [alpha_v0],
|
|
139
|
-
|
|
140
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
141
|
-
peer: senderPeerInit,
|
|
142
|
-
localSpace: space,
|
|
108
|
+
passLabel: 'Seed alpha_v0',
|
|
143
109
|
metaspace,
|
|
144
|
-
|
|
110
|
+
space
|
|
145
111
|
});
|
|
146
|
-
|
|
112
|
+
state.domainI_latest = debugState.domainI;
|
|
147
113
|
devLog('4.10B Setup: ✓ alpha_v0 seeded on server.');
|
|
148
114
|
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
if (!domainLatestAddr) { throw new Error("Could not find latest evolved identity address in local space."); }
|
|
152
|
-
const resGetLatest = await metaspace.get({ addr: domainLatestAddr, space });
|
|
153
|
-
domainI_latest = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
154
|
-
state.domainI_latest = domainI_latest;
|
|
155
|
-
|
|
156
|
-
// Copy to remote space
|
|
157
|
-
await metaspace.put({ ibGib: domainI_latest, space: remoteSpace });
|
|
158
|
-
await metaspace.registerNewIbGib({ ibGib: domainI_latest, space: remoteSpace });
|
|
115
|
+
// Copy evolved delegate and domain tip to remoteSpace
|
|
116
|
+
await copyIdentitiesToSpace({ domainI: debugState.domainI!, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
159
117
|
|
|
160
118
|
// 4. Create Round 2 Divergence:
|
|
161
119
|
// Client (default space): Create beta, mutate alpha fieldA, relate alpha to beta
|
|
@@ -214,43 +172,16 @@ export function init4_10bSetupButton(): void {
|
|
|
214
172
|
|
|
215
173
|
// Sync remote Round 2 edit to server
|
|
216
174
|
devLog('4.10B Setup: Pushing remote Round 2 edit to server...');
|
|
217
|
-
|
|
218
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
219
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
220
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
221
|
-
});
|
|
222
|
-
const coordinatorRemote = new SyncSagaCoordinator();
|
|
223
|
-
await senderPeerRemote.initializeOpts({
|
|
224
|
-
localMetaspace: metaspace,
|
|
225
|
-
localSpace: remoteSpace,
|
|
226
|
-
senderIdentity: domainI_latest,
|
|
227
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
228
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
229
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
230
|
-
targetAddrs: [domainAddr]
|
|
231
|
-
});
|
|
232
|
-
const syncSagaRemote = await coordinatorRemote.sync({
|
|
175
|
+
await runSyncPassFromSpace({
|
|
233
176
|
domainIbGibs: [r2_alpha_v1_remote],
|
|
234
|
-
|
|
235
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
236
|
-
peer: senderPeerRemote,
|
|
237
|
-
localSpace: remoteSpace,
|
|
177
|
+
passLabel: 'Push remote Round 2 edit',
|
|
238
178
|
metaspace,
|
|
239
|
-
|
|
179
|
+
space: remoteSpace,
|
|
180
|
+
primarySpace: space,
|
|
181
|
+
domainI: debugState.domainI!,
|
|
182
|
+
masterSecret: 'test-sender-secret-phase4-10b'
|
|
240
183
|
});
|
|
241
|
-
|
|
242
|
-
devLog('4.10B Setup: ✓ Server tip is now remote Round 2 edit.');
|
|
243
|
-
|
|
244
|
-
// Fetch evolved user identity from remote space (n=3)
|
|
245
|
-
const domainLatestAddrRemote = await metaspace.getLatestAddr({ ibGib: domainI, space: remoteSpace });
|
|
246
|
-
if (!domainLatestAddrRemote) { throw new Error("Could not find latest evolved identity address in remote space."); }
|
|
247
|
-
const resGetLatestRemote = await metaspace.get({ addr: domainLatestAddrRemote, space: remoteSpace });
|
|
248
|
-
const domainI_latestRemote = resGetLatestRemote.ibGibs![0] as KeystoneIbGib_V1;
|
|
249
|
-
|
|
250
|
-
// Copy back to default space
|
|
251
|
-
await metaspace.put({ ibGib: domainI_latestRemote, space });
|
|
252
|
-
await metaspace.registerNewIbGib({ ibGib: domainI_latestRemote, space });
|
|
253
|
-
state.domainI_latest = domainI_latestRemote;
|
|
184
|
+
state.domainI_latest = debugState.domainI;
|
|
254
185
|
|
|
255
186
|
devLog('✓ 4.10B Setup Complete! Ready for 4.10B Sync (which runs Round 2, 3, and 4 in succession).');
|
|
256
187
|
btn.textContent = '✓ 4.10B Setup Complete';
|
|
@@ -295,41 +226,17 @@ export function init4_10bSyncButton(): void {
|
|
|
295
226
|
// #region Round 2 Sync
|
|
296
227
|
// ----------------------------------------------------
|
|
297
228
|
devLog('4.10B Sync: Running Round 2 Sync (merging divergent alpha edits)...');
|
|
298
|
-
|
|
299
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
300
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
301
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
302
|
-
});
|
|
303
|
-
const coordinatorR2 = new SyncSagaCoordinator();
|
|
304
|
-
await senderPeerR2.initializeOpts({
|
|
305
|
-
localMetaspace: metaspace,
|
|
306
|
-
localSpace: space,
|
|
307
|
-
senderIdentity: domainI,
|
|
308
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
309
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
310
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
311
|
-
targetAddrs: [domainAddr]
|
|
312
|
-
});
|
|
313
|
-
const syncSagaR2 = await coordinatorR2.sync({
|
|
229
|
+
await runSyncPass({
|
|
314
230
|
domainIbGibs: [state.r2_alpha_v3_source_rel8beta],
|
|
315
|
-
|
|
316
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
317
|
-
peer: senderPeerR2,
|
|
318
|
-
localSpace: space,
|
|
231
|
+
passLabel: 'Sync divergent alpha edits R2',
|
|
319
232
|
metaspace,
|
|
320
|
-
|
|
233
|
+
space
|
|
321
234
|
});
|
|
322
|
-
|
|
235
|
+
state.domainI_latest = debugState.domainI;
|
|
323
236
|
devLog('4.10B Sync: ✓ Round 2 Sync complete.');
|
|
324
237
|
|
|
325
|
-
//
|
|
326
|
-
|
|
327
|
-
let resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space });
|
|
328
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
329
|
-
|
|
330
|
-
// Copy to remote space
|
|
331
|
-
await metaspace.put({ ibGib: domainI, space: remoteSpace });
|
|
332
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space: remoteSpace });
|
|
238
|
+
// Copy evolved delegate and domain tip to remoteSpace
|
|
239
|
+
await copyIdentitiesToSpace({ domainI: debugState.domainI!, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
333
240
|
// #endregion Round 2 Sync
|
|
334
241
|
|
|
335
242
|
// ----------------------------------------------------
|
|
@@ -337,7 +244,7 @@ export function init4_10bSyncButton(): void {
|
|
|
337
244
|
// ----------------------------------------------------
|
|
338
245
|
devLog('4.10B Sync: Preparing Round 3 divergence (multiple conflicting timelines)...');
|
|
339
246
|
// Client: Mutate alpha (fieldC), mutate beta (betaFieldA)
|
|
340
|
-
const clientKV_R2 = await
|
|
247
|
+
const clientKV_R2 = await new SyncSagaCoordinator().getKnowledgeMap({
|
|
341
248
|
domainIbGibs: [state.r2_alpha_v3_source_rel8beta, state.r2_beta_v0_source],
|
|
342
249
|
space,
|
|
343
250
|
metaspace,
|
|
@@ -370,21 +277,6 @@ export function init4_10bSyncButton(): void {
|
|
|
370
277
|
|
|
371
278
|
// Remote: Sync remote to latest merged tips, then mutate alpha (fieldD), mutate beta (betaFieldB)
|
|
372
279
|
devLog('4.10B Sync: Updating remote space to latest merged tips...');
|
|
373
|
-
const senderPeerRemoteR3_Init = new SyncPeerWebSocketSender_V1({
|
|
374
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
375
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
376
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
377
|
-
});
|
|
378
|
-
const coordinatorRemoteR3_Init = new SyncSagaCoordinator();
|
|
379
|
-
await senderPeerRemoteR3_Init.initializeOpts({
|
|
380
|
-
localMetaspace: metaspace,
|
|
381
|
-
localSpace: remoteSpace,
|
|
382
|
-
senderIdentity: domainI,
|
|
383
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
384
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
385
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
386
|
-
targetAddrs: [domainAddr]
|
|
387
|
-
});
|
|
388
280
|
|
|
389
281
|
// Query remoteSpace for its latest tips to initiate sync
|
|
390
282
|
const alphaLatestAddrRemoteR3 = await metaspace.getLatestAddr({ addr: alpha_tjpAddr, space: remoteSpace });
|
|
@@ -400,26 +292,21 @@ export function init4_10bSyncButton(): void {
|
|
|
400
292
|
}
|
|
401
293
|
|
|
402
294
|
// Sync remote space to pull merged alpha and beta from server
|
|
403
|
-
|
|
295
|
+
await runSyncPassFromSpace({
|
|
404
296
|
domainIbGibs: domainIbGibsRemoteR3,
|
|
405
|
-
|
|
406
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
407
|
-
peer: senderPeerRemoteR3_Init,
|
|
408
|
-
localSpace: remoteSpace,
|
|
297
|
+
passLabel: 'Pull merged R2 tips to remoteSpace',
|
|
409
298
|
metaspace,
|
|
410
|
-
|
|
299
|
+
space: remoteSpace,
|
|
300
|
+
primarySpace: space,
|
|
301
|
+
domainI: debugState.domainI!,
|
|
302
|
+
masterSecret: 'test-sender-secret-phase4-10b'
|
|
411
303
|
});
|
|
412
|
-
|
|
304
|
+
state.domainI_latest = debugState.domainI;
|
|
305
|
+
|
|
413
306
|
|
|
414
|
-
// Fetch evolved identity (n=5)
|
|
415
|
-
domainLatestAddr = await metaspace.getLatestAddr({ ibGib: state.domainI_initial!, space: remoteSpace });
|
|
416
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space: remoteSpace });
|
|
417
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
418
|
-
await metaspace.put({ ibGib: domainI, space });
|
|
419
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space });
|
|
420
307
|
|
|
421
308
|
// Now mutate alpha (fieldD) and beta (betaFieldB) in remote space
|
|
422
|
-
const remoteKV_R3 = await
|
|
309
|
+
const remoteKV_R3 = await new SyncSagaCoordinator().getKnowledgeMap({ space: remoteSpace, metaspace, domainIbGibs: [alpha_v0, state.r2_beta_v0_source] });
|
|
423
310
|
const alpha_tipAddr_R2_remote = remoteKV_R3[alpha_tjpAddr];
|
|
424
311
|
const beta_tipAddr_R2_remote = remoteKV_R3[beta_tjpAddr];
|
|
425
312
|
|
|
@@ -448,81 +335,37 @@ export function init4_10bSyncButton(): void {
|
|
|
448
335
|
|
|
449
336
|
// Sync remote Round 3 edits to server
|
|
450
337
|
devLog('4.10B Sync: Pushing remote Round 3 edits to server...');
|
|
451
|
-
|
|
452
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
453
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
454
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
455
|
-
});
|
|
456
|
-
const coordinatorRemoteR3 = new SyncSagaCoordinator();
|
|
457
|
-
await senderPeerRemoteR3.initializeOpts({
|
|
458
|
-
localMetaspace: metaspace,
|
|
459
|
-
localSpace: remoteSpace,
|
|
460
|
-
senderIdentity: domainI,
|
|
461
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
462
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
463
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
464
|
-
targetAddrs: [domainAddr]
|
|
465
|
-
});
|
|
466
|
-
const syncSagaRemoteR3 = await coordinatorRemoteR3.sync({
|
|
338
|
+
await runSyncPassFromSpace({
|
|
467
339
|
domainIbGibs: [r3_alpha_v4_remote, r3_beta_v1_remote],
|
|
468
|
-
|
|
469
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
470
|
-
peer: senderPeerRemoteR3,
|
|
471
|
-
localSpace: remoteSpace,
|
|
340
|
+
passLabel: 'Push remote Round 3 edits',
|
|
472
341
|
metaspace,
|
|
473
|
-
|
|
342
|
+
space: remoteSpace,
|
|
343
|
+
primarySpace: space,
|
|
344
|
+
domainI: debugState.domainI!,
|
|
345
|
+
masterSecret: 'test-sender-secret-phase4-10b'
|
|
474
346
|
});
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
// Fetch evolved identity (n=6)
|
|
478
|
-
domainLatestAddr = await metaspace.getLatestAddr({ ibGib: state.domainI_initial!, space: remoteSpace });
|
|
479
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space: remoteSpace });
|
|
480
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
481
|
-
await metaspace.put({ ibGib: domainI, space });
|
|
482
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space });
|
|
347
|
+
state.domainI_latest = debugState.domainI;
|
|
483
348
|
|
|
484
349
|
// Sync Client Round 3 edits to server (merges client and server)
|
|
485
350
|
devLog('4.10B Sync: Running Round 3 Client Sync (merging alpha & beta divergence)...');
|
|
486
|
-
|
|
487
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
488
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
489
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
490
|
-
});
|
|
491
|
-
const coordinatorR3 = new SyncSagaCoordinator();
|
|
492
|
-
await senderPeerR3.initializeOpts({
|
|
493
|
-
localMetaspace: metaspace,
|
|
494
|
-
localSpace: space,
|
|
495
|
-
senderIdentity: domainI,
|
|
496
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
497
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
498
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
499
|
-
targetAddrs: [domainAddr]
|
|
500
|
-
});
|
|
501
|
-
const syncSagaR3 = await coordinatorR3.sync({
|
|
351
|
+
await runSyncPass({
|
|
502
352
|
domainIbGibs: [r3_alpha_v4_source, r3_beta_v1_source],
|
|
503
|
-
|
|
504
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
505
|
-
peer: senderPeerR3,
|
|
506
|
-
localSpace: space,
|
|
353
|
+
passLabel: 'Sync Client Round 3 edits',
|
|
507
354
|
metaspace,
|
|
508
|
-
|
|
355
|
+
space
|
|
509
356
|
});
|
|
510
|
-
|
|
357
|
+
state.domainI_latest = debugState.domainI;
|
|
511
358
|
devLog('4.10B Sync: ✓ Round 3 Sync complete.');
|
|
512
359
|
|
|
513
|
-
//
|
|
514
|
-
|
|
515
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space });
|
|
516
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
517
|
-
await metaspace.put({ ibGib: domainI, space: remoteSpace });
|
|
518
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space: remoteSpace });
|
|
360
|
+
// Copy evolved delegate and domain tip to remoteSpace
|
|
361
|
+
await copyIdentitiesToSpace({ domainI: debugState.domainI!, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
519
362
|
// #endregion Round 3 Divergence & Sync
|
|
520
363
|
|
|
521
364
|
// ----------------------------------------------------
|
|
522
365
|
// #region Round 4 Divergence & Sync
|
|
523
366
|
// ----------------------------------------------------
|
|
524
367
|
devLog('4.10B Sync: Preparing Round 4 divergence (post-graft chain edits & new timeline)...');
|
|
525
|
-
const clientKV_R3 = await
|
|
368
|
+
const clientKV_R3 = await new SyncSagaCoordinator().getKnowledgeMap({ space, metaspace, domainIbGibs: [alpha_v0, state.r2_beta_v0_source] });
|
|
526
369
|
const alpha_tipAddr_R3_client = clientKV_R3[alpha_tjpAddr];
|
|
527
370
|
const beta_tipAddr_R3_client = clientKV_R3[beta_tjpAddr];
|
|
528
371
|
|
|
@@ -590,21 +433,6 @@ export function init4_10bSyncButton(): void {
|
|
|
590
433
|
|
|
591
434
|
// Remote: Sync remote to latest merged tips, then mutate alpha (fieldG), mutate beta (betaFieldC)
|
|
592
435
|
devLog('4.10B Sync: Updating remote space to Round 3 merged tips...');
|
|
593
|
-
const senderPeerRemoteR4_Init = new SyncPeerWebSocketSender_V1({
|
|
594
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
595
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
596
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
597
|
-
});
|
|
598
|
-
const coordinatorRemoteR4_Init = new SyncSagaCoordinator();
|
|
599
|
-
await senderPeerRemoteR4_Init.initializeOpts({
|
|
600
|
-
localMetaspace: metaspace,
|
|
601
|
-
localSpace: remoteSpace,
|
|
602
|
-
senderIdentity: domainI,
|
|
603
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
604
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
605
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
606
|
-
targetAddrs: [domainAddr]
|
|
607
|
-
});
|
|
608
436
|
|
|
609
437
|
// Query remoteSpace for its latest tips to initiate sync
|
|
610
438
|
const alphaLatestAddrRemoteR4 = await metaspace.getLatestAddr({ addr: alpha_tjpAddr, space: remoteSpace });
|
|
@@ -619,27 +447,19 @@ export function init4_10bSyncButton(): void {
|
|
|
619
447
|
domainIbGibsRemoteR4.push(resGetBetaRemoteTipR4.ibGibs![0]);
|
|
620
448
|
}
|
|
621
449
|
|
|
622
|
-
|
|
450
|
+
await runSyncPassFromSpace({
|
|
623
451
|
domainIbGibs: domainIbGibsRemoteR4,
|
|
624
|
-
|
|
625
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
626
|
-
peer: senderPeerRemoteR4_Init,
|
|
627
|
-
localSpace: remoteSpace,
|
|
452
|
+
passLabel: 'Pull merged R3 tips to remoteSpace',
|
|
628
453
|
metaspace,
|
|
629
|
-
|
|
454
|
+
space: remoteSpace,
|
|
455
|
+
primarySpace: space,
|
|
456
|
+
domainI: debugState.domainI!,
|
|
457
|
+
masterSecret: 'test-sender-secret-phase4-10b'
|
|
630
458
|
});
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
// Fetch evolved identity (n=8)
|
|
635
|
-
domainLatestAddr = await metaspace.getLatestAddr({ ibGib: state.domainI_initial!, space: remoteSpace });
|
|
636
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space: remoteSpace });
|
|
637
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
638
|
-
await metaspace.put({ ibGib: domainI, space });
|
|
639
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space });
|
|
459
|
+
state.domainI_latest = debugState.domainI;
|
|
640
460
|
|
|
641
461
|
// Mutate alpha (fieldG) and beta (betaFieldC) in remote space
|
|
642
|
-
const remoteKV_R4 = await
|
|
462
|
+
const remoteKV_R4 = await new SyncSagaCoordinator().getKnowledgeMap({ space: remoteSpace, metaspace, domainIbGibs: [alpha_v0, state.r2_beta_v0_source] });
|
|
643
463
|
const alpha_tipAddr_R3_remote = remoteKV_R4[alpha_tjpAddr];
|
|
644
464
|
const beta_tipAddr_R3_remote = remoteKV_R4[beta_tjpAddr];
|
|
645
465
|
|
|
@@ -668,74 +488,26 @@ export function init4_10bSyncButton(): void {
|
|
|
668
488
|
|
|
669
489
|
// Sync remote edits to server
|
|
670
490
|
devLog('4.10B Sync: Pushing remote Round 4 edits to server...');
|
|
671
|
-
|
|
672
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
673
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
674
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
675
|
-
});
|
|
676
|
-
const coordinatorRemoteR4 = new SyncSagaCoordinator();
|
|
677
|
-
await senderPeerRemoteR4.initializeOpts({
|
|
678
|
-
localMetaspace: metaspace,
|
|
679
|
-
localSpace: remoteSpace,
|
|
680
|
-
senderIdentity: domainI,
|
|
681
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
682
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
683
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
684
|
-
targetAddrs: [domainAddr]
|
|
685
|
-
});
|
|
686
|
-
const syncSagaRemoteR4 = await coordinatorRemoteR4.sync({
|
|
491
|
+
await runSyncPassFromSpace({
|
|
687
492
|
domainIbGibs: [r4_alpha_v5_remote, r4_beta_v2_remote],
|
|
688
|
-
|
|
689
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
690
|
-
peer: senderPeerRemoteR4,
|
|
691
|
-
localSpace: remoteSpace,
|
|
493
|
+
passLabel: 'Push remote Round 4 edits',
|
|
692
494
|
metaspace,
|
|
693
|
-
|
|
495
|
+
space: remoteSpace,
|
|
496
|
+
primarySpace: space,
|
|
497
|
+
domainI: debugState.domainI!,
|
|
498
|
+
masterSecret: 'test-sender-secret-phase4-10b'
|
|
694
499
|
});
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
// Fetch evolved identity (n=9)
|
|
699
|
-
domainLatestAddr = await metaspace.getLatestAddr({ ibGib: state.domainI_initial!, space: remoteSpace });
|
|
700
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space: remoteSpace });
|
|
701
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
702
|
-
await metaspace.put({ ibGib: domainI, space });
|
|
703
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space });
|
|
500
|
+
state.domainI_latest = debugState.domainI;
|
|
704
501
|
|
|
705
502
|
// Sync Client Round 4 edits to server (merges client and server final states)
|
|
706
503
|
devLog('4.10B Sync: Running final Round 4 Client Sync (merging alpha, beta, and propagating gamma)...');
|
|
707
|
-
|
|
708
|
-
const senderPeerR4 = new SyncPeerWebSocketSender_V1({
|
|
709
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
710
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
711
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
712
|
-
});
|
|
713
|
-
const coordinatorR4 = new SyncSagaCoordinator();
|
|
714
|
-
await senderPeerR4.initializeOpts({
|
|
715
|
-
localMetaspace: metaspace,
|
|
716
|
-
localSpace: space,
|
|
717
|
-
senderIdentity: domainI,
|
|
718
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
719
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
720
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
721
|
-
targetAddrs: [domainAddr]
|
|
722
|
-
});
|
|
723
|
-
const syncSagaR4 = await coordinatorR4.sync({
|
|
504
|
+
await runSyncPass({
|
|
724
505
|
domainIbGibs: [r4_alpha_v7_source, r4_beta_v2_source, gamma_v0_source],
|
|
725
|
-
|
|
726
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-10b',
|
|
727
|
-
peer: senderPeerR4,
|
|
728
|
-
localSpace: space,
|
|
506
|
+
passLabel: 'Sync final Round 4 edits',
|
|
729
507
|
metaspace,
|
|
730
|
-
|
|
508
|
+
space
|
|
731
509
|
});
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
// Fetch final evolved identity (n=10)
|
|
735
|
-
domainLatestAddr = await metaspace.getLatestAddr({ ibGib: state.domainI_initial!, space: space });
|
|
736
|
-
resGetLatest = await metaspace.get({ addr: domainLatestAddr!, space });
|
|
737
|
-
domainI = resGetLatest.ibGibs![0] as KeystoneIbGib_V1;
|
|
738
|
-
state.domainI_latest = domainI;
|
|
510
|
+
state.domainI_latest = debugState.domainI;
|
|
739
511
|
|
|
740
512
|
devLog('✓ 4.10B Sync: All rounds of divergent edits and merges complete!');
|
|
741
513
|
btn.textContent = '✓ 4.10B Sync Complete';
|