@kya-os/mcp 1.2.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.
- package/CHANGELOG.md +64 -0
- package/LICENSE +21 -0
- package/README.md +135 -0
- package/dist/auth/handshake.d.ts +119 -0
- package/dist/auth/handshake.d.ts.map +1 -0
- package/dist/auth/handshake.js +267 -0
- package/dist/auth/handshake.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/types.d.ts +31 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +7 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/delegation/audience-validator.d.ts +9 -0
- package/dist/delegation/audience-validator.d.ts.map +1 -0
- package/dist/delegation/audience-validator.js +17 -0
- package/dist/delegation/audience-validator.js.map +1 -0
- package/dist/delegation/bitstring.d.ts +37 -0
- package/dist/delegation/bitstring.d.ts.map +1 -0
- package/dist/delegation/bitstring.js +117 -0
- package/dist/delegation/bitstring.js.map +1 -0
- package/dist/delegation/cascading-revocation.d.ts +45 -0
- package/dist/delegation/cascading-revocation.d.ts.map +1 -0
- package/dist/delegation/cascading-revocation.js +150 -0
- package/dist/delegation/cascading-revocation.js.map +1 -0
- package/dist/delegation/delegation-graph.d.ts +49 -0
- package/dist/delegation/delegation-graph.d.ts.map +1 -0
- package/dist/delegation/delegation-graph.js +99 -0
- package/dist/delegation/delegation-graph.js.map +1 -0
- package/dist/delegation/did-key-resolver.d.ts +64 -0
- package/dist/delegation/did-key-resolver.d.ts.map +1 -0
- package/dist/delegation/did-key-resolver.js +157 -0
- package/dist/delegation/did-key-resolver.js.map +1 -0
- package/dist/delegation/did-web-resolver.d.ts +83 -0
- package/dist/delegation/did-web-resolver.d.ts.map +1 -0
- package/dist/delegation/did-web-resolver.js +218 -0
- package/dist/delegation/did-web-resolver.js.map +1 -0
- package/dist/delegation/index.d.ts +21 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +21 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/outbound-headers.d.ts +79 -0
- package/dist/delegation/outbound-headers.d.ts.map +1 -0
- package/dist/delegation/outbound-headers.js +138 -0
- package/dist/delegation/outbound-headers.js.map +1 -0
- package/dist/delegation/outbound-proof.d.ts +43 -0
- package/dist/delegation/outbound-proof.d.ts.map +1 -0
- package/dist/delegation/outbound-proof.js +52 -0
- package/dist/delegation/outbound-proof.js.map +1 -0
- package/dist/delegation/statuslist-manager.d.ts +47 -0
- package/dist/delegation/statuslist-manager.d.ts.map +1 -0
- package/dist/delegation/statuslist-manager.js +139 -0
- package/dist/delegation/statuslist-manager.js.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts +70 -0
- package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-graph-storage.js +145 -0
- package/dist/delegation/storage/memory-graph-storage.js.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts +19 -0
- package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -0
- package/dist/delegation/storage/memory-statuslist-storage.js +33 -0
- package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -0
- package/dist/delegation/utils.d.ts +49 -0
- package/dist/delegation/utils.d.ts.map +1 -0
- package/dist/delegation/utils.js +131 -0
- package/dist/delegation/utils.js.map +1 -0
- package/dist/delegation/vc-issuer.d.ts +56 -0
- package/dist/delegation/vc-issuer.d.ts.map +1 -0
- package/dist/delegation/vc-issuer.js +80 -0
- package/dist/delegation/vc-issuer.js.map +1 -0
- package/dist/delegation/vc-verifier.d.ts +112 -0
- package/dist/delegation/vc-verifier.d.ts.map +1 -0
- package/dist/delegation/vc-verifier.js +280 -0
- package/dist/delegation/vc-verifier.js.map +1 -0
- package/dist/errors.d.ts +42 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +45 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +2 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +23 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +82 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/middleware/index.d.ts +12 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +12 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/mcpi-transport.d.ts +39 -0
- package/dist/middleware/mcpi-transport.d.ts.map +1 -0
- package/dist/middleware/mcpi-transport.js +121 -0
- package/dist/middleware/mcpi-transport.js.map +1 -0
- package/dist/middleware/with-mcpi-server.d.ts +78 -0
- package/dist/middleware/with-mcpi-server.d.ts.map +1 -0
- package/dist/middleware/with-mcpi-server.js +109 -0
- package/dist/middleware/with-mcpi-server.js.map +1 -0
- package/dist/middleware/with-mcpi.d.ts +202 -0
- package/dist/middleware/with-mcpi.d.ts.map +1 -0
- package/dist/middleware/with-mcpi.js +625 -0
- package/dist/middleware/with-mcpi.js.map +1 -0
- package/dist/proof/errors.d.ts +49 -0
- package/dist/proof/errors.d.ts.map +1 -0
- package/dist/proof/errors.js +61 -0
- package/dist/proof/errors.js.map +1 -0
- package/dist/proof/generator.d.ts +65 -0
- package/dist/proof/generator.d.ts.map +1 -0
- package/dist/proof/generator.js +163 -0
- package/dist/proof/generator.js.map +1 -0
- package/dist/proof/index.d.ts +4 -0
- package/dist/proof/index.d.ts.map +1 -0
- package/dist/proof/index.js +4 -0
- package/dist/proof/index.js.map +1 -0
- package/dist/proof/verifier.d.ts +108 -0
- package/dist/proof/verifier.d.ts.map +1 -0
- package/dist/proof/verifier.js +299 -0
- package/dist/proof/verifier.js.map +1 -0
- package/dist/providers/base.d.ts +64 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +19 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/memory.d.ts +33 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/memory.js +102 -0
- package/dist/providers/memory.js.map +1 -0
- package/dist/providers/node-crypto.d.ts +26 -0
- package/dist/providers/node-crypto.d.ts.map +1 -0
- package/dist/providers/node-crypto.js +69 -0
- package/dist/providers/node-crypto.js.map +1 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +2 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +83 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +267 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/types/protocol.d.ts +320 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +229 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/utils/base58.d.ts +31 -0
- package/dist/utils/base58.d.ts.map +1 -0
- package/dist/utils/base58.js +104 -0
- package/dist/utils/base58.js.map +1 -0
- package/dist/utils/base64.d.ts +13 -0
- package/dist/utils/base64.d.ts.map +1 -0
- package/dist/utils/base64.js +99 -0
- package/dist/utils/base64.js.map +1 -0
- package/dist/utils/crypto-service.d.ts +37 -0
- package/dist/utils/crypto-service.d.ts.map +1 -0
- package/dist/utils/crypto-service.js +154 -0
- package/dist/utils/crypto-service.js.map +1 -0
- package/dist/utils/did-helpers.d.ts +168 -0
- package/dist/utils/did-helpers.d.ts.map +1 -0
- package/dist/utils/did-helpers.js +211 -0
- package/dist/utils/did-helpers.js.map +1 -0
- package/dist/utils/ed25519-constants.d.ts +18 -0
- package/dist/utils/ed25519-constants.d.ts.map +1 -0
- package/dist/utils/ed25519-constants.js +21 -0
- package/dist/utils/ed25519-constants.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +115 -0
- package/schemas/README.md +117 -0
- package/schemas/delegation-credential.json +312 -0
- package/schemas/detached-proof.json +97 -0
- package/schemas/handshake-request.json +84 -0
- package/schemas/handshake-response.json +67 -0
- package/schemas/well-known-mcpi.json +176 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP-I Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Inlined type definitions for the MCP-I protocol reference implementation.
|
|
5
|
+
* All types are pure TypeScript — no external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Related Spec: MCP-I §3, §4, §5, §6
|
|
8
|
+
*/
|
|
9
|
+
export interface CrispBudget {
|
|
10
|
+
unit: 'USD' | 'ops' | 'points';
|
|
11
|
+
cap: number;
|
|
12
|
+
window?: {
|
|
13
|
+
kind: 'rolling' | 'fixed';
|
|
14
|
+
durationSec: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface CrispScope {
|
|
18
|
+
resource: string;
|
|
19
|
+
matcher: 'exact' | 'prefix' | 'regex';
|
|
20
|
+
constraints?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface DelegationConstraints {
|
|
23
|
+
notBefore?: number;
|
|
24
|
+
notAfter?: number;
|
|
25
|
+
scopes?: string[];
|
|
26
|
+
audience?: string | string[];
|
|
27
|
+
crisp?: {
|
|
28
|
+
budget?: CrispBudget;
|
|
29
|
+
scopes: CrispScope[];
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
};
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
export type DelegationStatus = 'active' | 'revoked' | 'expired';
|
|
35
|
+
export interface DelegationRecord {
|
|
36
|
+
id: string;
|
|
37
|
+
issuerDid: string;
|
|
38
|
+
subjectDid: string;
|
|
39
|
+
controller?: string;
|
|
40
|
+
vcId: string;
|
|
41
|
+
parentId?: string;
|
|
42
|
+
constraints: DelegationConstraints;
|
|
43
|
+
signature: string;
|
|
44
|
+
status: DelegationStatus;
|
|
45
|
+
createdAt?: number;
|
|
46
|
+
revokedAt?: number;
|
|
47
|
+
revokedReason?: string;
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
[key: string]: unknown;
|
|
50
|
+
}
|
|
51
|
+
export interface Proof {
|
|
52
|
+
type: string;
|
|
53
|
+
created?: string;
|
|
54
|
+
verificationMethod?: string;
|
|
55
|
+
proofPurpose?: string;
|
|
56
|
+
proofValue?: string;
|
|
57
|
+
jws?: string;
|
|
58
|
+
[key: string]: unknown;
|
|
59
|
+
}
|
|
60
|
+
export interface CredentialStatus {
|
|
61
|
+
id: string;
|
|
62
|
+
type: 'StatusList2021Entry';
|
|
63
|
+
statusPurpose: 'revocation' | 'suspension';
|
|
64
|
+
statusListIndex: string;
|
|
65
|
+
statusListCredential: string;
|
|
66
|
+
[key: string]: unknown;
|
|
67
|
+
}
|
|
68
|
+
export interface DelegationCredentialSubject {
|
|
69
|
+
id: string;
|
|
70
|
+
delegation: {
|
|
71
|
+
id: string;
|
|
72
|
+
issuerDid: string;
|
|
73
|
+
subjectDid: string;
|
|
74
|
+
userDid?: string;
|
|
75
|
+
userIdentifier?: string;
|
|
76
|
+
sessionId?: string;
|
|
77
|
+
scopes?: string[];
|
|
78
|
+
controller?: string;
|
|
79
|
+
parentId?: string;
|
|
80
|
+
constraints: DelegationConstraints;
|
|
81
|
+
status: DelegationStatus;
|
|
82
|
+
createdAt?: number;
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export interface DelegationCredential {
|
|
87
|
+
'@context': (string | Record<string, unknown>)[];
|
|
88
|
+
id?: string;
|
|
89
|
+
type: string[];
|
|
90
|
+
issuer: string | {
|
|
91
|
+
id: string;
|
|
92
|
+
[key: string]: unknown;
|
|
93
|
+
};
|
|
94
|
+
issuanceDate: string;
|
|
95
|
+
expirationDate?: string;
|
|
96
|
+
credentialSubject: DelegationCredentialSubject;
|
|
97
|
+
credentialStatus?: CredentialStatus;
|
|
98
|
+
proof?: Proof;
|
|
99
|
+
[key: string]: unknown;
|
|
100
|
+
}
|
|
101
|
+
export declare const DELEGATION_CREDENTIAL_CONTEXT: "https://schema.modelcontextprotocol-identity.io/xmcp-i/credentials/delegation.v1.0.0.json";
|
|
102
|
+
export interface StatusList2021Credential {
|
|
103
|
+
'@context': (string | Record<string, unknown>)[];
|
|
104
|
+
id: string;
|
|
105
|
+
type: string[];
|
|
106
|
+
issuer: string | {
|
|
107
|
+
id: string;
|
|
108
|
+
};
|
|
109
|
+
issuanceDate: string;
|
|
110
|
+
credentialSubject: {
|
|
111
|
+
id?: string;
|
|
112
|
+
type: 'StatusList2021';
|
|
113
|
+
statusPurpose: 'revocation' | 'suspension';
|
|
114
|
+
encodedList: string;
|
|
115
|
+
};
|
|
116
|
+
proof?: Record<string, unknown>;
|
|
117
|
+
[key: string]: unknown;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Wrap a DelegationRecord in an unsigned W3C VC structure.
|
|
121
|
+
*/
|
|
122
|
+
export declare function wrapDelegationAsVC(delegation: DelegationRecord, options?: {
|
|
123
|
+
id?: string;
|
|
124
|
+
issuanceDate?: string;
|
|
125
|
+
expirationDate?: string;
|
|
126
|
+
credentialStatus?: CredentialStatus;
|
|
127
|
+
userDid?: string;
|
|
128
|
+
userIdentifier?: string;
|
|
129
|
+
sessionId?: string;
|
|
130
|
+
scopes?: string[];
|
|
131
|
+
}): Omit<DelegationCredential, 'proof'>;
|
|
132
|
+
/**
|
|
133
|
+
* Extract a DelegationRecord from a DelegationCredential.
|
|
134
|
+
*/
|
|
135
|
+
export declare function extractDelegationFromVC(vc: DelegationCredential): DelegationRecord;
|
|
136
|
+
/**
|
|
137
|
+
* Check if a DelegationCredential is expired.
|
|
138
|
+
*/
|
|
139
|
+
export declare function isDelegationCredentialExpired(vc: DelegationCredential): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Check if a DelegationCredential is not yet valid.
|
|
142
|
+
*/
|
|
143
|
+
export declare function isDelegationCredentialNotYetValid(vc: DelegationCredential): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Validate a DelegationCredential.
|
|
146
|
+
* Returns a Zod-compatible result shape.
|
|
147
|
+
*/
|
|
148
|
+
export declare function validateDelegationCredential(vc: unknown): {
|
|
149
|
+
success: boolean;
|
|
150
|
+
error?: {
|
|
151
|
+
message: string;
|
|
152
|
+
};
|
|
153
|
+
data?: DelegationCredential;
|
|
154
|
+
};
|
|
155
|
+
export interface MCPClientInfo {
|
|
156
|
+
name: string;
|
|
157
|
+
title?: string;
|
|
158
|
+
version?: string;
|
|
159
|
+
platform?: string;
|
|
160
|
+
vendor?: string;
|
|
161
|
+
persistentId?: string;
|
|
162
|
+
}
|
|
163
|
+
export interface MCPClientSessionInfo extends MCPClientInfo {
|
|
164
|
+
clientId: string;
|
|
165
|
+
protocolVersion?: string;
|
|
166
|
+
capabilities?: Record<string, unknown>;
|
|
167
|
+
}
|
|
168
|
+
export interface HandshakeRequest {
|
|
169
|
+
nonce: string;
|
|
170
|
+
audience: string;
|
|
171
|
+
timestamp: number;
|
|
172
|
+
agentDid?: string;
|
|
173
|
+
clientInfo?: MCPClientInfo & {
|
|
174
|
+
clientId?: string;
|
|
175
|
+
};
|
|
176
|
+
clientProtocolVersion?: string;
|
|
177
|
+
clientCapabilities?: Record<string, unknown>;
|
|
178
|
+
}
|
|
179
|
+
export type SessionIdentityState = 'anonymous' | 'authenticated';
|
|
180
|
+
export interface SessionContext {
|
|
181
|
+
sessionId: string;
|
|
182
|
+
audience: string;
|
|
183
|
+
nonce: string;
|
|
184
|
+
timestamp: number;
|
|
185
|
+
createdAt: number;
|
|
186
|
+
lastActivity: number;
|
|
187
|
+
ttlMinutes: number;
|
|
188
|
+
agentDid?: string;
|
|
189
|
+
serverDid?: string;
|
|
190
|
+
clientDid?: string;
|
|
191
|
+
userDid?: string;
|
|
192
|
+
clientInfo?: MCPClientSessionInfo;
|
|
193
|
+
identityState: SessionIdentityState;
|
|
194
|
+
oauthIdentity?: {
|
|
195
|
+
provider: string;
|
|
196
|
+
subject: string;
|
|
197
|
+
email?: string;
|
|
198
|
+
name?: string;
|
|
199
|
+
};
|
|
200
|
+
delegationRef?: string;
|
|
201
|
+
delegationChain?: string;
|
|
202
|
+
delegationScopes?: string[];
|
|
203
|
+
[key: string]: unknown;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Nonce cache interface for replay prevention.
|
|
207
|
+
*/
|
|
208
|
+
export interface NonceCache {
|
|
209
|
+
has(nonce: string, agentDid?: string): Promise<boolean>;
|
|
210
|
+
add(nonce: string, ttl: number, agentDid?: string): Promise<void>;
|
|
211
|
+
cleanup(): Promise<void>;
|
|
212
|
+
}
|
|
213
|
+
export declare const DEFAULT_SESSION_TTL_MINUTES = 30;
|
|
214
|
+
export declare const DEFAULT_TIMESTAMP_SKEW_SECONDS = 120;
|
|
215
|
+
export declare const NONCE_LENGTH_BYTES = 16;
|
|
216
|
+
export interface ProofMeta {
|
|
217
|
+
did: string;
|
|
218
|
+
kid: string;
|
|
219
|
+
ts: number;
|
|
220
|
+
nonce: string;
|
|
221
|
+
audience: string;
|
|
222
|
+
sessionId: string;
|
|
223
|
+
requestHash: string;
|
|
224
|
+
responseHash: string;
|
|
225
|
+
scopeId?: string;
|
|
226
|
+
delegationRef?: string;
|
|
227
|
+
clientDid?: string;
|
|
228
|
+
}
|
|
229
|
+
export interface DetachedProof {
|
|
230
|
+
jws: string;
|
|
231
|
+
meta: ProofMeta;
|
|
232
|
+
}
|
|
233
|
+
export interface CanonicalHashes {
|
|
234
|
+
requestHash: string;
|
|
235
|
+
responseHash: string;
|
|
236
|
+
}
|
|
237
|
+
export interface AuditRecord {
|
|
238
|
+
version: 'audit.v1';
|
|
239
|
+
ts: number;
|
|
240
|
+
session: string;
|
|
241
|
+
audience: string;
|
|
242
|
+
did: string;
|
|
243
|
+
kid: string;
|
|
244
|
+
reqHash: string;
|
|
245
|
+
resHash: string;
|
|
246
|
+
verified: 'yes' | 'no';
|
|
247
|
+
scope: string;
|
|
248
|
+
}
|
|
249
|
+
export interface AuditContext {
|
|
250
|
+
identity: {
|
|
251
|
+
did: string;
|
|
252
|
+
kid: string;
|
|
253
|
+
[key: string]: unknown;
|
|
254
|
+
};
|
|
255
|
+
session: {
|
|
256
|
+
sessionId: string;
|
|
257
|
+
audience: string;
|
|
258
|
+
[key: string]: unknown;
|
|
259
|
+
};
|
|
260
|
+
requestHash: string;
|
|
261
|
+
responseHash: string;
|
|
262
|
+
verified: 'yes' | 'no';
|
|
263
|
+
scopeId?: string;
|
|
264
|
+
}
|
|
265
|
+
export interface AuditEventContext {
|
|
266
|
+
eventType: string;
|
|
267
|
+
identity: {
|
|
268
|
+
did: string;
|
|
269
|
+
kid: string;
|
|
270
|
+
[key: string]: unknown;
|
|
271
|
+
};
|
|
272
|
+
session: {
|
|
273
|
+
sessionId: string;
|
|
274
|
+
audience: string;
|
|
275
|
+
[key: string]: unknown;
|
|
276
|
+
};
|
|
277
|
+
eventData?: Record<string, unknown>;
|
|
278
|
+
}
|
|
279
|
+
export interface AuthorizationDisplay {
|
|
280
|
+
title?: string;
|
|
281
|
+
hint?: Array<'link' | 'qr' | 'code'>;
|
|
282
|
+
authorizationCode?: string;
|
|
283
|
+
qrUrl?: string;
|
|
284
|
+
[key: string]: unknown;
|
|
285
|
+
}
|
|
286
|
+
export interface NeedsAuthorizationError {
|
|
287
|
+
error: 'needs_authorization';
|
|
288
|
+
message: string;
|
|
289
|
+
authorizationUrl: string;
|
|
290
|
+
resumeToken: string;
|
|
291
|
+
expiresAt: number;
|
|
292
|
+
scopes: string[];
|
|
293
|
+
display?: AuthorizationDisplay;
|
|
294
|
+
context?: Record<string, unknown>;
|
|
295
|
+
[key: string]: unknown;
|
|
296
|
+
}
|
|
297
|
+
export declare function createNeedsAuthorizationError(config: {
|
|
298
|
+
message: string;
|
|
299
|
+
authorizationUrl: string;
|
|
300
|
+
resumeToken: string;
|
|
301
|
+
expiresAt: number;
|
|
302
|
+
scopes: string[];
|
|
303
|
+
display?: AuthorizationDisplay;
|
|
304
|
+
}): NeedsAuthorizationError;
|
|
305
|
+
export declare function isNeedsAuthorizationError(error: unknown): error is NeedsAuthorizationError;
|
|
306
|
+
/**
|
|
307
|
+
* Validate a DetachedProof structure.
|
|
308
|
+
* Returns a Zod-compatible result shape.
|
|
309
|
+
*/
|
|
310
|
+
export declare function validateDetachedProof(proof: unknown): {
|
|
311
|
+
success: boolean;
|
|
312
|
+
error?: {
|
|
313
|
+
message: string;
|
|
314
|
+
errors?: Array<{
|
|
315
|
+
message: string;
|
|
316
|
+
}>;
|
|
317
|
+
};
|
|
318
|
+
data?: DetachedProof;
|
|
319
|
+
};
|
|
320
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP-I Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Inlined type definitions for the MCP-I protocol reference implementation.
|
|
5
|
+
* All types are pure TypeScript — no external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Related Spec: MCP-I §3, §4, §5, §6
|
|
8
|
+
*/
|
|
9
|
+
export const DELEGATION_CREDENTIAL_CONTEXT = 'https://schema.modelcontextprotocol-identity.io/xmcp-i/credentials/delegation.v1.0.0.json';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Delegation VC utility functions
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Wrap a DelegationRecord in an unsigned W3C VC structure.
|
|
15
|
+
*/
|
|
16
|
+
export function wrapDelegationAsVC(delegation, options) {
|
|
17
|
+
const now = new Date().toISOString();
|
|
18
|
+
const expirationDate = delegation.constraints.notAfter
|
|
19
|
+
? new Date(delegation.constraints.notAfter * 1000).toISOString()
|
|
20
|
+
: options?.expirationDate;
|
|
21
|
+
let issuanceDate = options?.issuanceDate || now;
|
|
22
|
+
if (!options?.issuanceDate && delegation.createdAt) {
|
|
23
|
+
issuanceDate = new Date(delegation.createdAt).toISOString();
|
|
24
|
+
}
|
|
25
|
+
const scopes = options?.scopes || delegation.constraints.scopes;
|
|
26
|
+
return {
|
|
27
|
+
'@context': [
|
|
28
|
+
'https://www.w3.org/2018/credentials/v1',
|
|
29
|
+
DELEGATION_CREDENTIAL_CONTEXT,
|
|
30
|
+
],
|
|
31
|
+
id: options?.id || delegation.vcId || `urn:uuid:${delegation.id}`,
|
|
32
|
+
type: ['VerifiableCredential', 'DelegationCredential'],
|
|
33
|
+
issuer: delegation.issuerDid,
|
|
34
|
+
issuanceDate,
|
|
35
|
+
...(expirationDate !== undefined && { expirationDate }),
|
|
36
|
+
credentialSubject: {
|
|
37
|
+
id: delegation.subjectDid,
|
|
38
|
+
delegation: {
|
|
39
|
+
id: delegation.id,
|
|
40
|
+
issuerDid: delegation.issuerDid,
|
|
41
|
+
subjectDid: delegation.subjectDid,
|
|
42
|
+
...(options?.userDid && { userDid: options.userDid }),
|
|
43
|
+
...(options?.userIdentifier && { userIdentifier: options.userIdentifier }),
|
|
44
|
+
...(options?.sessionId && { sessionId: options.sessionId }),
|
|
45
|
+
...(scopes && scopes.length > 0 && { scopes }),
|
|
46
|
+
...(delegation.controller !== undefined && { controller: delegation.controller }),
|
|
47
|
+
...(delegation.parentId !== undefined && { parentId: delegation.parentId }),
|
|
48
|
+
constraints: delegation.constraints,
|
|
49
|
+
status: delegation.status,
|
|
50
|
+
...(delegation.createdAt !== undefined && { createdAt: delegation.createdAt }),
|
|
51
|
+
...(delegation.metadata !== undefined && { metadata: delegation.metadata }),
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
...(options?.credentialStatus !== undefined && { credentialStatus: options.credentialStatus }),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Extract a DelegationRecord from a DelegationCredential.
|
|
59
|
+
*/
|
|
60
|
+
export function extractDelegationFromVC(vc) {
|
|
61
|
+
const delegation = vc.credentialSubject.delegation;
|
|
62
|
+
let signature = '';
|
|
63
|
+
if (vc.proof) {
|
|
64
|
+
const proof = vc.proof;
|
|
65
|
+
signature = (proof['proofValue'] || proof['jws'] || proof['signatureValue'] || '');
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
id: delegation.id,
|
|
69
|
+
issuerDid: delegation.issuerDid,
|
|
70
|
+
subjectDid: delegation.subjectDid,
|
|
71
|
+
controller: delegation.controller,
|
|
72
|
+
vcId: vc.id || `vc:${delegation.id}`,
|
|
73
|
+
parentId: delegation.parentId,
|
|
74
|
+
constraints: delegation.constraints,
|
|
75
|
+
signature,
|
|
76
|
+
status: delegation.status,
|
|
77
|
+
createdAt: delegation.createdAt,
|
|
78
|
+
revokedAt: undefined,
|
|
79
|
+
revokedReason: undefined,
|
|
80
|
+
metadata: delegation.metadata,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a DelegationCredential is expired.
|
|
85
|
+
*/
|
|
86
|
+
export function isDelegationCredentialExpired(vc) {
|
|
87
|
+
if (vc.expirationDate) {
|
|
88
|
+
if (new Date(vc.expirationDate) < new Date()) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const delegation = vc.credentialSubject.delegation;
|
|
93
|
+
if (delegation.constraints.notAfter) {
|
|
94
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
95
|
+
if (nowSec > delegation.constraints.notAfter) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a DelegationCredential is not yet valid.
|
|
103
|
+
*/
|
|
104
|
+
export function isDelegationCredentialNotYetValid(vc) {
|
|
105
|
+
const delegation = vc.credentialSubject.delegation;
|
|
106
|
+
if (delegation.constraints.notBefore) {
|
|
107
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
108
|
+
if (nowSec < delegation.constraints.notBefore) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Validate a DelegationCredential.
|
|
116
|
+
* Returns a Zod-compatible result shape.
|
|
117
|
+
*/
|
|
118
|
+
export function validateDelegationCredential(vc) {
|
|
119
|
+
if (!vc || typeof vc !== 'object') {
|
|
120
|
+
return { success: false, error: { message: 'Not an object' } };
|
|
121
|
+
}
|
|
122
|
+
const v = vc;
|
|
123
|
+
// Check @context
|
|
124
|
+
if (!Array.isArray(v['@context']) || v['@context'].length === 0) {
|
|
125
|
+
return { success: false, error: { message: 'Missing or invalid @context' } };
|
|
126
|
+
}
|
|
127
|
+
if (v['@context'][0] !== 'https://www.w3.org/2018/credentials/v1') {
|
|
128
|
+
return { success: false, error: { message: 'First @context must be W3C VC context' } };
|
|
129
|
+
}
|
|
130
|
+
// Check type
|
|
131
|
+
if (!Array.isArray(v['type'])) {
|
|
132
|
+
return { success: false, error: { message: 'Missing type array' } };
|
|
133
|
+
}
|
|
134
|
+
if (!v['type'].includes('VerifiableCredential') || !v['type'].includes('DelegationCredential')) {
|
|
135
|
+
return { success: false, error: { message: 'type must include VerifiableCredential and DelegationCredential' } };
|
|
136
|
+
}
|
|
137
|
+
// Check issuer
|
|
138
|
+
if (!v['issuer'] || (typeof v['issuer'] !== 'string' && typeof v['issuer'] !== 'object')) {
|
|
139
|
+
return { success: false, error: { message: 'Missing or invalid issuer' } };
|
|
140
|
+
}
|
|
141
|
+
// Check issuanceDate
|
|
142
|
+
if (!v['issuanceDate'] || typeof v['issuanceDate'] !== 'string') {
|
|
143
|
+
return { success: false, error: { message: 'Missing issuanceDate' } };
|
|
144
|
+
}
|
|
145
|
+
// Check credentialSubject
|
|
146
|
+
const cs = v['credentialSubject'];
|
|
147
|
+
if (!cs || typeof cs !== 'object') {
|
|
148
|
+
return { success: false, error: { message: 'Missing credentialSubject' } };
|
|
149
|
+
}
|
|
150
|
+
if (!cs['id'] || typeof cs['id'] !== 'string') {
|
|
151
|
+
return { success: false, error: { message: 'credentialSubject.id missing' } };
|
|
152
|
+
}
|
|
153
|
+
const del = cs['delegation'];
|
|
154
|
+
if (!del || typeof del !== 'object') {
|
|
155
|
+
return { success: false, error: { message: 'credentialSubject.delegation missing' } };
|
|
156
|
+
}
|
|
157
|
+
if (!del['id'] || !del['issuerDid'] || !del['subjectDid'] || !del['constraints']) {
|
|
158
|
+
return { success: false, error: { message: 'delegation fields missing' } };
|
|
159
|
+
}
|
|
160
|
+
return { success: true, data: vc };
|
|
161
|
+
}
|
|
162
|
+
export const DEFAULT_SESSION_TTL_MINUTES = 30;
|
|
163
|
+
export const DEFAULT_TIMESTAMP_SKEW_SECONDS = 120;
|
|
164
|
+
export const NONCE_LENGTH_BYTES = 16;
|
|
165
|
+
export function createNeedsAuthorizationError(config) {
|
|
166
|
+
return {
|
|
167
|
+
error: 'needs_authorization',
|
|
168
|
+
...config,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function isNeedsAuthorizationError(error) {
|
|
172
|
+
return (typeof error === 'object' &&
|
|
173
|
+
error !== null &&
|
|
174
|
+
error['error'] === 'needs_authorization');
|
|
175
|
+
}
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// DetachedProof validation
|
|
178
|
+
// ============================================================================
|
|
179
|
+
const HASH_REGEX = /^sha256:[a-f0-9]{64}$/;
|
|
180
|
+
/**
|
|
181
|
+
* Validate a DetachedProof structure.
|
|
182
|
+
* Returns a Zod-compatible result shape.
|
|
183
|
+
*/
|
|
184
|
+
export function validateDetachedProof(proof) {
|
|
185
|
+
if (!proof || typeof proof !== 'object') {
|
|
186
|
+
return { success: false, error: { message: 'Not an object' } };
|
|
187
|
+
}
|
|
188
|
+
const p = proof;
|
|
189
|
+
// Validate jws
|
|
190
|
+
if (typeof p['jws'] !== 'string' || p['jws'].length < 1) {
|
|
191
|
+
return { success: false, error: { message: 'jws must be a non-empty string' } };
|
|
192
|
+
}
|
|
193
|
+
// Validate meta
|
|
194
|
+
const meta = p['meta'];
|
|
195
|
+
if (!meta || typeof meta !== 'object') {
|
|
196
|
+
return { success: false, error: { message: 'meta must be an object' } };
|
|
197
|
+
}
|
|
198
|
+
const m = meta;
|
|
199
|
+
// Required string fields
|
|
200
|
+
const requiredStrings = ['did', 'kid', 'nonce', 'audience', 'sessionId'];
|
|
201
|
+
for (const field of requiredStrings) {
|
|
202
|
+
if (typeof m[field] !== 'string' || m[field].length < 1) {
|
|
203
|
+
return { success: false, error: { message: `meta.${field} must be a non-empty string` } };
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Validate ts (positive integer)
|
|
207
|
+
if (typeof m['ts'] !== 'number' || !Number.isInteger(m['ts']) || m['ts'] <= 0) {
|
|
208
|
+
return { success: false, error: { message: 'meta.ts must be a positive integer' } };
|
|
209
|
+
}
|
|
210
|
+
// Validate hash fields
|
|
211
|
+
const hashFields = ['requestHash', 'responseHash'];
|
|
212
|
+
for (const field of hashFields) {
|
|
213
|
+
if (typeof m[field] !== 'string' || !HASH_REGEX.test(m[field])) {
|
|
214
|
+
return { success: false, error: { message: `meta.${field} must match sha256:<64 hex chars>` } };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Optional string fields
|
|
218
|
+
const optionalStrings = ['scopeId', 'delegationRef', 'clientDid'];
|
|
219
|
+
for (const field of optionalStrings) {
|
|
220
|
+
if (m[field] !== undefined && typeof m[field] !== 'string') {
|
|
221
|
+
return { success: false, error: { message: `meta.${field} must be a string if present` } };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
success: true,
|
|
226
|
+
data: proof,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base58 Utilities (Bitcoin alphabet)
|
|
3
|
+
*
|
|
4
|
+
* Encoding and decoding utilities for Base58 (Bitcoin alphabet).
|
|
5
|
+
* Used for did:key multibase encoding (with 'z' prefix for base58btc).
|
|
6
|
+
*
|
|
7
|
+
* The Bitcoin alphabet excludes ambiguous characters (0, O, I, l).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Encode bytes to Base58 (Bitcoin alphabet)
|
|
11
|
+
*
|
|
12
|
+
* @param bytes - Bytes to encode
|
|
13
|
+
* @returns Base58-encoded string
|
|
14
|
+
*/
|
|
15
|
+
export declare function base58Encode(bytes: Uint8Array): string;
|
|
16
|
+
/**
|
|
17
|
+
* Decode Base58 (Bitcoin alphabet) to bytes
|
|
18
|
+
*
|
|
19
|
+
* @param encoded - Base58-encoded string
|
|
20
|
+
* @returns Decoded bytes
|
|
21
|
+
* @throws Error if input contains invalid characters
|
|
22
|
+
*/
|
|
23
|
+
export declare function base58Decode(encoded: string): Uint8Array;
|
|
24
|
+
/**
|
|
25
|
+
* Validate a Base58 string
|
|
26
|
+
*
|
|
27
|
+
* @param encoded - String to validate
|
|
28
|
+
* @returns true if valid Base58, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
export declare function isValidBase58(encoded: string): boolean;
|
|
31
|
+
//# sourceMappingURL=base58.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base58.d.ts","sourceRoot":"","sources":["../../src/utils/base58.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAyBtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAoCxD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUtD"}
|