@ibgib/core-gib 0.1.8 → 0.1.10

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 (80) hide show
  1. package/dist/agent-helpers.d.mts +45 -0
  2. package/dist/agent-helpers.d.mts.map +1 -0
  3. package/dist/agent-helpers.mjs +36 -0
  4. package/dist/agent-helpers.mjs.map +1 -0
  5. package/dist/keystone/keystone-config-builder.respec.d.mts +2 -0
  6. package/dist/keystone/keystone-config-builder.respec.d.mts.map +1 -0
  7. package/dist/keystone/keystone-config-builder.respec.mjs +34 -0
  8. package/dist/keystone/keystone-config-builder.respec.mjs.map +1 -0
  9. package/dist/keystone/keystone-constants.d.mts +2 -0
  10. package/dist/keystone/keystone-constants.d.mts.map +1 -1
  11. package/dist/keystone/keystone-constants.mjs +2 -0
  12. package/dist/keystone/keystone-constants.mjs.map +1 -1
  13. package/dist/keystone/keystone-helpers.d.mts +54 -1
  14. package/dist/keystone/keystone-helpers.d.mts.map +1 -1
  15. package/dist/keystone/keystone-helpers.mjs +185 -1
  16. package/dist/keystone/keystone-helpers.mjs.map +1 -1
  17. package/dist/keystone/keystone-service-v1.d.mts +49 -16
  18. package/dist/keystone/keystone-service-v1.d.mts.map +1 -1
  19. package/dist/keystone/keystone-service-v1.mjs +151 -328
  20. package/dist/keystone/keystone-service-v1.mjs.map +1 -1
  21. package/dist/keystone/keystone-service-v1.respec.mjs +401 -20
  22. package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
  23. package/dist/keystone/keystone-types.d.mts +22 -0
  24. package/dist/keystone/keystone-types.d.mts.map +1 -1
  25. package/dist/sync/sync-constants.d.mts +17 -0
  26. package/dist/sync/sync-constants.d.mts.map +1 -0
  27. package/dist/sync/sync-constants.mjs +16 -0
  28. package/dist/sync/sync-constants.mjs.map +1 -0
  29. package/dist/sync/sync-helpers.d.mts +15 -0
  30. package/dist/sync/sync-helpers.d.mts.map +1 -0
  31. package/dist/sync/sync-helpers.mjs +46 -0
  32. package/dist/sync/sync-helpers.mjs.map +1 -0
  33. package/dist/sync/sync-local-spaces.respec.d.mts +2 -0
  34. package/dist/sync/sync-local-spaces.respec.d.mts.map +1 -0
  35. package/dist/sync/sync-local-spaces.respec.mjs +159 -0
  36. package/dist/sync/sync-local-spaces.respec.mjs.map +1 -0
  37. package/dist/sync/sync-saga-coordinator.d.mts +118 -0
  38. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -0
  39. package/dist/sync/sync-saga-coordinator.mjs +399 -0
  40. package/dist/sync/sync-saga-coordinator.mjs.map +1 -0
  41. package/dist/sync/sync-saga-coordinator.respec.d.mts +2 -0
  42. package/dist/sync/sync-saga-coordinator.respec.d.mts.map +1 -0
  43. package/dist/sync/sync-saga-coordinator.respec.mjs +40 -0
  44. package/dist/sync/sync-saga-coordinator.respec.mjs.map +1 -0
  45. package/dist/sync/sync-types.d.mts +103 -0
  46. package/dist/sync/sync-types.d.mts.map +1 -0
  47. package/dist/sync/sync-types.mjs +2 -0
  48. package/dist/sync/sync-types.mjs.map +1 -0
  49. package/dist/test/mock-space.d.mts +39 -0
  50. package/dist/test/mock-space.d.mts.map +1 -0
  51. package/dist/test/mock-space.mjs +79 -0
  52. package/dist/test/mock-space.mjs.map +1 -0
  53. package/dist/witness/space/inner-space/inner-space-v1.respec.mjs +163 -201
  54. package/dist/witness/space/inner-space/inner-space-v1.respec.mjs.map +1 -1
  55. package/dist/witness/space/space-helper.d.mts.map +1 -1
  56. package/dist/witness/space/space-helper.mjs +43 -4
  57. package/dist/witness/space/space-helper.mjs.map +1 -1
  58. package/dist/witness/space/space-helper.respec.d.mts +2 -0
  59. package/dist/witness/space/space-helper.respec.d.mts.map +1 -0
  60. package/dist/witness/space/space-helper.respec.mjs +30 -0
  61. package/dist/witness/space/space-helper.respec.mjs.map +1 -0
  62. package/package.json +2 -2
  63. package/src/agent-helpers.mts +58 -0
  64. package/src/keystone/keystone-config-builder.respec.mts +49 -0
  65. package/src/keystone/keystone-constants.mts +2 -0
  66. package/src/keystone/keystone-helpers.mts +211 -2
  67. package/src/keystone/keystone-service-v1.mts +183 -367
  68. package/src/keystone/keystone-service-v1.respec.mts +484 -21
  69. package/src/keystone/keystone-types.mts +24 -0
  70. package/src/sync/sync-constants.mts +24 -0
  71. package/src/sync/sync-helpers.mts +59 -0
  72. package/src/sync/sync-local-spaces.respec.mts +200 -0
  73. package/src/sync/sync-saga-coordinator.mts +477 -0
  74. package/src/sync/sync-saga-coordinator.respec.mts +52 -0
  75. package/src/sync/sync-types.mts +120 -0
  76. package/src/test/mock-space.mts +85 -0
  77. package/src/witness/space/inner-space/inner-space-v1.respec.mts +181 -228
  78. package/src/witness/space/space-helper.mts +42 -4
  79. package/src/witness/space/space-helper.respec.mts +42 -0
  80. package/tmp.md +11 -0
@@ -1,13 +1,10 @@
1
- import { extractErrorMsg, hash, pretty } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
1
+ import { extractErrorMsg, } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
2
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
3
- import { mut8 } from '@ibgib/ts-gib/dist/V1/transforms/mut8.mjs';
4
- import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
5
- import { getGib } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
6
3
  import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
7
- import { KeystoneReplenishStrategy, KEYSTONE_REPLENISH_STRATEGY_VALID_VALUES, } from './keystone-types.mjs';
4
+ import { KeystoneReplenishStrategy, } from './keystone-types.mjs';
8
5
  import { KeystoneStrategyFactory } from './strategy/keystone-strategy-factory.mjs';
9
- import { KEYSTONE_ATOM, POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE } from './keystone-constants.mjs';
10
- import { addToBindingMap, getDeterministicRequirements, getKeystoneIb, removeFromBindingMap, validateKeystoneTransition, } from './keystone-helpers.mjs';
6
+ import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_VERB_MANAGE } from './keystone-constants.mjs';
7
+ import { addToBindingMap, createKeystoneIbGibImpl, evolvePersistAndRegisterKeystone, generateOpaqueChallengeId, resolveTargetPool, selectChallengeIds, solveAndReplenish, validateKeystoneTransition, } from './keystone-helpers.mjs';
11
8
  const logalot = GLOBAL_LOG_A_LOT || true;
12
9
  /**
13
10
  * Facade for managing Keystone Identities.
@@ -34,7 +31,7 @@ export class KeystoneService_V1 {
34
31
  const targetSize = config.behavior.size;
35
32
  const timestamp = Date.now().toString();
36
33
  for (let i = 0; i < targetSize; i++) {
37
- const challengeId = await this.generateOpaqueChallengeId({
34
+ const challengeId = await generateOpaqueChallengeId({
38
35
  salt: config.salt, timestamp, index: i
39
36
  });
40
37
  const solution = await strategy.generateSolution({
@@ -52,8 +49,11 @@ export class KeystoneService_V1 {
52
49
  bindingMap
53
50
  });
54
51
  }
52
+ if (challengePools.length === 0) {
53
+ throw new Error(`No challenge pools created. (E: 38e538530996940e1f16a8b199995825)`);
54
+ }
55
55
  const data = { challengePools, proofs: [] };
56
- const keystoneIbGib = await this.createKeystoneIbGibImpl({ data, metaspace, space });
56
+ const keystoneIbGib = await createKeystoneIbGibImpl({ data, metaspace, space });
57
57
  return keystoneIbGib;
58
58
  }
59
59
  catch (error) {
@@ -67,112 +67,64 @@ export class KeystoneService_V1 {
67
67
  }
68
68
  }
69
69
  /**
70
- * Signs a claim using a hybrid selection strategy.
71
- * Supports: Mandatory IDs (Alice) + Sequential (FIFO) + Random (Stochastic).
70
+ * Signs a claim by solving challenges from a specific pool and evolving the Keystone timeline.
71
+ *
72
+ * Uses a hybrid selection strategy: Mandatory IDs (Alice) + Sequential (FIFO) + Random (Stochastic).
73
+ *
74
+ * Supports Delegation via `poolFilter` to find specific foreign pools.
72
75
  */
73
- async sign({ latestKeystone, masterSecret, claim, poolId, requiredChallengeIds = [], frameDetails, metaspace, space, }) {
76
+ async sign({ latestKeystone, masterSecret, claim, poolId, poolFilter, requiredChallengeIds = [], frameDetails, metaspace, space, }) {
74
77
  const lc = `${this.lc}[${this.sign.name}]`;
75
78
  try {
76
79
  if (logalot) {
77
- console.log(`${lc} starting... (I: 519e0810cce8647ce83bdb3b5019a825)`);
80
+ console.log(`${lc} starting...`);
78
81
  }
79
82
  const prevData = latestKeystone.data;
80
83
  if (prevData.revocationInfo) {
81
- throw new Error(`keystone has been revoked (latestKeystone.data.revocationInfo is truthy). (E: 4f2198c39116d15c48ba191940316825)`);
82
- }
83
- let pool;
84
- const poolsToSearch = prevData.challengePools;
84
+ throw new Error(`Keystone has been revoked. Cannot sign. (E: 4f2198c39116d15c48ba191940316825)`);
85
+ }
86
+ // 1. Identify Authority (Resolve Pool)
87
+ const pool = resolveTargetPool({
88
+ pools: prevData.challengePools,
89
+ poolId,
90
+ poolFilter,
91
+ verb: claim.verb
92
+ });
85
93
  if (logalot) {
86
- console.log(`${lc} Searching pools: ${poolsToSearch.map(p => p.id).join(', ')} for target: ${poolId || 'auto'}`);
94
+ console.log(`${lc} Selected pool: ${pool.id} (size: ${Object.keys(pool.challenges).length}) (I: genuuid)`);
87
95
  }
88
- // ---------------------------------------------------------------
89
- // 0. POOL RESOLUTION (Deterministic Mapping)
90
- // ---------------------------------------------------------------
91
- if (poolId) {
92
- // Explicit selection
93
- pool = poolsToSearch.find(p => p.id === poolId);
94
- if (!pool) {
95
- throw new Error(`Pool not found: ${poolId} (E: genuuid)`);
96
- }
97
- // Enforce Policy on Explicit Selection
98
- // FIX: Check length > 0. If empty, it's a default pool (allow all).
99
- if (pool.config.allowedVerbs && pool.config.allowedVerbs.length > 0 && claim.verb) {
100
- if (!pool.config.allowedVerbs.includes(claim.verb)) {
101
- throw new Error(`Pool ${poolId} is not authorized for verb: ${claim.verb} (E: genuuid)`);
102
- }
103
- }
104
- }
105
- else {
106
- // Automatic Resolution based on Verb
107
- if (!claim.verb) {
108
- throw new Error(`Cannot auto-resolve pool without a verb in the claim. (E: genuuid)`);
109
- }
110
- // 1. Look for Specific Match
111
- pool = poolsToSearch.find(p => p.config.allowedVerbs && p.config.allowedVerbs.includes(claim.verb));
112
- // 2. Look for General/Default (No restrictions)
113
- if (!pool) {
114
- pool = poolsToSearch.find(p => !p.config.allowedVerbs || p.config.allowedVerbs.length === 0);
115
- }
116
- if (!pool) {
117
- throw new Error(`No suitable pool found for verb: ${claim.verb} (E: genuuid)`);
118
- }
119
- }
120
- // 1. Get Deterministic Requirements (Demands -> Binding -> FIFO)
121
- const { mandatoryIds, availableIds } = getDeterministicRequirements({
96
+ // 2. Calculate Costs (Select IDs)
97
+ const idsToSolve = selectChallengeIds({
122
98
  pool,
123
- requiredChallengeIds,
124
- targetAddr: claim.target
99
+ targetAddr: claim.target,
100
+ requiredChallengeIds
125
101
  });
126
- // 2. Stochastic Selection
127
- const randomCount = pool.config.behavior.selectRandomly;
128
- const randomIds = [];
129
- if (logalot) {
130
- console.log(`${lc} Pool Info: id=${pool.id} invalid=${!pool} size=${Object.keys(pool.challenges || {}).length}`);
131
- console.log(`${lc} Behavior: seq=${pool.config.behavior.selectSequentially} rand=${randomCount} binding=${pool.config.behavior.targetBindingChars}`);
132
- console.log(`${lc} Requirements: mandatory=${mandatoryIds.size} available=${availableIds.length}`);
133
- }
134
- if (randomCount > 0) {
135
- if (availableIds.length < randomCount) {
136
- throw new Error(`Insufficient challenges for random requirement. Need ${randomCount}, have ${availableIds.length}`);
137
- }
138
- // Shuffle & Pick
139
- const shuffled = availableIds.sort(() => 0.5 - Math.random());
140
- randomIds.push(...shuffled.slice(0, randomCount));
141
- }
142
- // 3. Combine & Solve
143
- const finalSelectedIds = [...mandatoryIds, ...randomIds];
144
- const strategy = KeystoneStrategyFactory.create({ config: pool.config });
145
- const secretToUse = masterSecret;
146
- const poolSecret = await strategy.derivePoolSecret({ masterSecret: secretToUse });
147
- const solutions = [];
148
- for (const id of finalSelectedIds) {
149
- const solution = await strategy.generateSolution({
150
- poolSecret, poolId: pool.id, challengeId: id,
151
- });
152
- solutions.push(solution);
153
- }
154
- // 4. Replenish
155
- const nextPools = await this.applyReplenishmentStrategy({
156
- prevPools: poolsToSearch,
102
+ // 3. Pay the Cost (Solve & Replenish)
103
+ // This helper handles the Strategy creation, Secret derivation, Solving,
104
+ // and the calculation of the Next state for ALL pools.
105
+ const { proof, nextPools } = await solveAndReplenish({
157
106
  targetPoolId: pool.id,
158
- consumedIds: finalSelectedIds,
159
- masterSecret: secretToUse,
160
- strategy,
161
- config: pool.config
162
- });
163
- // 5. Build Proof (Include requiredChallengeIds!)
164
- const proof = {
107
+ prevPools: prevData.challengePools,
108
+ masterSecret,
109
+ challengeIds: idsToSolve,
165
110
  claim,
166
- solutions,
167
- requiredChallengeIds: requiredChallengeIds.length > 0 ? requiredChallengeIds : undefined
168
- };
111
+ requiredChallengeIds
112
+ });
113
+ // 4. Construct New Data
169
114
  const newData = {
170
115
  challengePools: nextPools,
171
116
  proofs: [proof],
172
117
  frameDetails,
118
+ // Revocation info is undefined for a standard sign operation
173
119
  };
174
- const newIbGib = await this.evolveKeystoneIbGibImpl({ prevIbGib: latestKeystone, newData, metaspace, space });
175
- return newIbGib;
120
+ // 5. Commit (Evolve, Persist, Register)
121
+ const resKeystone = await evolvePersistAndRegisterKeystone({
122
+ prevIbGib: latestKeystone,
123
+ newData,
124
+ metaspace,
125
+ space
126
+ });
127
+ return resKeystone;
176
128
  }
177
129
  catch (error) {
178
130
  console.error(`${lc} ${extractErrorMsg(error)}`);
@@ -206,83 +158,69 @@ export class KeystoneService_V1 {
206
158
  *
207
159
  * Logic:
208
160
  * 1. Locates the 'revoke' pool.
209
- * 2. Consumes ALL available challenges in that pool (Scorched Earth).
210
- * 3. Sets the revocationInfo on the new frame.
161
+ * 2. Solves required challenges to prove ownership.
162
+ * 3. Wipes the pool (via 'scorched-earth' strategy in solveAndReplenish).
163
+ * 4. Sets the revocationInfo on the new frame.
211
164
  */
212
165
  async revoke({ latestKeystone, masterSecret, reason = "User initiated revocation", frameDetails, metaspace, space, }) {
213
166
  const lc = `${this.lc}[${this.revoke.name}]`;
214
167
  try {
215
- const prevData = latestKeystone.data;
216
- space ??= await metaspace.getLocalUserSpace({ lock: false });
217
- if (!space) {
218
- throw new Error(`(UNEXPECTED) space falsy and couldn't get default local user space from the metaspace? (E: 73c8bfc0e7383a540ea1d6b14b020125)`);
219
- }
220
- // 1. Find Revocation Pool
221
- const pool = prevData.challengePools.find(p => p.id === POOL_ID_REVOKE);
222
- if (!pool) {
223
- throw new Error(`Revocation pool not found (E: 8c4f18c5461c1d601283108878c79825)`);
168
+ if (logalot) {
169
+ console.log(`${lc} starting...`);
224
170
  }
225
- // 2. Select Challenges (Standard Policy, NOT ALL)
171
+ const prevData = latestKeystone.data;
172
+ // 1. Identify Authority (Resolve Revoke Pool)
173
+ const pool = resolveTargetPool({
174
+ pools: prevData.challengePools,
175
+ poolId: POOL_ID_REVOKE // Explicitly require the special revoke pool
176
+ });
177
+ // 2. Construct Claim
226
178
  const claim = {
227
179
  verb: KEYSTONE_VERB_REVOKE,
228
180
  target: getIbGibAddr({ ibGib: latestKeystone })
229
181
  };
230
- const { mandatoryIds, availableIds } = getDeterministicRequirements({
182
+ // 3. Calculate Costs
183
+ const idsToSolve = selectChallengeIds({
231
184
  pool,
232
- requiredChallengeIds: [], // Revocation usually doesn't have external demands
233
- targetAddr: claim.target
185
+ targetAddr: claim.target,
186
+ requiredChallengeIds: []
234
187
  });
235
- // Stochastic Selection
236
- const randomCount = pool.config.behavior.selectRandomly;
237
- const randomIds = [];
238
- if (randomCount > 0) {
239
- if (availableIds.length < randomCount) {
240
- throw new Error(`Insufficient challenges. availableIds.length (${availableIds.length}) is less than required random count (${randomCount}) (E: b2e3570ab998dfdbab5fbdda1e43d825)`);
241
- }
242
- const shuffled = availableIds.sort(() => 0.5 - Math.random());
243
- randomIds.push(...shuffled.slice(0, randomCount));
188
+ if (idsToSolve.length === 0) {
189
+ throw new Error(`Revocation policy selected 0 challenges? Check config for pool ${pool.id}. Revocation requires proof. (E: 97e5a8356d241ae7b882db791cb1f825)`);
244
190
  }
245
- const selectedIds = [...mandatoryIds, ...randomIds];
246
- if (selectedIds.length === 0) {
247
- throw new Error(`Revocation policy selected 0 challenges? Check config for pool. id: ${pool.id}. pool.config: ${pretty(pool.config)} (E: 97e5a8356d241ae7b882db791cb1f825)`);
248
- }
249
- // 3. Solve Selected
250
- const strategy = KeystoneStrategyFactory.create({ config: pool.config });
251
- const poolSecret = await strategy.derivePoolSecret({ masterSecret });
252
- const solutions = [];
253
- for (const id of selectedIds) {
254
- const solution = await strategy.generateSolution({
255
- poolSecret, poolId: pool.id, challengeId: id,
256
- });
257
- solutions.push(solution);
258
- }
259
- // 4. Replenish (Scorched Earth)
260
- const nextPools = await this.applyReplenishmentStrategy({
261
- prevPools: prevData.challengePools,
191
+ // 4. Pay the Cost & Scorched Earth
192
+ // The revoke pool config should have 'replenish: scorched-earth',
193
+ // causing solveAndReplenish to return an empty pool in nextPools.
194
+ const { proof, nextPools } = await solveAndReplenish({
262
195
  targetPoolId: pool.id,
263
- consumedIds: selectedIds,
196
+ prevPools: prevData.challengePools,
264
197
  masterSecret,
265
- strategy,
266
- config: pool.config
267
- });
268
- // 5. Construct Proof
269
- const proof = {
198
+ challengeIds: idsToSolve,
270
199
  claim,
271
- solutions,
272
- };
200
+ requiredChallengeIds: []
201
+ });
202
+ // warn if nextPools contains pool.id that isn't empty (we were
203
+ // supposed to do "scorched earth" which empties the pool)
204
+ if (nextPools.find(p => p.id === pool.id && Object.keys(p.challenges).length > 0)) {
205
+ console.warn(`${lc} revocation pool ${pool.id} is not empty after revocation. Is the revocation pool replenish strategy set to ${KeystoneReplenishStrategy.scorchedEarth}? (W: 300c28bc8b98fc3e3c0b0d988344f825)`);
206
+ }
207
+ // 5. Construct Revocation Info
273
208
  const revocationInfo = { reason, proof };
209
+ // 6. Construct New Data
274
210
  const newData = {
275
211
  challengePools: nextPools,
276
212
  proofs: [proof],
277
213
  revocationInfo,
278
214
  frameDetails
279
215
  };
280
- return await this.evolveKeystoneIbGibImpl({
216
+ // 7. Commit
217
+ const newKeystone = await evolvePersistAndRegisterKeystone({
281
218
  prevIbGib: latestKeystone,
282
219
  newData,
283
220
  metaspace,
284
- space,
221
+ space
285
222
  });
223
+ return newKeystone;
286
224
  }
287
225
  catch (error) {
288
226
  console.error(`${lc} ${extractErrorMsg(error)}`);
@@ -295,198 +233,83 @@ export class KeystoneService_V1 {
295
233
  }
296
234
  }
297
235
  /**
298
- * Generates an opaque, collision-resistant ID for a challenge.
299
- * atow (2025/12/22) - Hash(Salt + Timestamp + Index)
300
- */
301
- async generateOpaqueChallengeId({ salt, timestamp, index }) {
302
- // Use full SHA-256 hash, or slice it?
303
- // User suggested substring is fine for pool uniqueness.
304
- // Let's use first 16 chars of hex (64 bits) for brevity + safety.
305
- const raw = await hash({ s: `${salt}${timestamp}${index}` });
306
- return raw.substring(0, 16);
307
- }
308
- async applyReplenishmentStrategy({ prevPools, targetPoolId, consumedIds, masterSecret, strategy, config }) {
309
- const newPools = JSON.parse(JSON.stringify(prevPools));
310
- if (logalot) {
311
- console.log(`[applyReplenishmentStrategy] Cloned pools. Ref check: ${prevPools === newPools} (should be false)`);
312
- }
313
- const targetIdx = newPools.findIndex((p) => p.id === targetPoolId);
314
- if (targetIdx === -1) {
315
- throw new Error(`Target pool ${targetPoolId} not found in keytstone data. (E: 75200388d22744838634524233772545)`);
316
- }
317
- const pool = newPools[targetIdx];
318
- const poolSecret = await strategy.derivePoolSecret({ masterSecret });
319
- const timestamp = Date.now().toString();
320
- const strategyType = config.behavior.replenish;
321
- // Clean up Binding Map for consumed IDs
322
- consumedIds.forEach(id => {
323
- if (pool.bindingMap) {
324
- removeFromBindingMap(pool.bindingMap, id);
325
- }
326
- });
327
- if (strategyType === KeystoneReplenishStrategy.topUp) {
328
- // Remove consumed
329
- consumedIds.forEach(id => delete pool.challenges[id]);
330
- // Add New
331
- for (let i = 0; i < consumedIds.length; i++) {
332
- const newId = await this.generateOpaqueChallengeId({
333
- salt: config.salt, timestamp, index: i
334
- });
335
- const solution = await strategy.generateSolution({
336
- poolSecret, poolId: pool.id, challengeId: newId
337
- });
338
- pool.challenges[newId] = await strategy.generateChallenge({ solution });
339
- // Update Binding Map
340
- if (!pool.bindingMap) {
341
- pool.bindingMap = {};
342
- }
343
- addToBindingMap(pool.bindingMap, newId);
344
- }
345
- }
346
- else if (strategyType === KeystoneReplenishStrategy.replaceAll) {
347
- pool.challenges = {};
348
- pool.bindingMap = {};
349
- for (let i = 0; i < config.behavior.size; i++) {
350
- const newId = await this.generateOpaqueChallengeId({
351
- salt: config.salt, timestamp, index: i
352
- });
353
- const solution = await strategy.generateSolution({
354
- poolSecret, poolId: pool.id, challengeId: newId
355
- });
356
- pool.challenges[newId] = await strategy.generateChallenge({ solution });
357
- addToBindingMap(pool.bindingMap, newId);
358
- }
359
- }
360
- else if (strategyType === KeystoneReplenishStrategy.consume) {
361
- consumedIds.forEach(id => delete pool.challenges[id]);
362
- }
363
- else if (strategyType === KeystoneReplenishStrategy.scorchedEarth) {
364
- pool.challenges = {};
365
- pool.bindingMap = {};
366
- }
367
- else {
368
- throw new Error(`Unknown replenish strategy: ${strategyType}. Valid list: ${pretty(KEYSTONE_REPLENISH_STRATEGY_VALID_VALUES)} (E: 0acf56f1e1486240080e11e8046d0825)`);
369
- }
370
- return newPools;
371
- }
372
- /**
373
- * Creates a new keystone ibgib that has no dna and no past.
236
+ * Structural evolution: Adds new challenge pools to the keystone.
237
+ *
238
+ * Use Case: Adding a delegate (Server) for SSO, adding a recovery key,
239
+ * or rotating to a new set of pools.
240
+ *
241
+ * Requires the Master Secret to authorize the change via a pool containing
242
+ * the 'manage' verb.
374
243
  */
375
- async createKeystoneIbGibImpl({ data, metaspace, space, }) {
376
- const lc = `${this.lc}[${this.createKeystoneIbGibImpl.name}]`;
244
+ async addPools({ latestKeystone, masterSecret, newPools, metaspace, space, }) {
245
+ const lc = `${this.lc}[${this.addPools.name}]`;
377
246
  try {
378
247
  if (logalot) {
379
- console.log(`${lc} starting... (I: 5e32389700e9899e788cbefacef7c825)`);
248
+ console.log(`${lc} starting...`);
380
249
  }
381
- space ??= await metaspace.getLocalUserSpace({ lock: false });
382
- if (!space) {
383
- throw new Error(`(UNEXPECTED) space was falsy and we couldn't get default local user space from metaspace? (E: 9a6498cf16a8801f19ec376749742225)`);
250
+ if (!latestKeystone.data) {
251
+ throw new Error(`(UNEXPECTED) latestKeystone.data falsy? (E: 7334c8faed128166a999d428c7805b25)`);
384
252
  }
385
- // create the actual keystoneIbGib
386
- const resFirstGen = await Factory_V1.firstGen({
387
- parentIbGib: Factory_V1.primitive({ ib: KEYSTONE_ATOM }),
388
- ib: await getKeystoneIb({ keystoneData: data }),
389
- data,
390
- dna: false,
391
- nCounter: true,
392
- tjp: {
393
- timestamp: true,
394
- uuid: true,
395
- },
396
- });
397
- const keystoneIbGib = resFirstGen.newIbGib;
398
- if (!keystoneIbGib.data) {
399
- throw new Error(`(UNEXPECTED) keystoneIbGib.data falsy? We expect the data to be populated with real keystone data. (E: 38a358facdb89d16d81d48c8520d3d25)`);
400
- }
401
- if (!keystoneIbGib.rel8ns) {
402
- throw new Error(`(UNEXPECTED) keystoneIbGib.rel8ns falsy? we expect the rel8ns to have ancestor and past. (E: 20cb7723dc33ae1ef808fe76d1bf4b25)`);
403
- }
404
- if (!keystoneIbGib.rel8ns.past || keystoneIbGib.rel8ns.past.length === 0) {
405
- throw new Error(`(UNEXPECTED) keystoneIbGib.rel8ns.past falsy or empty? we expect the firstGen call to generate an interstitial ibgib that we will splice out. (E: 0fd8388d045ab9f37834c27d67e78825)`);
253
+ const prevData = latestKeystone.data;
254
+ if (prevData.revocationInfo) {
255
+ throw new Error(`Keystone has been revoked. Cannot add pools. (E: 8599f8f51c78d722252ddb2894fdbe25)`);
406
256
  }
407
- // reset n
408
- keystoneIbGib.data.n = 0;
409
- // reset tjp
410
- keystoneIbGib.data.isTjp = true;
411
- delete keystoneIbGib.rel8ns.tjp;
412
- // reset past
413
- delete keystoneIbGib.rel8ns.past;
414
- // recalculate gib
415
- keystoneIbGib.gib = await getGib({ ibGib: keystoneIbGib });
416
- // save and register
417
- await metaspace.put({ ibGib: keystoneIbGib, space, });
418
- await metaspace.registerNewIbGib({ ibGib: keystoneIbGib, space, });
419
- return keystoneIbGib;
420
- }
421
- catch (error) {
422
- console.error(`${lc} ${extractErrorMsg(error)}`);
423
- throw error;
424
- }
425
- finally {
426
- if (logalot) {
427
- console.log(`${lc} complete.`);
257
+ if (newPools.length === 0) {
258
+ throw new Error(`No new pools provided to add. (E: 6599f8f51c78d722252ddb2894fdbe25)`);
428
259
  }
429
- }
430
- }
431
- async evolveKeystoneIbGibImpl({ prevIbGib, newData, metaspace, space, }) {
432
- const lc = `${this.lc}[${this.evolveKeystoneIbGibImpl.name}]`;
433
- try {
260
+ // 1. Identify Authority (Resolve Admin Pool)
261
+ // We need a pool that allows the 'manage' verb.
262
+ const adminPool = resolveTargetPool({
263
+ pools: prevData.challengePools,
264
+ verb: KEYSTONE_VERB_MANAGE,
265
+ });
434
266
  if (logalot) {
435
- console.log(`${lc} starting... (I: 8b10e8920f08b7842803665834cf8925)`);
436
- }
437
- if (!prevIbGib.data) {
438
- throw new Error(`(UNEXPECTED) prevIbGib.data falsy? (E: 5e84875bf992c585b979e6c8ed5bf225)`);
439
- }
440
- if (prevIbGib.data.revocationInfo) {
441
- throw new Error(`Keystone has already been revoked (prevIbGib.data.revocationInfo truthy), so we cannot evolve the keystone. Keystone addr: ${getIbGibAddr({ ibGib: prevIbGib })} (E: 45d7f846556829de6b2a701838c3f825)`);
267
+ console.log(`${lc} Authorized via pool: ${adminPool.id}`);
442
268
  }
443
- const prevData = prevIbGib.data;
444
- /**
445
- * we want to completely replace these keys, so we will remove them
446
- * from the data. This occurs first in the underlying mut8
447
- * transform.
448
- * @see {@link mut8}
449
- */
450
- let dataToRemove = {};
451
- if (prevData.proofs) {
452
- dataToRemove.proofs = [];
453
- }
454
- if (prevData.challengePools) {
455
- dataToRemove.challengePools = [];
456
- }
457
- if (prevData.frameDetails) {
458
- dataToRemove.frameDetails = {};
459
- }
460
- if (Object.keys(dataToRemove).length === 0) {
461
- dataToRemove = undefined;
462
- }
463
- const resMut8 = await mut8({
464
- src: prevIbGib,
465
- dataToRemove,
466
- dataToAddOrPatch: newData,
467
- // dna: false, // explicitly set to false just to show
468
- nCounter: true,
269
+ // 2. Construct the Management Claim
270
+ const target = getIbGibAddr({ ibGib: latestKeystone });
271
+ const claim = {
272
+ verb: KEYSTONE_VERB_MANAGE,
273
+ target, // I am managing myself
274
+ // Scope creates a cryptographic commitment to WHICH pools are being added
275
+ scope: JSON.stringify({ add: newPools.map(p => p.id) })
276
+ };
277
+ // 3. Calculate Costs
278
+ const idsToSolve = selectChallengeIds({
279
+ pool: adminPool,
280
+ targetAddr: target
469
281
  });
470
- if (!!resMut8.intermediateIbGibs) {
471
- throw new Error(`(UNEXPECTED) resMut8.intermediateIbGibs truthy? I'm not sure if we expect there to be intermediateIbGibs, but I feel like we shouldn't. Pretty sure we shouldn't, definitely don't *want* them. (E: ba40d55d7c2d36d438c413886f148625)`);
472
- }
473
- if (!!resMut8.dnas) {
474
- throw new Error(`(UNEXPECTED) resMut8.dnas truthy? We do not want dnas with keystones. (E: 49470513d018f97d28024f4e82da3b25)`);
475
- }
476
- const newKeystoneIbGib = resMut8.newIbGib;
477
- // run validation here
478
- const errors = await this.validate({
479
- currentIbGib: newKeystoneIbGib,
480
- prevIbGib,
282
+ // 4. Pay the Cost (Solve & Replenish)
283
+ // This authorizes the change by evolving the admin pool.
284
+ const { proof, nextPools: replenishedExistingPools } = await solveAndReplenish({
285
+ targetPoolId: adminPool.id,
286
+ prevPools: prevData.challengePools,
287
+ masterSecret,
288
+ challengeIds: idsToSolve,
289
+ claim,
481
290
  });
482
- if (errors.length > 0) {
483
- console.error(`${lc} Validation Failed:\n${errors.join('\n')}`);
484
- throw new Error(`(UNEXPECTED) invalid keystone after we just evolved it? Errors: ${errors.join('; ')} (E: ae2c58406c1db7687879dfb89fc1f825)`);
291
+ // 5. Mutate Structure (Add the new pools)
292
+ // We verify ID uniqueness cheaply here to prevent blatant errors
293
+ const existingIds = new Set(replenishedExistingPools.map(p => p.id));
294
+ for (const newPool of newPools) {
295
+ if (existingIds.has(newPool.id)) {
296
+ throw new Error(`Cannot add pool. ID collision: ${newPool.id} (E: 8a4c2b1d3e5f6a7b8c9d0e1f2a3b4c5d)`);
297
+ }
485
298
  }
486
- // save and register
487
- await metaspace.put({ ibGib: newKeystoneIbGib, space, });
488
- await metaspace.registerNewIbGib({ ibGib: newKeystoneIbGib, space, });
489
- return newKeystoneIbGib;
299
+ const finalPools = [...replenishedExistingPools, ...newPools];
300
+ // 6. Construct New Data
301
+ const newData = {
302
+ challengePools: finalPools,
303
+ proofs: [proof], // The proof authorizes the structure change
304
+ };
305
+ // 7. Commit
306
+ const newKeystone = await evolvePersistAndRegisterKeystone({
307
+ prevIbGib: latestKeystone,
308
+ newData,
309
+ metaspace,
310
+ space
311
+ });
312
+ return newKeystone;
490
313
  }
491
314
  catch (error) {
492
315
  console.error(`${lc} ${extractErrorMsg(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-service-v1.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keystone-service-v1.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.mts"],"names":[],"mappings":"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"}