@kya-os/mcp-i 1.5.5 → 1.5.6-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.
- package/dist/compiler/config/schemas/identity.d.ts +29 -2
- package/dist/compiler/config/schemas/identity.js +11 -3
- package/dist/compiler/get-webpack-config/get-externals.js +3 -0
- package/dist/config.d.ts +174 -0
- package/dist/config.js +89 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/runtime/adapter-express.js +1 -1
- package/dist/runtime/adapter-nextjs.js +1 -1
- package/dist/runtime/delegation-verifier-agentshield.d.ts +2 -2
- package/dist/runtime/delegation-verifier-agentshield.js +96 -64
- package/dist/runtime/delegation-verifier-kv.js +17 -16
- package/dist/runtime/delegation-verifier-memory.js +8 -0
- package/dist/runtime/delegation-verifier.d.ts +49 -1
- package/dist/runtime/delegation-verifier.js +38 -12
- package/dist/runtime/http.js +1 -1
- package/dist/runtime/identity.d.ts +8 -5
- package/dist/runtime/index.d.ts +3 -2
- package/dist/runtime/index.js +5 -4
- package/dist/runtime/mcpi-runtime-wrapper.d.ts +12 -7
- package/dist/runtime/mcpi-runtime-wrapper.js +22 -17
- package/dist/runtime/mcpi-runtime.d.ts +7 -0
- package/dist/runtime/mcpi-runtime.js +6 -0
- package/dist/runtime/proof.d.ts +1 -0
- package/dist/runtime/proof.js +2 -1
- package/dist/runtime/session.d.ts +6 -0
- package/dist/runtime/session.js +8 -0
- package/dist/runtime/stdio.js +1 -1
- package/dist/runtime/utils/tools.js +4 -2
- package/dist/runtime/verifier-middleware.js +50 -32
- package/package.json +10 -5
|
@@ -395,8 +395,10 @@ async function addToolsToServer(server, toolModules, identityConfig) {
|
|
|
395
395
|
}
|
|
396
396
|
// Generate proof using the proof generator with scopeId
|
|
397
397
|
const proofGen = new proof_1.ProofGenerator(identity);
|
|
398
|
-
const proof = await proofGen.generateProof(toolRequest, toolResponse, session, {
|
|
399
|
-
|
|
398
|
+
const proof = await proofGen.generateProof(toolRequest, toolResponse, session, {
|
|
399
|
+
scopeId, // Pass scopeId for tool auto-discovery
|
|
400
|
+
clientDid: session?.clientDid, // Pass clientDid if available
|
|
401
|
+
});
|
|
400
402
|
if (identityConfig?.debug) {
|
|
401
403
|
console.error(`[MCPI] Generated proof for tool "${name}" - DID: ${proof.meta.did}`);
|
|
402
404
|
}
|
|
@@ -154,7 +154,7 @@ exports.CoreVerifier = CoreVerifier;
|
|
|
154
154
|
async function verifyWorker(request, config) {
|
|
155
155
|
try {
|
|
156
156
|
// Extract proof from request headers or body
|
|
157
|
-
const proof = await
|
|
157
|
+
const proof = await parseProofFromHeaders(request);
|
|
158
158
|
if (!proof) {
|
|
159
159
|
return {
|
|
160
160
|
success: false,
|
|
@@ -166,7 +166,7 @@ async function verifyWorker(request, config) {
|
|
|
166
166
|
};
|
|
167
167
|
}
|
|
168
168
|
// Extract receipt if present
|
|
169
|
-
const receipt = await
|
|
169
|
+
const receipt = await parseReceiptFromHeaders(request);
|
|
170
170
|
const verifier = new CoreVerifier(config);
|
|
171
171
|
return await verifier.verify({ proof, receipt: receipt || undefined });
|
|
172
172
|
}
|
|
@@ -188,7 +188,7 @@ function verifyExpress(config) {
|
|
|
188
188
|
return async (req, res, next) => {
|
|
189
189
|
try {
|
|
190
190
|
// Extract proof from request
|
|
191
|
-
const proof = await
|
|
191
|
+
const proof = await parseProofFromExpressHeaders(req);
|
|
192
192
|
if (!proof) {
|
|
193
193
|
return res.status(401).json({
|
|
194
194
|
code: "XMCP_I_ENOIDENTITY",
|
|
@@ -196,7 +196,7 @@ function verifyExpress(config) {
|
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
// Extract receipt if present
|
|
199
|
-
const receipt = await
|
|
199
|
+
const receipt = await parseReceiptFromExpressHeaders(req);
|
|
200
200
|
const verifier = new CoreVerifier(config);
|
|
201
201
|
const result = await verifier.verify({
|
|
202
202
|
proof,
|
|
@@ -237,23 +237,32 @@ function verifyExpress(config) {
|
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
239
|
/**
|
|
240
|
-
* Extract
|
|
240
|
+
* Helper: Extract header value from different header types
|
|
241
241
|
*/
|
|
242
|
-
|
|
242
|
+
function getHeaderValue(headers, name) {
|
|
243
|
+
if (headers instanceof Headers) {
|
|
244
|
+
return headers.get(name);
|
|
245
|
+
}
|
|
246
|
+
const header = headers[name.toLowerCase()];
|
|
247
|
+
if (!header)
|
|
248
|
+
return null;
|
|
249
|
+
return Array.isArray(header) ? header[0] : header;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Parse proof from request headers
|
|
253
|
+
*
|
|
254
|
+
* This function extracts ProofMeta from request headers.
|
|
255
|
+
* ProofMeta type is defined in @kya-os/contracts/proof.
|
|
256
|
+
*
|
|
257
|
+
* @param request - Fetch API Request or Express Request
|
|
258
|
+
* @returns ProofMeta (from @kya-os/contracts/proof) if found, null otherwise
|
|
259
|
+
*/
|
|
260
|
+
async function parseProofFromHeaders(request) {
|
|
243
261
|
// TODO: Implement actual proof extraction from request
|
|
244
262
|
// This would typically look for proof in headers or request body
|
|
245
263
|
// Placeholder implementation
|
|
246
|
-
let proofHeader = null;
|
|
247
264
|
// Handle both Fetch API Request and Node.js IncomingMessage
|
|
248
|
-
|
|
249
|
-
// Fetch API Request
|
|
250
|
-
proofHeader = request.headers.get("X-XMCP-I-Proof");
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
// Node.js IncomingMessage
|
|
254
|
-
const header = request.headers["x-xmcp-i-proof"];
|
|
255
|
-
proofHeader = Array.isArray(header) ? header[0] : header;
|
|
256
|
-
}
|
|
265
|
+
const proofHeader = getHeaderValue(request.headers, "X-XMCP-I-Proof");
|
|
257
266
|
if (!proofHeader) {
|
|
258
267
|
return null;
|
|
259
268
|
}
|
|
@@ -265,22 +274,19 @@ async function extractProofFromRequest(request) {
|
|
|
265
274
|
}
|
|
266
275
|
}
|
|
267
276
|
/**
|
|
268
|
-
*
|
|
277
|
+
* Parse receipt from request headers
|
|
278
|
+
*
|
|
279
|
+
* This function extracts Receipt from request headers.
|
|
280
|
+
* Receipt type is defined in @kya-os/contracts/registry.
|
|
281
|
+
*
|
|
282
|
+
* @param request - Fetch API Request or Express Request
|
|
283
|
+
* @returns Receipt (from @kya-os/contracts/registry) if found, null otherwise
|
|
269
284
|
*/
|
|
270
|
-
async function
|
|
285
|
+
async function parseReceiptFromHeaders(request) {
|
|
271
286
|
// TODO: Implement actual receipt extraction from request
|
|
272
287
|
// This would typically look for receipt reference in headers
|
|
273
|
-
let receiptRef = null;
|
|
274
288
|
// Handle both Fetch API Request and Node.js IncomingMessage
|
|
275
|
-
|
|
276
|
-
// Fetch API Request
|
|
277
|
-
receiptRef = request.headers.get("X-XMCP-I-Receipt-Ref");
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
// Node.js IncomingMessage
|
|
281
|
-
const header = request.headers["x-xmcp-i-receipt-ref"];
|
|
282
|
-
receiptRef = Array.isArray(header) ? header[0] : header;
|
|
283
|
-
}
|
|
289
|
+
const receiptRef = getHeaderValue(request.headers, "X-XMCP-I-Receipt-Ref");
|
|
284
290
|
if (!receiptRef) {
|
|
285
291
|
return null;
|
|
286
292
|
}
|
|
@@ -288,9 +294,15 @@ async function extractReceiptFromRequest(request) {
|
|
|
288
294
|
return null;
|
|
289
295
|
}
|
|
290
296
|
/**
|
|
291
|
-
*
|
|
297
|
+
* Parse proof from Express request headers
|
|
298
|
+
*
|
|
299
|
+
* This function extracts ProofMeta from Express request headers.
|
|
300
|
+
* ProofMeta type is defined in @kya-os/contracts/proof.
|
|
301
|
+
*
|
|
302
|
+
* @param req - Express Request
|
|
303
|
+
* @returns ProofMeta (from @kya-os/contracts/proof) if found, null otherwise
|
|
292
304
|
*/
|
|
293
|
-
async function
|
|
305
|
+
async function parseProofFromExpressHeaders(req) {
|
|
294
306
|
// TODO: Implement actual proof extraction from Express request
|
|
295
307
|
// This would typically look for proof in headers or request body
|
|
296
308
|
const proofHeader = req.headers["x-xmcp-i-proof"];
|
|
@@ -308,9 +320,15 @@ async function extractProofFromExpressRequest(req) {
|
|
|
308
320
|
}
|
|
309
321
|
}
|
|
310
322
|
/**
|
|
311
|
-
*
|
|
323
|
+
* Parse receipt from Express request headers
|
|
324
|
+
*
|
|
325
|
+
* This function extracts Receipt from Express request headers.
|
|
326
|
+
* Receipt type is defined in @kya-os/contracts/registry.
|
|
327
|
+
*
|
|
328
|
+
* @param req - Express Request
|
|
329
|
+
* @returns Receipt (from @kya-os/contracts/registry) if found, null otherwise
|
|
312
330
|
*/
|
|
313
|
-
async function
|
|
331
|
+
async function parseReceiptFromExpressHeaders(req) {
|
|
314
332
|
// TODO: Implement actual receipt extraction from Express request
|
|
315
333
|
// This would typically look for receipt reference in headers
|
|
316
334
|
const receiptRef = req.headers["x-xmcp-i-receipt-ref"];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kya-os/mcp-i",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.6-canary.0",
|
|
4
4
|
"description": "The TypeScript MCP framework with identity features built-in",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,6 +30,11 @@
|
|
|
30
30
|
"require": "./dist/cli-adapter/index.js",
|
|
31
31
|
"import": "./dist/cli-adapter/index.js",
|
|
32
32
|
"types": "./dist/cli-adapter/index.d.ts"
|
|
33
|
+
},
|
|
34
|
+
"./config": {
|
|
35
|
+
"require": "./dist/config.js",
|
|
36
|
+
"import": "./dist/config.js",
|
|
37
|
+
"types": "./dist/config.d.ts"
|
|
33
38
|
}
|
|
34
39
|
},
|
|
35
40
|
"files": [
|
|
@@ -53,8 +58,8 @@
|
|
|
53
58
|
"model-context-protocol"
|
|
54
59
|
],
|
|
55
60
|
"dependencies": {
|
|
56
|
-
"@kya-os/contracts": "
|
|
57
|
-
"@kya-os/mcp-i-core": "
|
|
61
|
+
"@kya-os/contracts": "1.5.2-canary.0",
|
|
62
|
+
"@kya-os/mcp-i-core": "1.1.13-canary.1",
|
|
58
63
|
"@modelcontextprotocol/sdk": "^1.11.4",
|
|
59
64
|
"@swc/core": "^1.11.24",
|
|
60
65
|
"@types/express": "^5.0.1",
|
|
@@ -100,14 +105,14 @@
|
|
|
100
105
|
"@types/node": "^20.0.0",
|
|
101
106
|
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
102
107
|
"@typescript-eslint/parser": "^6.0.0",
|
|
103
|
-
"@vitest/coverage-v8": "^
|
|
108
|
+
"@vitest/coverage-v8": "^4.0.5",
|
|
104
109
|
"copy-webpack-plugin": "^12.0.2",
|
|
105
110
|
"eslint": "^8.0.0",
|
|
106
111
|
"node-loader": "^1.0.1",
|
|
107
112
|
"redis": "^4.0.0",
|
|
108
113
|
"ts-loader": "^9.4.2",
|
|
109
114
|
"typescript": "^5.3.0",
|
|
110
|
-
"vitest": "^
|
|
115
|
+
"vitest": "^4.0.5",
|
|
111
116
|
"zod": "^3.22.4"
|
|
112
117
|
},
|
|
113
118
|
"engines": {
|