@kya-os/mcp-i-cloudflare 1.0.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.
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Web Crypto Provider for Cloudflare Workers
3
+ *
4
+ * Implements CryptoProvider using the Web Crypto API available in Workers.
5
+ */
6
+ import { CryptoProvider } from '@kya-os/mcp-i-core';
7
+ export class WebCryptoProvider extends CryptoProvider {
8
+ /**
9
+ * Sign data using Ed25519
10
+ */
11
+ async sign(data, privateKeyBase64) {
12
+ const privateKeyBytes = this.base64ToBytes(privateKeyBase64);
13
+ // Convert raw Ed25519 key to PKCS8 format for Web Crypto
14
+ const pkcs8 = this.wrapPrivateKeyPKCS8(privateKeyBytes);
15
+ const cryptoKey = await crypto.subtle.importKey('pkcs8', pkcs8.buffer.slice(pkcs8.byteOffset, pkcs8.byteOffset + pkcs8.byteLength), {
16
+ name: 'Ed25519',
17
+ namedCurve: 'Ed25519'
18
+ }, false, ['sign']);
19
+ const signature = await crypto.subtle.sign('Ed25519', cryptoKey, data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength));
20
+ return new Uint8Array(signature);
21
+ }
22
+ /**
23
+ * Verify Ed25519 signature
24
+ */
25
+ async verify(data, signature, publicKeyBase64) {
26
+ try {
27
+ const publicKeyBytes = this.base64ToBytes(publicKeyBase64);
28
+ // Convert raw Ed25519 key to SubjectPublicKeyInfo format
29
+ const spki = this.wrapPublicKeySPKI(publicKeyBytes);
30
+ const cryptoKey = await crypto.subtle.importKey('spki', spki.buffer.slice(spki.byteOffset, spki.byteOffset + spki.byteLength), {
31
+ name: 'Ed25519',
32
+ namedCurve: 'Ed25519'
33
+ }, false, ['verify']);
34
+ return await crypto.subtle.verify('Ed25519', cryptoKey, signature.buffer.slice(signature.byteOffset, signature.byteOffset + signature.byteLength), data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength));
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * Generate Ed25519 key pair
42
+ */
43
+ async generateKeyPair() {
44
+ const keyPair = await crypto.subtle.generateKey({
45
+ name: 'Ed25519',
46
+ namedCurve: 'Ed25519'
47
+ }, true, ['sign', 'verify']);
48
+ // Export private key as PKCS8
49
+ const privateKeyPKCS8 = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);
50
+ const privateKeyBytes = this.extractRawPrivateKey(new Uint8Array(privateKeyPKCS8));
51
+ // Export public key as SPKI
52
+ const publicKeySPKI = await crypto.subtle.exportKey('spki', keyPair.publicKey);
53
+ const publicKeyBytes = this.extractRawPublicKey(new Uint8Array(publicKeySPKI));
54
+ return {
55
+ privateKey: this.bytesToBase64(privateKeyBytes),
56
+ publicKey: this.bytesToBase64(publicKeyBytes)
57
+ };
58
+ }
59
+ /**
60
+ * Calculate SHA-256 hash
61
+ */
62
+ async hash(data) {
63
+ const hashBuffer = await crypto.subtle.digest('SHA-256', data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength));
64
+ return new Uint8Array(hashBuffer);
65
+ }
66
+ /**
67
+ * Generate random bytes
68
+ */
69
+ async randomBytes(length) {
70
+ const buffer = new Uint8Array(length);
71
+ crypto.getRandomValues(buffer);
72
+ return buffer;
73
+ }
74
+ // Helper methods for key format conversion
75
+ wrapPrivateKeyPKCS8(rawKey) {
76
+ // PKCS8 wrapper for Ed25519 private key
77
+ const pkcs8Header = new Uint8Array([
78
+ 0x30, 0x2e, // SEQUENCE (46 bytes)
79
+ 0x02, 0x01, 0x00, // INTEGER version 0
80
+ 0x30, 0x05, // SEQUENCE (5 bytes) - Algorithm
81
+ 0x06, 0x03, 0x2b, 0x65, 0x70, // OID for Ed25519
82
+ 0x04, 0x22, // OCTET STRING (34 bytes)
83
+ 0x04, 0x20 // OCTET STRING (32 bytes) - the actual key
84
+ ]);
85
+ // Handle both 32-byte and 64-byte keys
86
+ const keyBytes = rawKey.length === 64 ? rawKey.slice(0, 32) : rawKey;
87
+ const result = new Uint8Array(pkcs8Header.length + keyBytes.length);
88
+ result.set(pkcs8Header);
89
+ result.set(keyBytes, pkcs8Header.length);
90
+ return result;
91
+ }
92
+ wrapPublicKeySPKI(rawKey) {
93
+ // SubjectPublicKeyInfo wrapper for Ed25519 public key
94
+ const spkiHeader = new Uint8Array([
95
+ 0x30, 0x2a, // SEQUENCE (42 bytes)
96
+ 0x30, 0x05, // SEQUENCE (5 bytes) - Algorithm
97
+ 0x06, 0x03, 0x2b, 0x65, 0x70, // OID for Ed25519
98
+ 0x03, 0x21, // BIT STRING (33 bytes)
99
+ 0x00 // No unused bits
100
+ ]);
101
+ const result = new Uint8Array(spkiHeader.length + rawKey.length);
102
+ result.set(spkiHeader);
103
+ result.set(rawKey, spkiHeader.length);
104
+ return result;
105
+ }
106
+ extractRawPrivateKey(pkcs8) {
107
+ // Extract the raw 32-byte key from PKCS8 format
108
+ // The key starts at offset 16 (after headers)
109
+ return pkcs8.slice(16, 48);
110
+ }
111
+ extractRawPublicKey(spki) {
112
+ // Extract the raw 32-byte key from SPKI format
113
+ // The key starts at offset 12 (after headers)
114
+ return spki.slice(12, 44);
115
+ }
116
+ base64ToBytes(base64) {
117
+ const binaryString = atob(base64);
118
+ const bytes = new Uint8Array(binaryString.length);
119
+ for (let i = 0; i < binaryString.length; i++) {
120
+ bytes[i] = binaryString.charCodeAt(i);
121
+ }
122
+ return bytes;
123
+ }
124
+ bytesToBase64(bytes) {
125
+ let binaryString = '';
126
+ for (let i = 0; i < bytes.length; i++) {
127
+ binaryString += String.fromCharCode(bytes[i]);
128
+ }
129
+ return btoa(binaryString);
130
+ }
131
+ }
132
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/providers/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Cloudflare Workers identity provider using KV or environment variables
3
+ */
4
+ import { IdentityProvider } from "@kya-os/mcp-i-core/dist/types/providers";
5
+ import { AgentIdentity } from "@kya-os/contracts/handshake";
6
+ export interface CloudflareEnv {
7
+ MCP_IDENTITY_DID?: string;
8
+ MCP_IDENTITY_KEY_ID?: string;
9
+ MCP_IDENTITY_PRIVATE_KEY?: string;
10
+ MCP_IDENTITY_PUBLIC_KEY?: string;
11
+ IDENTITY_KV?: KVNamespace;
12
+ }
13
+ export declare class WorkerIdentityProvider extends IdentityProvider {
14
+ private env;
15
+ constructor(env: CloudflareEnv);
16
+ /**
17
+ * Load identity from environment variables or KV
18
+ */
19
+ loadIdentity(): Promise<AgentIdentity | null>;
20
+ /**
21
+ * Store identity in KV (if available)
22
+ */
23
+ storeIdentity(identity: AgentIdentity): Promise<void>;
24
+ /**
25
+ * Check if identity exists
26
+ */
27
+ hasIdentity(): Promise<boolean>;
28
+ /**
29
+ * Delete identity from KV
30
+ */
31
+ deleteIdentity(): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/providers/identity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,WAAW,aAAa;IAE5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAGjC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC9C,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAItC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAuBnD;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAKtC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cloudflare Workers identity provider using KV or environment variables
3
+ */
4
+ import { IdentityProvider } from "@kya-os/mcp-i-core/dist/types/providers";
5
+ export class WorkerIdentityProvider extends IdentityProvider {
6
+ env;
7
+ constructor(env) {
8
+ super();
9
+ this.env = env;
10
+ }
11
+ /**
12
+ * Load identity from environment variables or KV
13
+ */
14
+ async loadIdentity() {
15
+ // First, try environment variables (for production)
16
+ if (this.env.MCP_IDENTITY_DID && this.env.MCP_IDENTITY_PRIVATE_KEY) {
17
+ return {
18
+ did: this.env.MCP_IDENTITY_DID,
19
+ keyId: this.env.MCP_IDENTITY_KEY_ID || `${this.env.MCP_IDENTITY_DID}#key-1`,
20
+ privateKey: this.env.MCP_IDENTITY_PRIVATE_KEY,
21
+ publicKey: this.env.MCP_IDENTITY_PUBLIC_KEY,
22
+ createdAt: new Date().toISOString() // We don't have the original timestamp
23
+ };
24
+ }
25
+ // Then try KV storage (for development/dynamic)
26
+ if (this.env.IDENTITY_KV) {
27
+ const identityJson = await this.env.IDENTITY_KV.get('identity');
28
+ if (identityJson) {
29
+ return JSON.parse(identityJson);
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Store identity in KV (if available)
36
+ */
37
+ async storeIdentity(identity) {
38
+ if (this.env.IDENTITY_KV) {
39
+ await this.env.IDENTITY_KV.put('identity', JSON.stringify(identity));
40
+ }
41
+ else {
42
+ // In production, identities should be set via environment variables
43
+ console.warn('No KV namespace available for identity storage. Set identity via environment variables.');
44
+ }
45
+ }
46
+ /**
47
+ * Check if identity exists
48
+ */
49
+ async hasIdentity() {
50
+ const identity = await this.loadIdentity();
51
+ return identity !== null;
52
+ }
53
+ /**
54
+ * Delete identity from KV
55
+ */
56
+ async deleteIdentity() {
57
+ if (this.env.IDENTITY_KV) {
58
+ await this.env.IDENTITY_KV.delete('identity');
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/providers/identity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAc3E,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IACtC;IAApB,YAAoB,GAAkB;QACpC,KAAK,EAAE,CAAC;QADU,QAAG,GAAH,GAAG,CAAe;IAEtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,oDAAoD;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACnE,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAC9B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,QAAQ;gBAC3E,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB;gBAC7C,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAwB;gBAC5C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,uCAAuC;aAC5E,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAkB,CAAC;YACnD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAuB;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,OAAO,QAAQ,KAAK,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Cloudflare KV-based nonce cache provider
3
+ */
4
+ import { NonceCacheProvider } from "@kya-os/mcp-i-core/dist/types/providers";
5
+ export declare class CloudflareKVNonceCache extends NonceCacheProvider {
6
+ private kv;
7
+ private keyPrefix;
8
+ constructor(kv: KVNamespace, keyPrefix?: string);
9
+ private getKey;
10
+ has(nonce: string): Promise<boolean>;
11
+ add(nonce: string, ttl: number): Promise<void>;
12
+ /**
13
+ * Cleanup is handled automatically by KV TTL
14
+ */
15
+ cleanup(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=nonce-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-cache.d.ts","sourceRoot":"","sources":["../../src/providers/nonce-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,qBAAa,sBAAuB,SAAQ,kBAAkB;IAGhD,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,SAAS,CAAS;gBAEN,EAAE,EAAE,WAAW,EAAE,SAAS,SAAW;IAKzD,OAAO,CAAC,MAAM;IAIR,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBpC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Cloudflare KV-based nonce cache provider
3
+ */
4
+ import { NonceCacheProvider } from "@kya-os/mcp-i-core/dist/types/providers";
5
+ export class CloudflareKVNonceCache extends NonceCacheProvider {
6
+ kv;
7
+ keyPrefix;
8
+ constructor(kv, keyPrefix = 'nonce:') {
9
+ super();
10
+ this.kv = kv;
11
+ this.keyPrefix = keyPrefix;
12
+ }
13
+ getKey(nonce) {
14
+ return `${this.keyPrefix}${nonce}`;
15
+ }
16
+ async has(nonce) {
17
+ const key = this.getKey(nonce);
18
+ const value = await this.kv.get(key);
19
+ if (!value) {
20
+ return false;
21
+ }
22
+ // Parse the stored data to check expiry
23
+ try {
24
+ const data = JSON.parse(value);
25
+ if (Date.now() > data.expiresAt) {
26
+ // Clean up expired entry
27
+ await this.kv.delete(key);
28
+ return false;
29
+ }
30
+ return true;
31
+ }
32
+ catch {
33
+ // If we can't parse, assume expired and clean up
34
+ await this.kv.delete(key);
35
+ return false;
36
+ }
37
+ }
38
+ async add(nonce, ttl) {
39
+ const key = this.getKey(nonce);
40
+ const expiresAt = Date.now() + ttl * 1000;
41
+ const data = {
42
+ nonce,
43
+ expiresAt,
44
+ createdAt: Date.now()
45
+ };
46
+ // Store with KV TTL for automatic cleanup
47
+ await this.kv.put(key, JSON.stringify(data), {
48
+ expirationTtl: ttl // TTL in seconds
49
+ });
50
+ }
51
+ /**
52
+ * Cleanup is handled automatically by KV TTL
53
+ */
54
+ async cleanup() {
55
+ // No-op: Cloudflare KV handles expiration automatically
56
+ }
57
+ }
58
+ //# sourceMappingURL=nonce-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-cache.js","sourceRoot":"","sources":["../../src/providers/nonce-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAGxC;IAFZ,SAAS,CAAS;IAE1B,YAAoB,EAAe,EAAE,SAAS,GAAG,QAAQ;QACvD,KAAK,EAAE,CAAC;QADU,OAAE,GAAF,EAAE,CAAa;QAEjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,yBAAyB;gBACzB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;YACjD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,GAAW;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG;YACX,KAAK;YACL,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,0CAA0C;QAC1C,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB;YACE,aAAa,EAAE,GAAG,CAAC,iBAAiB;SACrC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,wDAAwD;IAC1D,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cloudflare KV Storage Provider
3
+ *
4
+ * Implements StorageProvider and NonceCacheProvider using Cloudflare KV.
5
+ */
6
+ import { StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider, IdentityProvider, AgentIdentity } from '@kya-os/mcp-i-core';
7
+ /**
8
+ * KV storage provider for Cloudflare Workers
9
+ */
10
+ export declare class KVStorageProvider extends StorageProvider {
11
+ private kv;
12
+ constructor(kv: KVNamespace);
13
+ get(key: string): Promise<string | null>;
14
+ set(key: string, value: string): Promise<void>;
15
+ delete(key: string): Promise<void>;
16
+ exists(key: string): Promise<boolean>;
17
+ list(prefix?: string): Promise<string[]>;
18
+ }
19
+ /**
20
+ * KV nonce cache provider for Cloudflare Workers
21
+ */
22
+ export declare class KVNonceCacheProvider extends NonceCacheProvider {
23
+ private kv;
24
+ constructor(kv: KVNamespace);
25
+ has(nonce: string): Promise<boolean>;
26
+ add(nonce: string, expiresAt: number): Promise<void>;
27
+ cleanup(): Promise<void>;
28
+ destroy(): Promise<void>;
29
+ }
30
+ /**
31
+ * Workers Clock Provider
32
+ */
33
+ export declare class WorkersClockProvider extends ClockProvider {
34
+ now(): number;
35
+ isWithinSkew(timestamp: number, skewSeconds: number): boolean;
36
+ hasExpired(expiresAt: number): boolean;
37
+ calculateExpiry(ttlSeconds: number): number;
38
+ format(timestamp: number): string;
39
+ }
40
+ /**
41
+ * Workers Fetch Provider
42
+ */
43
+ export declare class WorkersFetchProvider extends FetchProvider {
44
+ resolveDID(did: string): Promise<any>;
45
+ fetchStatusList(url: string): Promise<any>;
46
+ fetchDelegationChain(id: string): Promise<any[]>;
47
+ fetch(url: string, options?: RequestInit): Promise<Response>;
48
+ }
49
+ /**
50
+ * Workers Identity Provider using environment variables
51
+ */
52
+ export declare class WorkersIdentityProvider extends IdentityProvider {
53
+ private env;
54
+ private cryptoProvider?;
55
+ constructor(env: any, cryptoProvider?: any | undefined);
56
+ getIdentity(): Promise<AgentIdentity>;
57
+ saveIdentity(identity: AgentIdentity): Promise<void>;
58
+ rotateKeys(): Promise<AgentIdentity>;
59
+ deleteIdentity(): Promise<void>;
60
+ private generateDIDFromPublicKey;
61
+ }
62
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExI;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACxC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAI7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAI/C;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC9C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAI7B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,GAAG,IAAI,MAAM;IAIb,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAO7D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGlC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IAC/C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCrC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAU1C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAKhD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGnE;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAEzD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,cAAc,CAAC;gBADf,GAAG,EAAE,GAAG,EACR,cAAc,CAAC,EAAE,GAAG,YAAA;IAKxB,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IA+BrC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAkBpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,OAAO,CAAC,wBAAwB;CASjC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Cloudflare KV Storage Provider
3
+ *
4
+ * Implements StorageProvider and NonceCacheProvider using Cloudflare KV.
5
+ */
6
+ import { StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider, IdentityProvider } from '@kya-os/mcp-i-core';
7
+ /**
8
+ * KV storage provider for Cloudflare Workers
9
+ */
10
+ export class KVStorageProvider extends StorageProvider {
11
+ kv;
12
+ constructor(kv) {
13
+ super();
14
+ this.kv = kv;
15
+ }
16
+ async get(key) {
17
+ return await this.kv.get(key);
18
+ }
19
+ async set(key, value) {
20
+ await this.kv.put(key, value);
21
+ }
22
+ async delete(key) {
23
+ await this.kv.delete(key);
24
+ }
25
+ async exists(key) {
26
+ const value = await this.kv.get(key);
27
+ return value !== null;
28
+ }
29
+ async list(prefix) {
30
+ const result = await this.kv.list({ prefix });
31
+ return result.keys.map(k => k.name);
32
+ }
33
+ }
34
+ /**
35
+ * KV nonce cache provider for Cloudflare Workers
36
+ */
37
+ export class KVNonceCacheProvider extends NonceCacheProvider {
38
+ kv;
39
+ constructor(kv) {
40
+ super();
41
+ this.kv = kv;
42
+ }
43
+ async has(nonce) {
44
+ const value = await this.kv.get(`nonce:${nonce}`);
45
+ return value !== null;
46
+ }
47
+ async add(nonce, expiresAt) {
48
+ const ttl = Math.max(1, Math.floor((expiresAt - Date.now()) / 1000));
49
+ await this.kv.put(`nonce:${nonce}`, '1', {
50
+ expirationTtl: ttl
51
+ });
52
+ }
53
+ async cleanup() {
54
+ // KV handles expiration automatically
55
+ }
56
+ async destroy() {
57
+ // No cleanup needed
58
+ }
59
+ }
60
+ /**
61
+ * Workers Clock Provider
62
+ */
63
+ export class WorkersClockProvider extends ClockProvider {
64
+ now() {
65
+ return Date.now();
66
+ }
67
+ isWithinSkew(timestamp, skewSeconds) {
68
+ const now = this.now();
69
+ const skewMs = skewSeconds * 1000;
70
+ const diff = Math.abs(now - timestamp);
71
+ return diff <= skewMs;
72
+ }
73
+ hasExpired(expiresAt) {
74
+ return this.now() > expiresAt;
75
+ }
76
+ calculateExpiry(ttlSeconds) {
77
+ return this.now() + (ttlSeconds * 1000);
78
+ }
79
+ format(timestamp) {
80
+ return new Date(timestamp).toISOString();
81
+ }
82
+ }
83
+ /**
84
+ * Workers Fetch Provider
85
+ */
86
+ export class WorkersFetchProvider extends FetchProvider {
87
+ async resolveDID(did) {
88
+ if (did.startsWith('did:key:')) {
89
+ // Offline resolution for did:key
90
+ const publicKeyMultibase = did.slice('did:key:'.length);
91
+ return {
92
+ '@context': ['https://www.w3.org/ns/did/v1'],
93
+ id: did,
94
+ verificationMethod: [{
95
+ id: `${did}#key-1`,
96
+ type: 'Ed25519VerificationKey2020',
97
+ controller: did,
98
+ publicKeyMultibase
99
+ }],
100
+ authentication: [`${did}#key-1`],
101
+ assertionMethod: [`${did}#key-1`]
102
+ };
103
+ }
104
+ if (did.startsWith('did:web:')) {
105
+ const domain = did.slice('did:web:'.length).replace(/:/g, '/');
106
+ const url = `https://${domain}/.well-known/did.json`;
107
+ const response = await fetch(url);
108
+ if (!response.ok) {
109
+ throw new Error(`Failed to resolve ${did}: ${response.statusText}`);
110
+ }
111
+ return await response.json();
112
+ }
113
+ throw new Error(`Unsupported DID method: ${did}`);
114
+ }
115
+ async fetchStatusList(url) {
116
+ const response = await fetch(url);
117
+ if (!response.ok) {
118
+ throw new Error(`Failed to fetch status list: ${response.statusText}`);
119
+ }
120
+ return await response.json();
121
+ }
122
+ async fetchDelegationChain(id) {
123
+ // Would fetch from a delegation registry
124
+ return [];
125
+ }
126
+ async fetch(url, options) {
127
+ return await fetch(url, options);
128
+ }
129
+ }
130
+ /**
131
+ * Workers Identity Provider using environment variables
132
+ */
133
+ export class WorkersIdentityProvider extends IdentityProvider {
134
+ env;
135
+ cryptoProvider;
136
+ constructor(env, cryptoProvider) {
137
+ super();
138
+ this.env = env;
139
+ this.cryptoProvider = cryptoProvider;
140
+ }
141
+ async getIdentity() {
142
+ // Check if identity exists in environment variables
143
+ if (this.env.MCP_IDENTITY_PRIVATE_KEY && this.env.MCP_IDENTITY_PUBLIC_KEY && this.env.MCP_IDENTITY_AGENT_DID) {
144
+ return {
145
+ did: this.env.MCP_IDENTITY_AGENT_DID,
146
+ keyId: `${this.env.MCP_IDENTITY_AGENT_DID}#key-1`,
147
+ privateKey: this.env.MCP_IDENTITY_PRIVATE_KEY,
148
+ publicKey: this.env.MCP_IDENTITY_PUBLIC_KEY,
149
+ createdAt: new Date().toISOString(),
150
+ type: 'production'
151
+ };
152
+ }
153
+ // Generate new identity if not found
154
+ if (!this.cryptoProvider) {
155
+ throw new Error('No identity found and crypto provider not available for generation');
156
+ }
157
+ const keyPair = await this.cryptoProvider.generateKeyPair();
158
+ const did = this.generateDIDFromPublicKey(keyPair.publicKey);
159
+ return {
160
+ did,
161
+ keyId: `${did}#key-1`,
162
+ privateKey: keyPair.privateKey,
163
+ publicKey: keyPair.publicKey,
164
+ createdAt: new Date().toISOString(),
165
+ type: 'development'
166
+ };
167
+ }
168
+ async saveIdentity(identity) {
169
+ // In Workers, identity is managed through environment variables
170
+ // This would typically be set via wrangler secrets
171
+ console.warn('Identity saving not supported in Workers runtime. Use wrangler secrets instead.');
172
+ }
173
+ async rotateKeys() {
174
+ if (!this.cryptoProvider) {
175
+ throw new Error('Crypto provider required for key rotation');
176
+ }
177
+ const keyPair = await this.cryptoProvider.generateKeyPair();
178
+ const did = this.generateDIDFromPublicKey(keyPair.publicKey);
179
+ return {
180
+ did,
181
+ keyId: `${did}#key-1`,
182
+ privateKey: keyPair.privateKey,
183
+ publicKey: keyPair.publicKey,
184
+ createdAt: new Date().toISOString(),
185
+ type: 'production'
186
+ };
187
+ }
188
+ async deleteIdentity() {
189
+ console.warn('Identity deletion not supported in Workers runtime');
190
+ }
191
+ generateDIDFromPublicKey(publicKey) {
192
+ // Simplified DID generation
193
+ const keyHash = btoa(publicKey)
194
+ .replace(/\+/g, '-')
195
+ .replace(/\//g, '_')
196
+ .replace(/=/g, '')
197
+ .substring(0, 32);
198
+ return `did:key:z${keyHash}`;
199
+ }
200
+ }
201
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * MCP-I Runtime for Cloudflare Workers
3
+ */
4
+ import { MCPIRuntimeBase } from "@kya-os/mcp-i-core/dist/runtime/base";
5
+ import { CloudflareEnv } from "../providers/identity";
6
+ /**
7
+ * Cloudflare Workers environment with required bindings
8
+ */
9
+ export interface MCPICloudflareEnv extends CloudflareEnv {
10
+ NONCE_CACHE: KVNamespace;
11
+ STORAGE_KV?: KVNamespace;
12
+ }
13
+ /**
14
+ * MCP-I Runtime for Cloudflare Workers
15
+ */
16
+ export declare class MCPICloudflareRuntime extends MCPIRuntimeBase {
17
+ constructor(env: MCPICloudflareEnv);
18
+ /**
19
+ * Override session ID generation to use Web Crypto
20
+ */
21
+ protected generateSessionId(): Promise<string>;
22
+ /**
23
+ * Override nonce generation to use Web Crypto
24
+ */
25
+ protected generateNonce(): Promise<string>;
26
+ }
27
+ /**
28
+ * Create MCP-I server for Cloudflare Workers
29
+ */
30
+ export declare function createMCPIServer(env: MCPICloudflareEnv): MCPICloudflareRuntime;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAGvE,OAAO,EAA0B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA8B9E;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IAEtD,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;gBAC5C,GAAG,EAAE,iBAAiB;IAgBlC;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpD;;OAEG;cACa,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,yBAEtD"}