@ibgib/node-gib 0.0.19 → 0.0.20

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 (28) hide show
  1. package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.d.mts +39 -0
  2. package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.d.mts.map +1 -0
  3. package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs +197 -0
  4. package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs.map +1 -0
  5. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -1
  6. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +1 -0
  7. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
  8. package/dist/serve-gib/identity-index/identity-index-service.d.mts +5 -1
  9. package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
  10. package/dist/serve-gib/identity-index/identity-index-service.mjs +10 -1
  11. package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
  12. package/dist/serve-gib/index.d.mts +1 -0
  13. package/dist/serve-gib/index.d.mts.map +1 -1
  14. package/dist/serve-gib/index.mjs +3 -0
  15. package/dist/serve-gib/index.mjs.map +1 -1
  16. package/dist/serve-gib/path-constants.d.mts +4 -0
  17. package/dist/serve-gib/path-constants.d.mts.map +1 -1
  18. package/dist/serve-gib/path-constants.mjs +4 -0
  19. package/dist/serve-gib/path-constants.mjs.map +1 -1
  20. package/e2e/identity-custodian-lifecycle.e2e.md +37 -0
  21. package/package.json +2 -2
  22. package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts +245 -0
  23. package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.respec.mts +167 -0
  24. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +2 -2
  25. package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +1 -0
  26. package/src/serve-gib/identity-index/identity-index-service.mts +11 -1
  27. package/src/serve-gib/index.mts +3 -0
  28. package/src/serve-gib/path-constants.mts +5 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
3
+ *
4
+ * POST /api/identity/custodian/add-master-password
5
+ *
6
+ * Single-turn sovereignty elevation endpoint for purely custodial identities.
7
+ * Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
8
+ * the provided `newManagePool` config matches the existing custodian pool config,
9
+ * evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
10
+ * installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
11
+ */
12
+ import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
13
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
14
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
15
+ import { SsoProviderId } from '../../../../identity/sso/sso-types.mjs';
16
+ export interface CustodianAddMasterPasswordRequestBody {
17
+ primaryTjpAddr: string;
18
+ newManagePool: KeystoneChallengePool;
19
+ providerId?: SsoProviderId;
20
+ code?: string;
21
+ redirectUri?: string;
22
+ email?: string;
23
+ }
24
+ export interface CustodianAddMasterPasswordResponseBody {
25
+ success: boolean;
26
+ primaryTjpAddr: string;
27
+ primaryKeystone: any;
28
+ message?: string;
29
+ }
30
+ /**
31
+ * POST /api/identity/custodian/add-master-password
32
+ */
33
+ export declare class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase<undefined, undefined> {
34
+ protected lc: string;
35
+ protected method: ServeGibHttpMethod;
36
+ protected regex: RegExp;
37
+ protected handleRouteImpl(reqCtx: RequestContext<undefined, undefined>): Promise<ResponseResult | undefined>;
38
+ }
39
+ //# sourceMappingURL=keystone-custodian-add-master-password.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-custodian-add-master-password.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAOzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAcvE,MAAM,WAAW,qCAAqC;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sCAAsC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,yCAA0C,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IACpG,UAAmB,EAAE,EAAE,MAAM,CAAyD;IACtF,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAA2D;IAEnF,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA4KrC;CACJ"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
3
+ *
4
+ * POST /api/identity/custodian/add-master-password
5
+ *
6
+ * Single-turn sovereignty elevation endpoint for purely custodial identities.
7
+ * Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
8
+ * the provided `newManagePool` config matches the existing custodian pool config,
9
+ * evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
10
+ * installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
11
+ */
12
+ import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
13
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
14
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
15
+ import { KEYSTONE_VERB_MANAGE, POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
16
+ import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
17
+ import { validateEmail } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
18
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
19
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
20
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
21
+ import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
22
+ import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
23
+ import { normalizeEmail } from '../../../identity-index/identity-index-helpers.mjs';
24
+ import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
25
+ import { SsoCustodianService } from '../../../../identity/sso/sso-custodian-service.mjs';
26
+ import { getPendingStagingDir, getPendingTjpHash, verifyPendingCode } from '../../../../email/verify/email-verify-helpers.mjs';
27
+ const logalot = GLOBAL_LOG_A_LOT || true;
28
+ let custodian;
29
+ function getCustodian() {
30
+ if (!custodian) {
31
+ const config = loadSsoServerConfig();
32
+ custodian = new SsoCustodianService(config);
33
+ }
34
+ return custodian;
35
+ }
36
+ /**
37
+ * POST /api/identity/custodian/add-master-password
38
+ */
39
+ export class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase {
40
+ lc = `[${KeystoneCustodianAddMasterPasswordHandler.name}]`;
41
+ method = 'POST';
42
+ regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD;
43
+ async handleRouteImpl(reqCtx) {
44
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
45
+ try {
46
+ if (logalot) {
47
+ console.log(`${lc} starting... (I: 8a1b2c3d4e5f67890a1b2c3d4e5f6790)`);
48
+ }
49
+ if (reqCtx.method !== 'POST') {
50
+ return this.error(405, 'Method Not Allowed');
51
+ }
52
+ if (!reqCtx.body) {
53
+ return this.error(400, 'Request body is empty (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6791)');
54
+ }
55
+ let body;
56
+ try {
57
+ body = JSON.parse(reqCtx.body);
58
+ }
59
+ catch {
60
+ return this.error(400, 'Request body must be valid JSON (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6792)');
61
+ }
62
+ const { primaryTjpAddr, newManagePool, providerId, code, redirectUri, email } = body;
63
+ if (!primaryTjpAddr) {
64
+ return this.error(400, 'primaryTjpAddr is required (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6793)');
65
+ }
66
+ if (!newManagePool || typeof newManagePool !== 'object' || newManagePool.id !== POOL_ID_MANAGE) {
67
+ return this.error(400, 'newManagePool is invalid. Must be an object with id "manage" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6794)');
68
+ }
69
+ if (!newManagePool.challenges || Object.keys(newManagePool.challenges).length === 0) {
70
+ return this.error(400, 'newManagePool must contain pre-generated public challenges (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6795)');
71
+ }
72
+ // 1. Authenticate user credentials via OAuth code or Email OTP
73
+ let verifiedEmail;
74
+ let effectiveProvider = providerId || 'email';
75
+ if (providerId && code && redirectUri) {
76
+ const service = getCustodian();
77
+ const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
78
+ if (!userInfo || !userInfo.email) {
79
+ return this.error(401, `Failed to authenticate with SSO provider ${providerId} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6796)`);
80
+ }
81
+ verifiedEmail = normalizeEmail(userInfo.email);
82
+ }
83
+ else if (email && code) {
84
+ if (!validateEmail(email)) {
85
+ return this.error(400, 'Invalid email address format (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6797)');
86
+ }
87
+ verifiedEmail = normalizeEmail(email);
88
+ const tjpHash = await getPendingTjpHash(primaryTjpAddr);
89
+ const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
90
+ if (!pendingInfo || pendingInfo.isExpired) {
91
+ return this.error(400, 'Verification record missing or expired. Please request a new verification code. (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6798)');
92
+ }
93
+ const codeVerifyResult = await verifyPendingCode({
94
+ pendingDir: pendingInfo.pendingDir,
95
+ code,
96
+ });
97
+ if (!codeVerifyResult.valid) {
98
+ return this.error(401, codeVerifyResult.error || 'Invalid verification code (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6799)');
99
+ }
100
+ }
101
+ else {
102
+ return this.error(400, 'Authentication credentials required (providerId+code+redirectUri or email+code) (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679a)');
103
+ }
104
+ // 2. Lookup primary identity and confirm email matches
105
+ const indexService = getIdentityIndexService();
106
+ const identityRecord = await indexService.lookupIdentityByEmail({ email: verifiedEmail });
107
+ if (!identityRecord || identityRecord.primaryTjpAddr !== primaryTjpAddr) {
108
+ return this.error(403, `Authenticated email ${verifiedEmail} does not match primary identity ${primaryTjpAddr} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679b)`);
109
+ }
110
+ // 3. Bootstrap domain metaspace and load latest keystone
111
+ const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
112
+ const space = await metaspace.getLocalUserSpace({ lock: false });
113
+ if (!space) {
114
+ return this.error(500, `Local domain space not found for identity ${primaryTjpAddr}`);
115
+ }
116
+ const keystoneService = new KeystoneService_V1();
117
+ const latestKeystone = await keystoneService.getLatestKeystone({
118
+ addr: primaryTjpAddr,
119
+ metaspace,
120
+ space
121
+ });
122
+ if (!latestKeystone || !latestKeystone.data) {
123
+ return this.error(404, `Primary identity keystone not found for address ${primaryTjpAddr}`);
124
+ }
125
+ // 4. Verify existing custodial manage pool
126
+ const prevPools = latestKeystone.data.challengePools || [];
127
+ const existingManagePool = prevPools.find(p => p.id === POOL_ID_MANAGE);
128
+ if (!existingManagePool) {
129
+ return this.error(400, 'Primary keystone missing active "manage" pool (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679c)');
130
+ }
131
+ // Validate new pool config matches existing manage pool config structure
132
+ if (existingManagePool.config?.type && newManagePool.config?.type !== existingManagePool.config.type) {
133
+ return this.error(400, `newManagePool type "${newManagePool.config?.type}" does not match required type "${existingManagePool.config.type}" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679d)`);
134
+ }
135
+ // 5. Build next pool set:
136
+ // Convert existing custodian manage pool to auxiliary custodian pool (e.g. custodian-manage-google)
137
+ // and install user's newManagePool as 'manage'.
138
+ const custodianPoolId = `${CUSTODIAN_POOL_ID_PREFIX}${effectiveProvider}`;
139
+ const auxiliaryCustodianPool = {
140
+ ...existingManagePool,
141
+ id: custodianPoolId,
142
+ };
143
+ const nextPools = [];
144
+ for (const pool of prevPools) {
145
+ if (pool.id === POOL_ID_MANAGE) {
146
+ nextPools.push(newManagePool);
147
+ nextPools.push(auxiliaryCustodianPool);
148
+ }
149
+ else if (pool.id === custodianPoolId) {
150
+ // Skip if already present to prevent duplicate
151
+ }
152
+ else {
153
+ nextPools.push(pool);
154
+ }
155
+ }
156
+ // 6. Sign evolution turn using server's custodian secret
157
+ const ssoConfig = loadSsoServerConfig();
158
+ const serverSecret = ssoConfig.ssoServerKdfSecret;
159
+ const primarySecret = await hash({ s: `${serverSecret}_custodian_${verifiedEmail}` });
160
+ const claim = {
161
+ verb: KEYSTONE_VERB_MANAGE,
162
+ target: getIbGibAddr({ ibGib: latestKeystone })
163
+ };
164
+ const evolvedKeystone = await keystoneService.sign({
165
+ latestKeystone,
166
+ masterSecret: primarySecret,
167
+ claim,
168
+ poolId: POOL_ID_MANAGE,
169
+ metaspace,
170
+ space,
171
+ dataToPatch: {
172
+ challengePools: nextPools,
173
+ frameDetails: {
174
+ action: 'add_master_password',
175
+ custodyMode: 'hybrid',
176
+ elevatedAt: new Date().toISOString(),
177
+ }
178
+ }
179
+ });
180
+ // 7. Persist evolved keystone in domain space
181
+ await metaspace.put({ ibGibs: [evolvedKeystone], space });
182
+ await metaspace.registerNewIbGib({ ibGib: evolvedKeystone, space });
183
+ const response = {
184
+ success: true,
185
+ primaryTjpAddr,
186
+ primaryKeystone: evolvedKeystone,
187
+ message: 'Successfully elevated identity to sovereign master password'
188
+ };
189
+ return this.ok(response);
190
+ }
191
+ catch (error) {
192
+ console.error(`${lc} ${extractErrorMsg(error)}`);
193
+ return this.error(500, `Internal error adding master password: ${extractErrorMsg(error)}`);
194
+ }
195
+ }
196
+ }
197
+ //# sourceMappingURL=keystone-custodian-add-master-password.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-custodian-add-master-password.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sso-login.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAevE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,UAAmB,EAAE,EAAE,MAAM,CAA+B;IAC5D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAuC;IAE/D,UAAyB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE7D;IAED,UAAyB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEhE;IAED,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAsIrC;CACJ"}
1
+ {"version":3,"file":"sso-login.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAevE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,UAAmB,EAAE,EAAE,MAAM,CAA+B;IAC5D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAuC;IAE/D,UAAyB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE7D;IAED,UAAyB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEhE;IAED,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAuIrC;CACJ"}
@@ -111,6 +111,7 @@ export class SsoLoginHandler extends ServeGibHandlerBase {
111
111
  client: 'space-gib-server',
112
112
  role: 'custodian-primary',
113
113
  custodianProvider: providerId,
114
+ custodyMode: 'full',
114
115
  [`rawSSOName-${providerId}`]: rawSSOName,
115
116
  });
116
117
  const configs = await primaryBuilder.compileConfigs();
@@ -1 +1 @@
1
- {"version":3,"file":"sso-login.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sso-login.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"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"}
@@ -54,5 +54,9 @@ export declare class IdentityIndexService {
54
54
  /**
55
55
  * Singleton factory getter for the IdentityIndexService.
56
56
  */
57
- export declare function getIdentityIndexService(): IdentityIndexService;
57
+ export declare function getIdentityIndexService(opts?: IdentityIndexServiceOptions): IdentityIndexService;
58
+ /**
59
+ * Resets the cached singleton instance (useful during testing across different data directories).
60
+ */
61
+ export declare function resetIdentityIndexService(): void;
58
62
  //# sourceMappingURL=identity-index-service.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-index-service.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAIxH;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,YAAY,OAAO,CAAC,EAAE,2BAA2B,EAKhD;IA6CD;;;;OAIG;IACG,kBAAkB,CAAC,EACrB,KAAK,EACL,OAAO,EACP,cAAc,GACjB,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,cAAc,CAAC,EAAE,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyBpC;IAED;;;OAGG;IACG,qBAAqB,CAAC,EACxB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAQ5F;IAED;;;OAGG;IACG,aAAa,CAAC,EAChB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAmB3C;IAED;;;OAGG;IACG,mBAAmB,CAAC,EACtB,SAAS,GACZ,EAAE;QACC,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAwB3C;IAED;;;OAGG;IACG,oBAAoB,CAAC,EACvB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnB;CACJ;AAID;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAK9D"}
1
+ {"version":3,"file":"identity-index-service.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAIxH;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,YAAY,OAAO,CAAC,EAAE,2BAA2B,EAKhD;IA6CD;;;;OAIG;IACG,kBAAkB,CAAC,EACrB,KAAK,EACL,OAAO,EACP,cAAc,GACjB,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,cAAc,CAAC,EAAE,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyBpC;IAED;;;OAGG;IACG,qBAAqB,CAAC,EACxB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAQ5F;IAED;;;OAGG;IACG,aAAa,CAAC,EAChB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAmB3C;IAED;;;OAGG;IACG,mBAAmB,CAAC,EACtB,SAAS,GACZ,EAAE;QACC,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAwB3C;IAED;;;OAGG;IACG,oBAAoB,CAAC,EACvB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnB;CACJ;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,2BAA2B,GAAG,oBAAoB,CAQhG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
@@ -193,10 +193,19 @@ let _identityIndexService;
193
193
  /**
194
194
  * Singleton factory getter for the IdentityIndexService.
195
195
  */
196
- export function getIdentityIndexService() {
196
+ export function getIdentityIndexService(opts) {
197
+ if (opts) {
198
+ return new IdentityIndexService(opts);
199
+ }
197
200
  if (!_identityIndexService) {
198
201
  _identityIndexService = new IdentityIndexService();
199
202
  }
200
203
  return _identityIndexService;
201
204
  }
205
+ /**
206
+ * Resets the cached singleton instance (useful during testing across different data directories).
207
+ */
208
+ export function resetIdentityIndexService() {
209
+ _identityIndexService = undefined;
210
+ }
202
211
  //# sourceMappingURL=identity-index-service.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-index-service.mjs","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-index-service.mjs","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
33
33
  export * from './handlers/api/keystone/sso-login.handler.mjs';
34
34
  export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
35
35
  export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
36
+ export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
36
37
  export * from './handlers/api/email/email-inbound.handler.mjs';
37
38
  export * from './handlers/api/email/email-outbound.handler.mjs';
38
39
  export * from './handlers/api/email/email-verification-code.handler.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,0DAA0D,CAAC;AACzE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gEAAgE,CAAC;AAC/E,cAAc,0EAA0E,CAAC;AACzF,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoB9C,MAAM,WAAW,uBAAuB;IACpC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,GAAE,uBAA4B,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CA0B3G"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,0DAA0D,CAAC;AACzE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gEAAgE,CAAC;AAC/E,cAAc,0EAA0E,CAAC;AACzF,cAAc,4EAA4E,CAAC;AAC3F,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqB9C,MAAM,WAAW,uBAAuB;IACpC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,GAAE,uBAA4B,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CA2B3G"}
@@ -34,6 +34,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
34
34
  export * from './handlers/api/keystone/sso-login.handler.mjs';
35
35
  export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
36
36
  export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
37
+ export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
37
38
  export * from './handlers/api/email/email-inbound.handler.mjs';
38
39
  export * from './handlers/api/email/email-outbound.handler.mjs';
39
40
  export * from './handlers/api/email/email-verification-code.handler.mjs';
@@ -56,6 +57,7 @@ import { SsoLoginHandler } from './handlers/api/keystone/sso-login.handler.mjs';
56
57
  import { SsoConfigHandler } from './handlers/api/keystone/sso-config.handler.mjs';
57
58
  import { KeystoneCustodianGenesisHandler } from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
58
59
  import { KeystoneCustodianRegisterDelegateHandler } from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
60
+ import { KeystoneCustodianAddMasterPasswordHandler } from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
59
61
  import { EmailInboundHandler } from './handlers/api/email/email-inbound.handler.mjs';
60
62
  import { EmailOutboundHandler } from './handlers/api/email/email-outbound.handler.mjs';
61
63
  import { EmailVerificationCodeHandler } from './handlers/api/email/email-verification-code.handler.mjs';
@@ -79,6 +81,7 @@ export function getStandardServeGibHandlers(opts = {}) {
79
81
  new SsoConfigHandler(),
80
82
  new KeystoneCustodianGenesisHandler(),
81
83
  new KeystoneCustodianRegisterDelegateHandler(),
84
+ new KeystoneCustodianAddMasterPasswordHandler(),
82
85
  new EmailInboundHandler(),
83
86
  new EmailOutboundHandler(),
84
87
  new EmailVerificationCodeHandler(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"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"}
@@ -114,6 +114,10 @@ export declare const API_PATH_REGEXES: {
114
114
  * /api/identity/custodian/register-delegate
115
115
  */
116
116
  KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: RegExp;
117
+ /**
118
+ * /api/identity/custodian/add-master-password
119
+ */
120
+ KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: RegExp;
117
121
  };
118
122
  export declare const VALID_STATIC_PATH_REGEX: RegExp;
119
123
  //# sourceMappingURL=path-constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAK9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;IACH,MAAM;IAEN;;OAEG;IACH,WAAW;IAEX;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,QAAQ;IAER;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,eAAe;IAEf;;;;;;;;OAQG;IACH,gBAAgB;IAEhB;;OAEG;IACH,eAAe;IAEf;;OAEG;IACH,oBAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,aAAa;IACb;;OAEG;IACH,OAAO;IACP;;OAEG;IACH,iBAAiB;IACjB;;OAEG;IACH,kBAAkB;IAClB;;OAEG;IACH,mBAAmB;IACnB;;OAEG;IACH,aAAa;IACb;;OAEG;IACH,UAAU;IACV;;OAEG;IACH,uBAAuB;IAEvB;;OAEG;IACH,YAAY;IACZ,iBAAiB;IAEjB;;OAEG;IACH,0BAA0B;IAE1B;;OAEG;IACH,oCAAoC;CACvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAA4B,CAAC"}
1
+ {"version":3,"file":"path-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAK9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;IACH,MAAM;IAEN;;OAEG;IACH,WAAW;IAEX;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,QAAQ;IAER;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,eAAe;IAEf;;;;;;;;OAQG;IACH,gBAAgB;IAEhB;;OAEG;IACH,eAAe;IAEf;;OAEG;IACH,oBAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,aAAa;IACb;;OAEG;IACH,OAAO;IACP;;OAEG;IACH,iBAAiB;IACjB;;OAEG;IACH,kBAAkB;IAClB;;OAEG;IACH,mBAAmB;IACnB;;OAEG;IACH,aAAa;IACb;;OAEG;IACH,UAAU;IACV;;OAEG;IACH,uBAAuB;IAEvB;;OAEG;IACH,YAAY;IACZ,iBAAiB;IAEjB;;OAEG;IACH,0BAA0B;IAE1B;;OAEG;IACH,oCAAoC;IAEpC;;OAEG;IACH,sCAAsC;CACzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAA4B,CAAC"}
@@ -119,6 +119,10 @@ export const API_PATH_REGEXES = {
119
119
  * /api/identity/custodian/register-delegate
120
120
  */
121
121
  KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: /^\/api\/identity\/custodian\/register-delegate\/?$/i,
122
+ /**
123
+ * /api/identity/custodian/add-master-password
124
+ */
125
+ KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: /^\/api\/identity\/custodian\/add-master-password\/?$/i,
122
126
  };
123
127
  export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;
124
128
  //# sourceMappingURL=path-constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAO,yBAAyB;IACtC,MAAM,EAAO,uBAAuB;IACpC,IAAI,EAAS,gBAAgB;IAC7B,UAAU,EAAG,wCAAwC;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,oBAAoB;IAE5B;;OAEG;IACH,WAAW,EAAE,oFAAoF;IAEjG;;OAEG;IACH,UAAU,EAAE,6EAA6E;IAEzF;;OAEG;IACH,QAAQ,EAAE,sBAAsB;IAEhC;;OAEG;IACH,aAAa,EAAE,mDAAmD;IAElE;;OAEG;IACH,UAAU,EAAE,mBAAmB;IAE/B;;OAEG;IACH,eAAe,EAAE,2DAA2D;IAE5E;;;;;;;;OAQG;IACH,gBAAgB,EAAE,+BAA+B;IAEjD;;OAEG;IACH,eAAe,EAAE,8BAA8B;IAE/C;;OAEG;IACH,oBAAoB,EAAE,mCAAmC;IAEzD;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,mDAAmD;IAC5D;;OAEG;IACH,iBAAiB,EAAE,iCAAiC;IACpD;;OAEG;IACH,kBAAkB,EAAE,kCAAkC;IACtD;;OAEG;IACH,mBAAmB,EAAE,mCAAmC;IACxD;;OAEG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,UAAU,EAAE,yBAAyB;IACrC;;OAEG;IACH,uBAAuB,EAAE,sCAAsC;IAE/D;;OAEG;IACH,YAAY,EAAE,2BAA2B;IACzC,iBAAiB,EAAE,gCAAgC;IAEnD;;OAEG;IACH,0BAA0B,EAAE,2CAA2C;IAEvE;;OAEG;IACH,oCAAoC,EAAE,qDAAqD;CAC9F,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"path-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAO,yBAAyB;IACtC,MAAM,EAAO,uBAAuB;IACpC,IAAI,EAAS,gBAAgB;IAC7B,UAAU,EAAG,wCAAwC;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,oBAAoB;IAE5B;;OAEG;IACH,WAAW,EAAE,oFAAoF;IAEjG;;OAEG;IACH,UAAU,EAAE,6EAA6E;IAEzF;;OAEG;IACH,QAAQ,EAAE,sBAAsB;IAEhC;;OAEG;IACH,aAAa,EAAE,mDAAmD;IAElE;;OAEG;IACH,UAAU,EAAE,mBAAmB;IAE/B;;OAEG;IACH,eAAe,EAAE,2DAA2D;IAE5E;;;;;;;;OAQG;IACH,gBAAgB,EAAE,+BAA+B;IAEjD;;OAEG;IACH,eAAe,EAAE,8BAA8B;IAE/C;;OAEG;IACH,oBAAoB,EAAE,mCAAmC;IAEzD;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,mDAAmD;IAC5D;;OAEG;IACH,iBAAiB,EAAE,iCAAiC;IACpD;;OAEG;IACH,kBAAkB,EAAE,kCAAkC;IACtD;;OAEG;IACH,mBAAmB,EAAE,mCAAmC;IACxD;;OAEG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,UAAU,EAAE,yBAAyB;IACrC;;OAEG;IACH,uBAAuB,EAAE,sCAAsC;IAE/D;;OAEG;IACH,YAAY,EAAE,2BAA2B;IACzC,iBAAiB,EAAE,gCAAgC;IAEnD;;OAEG;IACH,0BAA0B,EAAE,2CAA2C;IAEvE;;OAEG;IACH,oCAAoC,EAAE,qDAAqD;IAE3F;;OAEG;IACH,sCAAsC,EAAE,uDAAuD;CAClG,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
@@ -91,3 +91,40 @@ Attempt to re-submit a previously consumed `custodianReqs` payload to `POST /api
91
91
  3. Verify rejection outcome:
92
92
  - Server rejects the request with **HTTP 409 Conflict**:
93
93
  `"Custodian requirements payload has already been used. Nonce single-turn reservation violation."`
94
+
95
+
96
+ ### Phase 4: Keystone Details Inspection & Sovereign Elevation
97
+ Inspect the identity in `<ibgib-keystone-details>` to verify that capabilities, device badges, and password options adapt dynamically to the custodial state, and add a sovereign master password.
98
+
99
+ #### Steps
100
+ 1. In Browser 1, open `<ibgib-identity-header>` and click the active identity to open `<ibgib-keystone-details>`.
101
+ 2. Verify dynamic UI elements:
102
+ - **Password Card**: Displays **"Add Master Password"** (with New Password and Confirm Password inputs; Current Password is hidden).
103
+ - **SSO Status Card**: Displays `"Google (Primary Account) ✅"` or provider primary indicator.
104
+ - **Registered Delegates Table**:
105
+ - Browser 1's delegate displays the green **"This Device"** badge.
106
+ - Browser 2's delegate (from Phase 2) displays the blue **"Remote Device"** badge.
107
+ 3. Click **View Details** on Browser 2's remote delegate:
108
+ - Verify modal opens showing remote device metadata without throwing or failing.
109
+ 4. In the **Add Master Password** card, enter `<E2E_TEST_NEW_PASSWORD>` in New Password and Confirm Password inputs, and click **Add Master Password**.
110
+ 5. Verify outcomes:
111
+ - Client adds a sovereign `manage` pool via `keystoneService.addPools()`, evolves the primary identity, and syncs to server.
112
+ - The password card updates dynamically to **"Change Password"** (now displaying Current Password input).
113
+ - Identity capability transitions from Custodial to **Hybrid**.
114
+
115
+
116
+ ### Phase 5: Silent Background Sync & Expired Session Renewal ("Sign Back In")
117
+ Verify that daily background sync operations execute silently via stored IndexedDB delegate tokens ($S_D$), and verify that expired sync delegates cleanly pause sync and prompt the user to "Sign Back In".
118
+
119
+ #### Steps
120
+ 1. In Browser 1, click **Check for Updates** and **Update Identity**:
121
+ - Verify sync succeeds silently in the background without prompting for master passwords.
122
+ 2. Simulate delegate expiration / session expiry:
123
+ - Option A: Clear the stored device delegate secret from IndexedDB (`space_gib_db` -> `space_gib_store` -> delete `ibgib_device_delegate_secret_<primaryTjpAddr>`).
124
+ - Option B: Test with a short TTL development profile (`sync-profile.dev.json` with `defaultTtlSeconds: 10`) and wait for expiration.
125
+ 3. Trigger a sync check or page refresh:
126
+ - Verify `KeystoneSyncService` detects the expired / missing delegate token and fires `EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED`.
127
+ - Verify the UI prompts the user to **"Sign Back In"**.
128
+ 4. Re-authenticate via Email OTP (or Google SSO / Master Password):
129
+ - Verify single-turn re-authentication generates and registers a fresh outward sync delegate ($D_{\text{device}}$).
130
+ - Verify the new secret ($S_D$) is stored in IndexedDB and silent background sync resumes seamlessly.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibgib/node-gib",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "description": "Node and server-specific ibGib code, i.e., things that don't run in the browser.",
5
5
  "funding": {
6
6
  "type": "individual",
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "@ibgib/helper-gib": "^0.0.37",
28
28
  "@ibgib/ts-gib": "^0.5.34",
29
- "@ibgib/core-gib": "^0.1.74",
29
+ "@ibgib/core-gib": "^0.1.75",
30
30
  "@ibgib/encrypt-gib": "^0.3.1"
31
31
  },
32
32
  "devDependencies": {
@@ -0,0 +1,245 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
3
+ *
4
+ * POST /api/identity/custodian/add-master-password
5
+ *
6
+ * Single-turn sovereignty elevation endpoint for purely custodial identities.
7
+ * Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
8
+ * the provided `newManagePool` config matches the existing custodian pool config,
9
+ * evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
10
+ * installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
11
+ */
12
+
13
+ import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
14
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
15
+ import { getTjpAddr } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
16
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
17
+ import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
18
+ import { KEYSTONE_VERB_MANAGE, POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
19
+ import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
20
+ import { KeystoneClaim } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
21
+ import { validateEmail } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
22
+
23
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
24
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
25
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
26
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
27
+ import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
28
+ import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
29
+ import { normalizeEmail } from '../../../identity-index/identity-index-helpers.mjs';
30
+ import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
31
+ import { SsoCustodianService } from '../../../../identity/sso/sso-custodian-service.mjs';
32
+ import { SsoProviderId } from '../../../../identity/sso/sso-types.mjs';
33
+ import { getPendingStagingDir, getPendingTjpHash, verifyPendingCode } from '../../../../email/verify/email-verify-helpers.mjs';
34
+
35
+ const logalot = GLOBAL_LOG_A_LOT || true;
36
+
37
+ let custodian: SsoCustodianService | undefined;
38
+ function getCustodian(): SsoCustodianService {
39
+ if (!custodian) {
40
+ const config = loadSsoServerConfig();
41
+ custodian = new SsoCustodianService(config);
42
+ }
43
+ return custodian;
44
+ }
45
+
46
+ export interface CustodianAddMasterPasswordRequestBody {
47
+ primaryTjpAddr: string;
48
+ newManagePool: KeystoneChallengePool;
49
+ providerId?: SsoProviderId;
50
+ code?: string;
51
+ redirectUri?: string;
52
+ email?: string;
53
+ }
54
+
55
+ export interface CustodianAddMasterPasswordResponseBody {
56
+ success: boolean;
57
+ primaryTjpAddr: string;
58
+ primaryKeystone: any;
59
+ message?: string;
60
+ }
61
+
62
+ /**
63
+ * POST /api/identity/custodian/add-master-password
64
+ */
65
+ export class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase<undefined, undefined> {
66
+ protected override lc: string = `[${KeystoneCustodianAddMasterPasswordHandler.name}]`;
67
+ protected override method: ServeGibHttpMethod = 'POST';
68
+ protected override regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD;
69
+
70
+ protected async handleRouteImpl(
71
+ reqCtx: RequestContext<undefined, undefined>
72
+ ): Promise<ResponseResult | undefined> {
73
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
74
+ try {
75
+ if (logalot) { console.log(`${lc} starting... (I: 8a1b2c3d4e5f67890a1b2c3d4e5f6790)`); }
76
+
77
+ if (reqCtx.method !== 'POST') {
78
+ return this.error(405, 'Method Not Allowed');
79
+ }
80
+
81
+ if (!reqCtx.body) {
82
+ return this.error(400, 'Request body is empty (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6791)');
83
+ }
84
+
85
+ let body: CustodianAddMasterPasswordRequestBody;
86
+ try {
87
+ body = JSON.parse(reqCtx.body);
88
+ } catch {
89
+ return this.error(400, 'Request body must be valid JSON (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6792)');
90
+ }
91
+
92
+ const { primaryTjpAddr, newManagePool, providerId, code, redirectUri, email } = body;
93
+
94
+ if (!primaryTjpAddr) {
95
+ return this.error(400, 'primaryTjpAddr is required (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6793)');
96
+ }
97
+
98
+ if (!newManagePool || typeof newManagePool !== 'object' || newManagePool.id !== POOL_ID_MANAGE) {
99
+ return this.error(400, 'newManagePool is invalid. Must be an object with id "manage" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6794)');
100
+ }
101
+
102
+ if (!newManagePool.challenges || Object.keys(newManagePool.challenges).length === 0) {
103
+ return this.error(400, 'newManagePool must contain pre-generated public challenges (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6795)');
104
+ }
105
+
106
+ // 1. Authenticate user credentials via OAuth code or Email OTP
107
+ let verifiedEmail: string;
108
+ let effectiveProvider: string = providerId || 'email';
109
+
110
+ if (providerId && code && redirectUri) {
111
+ const service = getCustodian();
112
+ const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
113
+ if (!userInfo || !userInfo.email) {
114
+ return this.error(401, `Failed to authenticate with SSO provider ${providerId} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6796)`);
115
+ }
116
+ verifiedEmail = normalizeEmail(userInfo.email);
117
+ } else if (email && code) {
118
+ if (!validateEmail(email)) {
119
+ return this.error(400, 'Invalid email address format (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6797)');
120
+ }
121
+ verifiedEmail = normalizeEmail(email);
122
+
123
+ const tjpHash = await getPendingTjpHash(primaryTjpAddr);
124
+ const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
125
+
126
+ if (!pendingInfo || pendingInfo.isExpired) {
127
+ return this.error(400, 'Verification record missing or expired. Please request a new verification code. (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6798)');
128
+ }
129
+
130
+ const codeVerifyResult = await verifyPendingCode({
131
+ pendingDir: pendingInfo.pendingDir,
132
+ code,
133
+ });
134
+
135
+ if (!codeVerifyResult.valid) {
136
+ return this.error(401, codeVerifyResult.error || 'Invalid verification code (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6799)');
137
+ }
138
+ } else {
139
+ return this.error(400, 'Authentication credentials required (providerId+code+redirectUri or email+code) (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679a)');
140
+ }
141
+
142
+ // 2. Lookup primary identity and confirm email matches
143
+ const indexService = getIdentityIndexService();
144
+ const identityRecord = await indexService.lookupIdentityByEmail({ email: verifiedEmail });
145
+ if (!identityRecord || identityRecord.primaryTjpAddr !== primaryTjpAddr) {
146
+ return this.error(403, `Authenticated email ${verifiedEmail} does not match primary identity ${primaryTjpAddr} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679b)`);
147
+ }
148
+
149
+ // 3. Bootstrap domain metaspace and load latest keystone
150
+ const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
151
+ const space = await metaspace.getLocalUserSpace({ lock: false });
152
+ if (!space) {
153
+ return this.error(500, `Local domain space not found for identity ${primaryTjpAddr}`);
154
+ }
155
+
156
+ const keystoneService = new KeystoneService_V1();
157
+ const latestKeystone = await keystoneService.getLatestKeystone({
158
+ addr: primaryTjpAddr,
159
+ metaspace,
160
+ space
161
+ });
162
+
163
+ if (!latestKeystone || !latestKeystone.data) {
164
+ return this.error(404, `Primary identity keystone not found for address ${primaryTjpAddr}`);
165
+ }
166
+
167
+ // 4. Verify existing custodial manage pool
168
+ const prevPools = latestKeystone.data.challengePools || [];
169
+ const existingManagePool = prevPools.find(p => p.id === POOL_ID_MANAGE);
170
+ if (!existingManagePool) {
171
+ return this.error(400, 'Primary keystone missing active "manage" pool (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679c)');
172
+ }
173
+
174
+ // Validate new pool config matches existing manage pool config structure
175
+ if (existingManagePool.config?.type && newManagePool.config?.type !== existingManagePool.config.type) {
176
+ return this.error(400, `newManagePool type "${newManagePool.config?.type}" does not match required type "${existingManagePool.config.type}" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679d)`);
177
+ }
178
+
179
+ // 5. Build next pool set:
180
+ // Convert existing custodian manage pool to auxiliary custodian pool (e.g. custodian-manage-google)
181
+ // and install user's newManagePool as 'manage'.
182
+ const custodianPoolId = `${CUSTODIAN_POOL_ID_PREFIX}${effectiveProvider}`;
183
+ const auxiliaryCustodianPool: KeystoneChallengePool = {
184
+ ...existingManagePool,
185
+ id: custodianPoolId,
186
+ };
187
+
188
+ const nextPools: KeystoneChallengePool[] = [];
189
+ for (const pool of prevPools) {
190
+ if (pool.id === POOL_ID_MANAGE) {
191
+ nextPools.push(newManagePool);
192
+ nextPools.push(auxiliaryCustodianPool);
193
+ } else if (pool.id === custodianPoolId) {
194
+ // Skip if already present to prevent duplicate
195
+ } else {
196
+ nextPools.push(pool);
197
+ }
198
+ }
199
+
200
+ // 6. Sign evolution turn using server's custodian secret
201
+ const ssoConfig = loadSsoServerConfig();
202
+ const serverSecret = ssoConfig.ssoServerKdfSecret;
203
+ const primarySecret = await hash({ s: `${serverSecret}_custodian_${verifiedEmail}` });
204
+
205
+ const claim: Partial<KeystoneClaim> = {
206
+ verb: KEYSTONE_VERB_MANAGE,
207
+ target: getIbGibAddr({ ibGib: latestKeystone })
208
+ };
209
+
210
+ const evolvedKeystone = await keystoneService.sign({
211
+ latestKeystone,
212
+ masterSecret: primarySecret,
213
+ claim,
214
+ poolId: POOL_ID_MANAGE,
215
+ metaspace,
216
+ space,
217
+ dataToPatch: {
218
+ challengePools: nextPools,
219
+ frameDetails: {
220
+ action: 'add_master_password',
221
+ custodyMode: 'hybrid',
222
+ elevatedAt: new Date().toISOString(),
223
+ }
224
+ }
225
+ });
226
+
227
+ // 7. Persist evolved keystone in domain space
228
+ await metaspace.put({ ibGibs: [evolvedKeystone], space });
229
+ await metaspace.registerNewIbGib({ ibGib: evolvedKeystone, space });
230
+
231
+ const response: CustodianAddMasterPasswordResponseBody = {
232
+ success: true,
233
+ primaryTjpAddr,
234
+ primaryKeystone: evolvedKeystone,
235
+ message: 'Successfully elevated identity to sovereign master password'
236
+ };
237
+
238
+ return this.ok(response);
239
+
240
+ } catch (error) {
241
+ console.error(`${lc} ${extractErrorMsg(error)}`);
242
+ return this.error(500, `Internal error adding master password: ${extractErrorMsg(error)}`);
243
+ }
244
+ }
245
+ }
@@ -0,0 +1,167 @@
1
+ import { existsSync, rmSync } from 'node:fs';
2
+
3
+ import {
4
+ respecfully,
5
+ iReckon,
6
+ ifWe,
7
+ ifWeMight
8
+ } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
9
+
10
+ import { KeystoneCustodianGenesisHandler } from './keystone-custodian-genesis.handler.mjs';
11
+ import { KeystoneCustodianAddMasterPasswordHandler } from './keystone-custodian-add-master-password.handler.mjs';
12
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
13
+ import { POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
14
+ import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
15
+ import { generatePoolChallenges } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
16
+ import { getPendingStagingDir, getPendingTjpHash, savePendingCodeRecord, savePendingStagingKeystone } from '../../../../email/verify/email-verify-helpers.mjs';
17
+ import { resetIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
18
+
19
+ const sir = `[${import.meta.url}]`;
20
+
21
+ await respecfully(sir, 'KeystoneCustodianAddMasterPasswordHandler', async () => {
22
+ const testDataDir = './test-data-custodian-add-password';
23
+
24
+ if (existsSync(testDataDir)) {
25
+ rmSync(testDataDir, { recursive: true, force: true });
26
+ }
27
+
28
+ const origDataDir = process.env.DATA_DIR;
29
+ process.env.DATA_DIR = testDataDir;
30
+ process.env.KEYSTONE_PROFILE_CUSTODIAN_PRIMARY = 'primary-profile.dev';
31
+ process.env.SSO_SERVER_KDF_SECRET = 'test-sso-server-kdf-secret-12345';
32
+ process.env.SESSION_SECRET = 'test-session-secret-12345';
33
+ resetIdentityIndexService();
34
+
35
+ const genesisHandler = new KeystoneCustodianGenesisHandler();
36
+ const addPasswordHandler = new KeystoneCustodianAddMasterPasswordHandler();
37
+
38
+ await ifWe(sir, 'reject request with 400 if required fields are missing', async () => {
39
+ const reqCtx: any = {
40
+ method: 'POST',
41
+ pathname: '/api/identity/custodian/add-master-password',
42
+ url: new URL('http://localhost/api/identity/custodian/add-master-password'),
43
+ body: JSON.stringify({}),
44
+ dataDir: testDataDir
45
+ };
46
+
47
+ const res = await addPasswordHandler.handleRoute(reqCtx);
48
+ iReckon(sir, res?.status).isGonnaBe(400);
49
+ });
50
+
51
+ await ifWe(sir, 'successfully elevate custodial identity to sovereign master password', async () => {
52
+ try {
53
+ const email = 'alice.elevate@example.com';
54
+ const genesisCode = '123456';
55
+
56
+ // 1. Create custodial identity via genesis handler with staged code
57
+ const genesisStaging = await savePendingStagingKeystone({
58
+ primaryTjpAddr: `pending:${email}`,
59
+ emails: [email],
60
+ dataDir: testDataDir,
61
+ });
62
+ await savePendingCodeRecord({
63
+ pendingDir: genesisStaging.pendingDir,
64
+ code: genesisCode,
65
+ });
66
+
67
+ const genesisReqCtx: any = {
68
+ method: 'POST',
69
+ pathname: '/api/identity/custodian/genesis',
70
+ url: new URL('http://localhost/api/identity/custodian/genesis'),
71
+ body: JSON.stringify({ email, username: 'alice', code: genesisCode }),
72
+ dataDir: testDataDir
73
+ };
74
+
75
+ const genesisRes = await genesisHandler.handleRoute(genesisReqCtx);
76
+ if (genesisRes?.status !== 201) {
77
+ console.error(`[DEBUG] genesisRes failed: ${genesisRes?.status}, body:`, JSON.stringify(genesisRes?.body));
78
+ }
79
+ iReckon(sir, genesisRes?.status).isGonnaBe(201);
80
+
81
+ const genesisBody = typeof genesisRes?.body === 'string' ? JSON.parse(genesisRes?.body) : genesisRes?.body;
82
+ const primaryTjpAddr = genesisBody.primaryTjpAddr;
83
+ const initialKeystone = genesisBody.primaryKeystone;
84
+
85
+ iReckon(sir, primaryTjpAddr).not.isGonnaBeUndefined();
86
+ iReckon(sir, initialKeystone).not.isGonnaBeUndefined();
87
+
88
+ const initialManagePool = initialKeystone.data.challengePools.find((p: any) => p.id === POOL_ID_MANAGE);
89
+ iReckon(sir, initialManagePool).not.isGonnaBeUndefined();
90
+
91
+ // 2. Generate new sovereign manage challenge pool locally with user's new password
92
+ const userNewPassword = 'AliceSuperSecretPassphrase2026!';
93
+ const newChallenges = await generatePoolChallenges({
94
+ config: initialManagePool.config,
95
+ masterSecret: userNewPassword,
96
+ });
97
+ const newManagePool = {
98
+ id: POOL_ID_MANAGE,
99
+ config: initialManagePool.config,
100
+ challenges: newChallenges,
101
+ };
102
+
103
+ // Stage verification code for the elevation turn
104
+ const elevateStaging = await savePendingStagingKeystone({
105
+ primaryTjpAddr,
106
+ emails: [email],
107
+ dataDir: testDataDir,
108
+ });
109
+ const elevateCode = '654321';
110
+ await savePendingCodeRecord({
111
+ pendingDir: elevateStaging.pendingDir,
112
+ code: elevateCode,
113
+ });
114
+
115
+ // 3. Call add-master-password endpoint
116
+ const addPasswordReqCtx: any = {
117
+ method: 'POST',
118
+ pathname: '/api/identity/custodian/add-master-password',
119
+ url: new URL('http://localhost/api/identity/custodian/add-master-password'),
120
+ body: JSON.stringify({
121
+ primaryTjpAddr,
122
+ email,
123
+ code: elevateCode,
124
+ newManagePool,
125
+ }),
126
+ dataDir: testDataDir
127
+ };
128
+
129
+ const addPasswordRes = await addPasswordHandler.handleRoute(addPasswordReqCtx);
130
+ if (addPasswordRes?.status !== 200) {
131
+ console.error(`[DEBUG] addPasswordRes failed with status: ${addPasswordRes?.status}, body:`, addPasswordRes?.body);
132
+ }
133
+ iReckon(sir, addPasswordRes?.status).isGonnaBe(200);
134
+
135
+ const addPasswordBody = typeof addPasswordRes?.body === 'string' ? JSON.parse(addPasswordRes?.body) : addPasswordRes?.body;
136
+ iReckon(sir, addPasswordBody.success).isGonnaBeTrue();
137
+ iReckon(sir, addPasswordBody.primaryTjpAddr).isGonnaBe(primaryTjpAddr);
138
+
139
+ const evolvedKeystone = addPasswordBody.primaryKeystone;
140
+ iReckon(sir, evolvedKeystone).not.isGonnaBeUndefined();
141
+ iReckon(sir, evolvedKeystone.data.n).isGonnaBe(1);
142
+ iReckon(sir, evolvedKeystone.data.frameDetails.custodyMode).isGonnaBe('hybrid');
143
+
144
+ // Check pools: should contain both 'manage' and 'custodian-manage-email'
145
+ const poolIds = evolvedKeystone.data.challengePools.map((p: any) => p.id);
146
+ iReckon(sir, poolIds.includes('manage')).isGonnaBeTrue();
147
+ iReckon(sir, poolIds.includes(`${CUSTODIAN_POOL_ID_PREFIX}email`)).isGonnaBeTrue();
148
+
149
+ // 4. Verify user password solves the evolved manage pool
150
+ const keystoneService = new KeystoneService_V1();
151
+ const isUserPasswordValid = await keystoneService.verifySigningSecret({
152
+ keystoneIbGib: evolvedKeystone,
153
+ signingSecret: userNewPassword,
154
+ poolId: POOL_ID_MANAGE,
155
+ });
156
+ iReckon(sir, isUserPasswordValid).isGonnaBeTrue();
157
+ } catch (error) {
158
+ console.error(`[DEBUG TEST 2 EXCEPTION]`, error);
159
+ throw error;
160
+ }
161
+ });
162
+
163
+ if (existsSync(testDataDir)) {
164
+ rmSync(testDataDir, { recursive: true, force: true });
165
+ }
166
+ process.env.DATA_DIR = origDataDir;
167
+ });
@@ -10,7 +10,7 @@ import { KeystoneCustodianGenesisHandler } from './keystone-custodian-genesis.ha
10
10
  import { KeystoneCustodianRegisterDelegateHandler } from './keystone-custodian-register-delegate.handler.mjs';
11
11
  import { KeystoneProfileBuilder } from '@ibgib/core-gib/dist/keystone/policy/keystone-profile-builder.mjs';
12
12
  import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
13
- import { deriveLocalCustodianDelegateSecret } from '@ibgib/web-gib/dist/identity/custodian-delegate-helper.mjs';
13
+ import { deriveDeviceDelegateSecret } from '@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs';
14
14
  import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
15
15
 
16
16
  const sir = `[${import.meta.url}]`;
@@ -58,7 +58,7 @@ await respecfully(sir, 'KeystoneCustodianRegisterDelegateHandler', async () => {
58
58
  iReckon(sir, custodianReqs).not.isGonnaBeUndefined();
59
59
 
60
60
  // Step 2: Build client delegate keystone containing custodianReqs
61
- const delegateSecret = await deriveLocalCustodianDelegateSecret({ primaryTjpAddr });
61
+ const delegateSecret = await deriveDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'phone' });
62
62
  const delegateBuilder = KeystoneProfileBuilder.buildKeystone('sync-profile.dev')
63
63
  .withUsername('bob-sync-phone')
64
64
  .withDescription('Sync Delegate for bob on phone')
@@ -149,6 +149,7 @@ export class SsoLoginHandler extends ServeGibHandlerBase<undefined, undefined> {
149
149
  client: 'space-gib-server',
150
150
  role: 'custodian-primary',
151
151
  custodianProvider: providerId,
152
+ custodyMode: 'full',
152
153
  [`rawSSOName-${providerId}`]: rawSSOName,
153
154
  });
154
155
 
@@ -218,9 +218,19 @@ let _identityIndexService: IdentityIndexService | undefined;
218
218
  /**
219
219
  * Singleton factory getter for the IdentityIndexService.
220
220
  */
221
- export function getIdentityIndexService(): IdentityIndexService {
221
+ export function getIdentityIndexService(opts?: IdentityIndexServiceOptions): IdentityIndexService {
222
+ if (opts) {
223
+ return new IdentityIndexService(opts);
224
+ }
222
225
  if (!_identityIndexService) {
223
226
  _identityIndexService = new IdentityIndexService();
224
227
  }
225
228
  return _identityIndexService;
226
229
  }
230
+
231
+ /**
232
+ * Resets the cached singleton instance (useful during testing across different data directories).
233
+ */
234
+ export function resetIdentityIndexService(): void {
235
+ _identityIndexService = undefined;
236
+ }
@@ -36,6 +36,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
36
36
  export * from './handlers/api/keystone/sso-login.handler.mjs';
37
37
  export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
38
38
  export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
39
+ export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
39
40
  export * from './handlers/api/email/email-inbound.handler.mjs';
40
41
  export * from './handlers/api/email/email-outbound.handler.mjs';
41
42
  export * from './handlers/api/email/email-verification-code.handler.mjs';
@@ -60,6 +61,7 @@ import { SsoLoginHandler } from './handlers/api/keystone/sso-login.handler.mjs';
60
61
  import { SsoConfigHandler } from './handlers/api/keystone/sso-config.handler.mjs';
61
62
  import { KeystoneCustodianGenesisHandler } from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
62
63
  import { KeystoneCustodianRegisterDelegateHandler } from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
64
+ import { KeystoneCustodianAddMasterPasswordHandler } from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
63
65
  import { EmailInboundHandler } from './handlers/api/email/email-inbound.handler.mjs';
64
66
  import { EmailOutboundHandler } from './handlers/api/email/email-outbound.handler.mjs';
65
67
  import { EmailVerificationCodeHandler } from './handlers/api/email/email-verification-code.handler.mjs';
@@ -89,6 +91,7 @@ export function getStandardServeGibHandlers(opts: StandardHandlersOptions = {}):
89
91
  new SsoConfigHandler(),
90
92
  new KeystoneCustodianGenesisHandler(),
91
93
  new KeystoneCustodianRegisterDelegateHandler(),
94
+ new KeystoneCustodianAddMasterPasswordHandler(),
92
95
  new EmailInboundHandler(),
93
96
  new EmailOutboundHandler(),
94
97
  new EmailVerificationCodeHandler(),
@@ -134,6 +134,11 @@ export const API_PATH_REGEXES = {
134
134
  * /api/identity/custodian/register-delegate
135
135
  */
136
136
  KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: /^\/api\/identity\/custodian\/register-delegate\/?$/i,
137
+
138
+ /**
139
+ * /api/identity/custodian/add-master-password
140
+ */
141
+ KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: /^\/api\/identity\/custodian\/add-master-password\/?$/i,
137
142
  };
138
143
 
139
144
  export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;