@kya-os/mcp 1.3.2 → 1.5.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 +222 -1
- package/dist/delegation/index.d.ts +2 -1
- package/dist/delegation/index.d.ts.map +1 -1
- package/dist/delegation/index.js +2 -1
- package/dist/delegation/index.js.map +1 -1
- package/dist/delegation/scope-matcher.d.ts +35 -0
- package/dist/delegation/scope-matcher.d.ts.map +1 -0
- package/dist/delegation/scope-matcher.js +83 -0
- package/dist/delegation/scope-matcher.js.map +1 -0
- package/dist/delegation/vc-verifier.d.ts +1 -11
- package/dist/delegation/vc-verifier.d.ts.map +1 -1
- package/dist/delegation/vc-verifier.js +5 -19
- package/dist/delegation/vc-verifier.js.map +1 -1
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/middleware/with-kya-os.d.ts +88 -31
- package/dist/middleware/with-kya-os.d.ts.map +1 -1
- package/dist/middleware/with-kya-os.js +325 -88
- package/dist/middleware/with-kya-os.js.map +1 -1
- package/dist/policy/approval.d.ts +34 -0
- package/dist/policy/approval.d.ts.map +1 -0
- package/dist/policy/approval.js +29 -0
- package/dist/policy/approval.js.map +1 -0
- package/dist/policy/classifier.d.ts +38 -0
- package/dist/policy/classifier.d.ts.map +1 -0
- package/dist/policy/classifier.js +97 -0
- package/dist/policy/classifier.js.map +1 -0
- package/dist/policy/default-engine.d.ts +24 -0
- package/dist/policy/default-engine.d.ts.map +1 -0
- package/dist/policy/default-engine.js +41 -0
- package/dist/policy/default-engine.js.map +1 -0
- package/dist/policy/engine.d.ts +12 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +2 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/index.d.ts +7 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +7 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/projection.d.ts +47 -0
- package/dist/policy/projection.d.ts.map +1 -0
- package/dist/policy/projection.js +33 -0
- package/dist/policy/projection.js.map +1 -0
- package/dist/policy/types.d.ts +52 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +10 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/proof/errors.d.ts +1 -0
- package/dist/proof/errors.d.ts.map +1 -1
- package/dist/proof/errors.js +4 -0
- package/dist/proof/errors.js.map +1 -1
- package/dist/proof/generator.d.ts +28 -4
- package/dist/proof/generator.d.ts.map +1 -1
- package/dist/proof/generator.js +48 -20
- package/dist/proof/generator.js.map +1 -1
- package/dist/proof/verifier.d.ts +32 -3
- package/dist/proof/verifier.d.ts.map +1 -1
- package/dist/proof/verifier.js +85 -6
- package/dist/proof/verifier.js.map +1 -1
- package/dist/providers/audit-log.d.ts +62 -0
- package/dist/providers/audit-log.d.ts.map +1 -0
- package/dist/providers/audit-log.js +75 -0
- package/dist/providers/audit-log.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/runtime-fetch.d.ts +73 -0
- package/dist/providers/runtime-fetch.d.ts.map +1 -0
- package/dist/providers/runtime-fetch.js +169 -0
- package/dist/providers/runtime-fetch.js.map +1 -0
- package/dist/providers/system-clock.d.ts +39 -0
- package/dist/providers/system-clock.d.ts.map +1 -0
- package/dist/providers/system-clock.js +49 -0
- package/dist/providers/system-clock.js.map +1 -0
- package/dist/types/protocol.d.ts +38 -3
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +44 -9
- package/dist/types/protocol.js.map +1 -1
- package/package.json +20 -15
- package/schemas/README.md +1 -1
- package/schemas/delegation-credential.json +2 -2
- package/schemas/detached-proof.json +12 -3
- package/schemas/handshake-request.json +1 -1
- package/schemas/handshake-response.json +1 -1
- package/schemas/well-known-mcpi.json +1 -1
package/dist/types/protocol.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Related Spec: KYA-OS §3, §4, §5, §6
|
|
8
8
|
*/
|
|
9
|
-
export const DELEGATION_CREDENTIAL_CONTEXT = 'https://schema.kya-os.ai/
|
|
9
|
+
export const DELEGATION_CREDENTIAL_CONTEXT = 'https://schema.kya-os.ai/v1/protocol/delegation/context/v1.0.0';
|
|
10
10
|
// ============================================================================
|
|
11
11
|
// Delegation VC utility functions
|
|
12
12
|
// ============================================================================
|
|
@@ -58,7 +58,16 @@ export function wrapDelegationAsVC(delegation, options) {
|
|
|
58
58
|
* Extract a DelegationRecord from a DelegationCredential.
|
|
59
59
|
*/
|
|
60
60
|
export function extractDelegationFromVC(vc) {
|
|
61
|
-
|
|
61
|
+
// Defensive: callers may pass an untrusted/loosely-typed value. Fail with a
|
|
62
|
+
// clear, controlled error instead of a cryptic "Cannot read properties of
|
|
63
|
+
// undefined (reading 'delegation')" when the credential is structurally
|
|
64
|
+
// malformed. validate*-style callers should shape-check first and return
|
|
65
|
+
// { valid, reason } rather than relying on this throw — see
|
|
66
|
+
// validateDelegationChain, which never throws on a malformed leaf.
|
|
67
|
+
const delegation = vc?.credentialSubject?.delegation;
|
|
68
|
+
if (!delegation || typeof delegation !== 'object') {
|
|
69
|
+
throw new Error('extractDelegationFromVC: credential is missing credentialSubject.delegation');
|
|
70
|
+
}
|
|
62
71
|
let signature = '';
|
|
63
72
|
if (vc.proof) {
|
|
64
73
|
const proof = vc.proof;
|
|
@@ -177,6 +186,17 @@ export function isNeedsAuthorizationError(error) {
|
|
|
177
186
|
error !== null &&
|
|
178
187
|
error['error'] === 'needs_authorization');
|
|
179
188
|
}
|
|
189
|
+
export function createNeedsApprovalError(config) {
|
|
190
|
+
return {
|
|
191
|
+
error: 'needs_approval',
|
|
192
|
+
...config,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export function isNeedsApprovalError(error) {
|
|
196
|
+
return (typeof error === 'object' &&
|
|
197
|
+
error !== null &&
|
|
198
|
+
error['error'] === 'needs_approval');
|
|
199
|
+
}
|
|
180
200
|
// ============================================================================
|
|
181
201
|
// DetachedProof validation
|
|
182
202
|
// ============================================================================
|
|
@@ -211,20 +231,35 @@ export function validateDetachedProof(proof) {
|
|
|
211
231
|
if (typeof m['ts'] !== 'number' || !Number.isInteger(m['ts']) || m['ts'] <= 0) {
|
|
212
232
|
return { success: false, error: { message: 'meta.ts must be a positive integer' } };
|
|
213
233
|
}
|
|
214
|
-
// Validate hash fields
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
234
|
+
// Validate hash fields: requestHash is always required. responseHash is
|
|
235
|
+
// absent on denial / step-up proofs (no response) and validated only when present.
|
|
236
|
+
if (typeof m['requestHash'] !== 'string' || !HASH_REGEX.test(m['requestHash'])) {
|
|
237
|
+
return { success: false, error: { message: 'meta.requestHash must match sha256:<64 hex chars>' } };
|
|
238
|
+
}
|
|
239
|
+
if (m['responseHash'] !== undefined &&
|
|
240
|
+
(typeof m['responseHash'] !== 'string' || !HASH_REGEX.test(m['responseHash']))) {
|
|
241
|
+
return {
|
|
242
|
+
success: false,
|
|
243
|
+
error: { message: 'meta.responseHash must match sha256:<64 hex chars> when present' },
|
|
244
|
+
};
|
|
220
245
|
}
|
|
221
246
|
// Optional string fields
|
|
222
|
-
const optionalStrings = ['scopeId', 'delegationRef', 'clientDid'];
|
|
247
|
+
const optionalStrings = ['scopeId', 'delegationRef', 'clientDid', 'reason'];
|
|
223
248
|
for (const field of optionalStrings) {
|
|
224
249
|
if (m[field] !== undefined && typeof m[field] !== 'string') {
|
|
225
250
|
return { success: false, error: { message: `meta.${field} must be a string if present` } };
|
|
226
251
|
}
|
|
227
252
|
}
|
|
253
|
+
// Optional outcome enum (present on denial / step-up / needs-authorization proofs)
|
|
254
|
+
if (m['outcome'] !== undefined &&
|
|
255
|
+
!['allowed', 'denied', 'step_up_required', 'needs_authorization'].includes(m['outcome'])) {
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: {
|
|
259
|
+
message: 'meta.outcome must be one of allowed | denied | step_up_required | needs_authorization',
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
228
263
|
return {
|
|
229
264
|
success: true,
|
|
230
265
|
data: proof,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgHH,MAAM,CAAC,MAAM,6BAA6B,GACxC,
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kya-os/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Reference implementation of the KYA-OS protocol for Model Context Protocol servers: delegation, proof, and session primitives",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
"types": "./dist/middleware/index.d.ts",
|
|
44
44
|
"default": "./dist/middleware/index.js"
|
|
45
45
|
},
|
|
46
|
+
"./policy": {
|
|
47
|
+
"types": "./dist/policy/index.d.ts",
|
|
48
|
+
"default": "./dist/policy/index.js"
|
|
49
|
+
},
|
|
46
50
|
"./schemas/*.json": "./schemas/*.json",
|
|
47
51
|
"./package.json": "./package.json"
|
|
48
52
|
},
|
|
@@ -53,19 +57,6 @@
|
|
|
53
57
|
"README.md",
|
|
54
58
|
"CHANGELOG.md"
|
|
55
59
|
],
|
|
56
|
-
"scripts": {
|
|
57
|
-
"build": "tsc",
|
|
58
|
-
"test": "vitest run",
|
|
59
|
-
"test:watch": "vitest",
|
|
60
|
-
"test:coverage": "vitest run --coverage",
|
|
61
|
-
"typecheck": "tsc --noEmit",
|
|
62
|
-
"lint": "eslint src --ext .ts",
|
|
63
|
-
"clean": "rm -rf dist",
|
|
64
|
-
"prepublishOnly": "npm run clean && npm run build && npm run test",
|
|
65
|
-
"demo": "bash scripts/demo.sh",
|
|
66
|
-
"example:server": "npx tsx examples/node-server/server.ts",
|
|
67
|
-
"example:inspector": "npx @modelcontextprotocol/inspector npx tsx examples/node-server/server.ts --stdio"
|
|
68
|
-
},
|
|
69
60
|
"dependencies": {
|
|
70
61
|
"jose": "^5.6.3",
|
|
71
62
|
"json-canonicalize": "^2.0.0",
|
|
@@ -111,5 +102,19 @@
|
|
|
111
102
|
},
|
|
112
103
|
"publishConfig": {
|
|
113
104
|
"access": "public"
|
|
105
|
+
},
|
|
106
|
+
"scripts": {
|
|
107
|
+
"build": "tsc",
|
|
108
|
+
"test": "vitest run",
|
|
109
|
+
"test:watch": "vitest",
|
|
110
|
+
"test:coverage": "vitest run --coverage",
|
|
111
|
+
"typecheck": "tsc --noEmit",
|
|
112
|
+
"lint": "eslint src --ext .ts",
|
|
113
|
+
"clean": "rm -rf dist",
|
|
114
|
+
"demo": "bash scripts/demo.sh",
|
|
115
|
+
"example:server": "npx tsx examples/node-server/server.ts",
|
|
116
|
+
"example:inspector": "npx @modelcontextprotocol/inspector npx tsx examples/node-server/server.ts --stdio",
|
|
117
|
+
"example:verify-proof": "npx tsx examples/verify-proof/verify.ts",
|
|
118
|
+
"example:anti-mitm": "npx tsx examples/verify-proof/anti-mitm-demo.ts"
|
|
114
119
|
}
|
|
115
|
-
}
|
|
120
|
+
}
|
package/schemas/README.md
CHANGED
|
@@ -67,7 +67,7 @@ except ValidationError as e:
|
|
|
67
67
|
All schemas use JSON Schema draft 2020-12 and are published at:
|
|
68
68
|
|
|
69
69
|
```
|
|
70
|
-
https://schema.kya-os.ai/
|
|
70
|
+
https://schema.kya-os.ai/v1/protocol/{family}/{resource}/v1.0.0
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
Schemas can reference each other using `$ref`. For example, the delegation credential schema references shared definitions for constraints and proof structures.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schema.kya-os.ai/
|
|
3
|
+
"$id": "https://schema.kya-os.ai/v1/protocol/delegation/credential/v1.0.0",
|
|
4
4
|
"title": "KYA-OS Delegation Credential",
|
|
5
5
|
"description": "W3C Verifiable Credential containing a KYA-OS delegation with CRISP constraints.",
|
|
6
6
|
"type": "object",
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
{
|
|
287
287
|
"@context": [
|
|
288
288
|
"https://www.w3.org/2018/credentials/v1",
|
|
289
|
-
"https://schema.kya-os.ai/
|
|
289
|
+
"https://schema.kya-os.ai/v1/protocol/delegation/context/v1.0.0"
|
|
290
290
|
],
|
|
291
291
|
"id": "urn:uuid:12345678-1234-1234-1234-123456789abc",
|
|
292
292
|
"type": ["VerifiableCredential", "DelegationCredential"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schema.kya-os.ai/
|
|
3
|
+
"$id": "https://schema.kya-os.ai/v1/protocol/proof/detached/v1.0.0",
|
|
4
4
|
"title": "KYA-OS Detached Proof",
|
|
5
5
|
"description": "Cryptographic proof binding an MCP tool request/response pair to an agent's identity and session context.",
|
|
6
6
|
"type": "object",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"$defs": {
|
|
21
21
|
"ProofMeta": {
|
|
22
22
|
"type": "object",
|
|
23
|
-
"required": ["did", "kid", "ts", "nonce", "audience", "sessionId", "requestHash"
|
|
23
|
+
"required": ["did", "kid", "ts", "nonce", "audience", "sessionId", "requestHash"],
|
|
24
24
|
"properties": {
|
|
25
25
|
"did": {
|
|
26
26
|
"type": "string",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"responseHash": {
|
|
61
61
|
"type": "string",
|
|
62
62
|
"pattern": "^sha256:[a-f0-9]{64}$",
|
|
63
|
-
"description": "SHA-256 hash of JCS-canonicalized response. Format: 'sha256:<64 hex chars>'."
|
|
63
|
+
"description": "SHA-256 hash of JCS-canonicalized response. Absent on denial / step-up proofs (no response). Format: 'sha256:<64 hex chars>'."
|
|
64
64
|
},
|
|
65
65
|
"scopeId": {
|
|
66
66
|
"type": "string",
|
|
@@ -74,6 +74,15 @@
|
|
|
74
74
|
"type": "string",
|
|
75
75
|
"pattern": "^did:.+$",
|
|
76
76
|
"description": "Optional client DID for multi-party scenarios."
|
|
77
|
+
},
|
|
78
|
+
"outcome": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"enum": ["allowed", "denied", "step_up_required", "needs_authorization"],
|
|
81
|
+
"description": "Authorization outcome. Present on denial / step-up / needs-authorization proofs; absent (implicitly 'allowed') on success proofs."
|
|
82
|
+
},
|
|
83
|
+
"reason": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "Human-readable reason accompanying a denied / step-up / needs-authorization outcome."
|
|
77
86
|
}
|
|
78
87
|
},
|
|
79
88
|
"additionalProperties": false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schema.kya-os.ai/
|
|
3
|
+
"$id": "https://schema.kya-os.ai/v1/protocol/handshake/request/v1.0.0",
|
|
4
4
|
"title": "KYA-OS Handshake Request",
|
|
5
5
|
"description": "Client-initiated handshake request to establish a KYA-OS session with nonce-based replay protection.",
|
|
6
6
|
"type": "object",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schema.kya-os.ai/
|
|
3
|
+
"$id": "https://schema.kya-os.ai/v1/protocol/handshake/response/v1.0.0",
|
|
4
4
|
"title": "KYA-OS Handshake Response",
|
|
5
5
|
"description": "Server response to a successful handshake request, establishing session context.",
|
|
6
6
|
"type": "object",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schema.kya-os.ai/
|
|
3
|
+
"$id": "https://schema.kya-os.ai/v1/protocol/well-known/v1.0.0",
|
|
4
4
|
"title": "KYA-OS Discovery Document",
|
|
5
5
|
"description": "Well-known discovery document served at /.well-known/mcp for KYA-OS service discovery.",
|
|
6
6
|
"type": "object",
|