@kya-os/mcp-i 0.1.0-alpha.3.9 → 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.
Files changed (328) hide show
  1. package/README.md +350 -213
  2. package/dist/149.js +1 -0
  3. package/dist/189.js +1 -0
  4. package/dist/261.js +1 -0
  5. package/dist/28.js +1 -0
  6. package/dist/295.js +1 -0
  7. package/dist/460.js +1 -0
  8. package/dist/570.js +1 -0
  9. package/dist/634.js +1 -0
  10. package/dist/647.js +1 -0
  11. package/dist/67.js +1 -0
  12. package/dist/739.js +1 -0
  13. package/dist/742.js +1 -0
  14. package/dist/904.js +1 -0
  15. package/dist/938.js +1 -0
  16. package/dist/auth/api-key.d.ts +16 -0
  17. package/dist/auth/api-key.js +82 -0
  18. package/dist/auth/jwt.d.ts +43 -0
  19. package/dist/auth/jwt.js +51 -0
  20. package/dist/auth/oauth/factory.d.ts +12 -0
  21. package/dist/auth/oauth/factory.js +36 -0
  22. package/dist/auth/oauth/index.d.ts +5 -0
  23. package/dist/auth/oauth/index.js +27 -0
  24. package/dist/auth/oauth/providers/proxy-provider.d.ts +13 -0
  25. package/dist/auth/oauth/providers/proxy-provider.js +159 -0
  26. package/dist/auth/oauth/router.d.ts +4 -0
  27. package/dist/auth/oauth/router.js +294 -0
  28. package/dist/auth/oauth/storage/memory-storage.d.ts +12 -0
  29. package/dist/auth/oauth/storage/memory-storage.js +40 -0
  30. package/dist/auth/oauth/types.d.ts +112 -0
  31. package/dist/cache/__tests__/cloudflare-kv-nonce-cache.test.d.ts +4 -0
  32. package/dist/cache/__tests__/cloudflare-kv-nonce-cache.test.js +176 -0
  33. package/dist/cache/__tests__/concurrency.test.d.ts +5 -0
  34. package/dist/cache/__tests__/concurrency.test.js +300 -0
  35. package/dist/cache/__tests__/dynamodb-nonce-cache.test.d.ts +4 -0
  36. package/dist/cache/__tests__/dynamodb-nonce-cache.test.js +176 -0
  37. package/dist/cache/__tests__/memory-nonce-cache.test.d.ts +4 -0
  38. package/dist/cache/__tests__/memory-nonce-cache.test.js +132 -0
  39. package/dist/cache/__tests__/nonce-cache-factory-simple.test.d.ts +4 -0
  40. package/dist/cache/__tests__/nonce-cache-factory-simple.test.js +133 -0
  41. package/dist/cache/__tests__/nonce-cache-factory.test.d.ts +4 -0
  42. package/dist/cache/__tests__/nonce-cache-factory.test.js +252 -0
  43. package/dist/cache/__tests__/redis-nonce-cache.test.d.ts +4 -0
  44. package/dist/cache/__tests__/redis-nonce-cache.test.js +95 -0
  45. package/dist/cache/cloudflare-kv-nonce-cache.d.ts +14 -0
  46. package/dist/cache/cloudflare-kv-nonce-cache.js +93 -0
  47. package/dist/cache/dynamodb-nonce-cache.d.ts +15 -0
  48. package/dist/cache/dynamodb-nonce-cache.js +92 -0
  49. package/dist/cache/index.d.ts +16 -0
  50. package/dist/cache/index.js +32 -0
  51. package/dist/cache/memory-nonce-cache.d.ts +44 -0
  52. package/dist/cache/memory-nonce-cache.js +105 -0
  53. package/dist/cache/nonce-cache-factory.d.ts +20 -0
  54. package/dist/cache/nonce-cache-factory.js +208 -0
  55. package/dist/cache/redis-nonce-cache.d.ts +14 -0
  56. package/dist/cache/redis-nonce-cache.js +53 -0
  57. package/dist/compiler/compiler-context.d.ts +23 -0
  58. package/dist/compiler/compiler-context.js +24 -0
  59. package/dist/compiler/config/constants.d.ts +41 -0
  60. package/dist/compiler/config/constants.js +45 -0
  61. package/dist/compiler/config/index.d.ts +252 -0
  62. package/dist/compiler/config/index.js +15 -0
  63. package/dist/compiler/config/injection.d.ts +26 -0
  64. package/dist/compiler/config/injection.js +58 -0
  65. package/dist/compiler/config/schemas/experimental/index.d.ts +91 -0
  66. package/dist/compiler/config/schemas/experimental/index.js +16 -0
  67. package/dist/compiler/config/schemas/experimental/oauth.d.ts +74 -0
  68. package/dist/compiler/config/schemas/experimental/oauth.js +25 -0
  69. package/dist/compiler/config/schemas/index.d.ts +6 -0
  70. package/dist/compiler/config/schemas/index.js +17 -0
  71. package/dist/compiler/config/schemas/paths.d.ts +9 -0
  72. package/dist/compiler/config/schemas/paths.js +12 -0
  73. package/dist/compiler/config/schemas/transport/http.d.ts +82 -0
  74. package/dist/compiler/config/schemas/transport/http.js +33 -0
  75. package/dist/compiler/config/schemas/transport/stdio.d.ts +9 -0
  76. package/dist/compiler/config/schemas/transport/stdio.js +15 -0
  77. package/dist/compiler/config/schemas/webpack.d.ts +3 -0
  78. package/dist/compiler/config/schemas/webpack.js +15 -0
  79. package/dist/compiler/config/types.d.ts +1 -0
  80. package/dist/compiler/config/types.js +2 -0
  81. package/dist/compiler/config/utils.d.ts +20 -0
  82. package/dist/compiler/config/utils.js +36 -0
  83. package/dist/compiler/generate-env-code.d.ts +1 -0
  84. package/dist/compiler/generate-env-code.js +8 -0
  85. package/dist/compiler/generate-import-code.d.ts +1 -0
  86. package/dist/compiler/generate-import-code.js +24 -0
  87. package/dist/compiler/get-webpack-config/get-entries.d.ts +3 -0
  88. package/dist/compiler/get-webpack-config/get-entries.js +29 -0
  89. package/dist/compiler/get-webpack-config/get-externals.d.ts +7 -0
  90. package/dist/compiler/get-webpack-config/get-externals.js +88 -0
  91. package/dist/compiler/get-webpack-config/get-injected-variables.d.ts +8 -0
  92. package/dist/compiler/get-webpack-config/get-injected-variables.js +25 -0
  93. package/dist/compiler/get-webpack-config/index.d.ts +4 -0
  94. package/dist/compiler/get-webpack-config/index.js +101 -0
  95. package/dist/compiler/get-webpack-config/plugins.d.ts +8 -0
  96. package/dist/compiler/get-webpack-config/plugins.js +132 -0
  97. package/dist/compiler/get-webpack-config/resolve-tsconfig-paths.d.ts +9 -0
  98. package/dist/compiler/get-webpack-config/resolve-tsconfig-paths.js +40 -0
  99. package/dist/compiler/index.d.ts +6 -0
  100. package/dist/compiler/index.js +194 -0
  101. package/dist/compiler/on-first-build.d.ts +3 -0
  102. package/dist/compiler/on-first-build.js +58 -0
  103. package/dist/compiler/parse-xmcp-config.d.ts +9 -0
  104. package/dist/compiler/parse-xmcp-config.js +155 -0
  105. package/dist/compiler/start-http-server.d.ts +1 -0
  106. package/dist/compiler/start-http-server.js +34 -0
  107. package/dist/index.d.ts +12 -0
  108. package/dist/index.js +38 -0
  109. package/dist/index.js.LICENSE.txt +49 -0
  110. package/dist/runtime/__tests__/audit.test.d.ts +4 -0
  111. package/dist/runtime/__tests__/audit.test.js +328 -0
  112. package/dist/runtime/__tests__/identity.test.d.ts +4 -0
  113. package/dist/runtime/__tests__/identity.test.js +164 -0
  114. package/dist/runtime/__tests__/mcpi-runtime.test.d.ts +4 -0
  115. package/dist/runtime/__tests__/mcpi-runtime.test.js +372 -0
  116. package/dist/runtime/__tests__/proof.test.d.ts +4 -0
  117. package/dist/runtime/__tests__/proof.test.js +302 -0
  118. package/dist/runtime/__tests__/session.test.d.ts +4 -0
  119. package/dist/runtime/__tests__/session.test.js +254 -0
  120. package/dist/runtime/__tests__/well-known.test.d.ts +4 -0
  121. package/dist/runtime/__tests__/well-known.test.js +312 -0
  122. package/dist/runtime/adapter-express.js +2 -0
  123. package/dist/runtime/adapter-express.js.LICENSE.txt +252 -0
  124. package/dist/runtime/adapter-nextjs.js +2 -0
  125. package/dist/runtime/adapter-nextjs.js.LICENSE.txt +53 -0
  126. package/dist/runtime/adapters/express/index.d.ts +2 -0
  127. package/dist/runtime/adapters/express/index.js +48 -0
  128. package/dist/runtime/adapters/nextjs/index.d.ts +8 -0
  129. package/dist/runtime/adapters/nextjs/index.js +18 -0
  130. package/dist/runtime/audit.d.ts +93 -0
  131. package/dist/runtime/audit.js +212 -0
  132. package/dist/runtime/debug.d.ts +118 -0
  133. package/dist/runtime/debug.js +612 -0
  134. package/dist/runtime/delegation-hooks.d.ts +85 -0
  135. package/dist/runtime/delegation-hooks.js +116 -0
  136. package/dist/runtime/demo.d.ts +71 -0
  137. package/dist/runtime/demo.js +135 -0
  138. package/dist/runtime/headers.d.ts +1 -0
  139. package/dist/runtime/headers.js +9 -0
  140. package/dist/runtime/http.js +2 -0
  141. package/dist/runtime/http.js.LICENSE.txt +252 -0
  142. package/dist/runtime/identity.d.ts +105 -0
  143. package/dist/runtime/identity.js +232 -0
  144. package/dist/runtime/index.d.ts +16 -0
  145. package/dist/runtime/index.js +56 -0
  146. package/dist/runtime/mcpi-runtime.d.ts +164 -0
  147. package/dist/runtime/mcpi-runtime.js +352 -0
  148. package/dist/runtime/proof.d.ts +87 -0
  149. package/dist/runtime/proof.js +223 -0
  150. package/dist/runtime/session.d.ts +88 -0
  151. package/dist/runtime/session.js +216 -0
  152. package/dist/runtime/stdio.js +2 -0
  153. package/dist/runtime/stdio.js.LICENSE.txt +1 -0
  154. package/dist/runtime/templates/home.d.ts +2 -0
  155. package/dist/runtime/templates/home.js +50 -0
  156. package/dist/runtime/transports/http/base-streamable-http.d.ts +25 -0
  157. package/dist/runtime/transports/http/base-streamable-http.js +16 -0
  158. package/dist/runtime/transports/http/http-context.d.ts +9 -0
  159. package/dist/runtime/transports/http/http-context.js +8 -0
  160. package/dist/runtime/transports/http/index.js +55 -0
  161. package/dist/runtime/transports/http/setup-cors.d.ts +4 -0
  162. package/dist/runtime/transports/http/setup-cors.js +24 -0
  163. package/dist/runtime/transports/http/stateless-streamable-http.d.ts +39 -0
  164. package/dist/runtime/transports/http/stateless-streamable-http.js +331 -0
  165. package/dist/runtime/transports/stdio/index.d.ts +1 -0
  166. package/dist/runtime/transports/stdio/index.js +51 -0
  167. package/dist/runtime/utils/server.d.ts +42 -0
  168. package/dist/runtime/utils/server.js +39 -0
  169. package/dist/runtime/utils/tools.d.ts +8 -0
  170. package/dist/runtime/utils/tools.js +115 -0
  171. package/dist/runtime/verifier-middleware.d.ts +76 -0
  172. package/dist/runtime/verifier-middleware.js +322 -0
  173. package/dist/runtime/well-known.d.ts +151 -0
  174. package/dist/runtime/well-known.js +258 -0
  175. package/dist/storage/config.d.ts +28 -0
  176. package/dist/storage/config.js +79 -0
  177. package/dist/storage/delegation.d.ts +59 -0
  178. package/dist/storage/delegation.js +130 -0
  179. package/dist/storage/merkle-verifier.d.ts +84 -0
  180. package/dist/storage/merkle-verifier.js +261 -0
  181. package/dist/test/__tests__/nonce-cache-integration.test.d.ts +1 -0
  182. package/dist/test/__tests__/nonce-cache-integration.test.js +116 -0
  183. package/dist/test/__tests__/nonce-cache.test.d.ts +1 -0
  184. package/dist/test/__tests__/nonce-cache.test.js +122 -0
  185. package/dist/test/__tests__/runtime-integration.test.d.ts +4 -0
  186. package/dist/test/__tests__/runtime-integration.test.js +192 -0
  187. package/dist/test/__tests__/test-infrastructure.test.d.ts +4 -0
  188. package/dist/test/__tests__/test-infrastructure.test.js +178 -0
  189. package/dist/test/deterministic-keys.d.ts +31 -0
  190. package/dist/test/deterministic-keys.js +108 -0
  191. package/dist/test/examples/test-usage-example.d.ts +140 -0
  192. package/dist/test/examples/test-usage-example.js +175 -0
  193. package/dist/test/index.d.ts +11 -0
  194. package/dist/test/index.js +27 -0
  195. package/dist/test/local-verification.d.ts +28 -0
  196. package/dist/test/local-verification.js +342 -0
  197. package/dist/test/mock-identity-provider.d.ts +96 -0
  198. package/dist/test/mock-identity-provider.js +243 -0
  199. package/dist/test/runtime-integration.d.ts +63 -0
  200. package/dist/test/runtime-integration.js +140 -0
  201. package/dist/test/test-environment.d.ts +26 -0
  202. package/dist/test/test-environment.js +50 -0
  203. package/dist/types/declarations.d.ts +1 -0
  204. package/dist/types/declarations.js +6 -0
  205. package/dist/types/middleware.d.ts +2 -0
  206. package/dist/types/middleware.js +2 -0
  207. package/dist/types/tool.d.ts +80 -0
  208. package/dist/types/tool.js +2 -0
  209. package/dist/utils/cli-icons.d.ts +3 -0
  210. package/dist/utils/cli-icons.js +7 -0
  211. package/dist/utils/constants.d.ts +6 -0
  212. package/dist/utils/constants.js +13 -0
  213. package/dist/utils/context.d.ts +33 -0
  214. package/dist/utils/context.js +58 -0
  215. package/dist/utils/file-watcher.d.ts +19 -0
  216. package/dist/utils/file-watcher.js +49 -0
  217. package/dist/utils/fs-utils.d.ts +2 -0
  218. package/dist/utils/fs-utils.js +22 -0
  219. package/dist/utils/path-validation.d.ts +3 -0
  220. package/dist/utils/path-validation.js +56 -0
  221. package/dist/utils/spawn-process.d.ts +9 -0
  222. package/dist/utils/spawn-process.js +50 -0
  223. package/dist/utils/subscribable.d.ts +12 -0
  224. package/dist/utils/subscribable.js +44 -0
  225. package/package.json +91 -77
  226. package/dist/cjs/auto.js +0 -16
  227. package/dist/cjs/cli-mode.d.ts +0 -16
  228. package/dist/cjs/cli-mode.js +0 -32
  229. package/dist/cjs/crypto.d.ts +0 -16
  230. package/dist/cjs/crypto.js +0 -212
  231. package/dist/cjs/dev-helper.d.ts +0 -3
  232. package/dist/cjs/dev-helper.js +0 -46
  233. package/dist/cjs/encrypted-storage.d.ts +0 -11
  234. package/dist/cjs/encrypted-storage.js +0 -73
  235. package/dist/cjs/index.d.ts +0 -56
  236. package/dist/cjs/index.js +0 -727
  237. package/dist/cjs/logger.d.ts +0 -32
  238. package/dist/cjs/logger.js +0 -85
  239. package/dist/cjs/nextjs.d.ts +0 -10
  240. package/dist/cjs/nextjs.js +0 -83
  241. package/dist/cjs/platform-info.d.ts +0 -36
  242. package/dist/cjs/platform-info.js +0 -274
  243. package/dist/cjs/polling.d.ts +0 -13
  244. package/dist/cjs/polling.js +0 -52
  245. package/dist/cjs/registry/index.d.ts +0 -12
  246. package/dist/cjs/registry/index.js +0 -56
  247. package/dist/cjs/registry/knowthat.d.ts +0 -17
  248. package/dist/cjs/registry/knowthat.js +0 -173
  249. package/dist/cjs/rotation.d.ts +0 -35
  250. package/dist/cjs/rotation.js +0 -102
  251. package/dist/cjs/storage.d.ts +0 -41
  252. package/dist/cjs/storage.js +0 -163
  253. package/dist/cjs/transport.d.ts +0 -35
  254. package/dist/cjs/transport.js +0 -300
  255. package/dist/cjs/types.d.ts +0 -206
  256. package/dist/cjs/vercel-adapter.d.ts +0 -8
  257. package/dist/cjs/vercel-adapter.js +0 -67
  258. package/dist/esm/auto.d.ts +0 -13
  259. package/dist/esm/auto.d.ts.map +0 -1
  260. package/dist/esm/auto.js +0 -30
  261. package/dist/esm/auto.js.map +0 -1
  262. package/dist/esm/cli-mode.d.ts +0 -52
  263. package/dist/esm/cli-mode.d.ts.map +0 -1
  264. package/dist/esm/cli-mode.js +0 -59
  265. package/dist/esm/cli-mode.js.map +0 -1
  266. package/dist/esm/crypto.d.ts +0 -51
  267. package/dist/esm/crypto.d.ts.map +0 -1
  268. package/dist/esm/crypto.js +0 -230
  269. package/dist/esm/crypto.js.map +0 -1
  270. package/dist/esm/dev-helper.d.ts +0 -15
  271. package/dist/esm/dev-helper.d.ts.map +0 -1
  272. package/dist/esm/dev-helper.js +0 -63
  273. package/dist/esm/dev-helper.js.map +0 -1
  274. package/dist/esm/encrypted-storage.d.ts +0 -19
  275. package/dist/esm/encrypted-storage.d.ts.map +0 -1
  276. package/dist/esm/encrypted-storage.js +0 -48
  277. package/dist/esm/encrypted-storage.js.map +0 -1
  278. package/dist/esm/index.d.ts +0 -129
  279. package/dist/esm/index.d.ts.map +0 -1
  280. package/dist/esm/index.js +0 -853
  281. package/dist/esm/index.js.map +0 -1
  282. package/dist/esm/logger.d.ts +0 -46
  283. package/dist/esm/logger.d.ts.map +0 -1
  284. package/dist/esm/logger.js +0 -100
  285. package/dist/esm/logger.js.map +0 -1
  286. package/dist/esm/nextjs.d.ts +0 -22
  287. package/dist/esm/nextjs.d.ts.map +0 -1
  288. package/dist/esm/nextjs.js +0 -83
  289. package/dist/esm/nextjs.js.map +0 -1
  290. package/dist/esm/package.json +0 -1
  291. package/dist/esm/platform-info.d.ts +0 -74
  292. package/dist/esm/platform-info.d.ts.map +0 -1
  293. package/dist/esm/platform-info.js +0 -293
  294. package/dist/esm/platform-info.js.map +0 -1
  295. package/dist/esm/polling.d.ts +0 -29
  296. package/dist/esm/polling.d.ts.map +0 -1
  297. package/dist/esm/polling.js +0 -76
  298. package/dist/esm/polling.js.map +0 -1
  299. package/dist/esm/registry/index.d.ts +0 -43
  300. package/dist/esm/registry/index.d.ts.map +0 -1
  301. package/dist/esm/registry/index.js +0 -89
  302. package/dist/esm/registry/index.js.map +0 -1
  303. package/dist/esm/registry/knowthat.d.ts +0 -44
  304. package/dist/esm/registry/knowthat.d.ts.map +0 -1
  305. package/dist/esm/registry/knowthat.js +0 -220
  306. package/dist/esm/registry/knowthat.js.map +0 -1
  307. package/dist/esm/rotation.d.ts +0 -57
  308. package/dist/esm/rotation.d.ts.map +0 -1
  309. package/dist/esm/rotation.js +0 -133
  310. package/dist/esm/rotation.js.map +0 -1
  311. package/dist/esm/storage.d.ts +0 -65
  312. package/dist/esm/storage.d.ts.map +0 -1
  313. package/dist/esm/storage.js +0 -160
  314. package/dist/esm/storage.js.map +0 -1
  315. package/dist/esm/transport.d.ts +0 -52
  316. package/dist/esm/transport.d.ts.map +0 -1
  317. package/dist/esm/transport.js +0 -340
  318. package/dist/esm/transport.js.map +0 -1
  319. package/dist/esm/types.d.ts +0 -293
  320. package/dist/esm/types.d.ts.map +0 -1
  321. package/dist/esm/types.js +0 -5
  322. package/dist/esm/types.js.map +0 -1
  323. package/dist/esm/vercel-adapter.d.ts +0 -26
  324. package/dist/esm/vercel-adapter.d.ts.map +0 -1
  325. package/dist/esm/vercel-adapter.js +0 -80
  326. package/dist/esm/vercel-adapter.js.map +0 -1
  327. /package/dist/{cjs → auth/oauth}/types.js +0 -0
  328. /package/dist/{cjs/auto.d.ts → runtime/transports/http/index.d.ts} +0 -0
@@ -0,0 +1,53 @@
1
+ /*!
2
+ * bytes
3
+ * Copyright(c) 2012-2014 TJ Holowaychuk
4
+ * Copyright(c) 2015 Jed Watson
5
+ * MIT Licensed
6
+ */
7
+
8
+ /*!
9
+ * content-type
10
+ * Copyright(c) 2015 Douglas Christopher Wilson
11
+ * MIT Licensed
12
+ */
13
+
14
+ /*!
15
+ * depd
16
+ * Copyright(c) 2014-2018 Douglas Christopher Wilson
17
+ * MIT Licensed
18
+ */
19
+
20
+ /*!
21
+ * http-errors
22
+ * Copyright(c) 2014 Jonathan Ong
23
+ * Copyright(c) 2016 Douglas Christopher Wilson
24
+ * MIT Licensed
25
+ */
26
+
27
+ /*!
28
+ * raw-body
29
+ * Copyright(c) 2013-2014 Jonathan Ong
30
+ * Copyright(c) 2014-2022 Douglas Christopher Wilson
31
+ * MIT Licensed
32
+ */
33
+
34
+ /*!
35
+ * statuses
36
+ * Copyright(c) 2014 Jonathan Ong
37
+ * Copyright(c) 2016 Douglas Christopher Wilson
38
+ * MIT Licensed
39
+ */
40
+
41
+ /*!
42
+ * toidentifier
43
+ * Copyright(c) 2016 Douglas Christopher Wilson
44
+ * MIT Licensed
45
+ */
46
+
47
+ /*!
48
+ * unpipe
49
+ * Copyright(c) 2015 Douglas Christopher Wilson
50
+ * MIT Licensed
51
+ */
52
+
53
+ /** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
@@ -0,0 +1,2 @@
1
+ import { Request, Response } from "express";
2
+ export declare function xmcpHandler(req: Request, res: Response): Promise<unknown>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xmcpHandler = xmcpHandler;
4
+ const server_1 = require("../../utils/server");
5
+ const stateless_streamable_http_1 = require("../../transports/http/stateless-streamable-http");
6
+ const setup_cors_1 = require("../../transports/http/setup-cors");
7
+ const http_context_1 = require("../../transports/http/http-context");
8
+ const node_crypto_1 = require("node:crypto");
9
+ // HTTP config injected by compiler
10
+ // @ts-expect-error: injected by compiler
11
+ const httpConfig = HTTP_CONFIG;
12
+ // CORS config injected by compiler
13
+ // @ts-expect-error: injected by compiler
14
+ const corsConfig = HTTP_CORS_CONFIG;
15
+ async function xmcpHandler(req, res) {
16
+ return new Promise((resolve) => {
17
+ const id = (0, node_crypto_1.randomUUID)();
18
+ (0, http_context_1.httpContextProvider)({ id, headers: req.headers }, async () => {
19
+ try {
20
+ (0, setup_cors_1.setResponseCorsHeaders)(corsConfig, res);
21
+ const server = await (0, server_1.createServer)();
22
+ const transport = new stateless_streamable_http_1.StatelessHttpServerTransport(httpConfig.debug, httpConfig.bodySizeLimit || "10mb");
23
+ // cleanup when request/connection closes
24
+ res.on("close", () => {
25
+ transport.close();
26
+ server.close();
27
+ });
28
+ await server.connect(transport);
29
+ await transport.handleRequest(req, res, req.body).then(() => {
30
+ resolve(res);
31
+ });
32
+ }
33
+ catch (error) {
34
+ console.error("[HTTP-server] Error handling MCP request:", error);
35
+ if (!res.headersSent) {
36
+ res.status(500).json({
37
+ jsonrpc: "2.0",
38
+ error: {
39
+ code: -32603,
40
+ message: "Internal server error",
41
+ },
42
+ id: null,
43
+ });
44
+ }
45
+ }
46
+ });
47
+ });
48
+ }
@@ -0,0 +1,8 @@
1
+ import { experimental_withMcpAuth as withMcpAuth } from "@vercel/mcp-adapter";
2
+ export declare function xmcpHandler(request: Request): Promise<Response>;
3
+ export type VerifyToken = Parameters<typeof withMcpAuth>[1];
4
+ export type Options = Parameters<typeof withMcpAuth>[2];
5
+ export type AuthConfig = Options & {
6
+ verifyToken: VerifyToken;
7
+ };
8
+ export declare function withAuth(handler: (request: Request) => Promise<Response>, config: AuthConfig): (request: Request) => Promise<Response>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xmcpHandler = xmcpHandler;
4
+ exports.withAuth = withAuth;
5
+ const mcp_adapter_1 = require("@vercel/mcp-adapter");
6
+ const server_1 = require("../../utils/server");
7
+ async function xmcpHandler(request) {
8
+ const [toolPromises, toolModules] = (0, server_1.loadTools)();
9
+ await Promise.all(toolPromises);
10
+ const requestHandler = (0, mcp_adapter_1.createMcpHandler)((server) => {
11
+ (0, server_1.configureServer)(server, toolModules);
12
+ }, server_1.INJECTED_CONFIG);
13
+ return requestHandler(request);
14
+ }
15
+ function withAuth(handler, config) {
16
+ const { verifyToken, ...options } = config;
17
+ return (0, mcp_adapter_1.experimental_withMcpAuth)(handler, verifyToken, options);
18
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Audit Logging System for XMCP-I Runtime
3
+ *
4
+ * Handles audit record generation and logging with frozen format
5
+ * according to requirements 5.4, 5.5.
6
+ */
7
+ import { AuditRecord } from "@kya-os/contracts/proof";
8
+ import { SessionContext } from "@kya-os/contracts/handshake";
9
+ import { AgentIdentity } from "./identity";
10
+ /**
11
+ * Audit logging configuration
12
+ */
13
+ export interface AuditConfig {
14
+ enabled?: boolean;
15
+ logFunction?: (record: string) => void;
16
+ includePayloads?: boolean;
17
+ }
18
+ /**
19
+ * Audit context for logging
20
+ */
21
+ export interface AuditContext {
22
+ identity: AgentIdentity;
23
+ session: SessionContext;
24
+ requestHash: string;
25
+ responseHash: string;
26
+ verified: "yes" | "no";
27
+ scopeId?: string;
28
+ }
29
+ /**
30
+ * Audit logger class
31
+ */
32
+ export declare class AuditLogger {
33
+ private config;
34
+ private sessionAuditLog;
35
+ constructor(config?: AuditConfig);
36
+ /**
37
+ * Emit audit record on first call per session
38
+ * Requirements: 5.4, 5.5
39
+ */
40
+ logAuditRecord(context: AuditContext): Promise<void>;
41
+ /**
42
+ * Format audit record as frozen audit line
43
+ * Format: audit.v1 ts=<unix> session=<id> audience=<host> did=<did> kid=<kid> reqHash=<sha256:..> resHash=<sha256:..> verified=yes|no scope=<scopeId|->
44
+ */
45
+ private formatAuditLine;
46
+ /**
47
+ * Clear session audit log (useful for testing)
48
+ */
49
+ clearSessionLog(): void;
50
+ /**
51
+ * Get audit statistics
52
+ */
53
+ getStats(): {
54
+ enabled: boolean;
55
+ sessionsLogged: number;
56
+ includePayloads: boolean;
57
+ };
58
+ /**
59
+ * Update configuration
60
+ */
61
+ updateConfig(config: Partial<AuditConfig>): void;
62
+ }
63
+ /**
64
+ * Key rotation audit logging
65
+ */
66
+ export interface KeyRotationAuditContext {
67
+ identity: AgentIdentity;
68
+ oldKeyId: string;
69
+ newKeyId: string;
70
+ mode: "dev" | "prod";
71
+ delegated: "yes" | "no";
72
+ force: "yes" | "no";
73
+ }
74
+ /**
75
+ * Log key rotation audit record
76
+ * Format: keys.rotate.v1 ts=<unix> did=<did> oldKid=<kid> newKid=<kid> mode=dev|prod delegated=yes|no force=yes|no
77
+ */
78
+ export declare function logKeyRotationAudit(context: KeyRotationAuditContext, logFunction?: (record: string) => void): void;
79
+ /**
80
+ * Default audit logger instance
81
+ */
82
+ export declare const defaultAuditLogger: AuditLogger;
83
+ /**
84
+ * Utility functions
85
+ */
86
+ /**
87
+ * Parse audit line back to record (for testing/analysis)
88
+ */
89
+ export declare function parseAuditLine(line: string): AuditRecord | null;
90
+ /**
91
+ * Validate audit record format
92
+ */
93
+ export declare function validateAuditRecord(record: any): record is AuditRecord;
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ /**
3
+ * Audit Logging System for XMCP-I Runtime
4
+ *
5
+ * Handles audit record generation and logging with frozen format
6
+ * according to requirements 5.4, 5.5.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.defaultAuditLogger = exports.AuditLogger = void 0;
10
+ exports.logKeyRotationAudit = logKeyRotationAudit;
11
+ exports.parseAuditLine = parseAuditLine;
12
+ exports.validateAuditRecord = validateAuditRecord;
13
+ /**
14
+ * Audit logger class
15
+ */
16
+ class AuditLogger {
17
+ config;
18
+ sessionAuditLog = new Set(); // Track first call per session
19
+ constructor(config = {}) {
20
+ this.config = {
21
+ enabled: true,
22
+ logFunction: console.log,
23
+ includePayloads: false, // Keep identity/proof data out by default
24
+ ...config,
25
+ };
26
+ }
27
+ /**
28
+ * Emit audit record on first call per session
29
+ * Requirements: 5.4, 5.5
30
+ */
31
+ async logAuditRecord(context) {
32
+ if (!this.config.enabled) {
33
+ return;
34
+ }
35
+ // Check if this is the first call for this session
36
+ const sessionKey = `${context.session.sessionId}:${context.session.audience}`;
37
+ if (this.sessionAuditLog.has(sessionKey)) {
38
+ return; // Already logged for this session
39
+ }
40
+ // Mark session as logged
41
+ this.sessionAuditLog.add(sessionKey);
42
+ // Create audit record
43
+ const auditRecord = {
44
+ version: "audit.v1",
45
+ ts: Math.floor(Date.now() / 1000),
46
+ session: context.session.sessionId,
47
+ audience: context.session.audience,
48
+ did: context.identity.did,
49
+ kid: context.identity.keyId,
50
+ reqHash: context.requestHash,
51
+ resHash: context.responseHash,
52
+ verified: context.verified,
53
+ scope: context.scopeId || "-", // Use "-" for no scope
54
+ };
55
+ // Format as frozen audit line
56
+ const auditLine = this.formatAuditLine(auditRecord);
57
+ // Emit audit record
58
+ this.config.logFunction(auditLine);
59
+ }
60
+ /**
61
+ * Format audit record as frozen audit line
62
+ * Format: audit.v1 ts=<unix> session=<id> audience=<host> did=<did> kid=<kid> reqHash=<sha256:..> resHash=<sha256:..> verified=yes|no scope=<scopeId|->
63
+ */
64
+ formatAuditLine(record) {
65
+ const fields = [
66
+ `${record.version}`,
67
+ `ts=${record.ts}`,
68
+ `session=${record.session}`,
69
+ `audience=${record.audience}`,
70
+ `did=${record.did}`,
71
+ `kid=${record.kid}`,
72
+ `reqHash=${record.reqHash}`,
73
+ `resHash=${record.resHash}`,
74
+ `verified=${record.verified}`,
75
+ `scope=${record.scope}`,
76
+ ];
77
+ return fields.join(" ");
78
+ }
79
+ /**
80
+ * Clear session audit log (useful for testing)
81
+ */
82
+ clearSessionLog() {
83
+ this.sessionAuditLog.clear();
84
+ }
85
+ /**
86
+ * Get audit statistics
87
+ */
88
+ getStats() {
89
+ return {
90
+ enabled: this.config.enabled,
91
+ sessionsLogged: this.sessionAuditLog.size,
92
+ includePayloads: this.config.includePayloads,
93
+ };
94
+ }
95
+ /**
96
+ * Update configuration
97
+ */
98
+ updateConfig(config) {
99
+ this.config = { ...this.config, ...config };
100
+ }
101
+ }
102
+ exports.AuditLogger = AuditLogger;
103
+ /**
104
+ * Log key rotation audit record
105
+ * Format: keys.rotate.v1 ts=<unix> did=<did> oldKid=<kid> newKid=<kid> mode=dev|prod delegated=yes|no force=yes|no
106
+ */
107
+ function logKeyRotationAudit(context, logFunction = console.log) {
108
+ const fields = [
109
+ "keys.rotate.v1",
110
+ `ts=${Math.floor(Date.now() / 1000)}`,
111
+ `did=${context.identity.did}`,
112
+ `oldKid=${context.oldKeyId}`,
113
+ `newKid=${context.newKeyId}`,
114
+ `mode=${context.mode}`,
115
+ `delegated=${context.delegated}`,
116
+ `force=${context.force}`,
117
+ ];
118
+ const auditLine = fields.join(" ");
119
+ logFunction(auditLine);
120
+ }
121
+ /**
122
+ * Default audit logger instance
123
+ */
124
+ exports.defaultAuditLogger = new AuditLogger();
125
+ /**
126
+ * Utility functions
127
+ */
128
+ /**
129
+ * Parse audit line back to record (for testing/analysis)
130
+ */
131
+ function parseAuditLine(line) {
132
+ try {
133
+ const parts = line.split(" ");
134
+ if (parts.length < 10 || !parts[0].startsWith("audit.v")) {
135
+ return null;
136
+ }
137
+ const record = {
138
+ version: parts[0],
139
+ };
140
+ // Parse key=value pairs
141
+ for (let i = 1; i < parts.length; i++) {
142
+ const [key, value] = parts[i].split("=", 2);
143
+ if (!key || value === undefined)
144
+ continue;
145
+ switch (key) {
146
+ case "ts":
147
+ record.ts = parseInt(value, 10);
148
+ break;
149
+ case "session":
150
+ record.session = value;
151
+ break;
152
+ case "audience":
153
+ record.audience = value;
154
+ break;
155
+ case "did":
156
+ record.did = value;
157
+ break;
158
+ case "kid":
159
+ record.kid = value;
160
+ break;
161
+ case "reqHash":
162
+ record.reqHash = value;
163
+ break;
164
+ case "resHash":
165
+ record.resHash = value;
166
+ break;
167
+ case "verified":
168
+ record.verified = value;
169
+ break;
170
+ case "scope":
171
+ record.scope = value;
172
+ break;
173
+ }
174
+ }
175
+ // Validate required fields
176
+ if (record.version &&
177
+ record.ts &&
178
+ record.session &&
179
+ record.audience &&
180
+ record.did &&
181
+ record.kid &&
182
+ record.reqHash &&
183
+ record.resHash &&
184
+ record.verified &&
185
+ record.scope !== undefined) {
186
+ return record;
187
+ }
188
+ return null;
189
+ }
190
+ catch {
191
+ return null;
192
+ }
193
+ }
194
+ /**
195
+ * Validate audit record format
196
+ */
197
+ function validateAuditRecord(record) {
198
+ return (typeof record === "object" &&
199
+ record !== null &&
200
+ record.version === "audit.v1" &&
201
+ typeof record.ts === "number" &&
202
+ typeof record.session === "string" &&
203
+ typeof record.audience === "string" &&
204
+ typeof record.did === "string" &&
205
+ typeof record.kid === "string" &&
206
+ typeof record.reqHash === "string" &&
207
+ record.reqHash.startsWith("sha256:") &&
208
+ typeof record.resHash === "string" &&
209
+ record.resHash.startsWith("sha256:") &&
210
+ (record.verified === "yes" || record.verified === "no") &&
211
+ typeof record.scope === "string");
212
+ }
@@ -0,0 +1,118 @@
1
+ /**
2
+ * XMCP-I Debug Tools - Development-only debug endpoints
3
+ *
4
+ * Provides /verify endpoint for proof inspection and debugging
5
+ * in development environments only.
6
+ */
7
+ import { AgentIdentity } from "./identity";
8
+ import { SessionContext } from "@kya-os/contracts/handshake";
9
+ import { DetachedProof, ProofMeta } from "@kya-os/contracts/proof";
10
+ import { DIDDocument, AgentDocument } from "./well-known";
11
+ /**
12
+ * Debug verification result
13
+ */
14
+ export interface DebugVerificationResult {
15
+ success: boolean;
16
+ signature: {
17
+ valid: boolean;
18
+ algorithm: string;
19
+ keyId: string;
20
+ };
21
+ proof: {
22
+ valid: boolean;
23
+ timestamp: {
24
+ valid: boolean;
25
+ skew: number;
26
+ remediation?: string;
27
+ };
28
+ hashes: {
29
+ requestValid: boolean;
30
+ responseValid: boolean;
31
+ };
32
+ };
33
+ session: {
34
+ valid: boolean;
35
+ expired: boolean;
36
+ ttl: number;
37
+ };
38
+ errors?: string[];
39
+ }
40
+ /**
41
+ * Debug page data structure
42
+ */
43
+ export interface DebugPageData {
44
+ identity: {
45
+ did: string;
46
+ keyId: string;
47
+ didDocumentUrl: string;
48
+ };
49
+ registry: {
50
+ ktaUrl: string;
51
+ mcpMirrorStatus: "pending" | "success" | "error" | "unknown";
52
+ mcpMirrorUrl?: string;
53
+ };
54
+ capabilities: {
55
+ protocol: string[];
56
+ identity: string[];
57
+ source: "well-known" | "handshake";
58
+ };
59
+ proof?: {
60
+ jws: string;
61
+ meta: ProofMeta;
62
+ canonicalHashes: {
63
+ requestHash: string;
64
+ responseHash: string;
65
+ };
66
+ };
67
+ verification?: DebugVerificationResult;
68
+ logRoot?: string;
69
+ timestamp: number;
70
+ environment: "development" | "production";
71
+ }
72
+ /**
73
+ * Debug endpoint manager
74
+ */
75
+ export declare class DebugManager {
76
+ private identity;
77
+ private environment;
78
+ private lastProof?;
79
+ private lastSession?;
80
+ private logRoot?;
81
+ constructor(identity: AgentIdentity, environment?: "development" | "production");
82
+ /**
83
+ * Update debug state with latest proof and session
84
+ */
85
+ updateDebugState(proof: DetachedProof, session: SessionContext): void;
86
+ /**
87
+ * Set log root for receipt verification
88
+ */
89
+ setLogRoot(logRoot: string): void;
90
+ /**
91
+ * Generate debug page data
92
+ */
93
+ generateDebugPageData(_didDocument?: DIDDocument, agentDocument?: AgentDocument, logRoot?: string): Promise<DebugPageData>;
94
+ /**
95
+ * Create debug endpoint handler
96
+ */
97
+ createDebugHandler(): (_request: any) => Promise<Response>;
98
+ /**
99
+ * Perform local verification of proof
100
+ */
101
+ private performLocalVerification;
102
+ /**
103
+ * Generate DID document URL
104
+ */
105
+ private generateDIDDocumentUrl;
106
+ /**
107
+ * Generate KTA URL
108
+ */
109
+ private generateKTAUrl;
110
+ /**
111
+ * Generate debug HTML page
112
+ */
113
+ private generateDebugHTML;
114
+ }
115
+ /**
116
+ * Create debug endpoint handler for development
117
+ */
118
+ export declare function createDebugEndpoint(identity: AgentIdentity, environment?: "development" | "production"): DebugManager;