@kya-os/mcp-i-core 1.1.14-canary.1 → 1.2.1-canary.0

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 (60) hide show
  1. package/dist/__tests__/utils/mock-providers.d.ts +5 -3
  2. package/dist/__tests__/utils/mock-providers.d.ts.map +1 -1
  3. package/dist/__tests__/utils/mock-providers.js +23 -12
  4. package/dist/__tests__/utils/mock-providers.js.map +1 -1
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +6 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/providers/base.d.ts +18 -3
  10. package/dist/providers/base.d.ts.map +1 -1
  11. package/dist/providers/base.js +5 -1
  12. package/dist/providers/base.js.map +1 -1
  13. package/dist/providers/memory.d.ts +2 -2
  14. package/dist/providers/memory.d.ts.map +1 -1
  15. package/dist/providers/memory.js +9 -5
  16. package/dist/providers/memory.js.map +1 -1
  17. package/dist/runtime/base.d.ts +26 -1
  18. package/dist/runtime/base.d.ts.map +1 -1
  19. package/dist/runtime/base.js +102 -7
  20. package/dist/runtime/base.js.map +1 -1
  21. package/dist/services/access-control.service.d.ts +21 -0
  22. package/dist/services/access-control.service.d.ts.map +1 -1
  23. package/dist/services/access-control.service.js +333 -9
  24. package/dist/services/access-control.service.js.map +1 -1
  25. package/dist/services/proof-verifier.d.ts +1 -1
  26. package/dist/services/proof-verifier.d.ts.map +1 -1
  27. package/dist/services/proof-verifier.js +15 -14
  28. package/dist/services/proof-verifier.js.map +1 -1
  29. package/dist/services/storage.service.d.ts +116 -0
  30. package/dist/services/storage.service.d.ts.map +1 -0
  31. package/dist/services/storage.service.js +405 -0
  32. package/dist/services/storage.service.js.map +1 -0
  33. package/dist/utils/storage-keys.d.ts +1 -0
  34. package/dist/utils/storage-keys.d.ts.map +1 -1
  35. package/dist/utils/storage-keys.js.map +1 -1
  36. package/package.json +3 -3
  37. package/dist/compliance/schema-verifier-v2.d.ts +0 -110
  38. package/dist/compliance/schema-verifier-v2.d.ts.map +0 -1
  39. package/dist/compliance/schema-verifier-v2.js +0 -510
  40. package/dist/compliance/schema-verifier-v2.js.map +0 -1
  41. package/dist/did/resolver.d.ts +0 -92
  42. package/dist/did/resolver.d.ts.map +0 -1
  43. package/dist/did/resolver.js +0 -203
  44. package/dist/did/resolver.js.map +0 -1
  45. package/dist/proof/proof-engine.d.ts +0 -89
  46. package/dist/proof/proof-engine.d.ts.map +0 -1
  47. package/dist/proof/proof-engine.js +0 -249
  48. package/dist/proof/proof-engine.js.map +0 -1
  49. package/dist/runtime/base-v2.d.ts +0 -117
  50. package/dist/runtime/base-v2.d.ts.map +0 -1
  51. package/dist/runtime/base-v2.js +0 -328
  52. package/dist/runtime/base-v2.js.map +0 -1
  53. package/dist/types/providers.d.ts +0 -142
  54. package/dist/types/providers.d.ts.map +0 -1
  55. package/dist/types/providers.js +0 -43
  56. package/dist/types/providers.js.map +0 -1
  57. package/dist/verification/interfaces.d.ts +0 -125
  58. package/dist/verification/interfaces.d.ts.map +0 -1
  59. package/dist/verification/interfaces.js +0 -101
  60. package/dist/verification/interfaces.js.map +0 -1
@@ -41,8 +41,8 @@ class ProofVerifier {
41
41
  return structureValidation;
42
42
  }
43
43
  const validatedProof = structureValidation.proof;
44
- // 2. Check nonce replay protection
45
- const nonceValidation = await this.validateNonce(validatedProof.meta.nonce);
44
+ // 2. Check nonce replay protection (scoped to agent DID to prevent cross-agent replay attacks)
45
+ const nonceValidation = await this.validateNonce(validatedProof.meta.nonce, validatedProof.meta.did);
46
46
  if (!nonceValidation.valid) {
47
47
  return nonceValidation;
48
48
  }
@@ -59,8 +59,8 @@ class ProofVerifier {
59
59
  if (!signatureValidation.valid) {
60
60
  return signatureValidation;
61
61
  }
62
- // 6. Add nonce to cache to prevent replay
63
- await this.addNonceToCache(validatedProof.meta.nonce);
62
+ // 6. Add nonce to cache to prevent replay (scoped to agent DID)
63
+ await this.addNonceToCache(validatedProof.meta.nonce, validatedProof.meta.did);
64
64
  return {
65
65
  valid: true,
66
66
  };
@@ -93,8 +93,8 @@ class ProofVerifier {
93
93
  return structureValidation;
94
94
  }
95
95
  const validatedProof = structureValidation.proof;
96
- // 2. Check nonce replay protection
97
- const nonceValidation = await this.validateNonce(validatedProof.meta.nonce);
96
+ // 2. Check nonce replay protection (scoped to agent DID to prevent cross-agent replay attacks)
97
+ const nonceValidation = await this.validateNonce(validatedProof.meta.nonce, validatedProof.meta.did);
98
98
  if (!nonceValidation.valid) {
99
99
  return nonceValidation;
100
100
  }
@@ -112,8 +112,8 @@ class ProofVerifier {
112
112
  if (!signatureValidation.valid) {
113
113
  return signatureValidation;
114
114
  }
115
- // 6. Add nonce to cache
116
- await this.addNonceToCache(validatedProof.meta.nonce);
115
+ // 6. Add nonce to cache (scoped to agent DID)
116
+ await this.addNonceToCache(validatedProof.meta.nonce, validatedProof.meta.did);
117
117
  return {
118
118
  valid: true,
119
119
  };
@@ -157,8 +157,8 @@ class ProofVerifier {
157
157
  * Validate nonce replay protection
158
158
  * @private
159
159
  */
160
- async validateNonce(nonce) {
161
- const nonceUsed = await this.nonceCache.has(nonce);
160
+ async validateNonce(nonce, agentDid) {
161
+ const nonceUsed = await this.nonceCache.has(nonce, agentDid);
162
162
  if (nonceUsed) {
163
163
  return {
164
164
  valid: false,
@@ -166,6 +166,7 @@ class ProofVerifier {
166
166
  errorCode: errors_js_1.PROOF_VERIFICATION_ERROR_CODES.NONCE_REPLAY_DETECTED,
167
167
  details: {
168
168
  nonce,
169
+ agentDid,
169
170
  },
170
171
  };
171
172
  }
@@ -218,12 +219,12 @@ class ProofVerifier {
218
219
  return { valid: true };
219
220
  }
220
221
  /**
221
- * Add nonce to cache to prevent replay
222
+ * Add nonce to cache to prevent replay (scoped to agent DID)
222
223
  * @private
223
224
  */
224
- async addNonceToCache(nonce) {
225
- const expiresAt = this.clock.calculateExpiry(this.nonceTtlSeconds);
226
- await this.nonceCache.add(nonce, expiresAt);
225
+ async addNonceToCache(nonce, agentDid) {
226
+ // Pass TTL in seconds, not absolute timestamp
227
+ await this.nonceCache.add(nonce, this.nonceTtlSeconds, agentDid);
227
228
  }
228
229
  /**
229
230
  * Fetch public key from DID document
@@ -1 +1 @@
1
- {"version":3,"file":"proof-verifier.js","sourceRoot":"","sources":["../../src/services/proof-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proof-verifier.js","sourceRoot":"","sources":["../../src/services/proof-verifier.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2DAAqE;AAKrE,mDAGiC;AACjC,yDAAiD;AACjD,2CAIqB;AAmBrB,MAAa,aAAa;IAChB,aAAa,CAAgB;IAC7B,KAAK,CAAgB;IACrB,UAAU,CAAqB;IAC/B,KAAK,CAAgB;IACrB,oBAAoB,CAAS;IAC7B,eAAe,CAAS;IAEhC,YAAY,MAA2B;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,iCAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAC,oBAAoB;QACpF,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC,oBAAoB;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,KAAoB,EACpB,YAAwB;QAExB,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAM,CAAC;YAElD,+FAA+F;YAC/F,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAC9C,cAAc,CAAC,IAAI,CAAC,KAAK,EACzB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,eAAe,CAAC;YACzB,CAAC;YAED,0BAA0B;YAC1B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACtD,cAAc,CAAC,IAAI,CAAC,EAAE,CACvB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YAED,mDAAmD;YACnD,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CACvD,cAAc,CAAC,IAAI,CACpB,CAAC;YACF,MAAM,qBAAqB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACpD,sBAAsB,CACvB,CAAC;YAEF,0DAA0D;YAC1D,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CACpD,cAAc,CAAC,GAAG,EAClB,YAAY,EACZ,qBAAqB,EACrB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YAED,gEAAgE;YAChE,MAAM,IAAI,CAAC,eAAe,CACxB,cAAc,CAAC,IAAI,CAAC,KAAK,EACzB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,0BAA0B;gBAClC,SAAS,EAAE,0CAA8B,CAAC,kBAAkB;gBAC5D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,OAAO,EAAE;oBACP,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACrE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CACvB,KAAoB,EACpB,gBAAqC,EACrC,YAAwB;QAExB,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAM,CAAC;YAElD,+FAA+F;YAC/F,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAC9C,cAAc,CAAC,IAAI,CAAC,KAAK,EACzB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,eAAe,CAAC;YACzB,CAAC;YAED,0BAA0B;YAC1B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACtD,cAAc,CAAC,IAAI,CAAC,EAAE,CACvB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YAED,uDAAuD;YACvD,MAAM,qBAAqB,GACzB,gBAAgB,YAAY,UAAU;gBACpC,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAEjD,gDAAgD;YAChD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CACpD,cAAc,CAAC,GAAG,EAClB,YAAY,EACZ,qBAAqB,EACrB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YAED,8CAA8C;YAC9C,MAAM,IAAI,CAAC,eAAe,CACxB,cAAc,CAAC,IAAI,CAAC,KAAK,EACzB,cAAc,CAAC,IAAI,CAAC,GAAG,CACxB,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,0BAA0B;gBAClC,SAAS,EAAE,0CAA8B,CAAC,kBAAkB;gBAC5D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,OAAO,EAAE;oBACP,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACrE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAClC,KAAoB;QAEpB,MAAM,gBAAgB,GAAG,2BAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,yBAAyB;gBACjC,SAAS,EAAE,0CAA8B,CAAC,uBAAuB;gBACjE,KAAK,EAAE,IAAI,KAAK,CACd,4BAA4B,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,CAC7D;gBACD,OAAO,EAAE;oBACP,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM;iBACzC;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,gBAAgB,CAAC,IAAI;SAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,aAAa,CACzB,KAAa,EACb,QAAiB;QAEjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,6CAA6C;gBACrD,SAAS,EAAE,0CAA8B,CAAC,qBAAqB;gBAC/D,OAAO,EAAE;oBACP,KAAK;oBACL,QAAQ;iBACT;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAC7B,SAAiB;QAEjB,6EAA6E;QAC7E,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACrE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,uCAAuC,IAAI,CAAC,oBAAoB,IAAI;gBAC5E,SAAS,EAAE,0CAA8B,CAAC,uBAAuB;gBACjE,OAAO,EAAE;oBACP,SAAS;oBACT,WAAW;oBACX,WAAW,EAAE,IAAI,CAAC,oBAAoB;oBACtC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;iBAC9B;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,YAAwB,EACxB,qBAAiC,EACjC,WAAoB;QAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CACvD,GAAG,EACH,YAAY,EACZ;YACE,eAAe,EAAE,qBAAqB;YACtC,WAAW;YACX,GAAG,EAAE,OAAO;SACb,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,uBAAuB;gBAC/B,SAAS,EAAE,0CAA8B,CAAC,qBAAqB;gBAC/D,OAAO,EAAE;oBACP,SAAS,EAAE,GAAG,CAAC,MAAM;oBACrB,WAAW;oBACX,SAAS,EAAE,YAAY,CAAC,GAAG;iBAC5B;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,KAAa,EACb,QAAgB;QAEhB,8CAA8C;QAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB,CACzB,GAAW,EACX,GAAY;QAEZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,sBAAsB,EACrD,2BAA2B,GAAG,EAAE,EAChC,EAAE,GAAG,EAAE,CACR,CAAC;YACJ,CAAC;YAED,IACE,CAAC,MAAM,CAAC,kBAAkB;gBAC1B,MAAM,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;gBACD,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,6BAA6B,EAC5D,kDAAkD,GAAG,EAAE,EACvD,EAAE,GAAG,EAAE,CACR,CAAC;YACJ,CAAC;YAED,mDAAmD;YACnD,IAAI,kBAES,CAAC;YACd,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC1D,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CACjD,CAAC,EAAkB,EAAE,EAAE,CACrB,EAAE,CAAC,EAAE,KAAK,WAAW,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,WAAW,EAAE,CAC5D,CAAC;gBAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,6BAA6B,EAC5D,0CAA0C,GAAG,EAAE,EAC/C;wBACE,GAAG;wBACH,GAAG;wBACH,aAAa,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAC1C,CAAC,EAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAC9B;qBACF,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC;gBACtC,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,oBAAoB,EACnD,iDAAiD,EACjD,EAAE,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAC3D,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,kBAAkB,CAAC,YAK9B,CAAC;YAEF,+BAA+B;YAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,kBAAkB,EACjD,sCAAsC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,EAAE,EAC/D,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAClD,CAAC;YACJ,CAAC;YAED,OAAO,GAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kCAAsB,EAAE,CAAC;gBAC5C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,CAAC,KAAK,CACX,sDAAsD,EACtD,KAAK,CACN,CAAC;YACF,MAAM,IAAI,kCAAsB,CAC9B,0CAA8B,CAAC,qBAAqB,EACpD,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClF;gBACE,GAAG;gBACH,GAAG;gBACH,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACtE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,qBAAqB,CAAC,IAA2B;QAC/C,iEAAiE;QACjE,qFAAqF;QACrF,MAAM,OAAO,GAAG;YACd,sEAAsE;YACtE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,kCAAkC;YACtD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB;YACrC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,mCAAmC;YAElD,4BAA4B;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YAEzB,4CAA4C;YAC5C,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACrD,CAAC;QAEF,qFAAqF;QACrF,gFAAgF;QAChF,OAAO,IAAA,gCAAY,EAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF;AArbD,sCAqbC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Storage Service Factory
3
+ *
4
+ * Auto-selects storage providers based on available configuration.
5
+ * Priority: Redis > Cloudflare KV > Cloudflare Durable Objects > Memory
6
+ *
7
+ * @package @kya-os/mcp-i-core
8
+ */
9
+ import { StorageProvider, NonceCacheProvider } from "../providers/base.js";
10
+ /**
11
+ * Storage service configuration
12
+ */
13
+ export interface StorageServiceConfig {
14
+ /** Redis URL (e.g., "redis://localhost:6379") */
15
+ redisUrl?: string;
16
+ /** Cloudflare KV namespace */
17
+ kvNamespace?: {
18
+ get(key: string): Promise<string | null>;
19
+ put(key: string, value: string, options?: {
20
+ expirationTtl?: number;
21
+ }): Promise<void>;
22
+ delete(key: string): Promise<void>;
23
+ list(options?: {
24
+ prefix?: string;
25
+ }): Promise<{
26
+ keys: Array<{
27
+ name: string;
28
+ }>;
29
+ }>;
30
+ };
31
+ /** Cloudflare Durable Object state */
32
+ durableObjectState?: {
33
+ storage: {
34
+ get(key: string): Promise<string | undefined>;
35
+ put(key: string, value: string): Promise<void>;
36
+ delete(key: string): Promise<void>;
37
+ list(options?: {
38
+ prefix?: string;
39
+ }): Promise<Map<string, string>>;
40
+ };
41
+ };
42
+ /** Fallback to memory if no external storage configured (default: true) */
43
+ fallbackToMemory?: boolean;
44
+ }
45
+ /**
46
+ * Storage providers result
47
+ */
48
+ export interface StorageProviders {
49
+ storageProvider: StorageProvider;
50
+ nonceCacheProvider: NonceCacheProvider;
51
+ }
52
+ /**
53
+ * Key helper functions for consistent key formatting
54
+ */
55
+ export declare class StorageKeyHelpers {
56
+ /**
57
+ * Build delegation key using composite format
58
+ * Format: delegation:${userDid}:${agentDid}:${projectId}
59
+ */
60
+ static buildDelegationKey(userDid: string, agentDid: string, projectId: string): string;
61
+ /**
62
+ * Build session key
63
+ * Format: session:${sessionId}
64
+ */
65
+ static buildSessionKey(sessionId: string): string;
66
+ /**
67
+ * Build nonce key
68
+ * Format: nonce:${agentDid}:${nonce}
69
+ */
70
+ static buildNonceKey(agentDid: string, nonce: string): string;
71
+ /**
72
+ * Parse delegation key back into components
73
+ *
74
+ * Format: delegation:${userDid}:${agentDid}:${projectId}
75
+ *
76
+ * Note: DIDs contain colons (e.g., did:key:z123), so we can't simply split by ":"
77
+ * Instead, we:
78
+ * 1. Check that key starts with "delegation:"
79
+ * 2. Take the last part as projectId (doesn't contain colons)
80
+ * 3. Find where agentDid starts (look for "did:" pattern)
81
+ * 4. Everything before agentDid is userDid, everything between agentDid and projectId is agentDid
82
+ *
83
+ * Strategy: Since DIDs always start with "did:", we can find the second occurrence of "did:"
84
+ * to determine where agentDid begins. However, this assumes userDid and agentDid both start with "did:".
85
+ *
86
+ * For keys like "delegation:did:key:user123:did:key:agent456:project-789":
87
+ * - Remove "delegation:" prefix → "did:key:user123:did:key:agent456:project-789"
88
+ * - Find last ":" → separates agentDid from projectId
89
+ * - projectId = "project-789"
90
+ * - Find second occurrence of "did:" → separates userDid from agentDid
91
+ * - userDid = "did:key:user123"
92
+ * - agentDid = "did:key:agent456"
93
+ */
94
+ static parseDelegationKey(key: string): {
95
+ userDid: string;
96
+ agentDid: string;
97
+ projectId: string;
98
+ } | null;
99
+ }
100
+ /**
101
+ * Create storage providers based on configuration
102
+ *
103
+ * Priority order:
104
+ * 1. Redis (if redisUrl provided)
105
+ * 2. Cloudflare KV (if kvNamespace provided)
106
+ * 3. Cloudflare Durable Objects (if durableObjectState provided)
107
+ * 4. In-memory fallback (if fallbackToMemory is true, default)
108
+ */
109
+ export declare function createStorageProviders(config: StorageServiceConfig): Promise<StorageProviders>;
110
+ /**
111
+ * Migration utility for legacy key formats
112
+ *
113
+ * Migrates keys from old format (e.g., `agent:${did}:delegation`) to new composite format
114
+ */
115
+ export declare function migrateLegacyKeys(oldKeyPrefix: string, newKeyFormat: (oldKey: string) => string | null, storageProvider: StorageProvider, batchSize?: number): Promise<number>;
116
+ //# sourceMappingURL=storage.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.d.ts","sourceRoot":"","sources":["../../src/services/storage.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAC;KACjF,CAAC;IAEF,sCAAsC;IACtC,kBAAkB,CAAC,EAAE;QACnB,OAAO,EAAE;YACP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SACnE,CAAC;KACH,CAAC;IAEF,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM;IAIT;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIjD;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,GACV;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAgEnE;AAmMD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAyG3B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/C,eAAe,EAAE,eAAe,EAChC,SAAS,SAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+ /**
3
+ * Storage Service Factory
4
+ *
5
+ * Auto-selects storage providers based on available configuration.
6
+ * Priority: Redis > Cloudflare KV > Cloudflare Durable Objects > Memory
7
+ *
8
+ * @package @kya-os/mcp-i-core
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.StorageKeyHelpers = void 0;
12
+ exports.createStorageProviders = createStorageProviders;
13
+ exports.migrateLegacyKeys = migrateLegacyKeys;
14
+ const base_js_1 = require("../providers/base.js");
15
+ const memory_js_1 = require("../providers/memory.js");
16
+ /**
17
+ * Key helper functions for consistent key formatting
18
+ */
19
+ class StorageKeyHelpers {
20
+ /**
21
+ * Build delegation key using composite format
22
+ * Format: delegation:${userDid}:${agentDid}:${projectId}
23
+ */
24
+ static buildDelegationKey(userDid, agentDid, projectId) {
25
+ return `delegation:${userDid}:${agentDid}:${projectId}`;
26
+ }
27
+ /**
28
+ * Build session key
29
+ * Format: session:${sessionId}
30
+ */
31
+ static buildSessionKey(sessionId) {
32
+ return `session:${sessionId}`;
33
+ }
34
+ /**
35
+ * Build nonce key
36
+ * Format: nonce:${agentDid}:${nonce}
37
+ */
38
+ static buildNonceKey(agentDid, nonce) {
39
+ return `nonce:${agentDid}:${nonce}`;
40
+ }
41
+ /**
42
+ * Parse delegation key back into components
43
+ *
44
+ * Format: delegation:${userDid}:${agentDid}:${projectId}
45
+ *
46
+ * Note: DIDs contain colons (e.g., did:key:z123), so we can't simply split by ":"
47
+ * Instead, we:
48
+ * 1. Check that key starts with "delegation:"
49
+ * 2. Take the last part as projectId (doesn't contain colons)
50
+ * 3. Find where agentDid starts (look for "did:" pattern)
51
+ * 4. Everything before agentDid is userDid, everything between agentDid and projectId is agentDid
52
+ *
53
+ * Strategy: Since DIDs always start with "did:", we can find the second occurrence of "did:"
54
+ * to determine where agentDid begins. However, this assumes userDid and agentDid both start with "did:".
55
+ *
56
+ * For keys like "delegation:did:key:user123:did:key:agent456:project-789":
57
+ * - Remove "delegation:" prefix → "did:key:user123:did:key:agent456:project-789"
58
+ * - Find last ":" → separates agentDid from projectId
59
+ * - projectId = "project-789"
60
+ * - Find second occurrence of "did:" → separates userDid from agentDid
61
+ * - userDid = "did:key:user123"
62
+ * - agentDid = "did:key:agent456"
63
+ */
64
+ static parseDelegationKey(key) {
65
+ if (!key.startsWith("delegation:")) {
66
+ return null;
67
+ }
68
+ // Remove "delegation:" prefix
69
+ const rest = key.slice("delegation:".length);
70
+ // Find the last colon (separates agentDid from projectId)
71
+ const lastColonIndex = rest.lastIndexOf(":");
72
+ if (lastColonIndex === -1) {
73
+ return null; // No colon found, invalid format
74
+ }
75
+ // Last part is projectId (doesn't contain colons)
76
+ const projectId = rest.slice(lastColonIndex + 1);
77
+ if (!projectId) {
78
+ return null; // Empty projectId
79
+ }
80
+ // Everything before the last colon is userDid:agentDid
81
+ const userDidAndAgentDid = rest.slice(0, lastColonIndex);
82
+ // Find the second occurrence of "did:" to separate userDid from agentDid
83
+ // First occurrence is at the start (userDid), second is agentDid
84
+ const firstDidIndex = userDidAndAgentDid.indexOf("did:");
85
+ if (firstDidIndex !== 0) {
86
+ return null; // userDid must start with "did:"
87
+ }
88
+ // Find where the first DID ends by looking for the pattern "did:method:identifier"
89
+ // A DID has the format: did:method:identifier (where identifier may contain colons)
90
+ // We need to find the next "did:" that appears after a complete DID
91
+ // Strategy: Find the method separator colon (after "did:"), then search for the next "did:" after that
92
+ // This ensures we find the second complete DID, not a substring within the first DID's identifier
93
+ const firstMethodColon = userDidAndAgentDid.indexOf(":", firstDidIndex + "did:".length);
94
+ if (firstMethodColon === -1) {
95
+ return null; // Invalid DID format - no method separator
96
+ }
97
+ // Now search for the next "did:" after the first complete DID
98
+ // The first DID ends somewhere after the method colon, so search from there
99
+ const secondDidIndex = userDidAndAgentDid.indexOf("did:", firstMethodColon + 1);
100
+ if (secondDidIndex === -1) {
101
+ return null; // No second "did:" found, can't separate userDid and agentDid
102
+ }
103
+ // userDid is everything before the second "did:", agentDid is everything after
104
+ const userDid = userDidAndAgentDid.slice(0, secondDidIndex);
105
+ const agentDid = userDidAndAgentDid.slice(secondDidIndex);
106
+ // Remove trailing colon from userDid if present
107
+ const cleanUserDid = userDid.endsWith(":") ? userDid.slice(0, -1) : userDid;
108
+ if (!cleanUserDid || !agentDid) {
109
+ return null; // Empty userDid or agentDid
110
+ }
111
+ return {
112
+ userDid: cleanUserDid,
113
+ agentDid,
114
+ projectId,
115
+ };
116
+ }
117
+ }
118
+ exports.StorageKeyHelpers = StorageKeyHelpers;
119
+ /**
120
+ * Durable Object Storage Provider
121
+ * Wraps Cloudflare Durable Object state storage
122
+ */
123
+ class DurableObjectStorageProvider extends base_js_1.StorageProvider {
124
+ state;
125
+ constructor(state) {
126
+ super();
127
+ this.state = state;
128
+ }
129
+ async get(key) {
130
+ const value = await this.state.storage.get(key);
131
+ return value ?? null;
132
+ }
133
+ async set(key, value) {
134
+ await this.state.storage.put(key, value);
135
+ }
136
+ async delete(key) {
137
+ await this.state.storage.delete(key);
138
+ }
139
+ async exists(key) {
140
+ const value = await this.state.storage.get(key);
141
+ return value !== undefined;
142
+ }
143
+ async list(prefix) {
144
+ const result = await this.state.storage.list(prefix ? { prefix } : undefined);
145
+ return Array.from(result.keys());
146
+ }
147
+ }
148
+ /**
149
+ * Durable Object Nonce Cache Provider
150
+ */
151
+ class DurableObjectNonceCacheProvider extends base_js_1.NonceCacheProvider {
152
+ state;
153
+ constructor(state) {
154
+ super();
155
+ this.state = state;
156
+ }
157
+ async has(nonce, agentDid) {
158
+ const key = agentDid
159
+ ? StorageKeyHelpers.buildNonceKey(agentDid, nonce)
160
+ : `nonce:${nonce}`;
161
+ const value = await this.state.storage.get(key);
162
+ if (!value) {
163
+ return false;
164
+ }
165
+ const expiresAt = parseInt(value, 10);
166
+ return Date.now() < expiresAt;
167
+ }
168
+ async add(nonce, ttlSeconds, agentDid) {
169
+ const key = agentDid
170
+ ? StorageKeyHelpers.buildNonceKey(agentDid, nonce)
171
+ : `nonce:${nonce}`;
172
+ // Convert TTL seconds to absolute expiration timestamp for storage
173
+ const expiresAt = Date.now() + (ttlSeconds * 1000);
174
+ await this.state.storage.put(key, expiresAt.toString());
175
+ }
176
+ async cleanup() {
177
+ // Durable Objects don't support efficient bulk operations
178
+ // Cleanup would require listing all keys, which is expensive
179
+ // For now, rely on TTL checking in has() method
180
+ }
181
+ async destroy() {
182
+ // Durable Objects state persists automatically
183
+ // No explicit cleanup needed
184
+ }
185
+ }
186
+ /**
187
+ * Redis Storage Provider
188
+ * Uses Redis for storage operations
189
+ */
190
+ class RedisStorageProvider extends base_js_1.StorageProvider {
191
+ redis; // Redis client from 'redis' package
192
+ constructor(redisClient) {
193
+ super();
194
+ this.redis = redisClient;
195
+ }
196
+ async get(key) {
197
+ return await this.redis.get(key);
198
+ }
199
+ async set(key, value) {
200
+ await this.redis.set(key, value);
201
+ }
202
+ async delete(key) {
203
+ await this.redis.del(key);
204
+ }
205
+ async exists(key) {
206
+ const result = await this.redis.exists(key);
207
+ return result === 1;
208
+ }
209
+ async list(prefix) {
210
+ const pattern = prefix ? `${prefix}*` : "*";
211
+ const keys = await this.redis.keys(pattern);
212
+ return keys;
213
+ }
214
+ }
215
+ /**
216
+ * Redis Nonce Cache Provider
217
+ */
218
+ class RedisNonceCacheProvider extends base_js_1.NonceCacheProvider {
219
+ redis;
220
+ keyPrefix;
221
+ constructor(redisClient, keyPrefix = "nonce:") {
222
+ super();
223
+ this.redis = redisClient;
224
+ this.keyPrefix = keyPrefix;
225
+ }
226
+ async has(nonce, agentDid) {
227
+ const key = agentDid
228
+ ? StorageKeyHelpers.buildNonceKey(agentDid, nonce)
229
+ : `${this.keyPrefix}${nonce}`;
230
+ const result = await this.redis.exists(key);
231
+ return result === 1;
232
+ }
233
+ async add(nonce, ttlSeconds, agentDid) {
234
+ const key = agentDid
235
+ ? StorageKeyHelpers.buildNonceKey(agentDid, nonce)
236
+ : `${this.keyPrefix}${nonce}`;
237
+ // Use TTL directly in seconds (callers now pass TTL, not absolute timestamp)
238
+ await this.redis.setEx(key, ttlSeconds, "1");
239
+ }
240
+ async cleanup() {
241
+ // Redis handles TTL automatically, no cleanup needed
242
+ }
243
+ async destroy() {
244
+ // Redis connection should be managed by caller
245
+ }
246
+ }
247
+ /**
248
+ * KV Storage Provider wrapper
249
+ * Uses existing KVStorageProvider from mcp-i-cloudflare
250
+ */
251
+ /**
252
+ * Create Cloudflare KV storage providers
253
+ *
254
+ * This function dynamically imports Cloudflare-specific storage providers.
255
+ * The @ts-ignore is necessary because @kya-os/mcp-i-cloudflare/providers/storage
256
+ * is an optional dependency that may not exist in Node.js environments.
257
+ * This is intentional for platform-specific code - the import will fail at runtime
258
+ * if the module doesn't exist, which is handled by the try-catch block.
259
+ */
260
+ async function createKVStorageProvider(kvNamespace) {
261
+ // Dynamic import to avoid bundling Cloudflare-specific code
262
+ // This is an optional dependency that may not exist in all environments
263
+ try {
264
+ // Use string literal to avoid TypeScript checking the module path at compile time
265
+ const storageModulePath = "@kya-os/mcp-i-cloudflare/providers/storage";
266
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
267
+ // @ts-ignore TS2307 - Optional dependency: @kya-os/mcp-i-cloudflare/providers/storage
268
+ // may not exist in Node.js environments. This is intentional for platform-specific code.
269
+ const { KVStorageProvider, KVNonceCacheProvider } = await import(storageModulePath);
270
+ const storage = new KVStorageProvider(kvNamespace);
271
+ const nonceCache = new KVNonceCacheProvider(kvNamespace);
272
+ return { storage, nonceCache };
273
+ }
274
+ catch (error) {
275
+ throw new Error(`Failed to import Cloudflare storage providers: ${error instanceof Error ? error.message : String(error)}`);
276
+ }
277
+ }
278
+ /**
279
+ * Create storage providers based on configuration
280
+ *
281
+ * Priority order:
282
+ * 1. Redis (if redisUrl provided)
283
+ * 2. Cloudflare KV (if kvNamespace provided)
284
+ * 3. Cloudflare Durable Objects (if durableObjectState provided)
285
+ * 4. In-memory fallback (if fallbackToMemory is true, default)
286
+ */
287
+ async function createStorageProviders(config) {
288
+ const fallbackToMemory = config.fallbackToMemory !== false;
289
+ // Priority 1: Redis
290
+ if (config.redisUrl) {
291
+ try {
292
+ // @ts-expect-error TS2307 - Optional dependency: 'redis' package may not be installed.
293
+ // This is intentional for environments that don't use Redis storage.
294
+ const redisModule = await import("redis").catch(() => null);
295
+ if (!redisModule) {
296
+ throw new Error("Redis package not available");
297
+ }
298
+ const { createClient } = redisModule;
299
+ const redis = createClient({
300
+ url: config.redisUrl,
301
+ socket: {
302
+ connectTimeout: 5000,
303
+ },
304
+ });
305
+ await redis.connect();
306
+ await redis.ping();
307
+ const storageProvider = new RedisStorageProvider(redis);
308
+ const nonceCacheProvider = new RedisNonceCacheProvider(redis);
309
+ return {
310
+ storageProvider,
311
+ nonceCacheProvider,
312
+ };
313
+ }
314
+ catch (error) {
315
+ if (!fallbackToMemory) {
316
+ throw error;
317
+ }
318
+ console.warn("[StorageService] Failed to connect to Redis, falling back to memory:", error instanceof Error ? error.message : String(error));
319
+ }
320
+ }
321
+ // Priority 2: Cloudflare KV
322
+ if (config.kvNamespace) {
323
+ try {
324
+ const providers = await createKVStorageProvider(config.kvNamespace);
325
+ return {
326
+ storageProvider: providers.storage,
327
+ nonceCacheProvider: providers.nonceCache,
328
+ };
329
+ }
330
+ catch (error) {
331
+ if (!fallbackToMemory) {
332
+ throw error;
333
+ }
334
+ console.warn("[StorageService] Failed to initialize KV, falling back to memory:", error instanceof Error ? error.message : String(error));
335
+ }
336
+ }
337
+ // Priority 3: Cloudflare Durable Objects
338
+ if (config.durableObjectState) {
339
+ try {
340
+ const storageProvider = new DurableObjectStorageProvider(config.durableObjectState);
341
+ const nonceCacheProvider = new DurableObjectNonceCacheProvider(config.durableObjectState);
342
+ return {
343
+ storageProvider,
344
+ nonceCacheProvider,
345
+ };
346
+ }
347
+ catch (error) {
348
+ if (!fallbackToMemory) {
349
+ throw error;
350
+ }
351
+ console.warn("[StorageService] Failed to initialize Durable Objects, falling back to memory:", error instanceof Error ? error.message : String(error));
352
+ }
353
+ }
354
+ // Priority 4: In-memory fallback
355
+ if (fallbackToMemory) {
356
+ return {
357
+ storageProvider: new memory_js_1.MemoryStorageProvider(),
358
+ nonceCacheProvider: new memory_js_1.MemoryNonceCacheProvider(),
359
+ };
360
+ }
361
+ throw new Error("No storage provider configured and fallbackToMemory is false");
362
+ }
363
+ /**
364
+ * Migration utility for legacy key formats
365
+ *
366
+ * Migrates keys from old format (e.g., `agent:${did}:delegation`) to new composite format
367
+ */
368
+ async function migrateLegacyKeys(oldKeyPrefix, newKeyFormat, storageProvider, batchSize = 100) {
369
+ let migrated = 0;
370
+ try {
371
+ // List all keys with old prefix
372
+ const oldKeys = await storageProvider.list(oldKeyPrefix);
373
+ for (const oldKey of oldKeys) {
374
+ const newKey = newKeyFormat(oldKey);
375
+ if (!newKey) {
376
+ continue; // Skip if transformation fails
377
+ }
378
+ // Check if new key already exists
379
+ const existing = await storageProvider.exists(newKey);
380
+ if (existing) {
381
+ continue; // Skip if already migrated
382
+ }
383
+ // Read old value
384
+ const value = await storageProvider.get(oldKey);
385
+ if (!value) {
386
+ continue; // Skip if old key has no value
387
+ }
388
+ // Write to new key
389
+ await storageProvider.set(newKey, value);
390
+ // Optionally delete old key (commented out for safety)
391
+ // await storageProvider.delete(oldKey);
392
+ migrated++;
393
+ if (migrated % batchSize === 0) {
394
+ // Yield to event loop for large migrations
395
+ await new Promise((resolve) => setTimeout(resolve, 0));
396
+ }
397
+ }
398
+ }
399
+ catch (error) {
400
+ console.error("[StorageService] Migration error:", error);
401
+ throw error;
402
+ }
403
+ return migrated;
404
+ }
405
+ //# sourceMappingURL=storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/services/storage.service.ts"],"names":[],"mappings":"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"}