@ibgib/space-gib 0.0.4 → 0.0.6
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 +7 -0
- package/dist/client/bootstrap.mjs +1 -1
- package/dist/client/chunk-734MMI4C.mjs +42 -0
- package/dist/client/chunk-734MMI4C.mjs.map +7 -0
- package/dist/client/{chunk-ZUEU37Z5.mjs → chunk-SMOZ2D5E.mjs} +170 -41
- package/dist/client/chunk-SMOZ2D5E.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 +338 -31
- package/dist/server/server.mjs.map +3 -3
- package/package.json +4 -4
- package/src/client/AUTO-GENERATED-version.mts +1 -1
- 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 +87 -26
- package/src/client/components/identity-manager/IMPLEMENTATION.md +10 -10
- package/src/client/components/identity-manager/identity-manager.css +39 -0
- package/src/client/components/identity-manager/identity-manager.html +20 -0
- package/src/client/components/identity-manager/identity-manager.mts +59 -0
- package/src/client/components/keystone-creator/keystone-creator.mts +88 -12
- 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/dist/client/chunk-NCXKCVYS.mjs +0 -42
- package/dist/client/chunk-NCXKCVYS.mjs.map +0 -7
- package/dist/client/chunk-ZUEU37Z5.mjs.map +0 -7
- package/dist/respec-gib.node.mjs +0 -5
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { extractErrorMsg, getUUID
|
|
1
|
+
import { extractErrorMsg, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
2
2
|
import { Factory_V1 as factory } from '@ibgib/ts-gib/dist/V1/factory.mjs';
|
|
3
3
|
import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
|
|
4
4
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
5
5
|
import { KeystoneIbGib_V1 } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
|
|
6
|
-
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
7
6
|
import { getGlobalMetaspace_waitIfNeeded } from "@ibgib/web-gib/dist/helpers.mjs";
|
|
8
7
|
import { mut8Timeline } from '@ibgib/core-gib/dist/timeline/timeline-api.mjs';
|
|
9
8
|
import { getTjpAddr } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
|
|
10
|
-
import { SyncPeerWebSocketSender_V1 } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs';
|
|
11
|
-
import { SyncSagaCoordinator } from '@ibgib/core-gib/dist/sync/sync-saga-coordinator.mjs';
|
|
12
|
-
import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
|
|
13
9
|
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';
|
|
14
|
-
import { SESSION_KEYSTONE_POLICY, getSpaceGibPoolConfig } from "../../common/keystone-policies.mjs";
|
|
15
10
|
import { SpaceGibApiBridge } from '../api/space-gib-api-bridge.mjs';
|
|
11
|
+
import { SyncSagaCoordinator } from '@ibgib/core-gib/dist/sync/sync-saga-coordinator.mjs';
|
|
16
12
|
|
|
17
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
debugState, devLog, lc,
|
|
15
|
+
setupDomainAndDelegateIdentities, runSyncPass, runSyncPassFromSpace, copyIdentitiesToSpace
|
|
16
|
+
} from './common.mjs';
|
|
18
17
|
|
|
19
18
|
interface Phase49State {
|
|
20
19
|
domainI_latest?: KeystoneIbGib_V1;
|
|
@@ -40,32 +39,19 @@ export function init4_9bSetupButton(): void {
|
|
|
40
39
|
const space = await metaspace.getLocalUserSpace({}) as any;
|
|
41
40
|
if (!space) { throw new Error("No default space."); }
|
|
42
41
|
|
|
43
|
-
const
|
|
44
|
-
const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
42
|
+
const apiBridge = new SpaceGibApiBridge();
|
|
45
43
|
|
|
46
|
-
// 1.
|
|
47
|
-
|
|
44
|
+
// 1. Create domain + delegate identities (DRY helper)
|
|
45
|
+
await setupDomainAndDelegateIdentities({
|
|
48
46
|
masterSecret: 'test-sender-secret-phase4-9b',
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
metaspace,
|
|
54
|
-
space,
|
|
55
|
-
frameDetails: { client: 'space-gib-web-dev', timestamp: getTimestamp() }
|
|
47
|
+
syncSalt: 'senderidentitysyncsaltphase4-9b',
|
|
48
|
+
manageSalt: 'senderidentitymanagesaltphase4-9b',
|
|
49
|
+
metaspace, space, apiBridge,
|
|
50
|
+
phaseText: '4.9B'
|
|
56
51
|
});
|
|
52
|
+
const domainI = debugState.domainI!;
|
|
57
53
|
state.domainI_latest = domainI;
|
|
58
|
-
let domainI_latest: any = domainI;
|
|
59
54
|
const domainAddr = getIbGibAddr({ ibGib: domainI });
|
|
60
|
-
devLog(`4.9B Setup: ✓ Created identity: ${domainAddr}`);
|
|
61
|
-
|
|
62
|
-
// Register on server
|
|
63
|
-
const apiBridge = new SpaceGibApiBridge();
|
|
64
|
-
const resGenesis = await apiBridge.postGenesisKeystone(domainI);
|
|
65
|
-
if (!resGenesis.success) {
|
|
66
|
-
throw new Error(`Server rejected genesis domain keystone: ${resGenesis.message}`);
|
|
67
|
-
}
|
|
68
|
-
devLog('4.9B Setup: ✓ Identity registered on server.');
|
|
69
55
|
|
|
70
56
|
// 2. Create the divergent "remote" space
|
|
71
57
|
devLog('4.9B Setup: Creating temporary remote space...');
|
|
@@ -78,9 +64,8 @@ export function init4_9bSetupButton(): void {
|
|
|
78
64
|
}) as any;
|
|
79
65
|
await remoteSpace.initialized;
|
|
80
66
|
|
|
81
|
-
// Copy user identity to remote space
|
|
82
|
-
await
|
|
83
|
-
await metaspace.registerNewIbGib({ ibGib: domainI, space: remoteSpace });
|
|
67
|
+
// Copy user identity and delegate to remote space
|
|
68
|
+
await copyIdentitiesToSpace({ domainI, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
84
69
|
|
|
85
70
|
// 3. Seed common history root -> v1 (with initial text) locally
|
|
86
71
|
const resRoot = await factory.firstGen({
|
|
@@ -103,48 +88,16 @@ export function init4_9bSetupButton(): void {
|
|
|
103
88
|
|
|
104
89
|
// 5. Initial sync of testRoot to the server so server has it
|
|
105
90
|
devLog('4.9B Setup: Syncing testRoot to server...');
|
|
106
|
-
|
|
107
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
108
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
109
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
110
|
-
});
|
|
111
|
-
const coordinatorInit = new SyncSagaCoordinator();
|
|
112
|
-
await senderPeerInit.initializeOpts({
|
|
113
|
-
localMetaspace: metaspace,
|
|
114
|
-
localSpace: space,
|
|
115
|
-
senderIdentity: domainI,
|
|
116
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
117
|
-
sagaId: await getUUID(),
|
|
118
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
119
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
120
|
-
targetAddrs: [domainAddr]
|
|
121
|
-
});
|
|
122
|
-
const syncSagaInit = await coordinatorInit.sync({
|
|
91
|
+
await runSyncPass({
|
|
123
92
|
domainIbGibs: [testRoot],
|
|
124
|
-
|
|
125
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
126
|
-
peer: senderPeerInit,
|
|
127
|
-
localSpace: space,
|
|
93
|
+
passLabel: 'Seed testRoot',
|
|
128
94
|
metaspace,
|
|
129
|
-
|
|
95
|
+
space
|
|
130
96
|
});
|
|
131
|
-
await syncSagaInit.done;
|
|
132
97
|
devLog('4.9B Setup: ✓ Seeding complete on server.');
|
|
133
98
|
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
if (!domainLatestAddr) { throw new Error("Could not find latest evolved identity address in local space."); }
|
|
137
|
-
const resGetLatest = await metaspace.get({ addr: domainLatestAddr, space });
|
|
138
|
-
if (!resGetLatest.success || !resGetLatest.ibGibs || resGetLatest.ibGibs.length === 0) {
|
|
139
|
-
throw new Error("Could not find latest evolved identity in local space.");
|
|
140
|
-
}
|
|
141
|
-
domainI_latest = resGetLatest.ibGibs[0] as KeystoneIbGib_V1;
|
|
142
|
-
state.domainI_latest = domainI_latest;
|
|
143
|
-
devLog(`4.9B Setup: ✓ Fetched evolved identity: ${domainLatestAddr}`);
|
|
144
|
-
|
|
145
|
-
// Copy evolved user identity to remote space
|
|
146
|
-
await metaspace.put({ ibGib: domainI_latest, space: remoteSpace });
|
|
147
|
-
await metaspace.registerNewIbGib({ ibGib: domainI_latest, space: remoteSpace });
|
|
99
|
+
// Copy evolved delegate and domain tip to remoteSpace
|
|
100
|
+
await copyIdentitiesToSpace({ domainI: debugState.domainI!, metaspace, fromSpace: space, toSpace: remoteSpace });
|
|
148
101
|
|
|
149
102
|
// 6. Create Divergence:
|
|
150
103
|
// Client (default space) appends to end
|
|
@@ -174,46 +127,17 @@ export function init4_9bSetupButton(): void {
|
|
|
174
127
|
|
|
175
128
|
// 7. Sync remote prepended edit to server, so server tip becomes the prepended edit
|
|
176
129
|
devLog('4.9B Setup: Pushing remote prepended edit to server...');
|
|
177
|
-
|
|
178
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
179
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
180
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
181
|
-
});
|
|
182
|
-
const coordinatorRemote = new SyncSagaCoordinator();
|
|
183
|
-
await senderPeerRemote.initializeOpts({
|
|
184
|
-
localMetaspace: metaspace,
|
|
185
|
-
localSpace: remoteSpace,
|
|
186
|
-
senderIdentity: domainI_latest,
|
|
187
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
188
|
-
sagaId: await getUUID(),
|
|
189
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
190
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
191
|
-
targetAddrs: [domainAddr]
|
|
192
|
-
});
|
|
193
|
-
const syncSagaRemote = await coordinatorRemote.sync({
|
|
130
|
+
await runSyncPassFromSpace({
|
|
194
131
|
domainIbGibs: [alpha_v1_remote],
|
|
195
|
-
|
|
196
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
197
|
-
peer: senderPeerRemote,
|
|
198
|
-
localSpace: remoteSpace,
|
|
132
|
+
passLabel: 'Push remote prepended edit',
|
|
199
133
|
metaspace,
|
|
200
|
-
|
|
134
|
+
space: remoteSpace,
|
|
135
|
+
primarySpace: space,
|
|
136
|
+
domainI: debugState.domainI!,
|
|
137
|
+
masterSecret: 'test-sender-secret-phase4-9b'
|
|
201
138
|
});
|
|
202
|
-
|
|
203
|
-
devLog('4.9B Setup: ✓ Server tip is now the prepended edit.');
|
|
204
|
-
|
|
205
|
-
// Fetch evolved user identity from remote space (now at n=3)
|
|
206
|
-
const domainLatestAddrRemote = await metaspace.getLatestAddr({ ibGib: domainI, space: remoteSpace });
|
|
207
|
-
if (!domainLatestAddrRemote) { throw new Error("Could not find latest evolved identity address in remote space."); }
|
|
208
|
-
const resGetLatestRemote = await metaspace.get({ addr: domainLatestAddrRemote, space: remoteSpace });
|
|
209
|
-
if (!resGetLatestRemote.success || !resGetLatestRemote.ibGibs || resGetLatestRemote.ibGibs.length === 0) {
|
|
210
|
-
throw new Error("Could not find latest evolved identity in remote space.");
|
|
211
|
-
}
|
|
212
|
-
const domainI_latestRemote = resGetLatestRemote.ibGibs[0] as KeystoneIbGib_V1;
|
|
213
|
-
await metaspace.put({ ibGib: domainI_latestRemote, space });
|
|
214
|
-
await metaspace.registerNewIbGib({ ibGib: domainI_latestRemote, space });
|
|
215
|
-
state.domainI_latest = domainI_latestRemote;
|
|
216
|
-
devLog(`4.9B Setup: ✓ Copied evolved identity tip (n=3) back to default space: ${domainLatestAddrRemote}`);
|
|
139
|
+
state.domainI_latest = debugState.domainI;
|
|
140
|
+
devLog('4.9B Setup: ✓ Server tip is now the prepended edit. Evolved identity copied back.');
|
|
217
141
|
|
|
218
142
|
devLog('✓ 4.9B Setup Complete! Ready for 4.9B Sync.');
|
|
219
143
|
btn.textContent = '✓ 4.9B Setup Complete';
|
|
@@ -245,45 +169,17 @@ export function init4_9bSyncButton(): void {
|
|
|
245
169
|
return;
|
|
246
170
|
}
|
|
247
171
|
|
|
248
|
-
const domainAddr = getIbGibAddr({ ibGib: domainI });
|
|
249
172
|
const metaspace = await getGlobalMetaspace_waitIfNeeded();
|
|
250
173
|
const space = await metaspace.getLocalUserSpace({}) as any;
|
|
251
174
|
if (!space) { throw new Error("No default space."); }
|
|
252
175
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const senderPeer = new SyncPeerWebSocketSender_V1({
|
|
256
|
-
classname: 'SyncPeerWebSocketSender_V1',
|
|
257
|
-
httpEvolveUrl: `${location.protocol}//${location.host}/api/keystone/evolve/${encodeURIComponent(domainAddr)}`,
|
|
258
|
-
wsUrl: `${protocol}//${location.host}/api/sync/ws/${encodeURIComponent(domainAddr)}`
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
const coordinator = new SyncSagaCoordinator();
|
|
262
|
-
const sagaId = await getUUID();
|
|
263
|
-
|
|
264
|
-
await senderPeer.initializeOpts({
|
|
265
|
-
localMetaspace: metaspace,
|
|
266
|
-
localSpace: space,
|
|
267
|
-
senderIdentity: domainI,
|
|
268
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
269
|
-
sagaId,
|
|
270
|
-
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
271
|
-
sessionSyncPoolConfig: SESSION_KEYSTONE_POLICY.DEFAULT_POOL as any,
|
|
272
|
-
targetAddrs: [domainAddr]
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
// Run Sync. Client has appended text edit, server has prepended text edit.
|
|
276
|
-
// This will trigger optimistic graft merge using LCS algorithm on the text field!
|
|
277
|
-
const syncSaga = await coordinator.sync({
|
|
176
|
+
await runSyncPass({
|
|
278
177
|
domainIbGibs: [targetAlphaV1Source],
|
|
279
|
-
|
|
280
|
-
fnSenderSecret: async () => 'test-sender-secret-phase4-9b',
|
|
281
|
-
peer: senderPeer,
|
|
282
|
-
localSpace: space,
|
|
178
|
+
passLabel: 'Sync divergent edit and merge',
|
|
283
179
|
metaspace,
|
|
284
|
-
|
|
180
|
+
space
|
|
285
181
|
});
|
|
286
|
-
|
|
182
|
+
state.domainI_latest = debugState.domainI;
|
|
287
183
|
|
|
288
184
|
devLog('✓ 4.9B Sync Execution Complete! Ready for 4.9B Check.');
|
|
289
185
|
btn.textContent = '✓ 4.9B Sync Run';
|
|
@@ -264,6 +264,7 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
264
264
|
localMetaspace: metaspace,
|
|
265
265
|
localSpace: space,
|
|
266
266
|
senderIdentity: domainI,
|
|
267
|
+
senderDomainAddr: domainAddr,
|
|
267
268
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
268
269
|
sagaId,
|
|
269
270
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -273,7 +274,10 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
273
274
|
|
|
274
275
|
let syncSaga = await coordinator.sync({
|
|
275
276
|
domainIbGibs: [c1],
|
|
276
|
-
|
|
277
|
+
senderIdentityInfo: {
|
|
278
|
+
senderIdentity: domainI,
|
|
279
|
+
senderDomainAddr: domainAddr,
|
|
280
|
+
},
|
|
277
281
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
278
282
|
peer: senderPeer,
|
|
279
283
|
localSpace: space,
|
|
@@ -306,6 +310,7 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
306
310
|
localMetaspace: metaspace,
|
|
307
311
|
localSpace: space,
|
|
308
312
|
senderIdentity: senderIdentityEvolved1,
|
|
313
|
+
senderDomainAddr: domainAddr,
|
|
309
314
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
310
315
|
sagaId,
|
|
311
316
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -315,7 +320,10 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
315
320
|
|
|
316
321
|
syncSaga = await coordinator.sync({
|
|
317
322
|
domainIbGibs: [c1],
|
|
318
|
-
|
|
323
|
+
senderIdentityInfo: {
|
|
324
|
+
senderIdentity: senderIdentityEvolved1,
|
|
325
|
+
senderDomainAddr: domainAddr,
|
|
326
|
+
},
|
|
319
327
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
320
328
|
peer: senderPeer,
|
|
321
329
|
localSpace: space,
|
|
@@ -362,6 +370,7 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
362
370
|
localMetaspace: metaspace,
|
|
363
371
|
localSpace: space,
|
|
364
372
|
senderIdentity: senderIdentityEvolved2,
|
|
373
|
+
senderDomainAddr: domainAddr,
|
|
365
374
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
366
375
|
sagaId,
|
|
367
376
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -371,7 +380,10 @@ async function performPhaseSync4_2b(): Promise<void> {
|
|
|
371
380
|
|
|
372
381
|
syncSaga = await coordinator.sync({
|
|
373
382
|
domainIbGibs: [c2],
|
|
374
|
-
|
|
383
|
+
senderIdentityInfo: {
|
|
384
|
+
senderIdentity: senderIdentityEvolved2,
|
|
385
|
+
senderDomainAddr: domainAddr,
|
|
386
|
+
},
|
|
375
387
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
376
388
|
peer: senderPeer,
|
|
377
389
|
localSpace: space,
|
|
@@ -682,6 +694,7 @@ async function performPhaseSync4_3b(): Promise<void> {
|
|
|
682
694
|
localMetaspace: metaspace,
|
|
683
695
|
localSpace: space,
|
|
684
696
|
senderIdentity: domainI,
|
|
697
|
+
senderDomainAddr: domainAddr,
|
|
685
698
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
686
699
|
sagaId,
|
|
687
700
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -691,7 +704,10 @@ async function performPhaseSync4_3b(): Promise<void> {
|
|
|
691
704
|
|
|
692
705
|
let syncSaga = await coordinator.sync({
|
|
693
706
|
domainIbGibs: [targetV1],
|
|
694
|
-
|
|
707
|
+
senderIdentityInfo: {
|
|
708
|
+
senderIdentity: domainI,
|
|
709
|
+
senderDomainAddr: domainAddr,
|
|
710
|
+
},
|
|
695
711
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
696
712
|
peer: senderPeer,
|
|
697
713
|
localSpace: space,
|
|
@@ -733,6 +749,7 @@ async function performPhaseSync4_3b(): Promise<void> {
|
|
|
733
749
|
localMetaspace: metaspace,
|
|
734
750
|
localSpace: space,
|
|
735
751
|
senderIdentity: senderIdentityEvolved1,
|
|
752
|
+
senderDomainAddr: domainAddr,
|
|
736
753
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
737
754
|
sagaId,
|
|
738
755
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -742,7 +759,10 @@ async function performPhaseSync4_3b(): Promise<void> {
|
|
|
742
759
|
|
|
743
760
|
syncSaga = await coordinator.sync({
|
|
744
761
|
domainIbGibs: [r1_v2],
|
|
745
|
-
|
|
762
|
+
senderIdentityInfo: {
|
|
763
|
+
senderIdentity: senderIdentityEvolved1,
|
|
764
|
+
senderDomainAddr: domainAddr,
|
|
765
|
+
},
|
|
746
766
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
747
767
|
peer: senderPeer,
|
|
748
768
|
localSpace: space,
|
|
@@ -1068,6 +1088,7 @@ async function performPhaseSync4_4b(): Promise<void> {
|
|
|
1068
1088
|
localMetaspace: metaspace,
|
|
1069
1089
|
localSpace: space,
|
|
1070
1090
|
senderIdentity: domainI,
|
|
1091
|
+
senderDomainAddr: domainAddr,
|
|
1071
1092
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
1072
1093
|
sagaId,
|
|
1073
1094
|
sessionConnectPoolConfig: SESSION_KEYSTONE_POLICY.CONNECT_POOL as any,
|
|
@@ -1077,7 +1098,10 @@ async function performPhaseSync4_4b(): Promise<void> {
|
|
|
1077
1098
|
|
|
1078
1099
|
const syncSaga = await coordinator.sync({
|
|
1079
1100
|
domainIbGibs: [targetV2],
|
|
1080
|
-
|
|
1101
|
+
senderIdentityInfo: {
|
|
1102
|
+
senderIdentity: domainI,
|
|
1103
|
+
senderDomainAddr: domainAddr,
|
|
1104
|
+
},
|
|
1081
1105
|
fnSenderSecret: async () => debugState.domainIMasterSecret!,
|
|
1082
1106
|
peer: senderPeer,
|
|
1083
1107
|
localSpace: space,
|
package/src/client/dev-tools.mts
CHANGED
|
@@ -34,6 +34,24 @@ export { devLog, debugState };
|
|
|
34
34
|
export function initDevTools(): void {
|
|
35
35
|
const lc_fn = `${lc}[initDevTools]`;
|
|
36
36
|
try {
|
|
37
|
+
const selectEl = document.getElementById('dev-tools-row-select') as HTMLSelectElement | null;
|
|
38
|
+
if (selectEl) {
|
|
39
|
+
selectEl.addEventListener('change', () => {
|
|
40
|
+
const val = selectEl.value;
|
|
41
|
+
const rows = document.querySelectorAll('.dev-panel-row-container') as NodeListOf<HTMLElement>;
|
|
42
|
+
rows.forEach(row => {
|
|
43
|
+
const rowId = row.getAttribute('data-row-id');
|
|
44
|
+
if (val === 'all' || rowId === val) {
|
|
45
|
+
row.style.display = 'flex';
|
|
46
|
+
} else {
|
|
47
|
+
row.style.display = 'none';
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
// Trigger change event to initialize display:
|
|
52
|
+
selectEl.dispatchEvent(new Event('change'));
|
|
53
|
+
}
|
|
54
|
+
|
|
37
55
|
initPrintStateButton();
|
|
38
56
|
initCreateDomainKeystoneButton();
|
|
39
57
|
initWsTestButton();
|
package/src/client/index.html
CHANGED
|
@@ -104,8 +104,29 @@
|
|
|
104
104
|
<section class="dev-panel" id="dev-panel" aria-label="Developer tools">
|
|
105
105
|
<h2 class="dev-panel-title">Dev Tools</h2>
|
|
106
106
|
|
|
107
|
+
<div class="dev-panel-select-container">
|
|
108
|
+
<label for="dev-tools-row-select" style="color: var(--clr-warn); font-size: 0.9rem; font-weight: 500;">Select Phase:</label>
|
|
109
|
+
<select id="dev-tools-row-select" class="dev-select">
|
|
110
|
+
<option value="all">Show All</option>
|
|
111
|
+
<option value="00">Row 00 (POC)</option>
|
|
112
|
+
<option value="1B">Row 1B (Phase 1B)</option>
|
|
113
|
+
<option value="2B">Row 2B (Phase 2B)</option>
|
|
114
|
+
<option value="3B">Row 3B (Phase 3B)</option>
|
|
115
|
+
<option value="4.1B">Row 4.1B (Phase 4.1B)</option>
|
|
116
|
+
<option value="4.2B">Row 4.2B (Phase 4.2B)</option>
|
|
117
|
+
<option value="4.3B">Row 4.3B (Phase 4.3B)</option>
|
|
118
|
+
<option value="4.4B">Row 4.4B (Phase 4.4B)</option>
|
|
119
|
+
<option value="4.5B">Row 4.5B (Phase 4.5B)</option>
|
|
120
|
+
<option value="4.6B">Row 4.6B (Phase 4.6B)</option>
|
|
121
|
+
<option value="4.7B">Row 4.7B (Phase 4.7B)</option>
|
|
122
|
+
<option value="4.8B">Row 4.8B (Phase 4.8B)</option>
|
|
123
|
+
<option value="4.9B">Row 4.9B (Phase 4.9B)</option>
|
|
124
|
+
<option value="4.10B">Row 4.10B (Phase 4.10B)</option>
|
|
125
|
+
</select>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
107
128
|
<!-- Row 00: Raw POC buttons -->
|
|
108
|
-
<div class="dev-panel-row-container">
|
|
129
|
+
<div class="dev-panel-row-container" data-row-id="00">
|
|
109
130
|
<span class="dev-panel-row-label">00</span>
|
|
110
131
|
<div class="dev-panel-row">
|
|
111
132
|
<button id="btn-print-dev-state" class="dev-btn">Print Dev State</button>
|
|
@@ -119,7 +140,7 @@
|
|
|
119
140
|
</div>
|
|
120
141
|
|
|
121
142
|
<!-- Row 1B: Phase 1B -->
|
|
122
|
-
<div class="dev-panel-row-container">
|
|
143
|
+
<div class="dev-panel-row-container" data-row-id="1B">
|
|
123
144
|
<span class="dev-panel-row-label">1B</span>
|
|
124
145
|
<div class="dev-panel-row">
|
|
125
146
|
<button id="btn-1b-setup" class="dev-btn">1B Setup</button>
|
|
@@ -129,7 +150,7 @@
|
|
|
129
150
|
</div>
|
|
130
151
|
|
|
131
152
|
<!-- Row 2B: Phase 2B -->
|
|
132
|
-
<div class="dev-panel-row-container">
|
|
153
|
+
<div class="dev-panel-row-container" data-row-id="2B">
|
|
133
154
|
<span class="dev-panel-row-label">2B</span>
|
|
134
155
|
<div class="dev-panel-row">
|
|
135
156
|
<button id="btn-2b-setup" class="dev-btn">2B Setup</button>
|
|
@@ -139,7 +160,7 @@
|
|
|
139
160
|
</div>
|
|
140
161
|
|
|
141
162
|
<!-- Row 3B: Phase 3B -->
|
|
142
|
-
<div class="dev-panel-row-container">
|
|
163
|
+
<div class="dev-panel-row-container" data-row-id="3B">
|
|
143
164
|
<span class="dev-panel-row-label">3B</span>
|
|
144
165
|
<div class="dev-panel-row">
|
|
145
166
|
<button id="btn-3b-setup" class="dev-btn">3B Setup</button>
|
|
@@ -149,7 +170,7 @@
|
|
|
149
170
|
</div>
|
|
150
171
|
|
|
151
172
|
<!-- Row 4.1B: Phase 4.1B -->
|
|
152
|
-
<div class="dev-panel-row-container">
|
|
173
|
+
<div class="dev-panel-row-container" data-row-id="4.1B">
|
|
153
174
|
<span class="dev-panel-row-label">4.1B</span>
|
|
154
175
|
<div class="dev-panel-row">
|
|
155
176
|
<button id="btn-4-1b-setup" class="dev-btn">4.1B Setup</button>
|
|
@@ -159,7 +180,7 @@
|
|
|
159
180
|
</div>
|
|
160
181
|
|
|
161
182
|
<!-- Row 4.2B: Phase 4.2B -->
|
|
162
|
-
<div class="dev-panel-row-container">
|
|
183
|
+
<div class="dev-panel-row-container" data-row-id="4.2B">
|
|
163
184
|
<span class="dev-panel-row-label">4.2B</span>
|
|
164
185
|
<div class="dev-panel-row">
|
|
165
186
|
<button id="btn-4-2b-setup" class="dev-btn">4.2B Setup</button>
|
|
@@ -169,7 +190,7 @@
|
|
|
169
190
|
</div>
|
|
170
191
|
|
|
171
192
|
<!-- Row 4.3B: Phase 4.3B -->
|
|
172
|
-
<div class="dev-panel-row-container">
|
|
193
|
+
<div class="dev-panel-row-container" data-row-id="4.3B">
|
|
173
194
|
<span class="dev-panel-row-label">4.3B</span>
|
|
174
195
|
<div class="dev-panel-row">
|
|
175
196
|
<button id="btn-4-3b-setup" class="dev-btn">4.3B Setup</button>
|
|
@@ -179,7 +200,7 @@
|
|
|
179
200
|
</div>
|
|
180
201
|
|
|
181
202
|
<!-- Row 4.4B: Phase 4.4B -->
|
|
182
|
-
<div class="dev-panel-row-container">
|
|
203
|
+
<div class="dev-panel-row-container" data-row-id="4.4B">
|
|
183
204
|
<span class="dev-panel-row-label">4.4B</span>
|
|
184
205
|
<div class="dev-panel-row">
|
|
185
206
|
<button id="btn-4-4b-setup" class="dev-btn">4.4B Setup</button>
|
|
@@ -189,7 +210,7 @@
|
|
|
189
210
|
</div>
|
|
190
211
|
|
|
191
212
|
<!-- Row 4.5B: Phase 4.5B -->
|
|
192
|
-
<div class="dev-panel-row-container">
|
|
213
|
+
<div class="dev-panel-row-container" data-row-id="4.5B">
|
|
193
214
|
<span class="dev-panel-row-label">4.5B</span>
|
|
194
215
|
<div class="dev-panel-row">
|
|
195
216
|
<button id="btn-4-5b-setup" class="dev-btn">4.5B Setup</button>
|
|
@@ -199,7 +220,7 @@
|
|
|
199
220
|
</div>
|
|
200
221
|
|
|
201
222
|
<!-- Row 4.6B: Phase 4.6B -->
|
|
202
|
-
<div class="dev-panel-row-container">
|
|
223
|
+
<div class="dev-panel-row-container" data-row-id="4.6B">
|
|
203
224
|
<span class="dev-panel-row-label">4.6B</span>
|
|
204
225
|
<div class="dev-panel-row">
|
|
205
226
|
<button id="btn-4-6b-setup" class="dev-btn">4.6B Setup</button>
|
|
@@ -209,7 +230,7 @@
|
|
|
209
230
|
</div>
|
|
210
231
|
|
|
211
232
|
<!-- Row 4.7B: Phase 4.7B -->
|
|
212
|
-
<div class="dev-panel-row-container">
|
|
233
|
+
<div class="dev-panel-row-container" data-row-id="4.7B">
|
|
213
234
|
<span class="dev-panel-row-label">4.7B</span>
|
|
214
235
|
<div class="dev-panel-row">
|
|
215
236
|
<button id="btn-4-7b-setup" class="dev-btn">4.7B Setup</button>
|
|
@@ -219,7 +240,7 @@
|
|
|
219
240
|
</div>
|
|
220
241
|
|
|
221
242
|
<!-- Row 4.8B: Phase 4.8B -->
|
|
222
|
-
<div class="dev-panel-row-container">
|
|
243
|
+
<div class="dev-panel-row-container" data-row-id="4.8B">
|
|
223
244
|
<span class="dev-panel-row-label">4.8B</span>
|
|
224
245
|
<div class="dev-panel-row">
|
|
225
246
|
<button id="btn-4-8b-setup" class="dev-btn">4.8B Setup</button>
|
|
@@ -229,7 +250,7 @@
|
|
|
229
250
|
</div>
|
|
230
251
|
|
|
231
252
|
<!-- Row 4.9B: Phase 4.9B -->
|
|
232
|
-
<div class="dev-panel-row-container">
|
|
253
|
+
<div class="dev-panel-row-container" data-row-id="4.9B">
|
|
233
254
|
<span class="dev-panel-row-label">4.9B</span>
|
|
234
255
|
<div class="dev-panel-row">
|
|
235
256
|
<button id="btn-4-9b-setup" class="dev-btn">4.9B Setup</button>
|
|
@@ -239,7 +260,7 @@
|
|
|
239
260
|
</div>
|
|
240
261
|
|
|
241
262
|
<!-- Row 4.10B: Phase 4.10B -->
|
|
242
|
-
<div class="dev-panel-row-container">
|
|
263
|
+
<div class="dev-panel-row-container" data-row-id="4.10B">
|
|
243
264
|
<span class="dev-panel-row-label">4.10B</span>
|
|
244
265
|
<div class="dev-panel-row">
|
|
245
266
|
<button id="btn-4-10b-setup" class="dev-btn">4.10B Setup</button>
|
package/src/client/style.css
CHANGED
|
@@ -702,7 +702,8 @@ body::before {
|
|
|
702
702
|
|
|
703
703
|
/* ── Dev Tools Panel (diagnostic only — remove when WS sync confirmed) ── */
|
|
704
704
|
.dev-panel {
|
|
705
|
-
max-width:
|
|
705
|
+
max-width: 100%;
|
|
706
|
+
width: 100%;
|
|
706
707
|
margin: 0 auto;
|
|
707
708
|
padding: 1.5rem;
|
|
708
709
|
border: 1px dashed rgba(255, 204, 68, 0.35);
|
|
@@ -712,8 +713,7 @@ body::before {
|
|
|
712
713
|
flex-direction: column;
|
|
713
714
|
gap: 1rem;
|
|
714
715
|
margin-bottom: 3rem;
|
|
715
|
-
max-height:
|
|
716
|
-
overflow-y: auto;
|
|
716
|
+
max-height: none;
|
|
717
717
|
}
|
|
718
718
|
|
|
719
719
|
.dev-panel-title {
|
|
@@ -725,6 +725,30 @@ body::before {
|
|
|
725
725
|
opacity: 0.7;
|
|
726
726
|
}
|
|
727
727
|
|
|
728
|
+
.dev-panel-select-container {
|
|
729
|
+
display: flex;
|
|
730
|
+
align-items: center;
|
|
731
|
+
gap: 0.75rem;
|
|
732
|
+
margin-bottom: 0.5rem;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
.dev-select {
|
|
736
|
+
background: var(--clr-bg-surface);
|
|
737
|
+
color: var(--clr-text-primary);
|
|
738
|
+
border: 1px solid rgba(255, 204, 68, 0.4);
|
|
739
|
+
padding: 0.5rem 1rem;
|
|
740
|
+
border-radius: var(--radius-sm);
|
|
741
|
+
font-family: var(--font-sans);
|
|
742
|
+
outline: none;
|
|
743
|
+
cursor: pointer;
|
|
744
|
+
font-size: 0.9rem;
|
|
745
|
+
transition: border-color var(--t-fast);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.dev-select:hover {
|
|
749
|
+
border-color: rgba(255, 204, 68, 0.7);
|
|
750
|
+
}
|
|
751
|
+
|
|
728
752
|
.dev-panel-row {
|
|
729
753
|
display: flex;
|
|
730
754
|
gap: 0.75rem;
|
|
@@ -763,11 +787,11 @@ body::before {
|
|
|
763
787
|
border: 1px solid var(--clr-border);
|
|
764
788
|
border-radius: var(--radius-sm);
|
|
765
789
|
padding: 0.75rem 1rem;
|
|
766
|
-
max-height:
|
|
790
|
+
max-height: 800px;
|
|
767
791
|
overflow-y: auto;
|
|
768
792
|
white-space: pre-wrap;
|
|
769
793
|
word-break: break-all;
|
|
770
|
-
min-height:
|
|
794
|
+
min-height: 10rem;
|
|
771
795
|
}
|
|
772
796
|
|
|
773
797
|
/* dev tools row styles */
|
package/src/client/types.mts
CHANGED
|
@@ -44,6 +44,8 @@ export interface SpaceShimGlobalInfo {
|
|
|
44
44
|
cwd: string;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
import { KeystoneIbGib_V1 } from "@ibgib/core-gib/dist/keystone/keystone-types.mjs";
|
|
48
|
+
|
|
47
49
|
// ---------------------------------------------------------------------------
|
|
48
50
|
// Identity (optional)
|
|
49
51
|
// ---------------------------------------------------------------------------
|
|
@@ -51,7 +53,8 @@ export interface SpaceShimGlobalInfo {
|
|
|
51
53
|
export interface IbGibIdentityContext {
|
|
52
54
|
resolved: boolean;
|
|
53
55
|
authenticated: boolean;
|
|
54
|
-
|
|
56
|
+
domainIdentity?: KeystoneIbGib_V1;
|
|
57
|
+
syncDelegateIdentity?: KeystoneIbGib_V1;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
// ---------------------------------------------------------------------------
|