@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
@@ -1,220 +0,0 @@
1
- /**
2
- * KnowThat.ai Registry Adapter
3
- * Primary registry that can host DIDs
4
- */
5
- import { TransportFactory } from '../transport.js';
6
- import { pollRegistrationStatus, isAsyncRegistrationResponse } from '../polling.js';
7
- import { getLogger } from '../logger.js';
8
- import { generateClientInfo } from '../platform-info.js';
9
- export class KnowThatRegistry {
10
- name = 'knowthat';
11
- type = 'primary';
12
- endpoint;
13
- transport;
14
- options;
15
- constructor(endpoint = 'https://knowthat.ai', transport, options) {
16
- this.endpoint = endpoint;
17
- this.transport = transport || TransportFactory.create();
18
- this.options = options;
19
- }
20
- /**
21
- * Use the fast CLI registration endpoint
22
- */
23
- async publishViaCLI(data) {
24
- const logger = getLogger();
25
- try {
26
- logger.debug('Using fast CLI registration endpoint');
27
- // Submit registration request with flat structure
28
- const response = await this.transport.post(`${this.endpoint}/api/agents/cli-register`, {
29
- name: data.name,
30
- description: data.description,
31
- repository: data.repository,
32
- publicKey: data.publicKey
33
- }, {
34
- timeout: 5000, // 5 second timeout for CLI endpoint
35
- headers: {
36
- 'Content-Type': 'application/json',
37
- 'User-Agent': `@kya-os/mcp-i/${generateClientInfo().sdkVersion}`
38
- }
39
- });
40
- logger.debug(`CLI registration completed in ${response.data.responseTime}ms`);
41
- // Handle key generation if the server generated keys
42
- if (response.data.keys && !data.publicKey) {
43
- logger.warn(response.data.keys.warning || 'Server generated keys - store them securely!');
44
- }
45
- return {
46
- success: true,
47
- registryAgentId: response.data.agent.id,
48
- profileUrl: response.data.agent.url,
49
- claimUrl: response.data.claimUrl,
50
- claimToken: response.data.claimToken,
51
- generatedKeys: response.data.keys
52
- };
53
- }
54
- catch (error) {
55
- logger.debug(`CLI registration failed: ${error.message}`);
56
- throw error; // Re-throw for fallback handling
57
- }
58
- }
59
- /**
60
- * Determine which endpoint to use based on configuration and context
61
- */
62
- shouldUseCLIEndpoint() {
63
- // Explicit configuration takes precedence
64
- if (this.options?.registryEndpoint === 'cli')
65
- return true;
66
- if (this.options?.registryEndpoint === 'auto-register')
67
- return false;
68
- // Auto mode: use CLI endpoint if we're in a context that suggests CLI usage
69
- if (this.options?.registryEndpoint === 'auto' || !this.options?.registryEndpoint) {
70
- // Check if we have a progress callback (indicates CLI usage)
71
- if (this.options?.onProgress)
72
- return true;
73
- // Check if processingMode is explicitly set to sync (CLI preference)
74
- if (this.options?.processingMode === 'sync')
75
- return true;
76
- // Check if we're in a TTY environment (interactive terminal)
77
- if (process.stdout?.isTTY)
78
- return true;
79
- }
80
- return false;
81
- }
82
- /**
83
- * Primary registration - creates DID and hosts DID document
84
- * Now supports both CLI (fast) and auto-register (async) endpoints
85
- */
86
- async publish(data) {
87
- const logger = getLogger();
88
- // Determine which endpoint to use
89
- const useCLI = this.shouldUseCLIEndpoint();
90
- if (useCLI) {
91
- try {
92
- return await this.publishViaCLI(data);
93
- }
94
- catch (error) {
95
- logger.debug('CLI endpoint failed, falling back to auto-register');
96
- // Fall through to auto-register
97
- }
98
- }
99
- // Use auto-register endpoint (existing implementation)
100
- return await this.publishViaAutoRegister(data);
101
- }
102
- /**
103
- * Original auto-register implementation
104
- */
105
- async publishViaAutoRegister(data) {
106
- const logger = getLogger();
107
- try {
108
- // Generate dynamic client info based on runtime environment
109
- const clientInfo = generateClientInfo({
110
- // Convert 'auto' to undefined to let platform detection decide
111
- processingMode: this.options?.processingMode === 'auto'
112
- ? undefined
113
- : this.options?.processingMode || 'sync',
114
- customMetadata: {
115
- source: 'mcp-i-sdk'
116
- }
117
- });
118
- logger.debug(`Generated client info: ${JSON.stringify(clientInfo)}`);
119
- // Submit registration request
120
- const response = await this.transport.post(`${this.endpoint}/api/agents/auto-register`, {
121
- metadata: {
122
- name: data.name,
123
- description: data.description,
124
- repository: data.repository,
125
- version: '1.0.0'
126
- },
127
- clientInfo,
128
- // If we already have a public key, send it
129
- publicKey: data.publicKey || undefined
130
- }, {
131
- timeout: 30000,
132
- headers: {
133
- 'Content-Type': 'application/json',
134
- 'User-Agent': `@kya-os/mcp-i/${clientInfo.sdkVersion}`
135
- }
136
- });
137
- logger.debug(`Registration response status: ${response.status}`);
138
- logger.debug(`Registration response data: ${JSON.stringify(response.data, null, 2)}`);
139
- // Check if we got an async response (v2.0 API)
140
- if (response.status === 202 && isAsyncRegistrationResponse(response.data)) {
141
- logger.debug('Got async registration response, polling for completion...');
142
- // Poll for completion using simple 2-second intervals
143
- const result = await pollRegistrationStatus(response.data.status, // Status URL
144
- this.transport, {
145
- pollInterval: 2000, // Fixed 2-second intervals
146
- maxPollingTime: 60000, // 60 seconds max
147
- logger,
148
- onProgress: (message) => {
149
- logger.debug(message);
150
- }
151
- });
152
- // Return the same structure as sync response
153
- return {
154
- success: true,
155
- registryAgentId: result.agent.id,
156
- profileUrl: result.agent.url
157
- };
158
- }
159
- // Handle sync response (backward compatibility)
160
- const syncResponse = response.data;
161
- return {
162
- success: true,
163
- registryAgentId: syncResponse.agent.id,
164
- profileUrl: syncResponse.agent.url
165
- };
166
- }
167
- catch (error) {
168
- // The transport layer now provides clearer error messages
169
- return {
170
- success: false,
171
- error: error.message || 'Failed to register with KnowThat.ai'
172
- };
173
- }
174
- }
175
- /**
176
- * Verify agent exists and is valid
177
- */
178
- async verify(did) {
179
- try {
180
- const agentSlug = this.extractAgentSlug(did);
181
- const response = await this.transport.get(`${this.endpoint}/api/agents/${agentSlug}/verify`, { timeout: 5000 });
182
- return response.data.valid === true;
183
- }
184
- catch {
185
- return false;
186
- }
187
- }
188
- /**
189
- * Get agent status in KnowThat registry
190
- */
191
- async getStatus(did) {
192
- try {
193
- const agentSlug = this.extractAgentSlug(did);
194
- const response = await this.transport.get(`${this.endpoint}/api/agents/${agentSlug}/status`, { timeout: 5000 });
195
- return {
196
- name: this.name,
197
- status: response.data.verified ? 'active' : 'pending',
198
- registeredAt: response.data.registeredAt,
199
- type: 'primary'
200
- };
201
- }
202
- catch (error) {
203
- return {
204
- name: this.name,
205
- status: 'failed',
206
- type: 'primary',
207
- error: 'Failed to get status'
208
- };
209
- }
210
- }
211
- /**
212
- * Extract agent slug from DID
213
- */
214
- extractAgentSlug(did) {
215
- // did:web:knowthat.ai:agents:my-agent -> my-agent
216
- const parts = did.split(':');
217
- return parts[parts.length - 1];
218
- }
219
- }
220
- //# sourceMappingURL=knowthat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowthat.js","sourceRoot":"","sources":["../../../src/registry/knowthat.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Key rotation support for MCP-I
3
- */
4
- import { PersistedIdentity } from './types';
5
- import { Transport } from './transport';
6
- export interface KeyRotationPolicy {
7
- maxAge?: number;
8
- maxSignatures?: number;
9
- algorithm?: string;
10
- }
11
- export interface KeyRotationResult {
12
- success: boolean;
13
- newKeyId?: string;
14
- oldKeyId?: string;
15
- gracePeriodEnd?: Date;
16
- error?: string;
17
- }
18
- export interface KeyHealth {
19
- age: number;
20
- signatureCount: number;
21
- shouldRotate: boolean;
22
- lastRotated?: Date;
23
- }
24
- export declare class KeyRotationManager {
25
- private identity;
26
- private transport;
27
- private policy;
28
- private signatureCount;
29
- private keyCreatedAt;
30
- private lastRotatedAt?;
31
- constructor(identity: PersistedIdentity, transport: Transport, policy?: KeyRotationPolicy);
32
- /**
33
- * Check key health and rotation needs
34
- */
35
- checkKeyHealth(): KeyHealth;
36
- /**
37
- * Increment signature count
38
- */
39
- incrementSignatureCount(): void;
40
- /**
41
- * Rotate keys with the registry
42
- */
43
- rotateKeys(reason?: string): Promise<KeyRotationResult>;
44
- /**
45
- * Setup automatic rotation based on policy
46
- */
47
- setupAutoRotation(callback?: (result: KeyRotationResult) => void): NodeJS.Timer;
48
- /**
49
- * Get registry URL based on DID host
50
- */
51
- private getRegistryUrl;
52
- /**
53
- * Extract agent ID from DID or identity
54
- */
55
- private extractAgentId;
56
- }
57
- //# sourceMappingURL=rotation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../src/rotation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAO;gBAGnB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,iBAAsB;IAKxC;;OAEG;IACH,cAAc,IAAI,SAAS;IAgB3B;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAI/B;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,MAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiE1E;;OAEG;IACH,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK;IAe/E;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
@@ -1,133 +0,0 @@
1
- /**
2
- * Key rotation support for MCP-I
3
- */
4
- import { generateKeyPair, sign } from './crypto.js';
5
- export class KeyRotationManager {
6
- identity;
7
- transport;
8
- policy;
9
- signatureCount = 0;
10
- keyCreatedAt;
11
- lastRotatedAt;
12
- constructor(identity, transport, policy = {}) {
13
- this.identity = identity;
14
- this.transport = transport;
15
- this.policy = policy;
16
- this.keyCreatedAt = new Date(identity.registeredAt);
17
- }
18
- /**
19
- * Check key health and rotation needs
20
- */
21
- checkKeyHealth() {
22
- const now = new Date();
23
- const age = now.getTime() - this.keyCreatedAt.getTime();
24
- const maxAge = this.policy.maxAge || 90 * 24 * 60 * 60 * 1000; // 90 days default
25
- const maxSignatures = this.policy.maxSignatures || 1000000; // 1M default
26
- const shouldRotate = age > maxAge || this.signatureCount > maxSignatures;
27
- return {
28
- age,
29
- signatureCount: this.signatureCount,
30
- shouldRotate,
31
- lastRotated: this.lastRotatedAt
32
- };
33
- }
34
- /**
35
- * Increment signature count
36
- */
37
- incrementSignatureCount() {
38
- this.signatureCount++;
39
- }
40
- /**
41
- * Rotate keys with the registry
42
- */
43
- async rotateKeys(reason = 'scheduled') {
44
- try {
45
- // Generate new key pair
46
- const newKeyPair = await generateKeyPair();
47
- // Create rotation request
48
- const timestamp = Date.now();
49
- const message = `rotate-keys:${this.identity.did}:${timestamp}:${reason}`;
50
- const signature = await sign(message, this.identity.privateKey);
51
- // Prepare rotation payload
52
- const rotationRequest = {
53
- newPublicKey: {
54
- type: 'Ed25519VerificationKey2020',
55
- publicKeyBase64: newKeyPair.publicKey
56
- },
57
- rotationReason: reason,
58
- signedStatement: signature,
59
- timestamp
60
- };
61
- // Get the correct registry URL
62
- const registryUrl = this.getRegistryUrl();
63
- const agentId = this.extractAgentId();
64
- // Submit rotation request
65
- const response = await this.transport.post(`${registryUrl}/api/agents/${agentId}/rotate-key`, rotationRequest, {
66
- headers: {
67
- 'Authorization': `DID-Auth ${signature}`,
68
- 'Content-Type': 'application/json'
69
- }
70
- });
71
- if (response.data.success) {
72
- // Update local identity with new keys
73
- this.identity.publicKey = newKeyPair.publicKey;
74
- this.identity.privateKey = newKeyPair.privateKey;
75
- this.lastRotatedAt = new Date();
76
- this.keyCreatedAt = new Date();
77
- this.signatureCount = 0;
78
- return {
79
- success: true,
80
- newKeyId: response.data.newKeyId,
81
- oldKeyId: response.data.oldKeyId,
82
- gracePeriodEnd: new Date(response.data.gracePeriodEnd)
83
- };
84
- }
85
- else {
86
- return {
87
- success: false,
88
- error: response.data.error || 'Key rotation failed'
89
- };
90
- }
91
- }
92
- catch (error) {
93
- return {
94
- success: false,
95
- error: error.message || 'Key rotation error'
96
- };
97
- }
98
- }
99
- /**
100
- * Setup automatic rotation based on policy
101
- */
102
- setupAutoRotation(callback) {
103
- const checkInterval = 24 * 60 * 60 * 1000; // Check daily
104
- return setInterval(async () => {
105
- const health = this.checkKeyHealth();
106
- if (health.shouldRotate) {
107
- const result = await this.rotateKeys('auto-rotation');
108
- if (callback) {
109
- callback(result);
110
- }
111
- }
112
- }, checkInterval);
113
- }
114
- /**
115
- * Get registry URL based on DID host
116
- */
117
- getRegistryUrl() {
118
- // Always use knowthat.ai as the registry
119
- return 'https://knowthat.ai';
120
- }
121
- /**
122
- * Extract agent ID from DID or identity
123
- */
124
- extractAgentId() {
125
- if (this.identity.agentId) {
126
- return this.identity.agentId;
127
- }
128
- // Extract from DID (e.g., did:web:knowthat.ai:agents:my-agent -> my-agent)
129
- const parts = this.identity.did.split(':');
130
- return parts[parts.length - 1];
131
- }
132
- }
133
- //# sourceMappingURL=rotation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../src/rotation.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Storage abstraction for MCP-I identity
3
- * Supports both file-based and in-memory storage for different runtime environments
4
- */
5
- import { PersistedIdentity } from './types';
6
- export interface StorageProvider {
7
- load(): Promise<PersistedIdentity | null>;
8
- save(identity: PersistedIdentity): Promise<void>;
9
- exists(): Promise<boolean>;
10
- }
11
- /**
12
- * File-based storage for traditional Node.js environments
13
- */
14
- export declare class FileStorage implements StorageProvider {
15
- private filePath;
16
- constructor(customPath?: string);
17
- load(): Promise<PersistedIdentity | null>;
18
- save(identity: PersistedIdentity): Promise<void>;
19
- exists(): Promise<boolean>;
20
- }
21
- /**
22
- * In-memory storage for Lambda/Edge runtime environments
23
- */
24
- export declare class MemoryStorage implements StorageProvider {
25
- private static instances;
26
- private key;
27
- constructor(key?: string);
28
- load(): Promise<PersistedIdentity | null>;
29
- save(identity: PersistedIdentity): Promise<void>;
30
- exists(): Promise<boolean>;
31
- /**
32
- * Clear all stored identities (useful for testing)
33
- */
34
- static clear(): void;
35
- }
36
- /**
37
- * Environment variable storage loader
38
- * This works with both file and memory storage as a fallback
39
- */
40
- export declare class EnvironmentStorage {
41
- static load(): PersistedIdentity | null;
42
- }
43
- /**
44
- * Combined storage that tries multiple providers in order
45
- */
46
- export declare class CombinedStorage implements StorageProvider {
47
- private providers;
48
- private primaryProvider;
49
- constructor(providers: StorageProvider[]);
50
- load(): Promise<PersistedIdentity | null>;
51
- save(identity: PersistedIdentity): Promise<void>;
52
- exists(): Promise<boolean>;
53
- }
54
- /**
55
- * Storage factory based on runtime detection
56
- */
57
- export declare class StorageFactory {
58
- static create(options?: {
59
- storage?: 'file' | 'memory' | 'auto';
60
- customPath?: string;
61
- memoryKey?: string;
62
- encryptionPassword?: string;
63
- }): StorageProvider;
64
- }
65
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEb,UAAU,CAAC,EAAE,MAAM;IAIzB,IAAI,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAYzC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAwC;IAChE,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,CAAC,EAAE,MAAM;IAKlB,IAAI,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAIzC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAGrB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,IAAI,IAAI,iBAAiB,GAAG,IAAI;CAaxC;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,SAAS,EAAE,eAAe,EAAE;IAQlC,IAAI,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiBzC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CASjC;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACtB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;QACrC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,eAAe;CAiCpB"}
@@ -1,160 +0,0 @@
1
- /**
2
- * Storage abstraction for MCP-I identity
3
- * Supports both file-based and in-memory storage for different runtime environments
4
- */
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- /**
8
- * File-based storage for traditional Node.js environments
9
- */
10
- export class FileStorage {
11
- filePath;
12
- constructor(customPath) {
13
- this.filePath = customPath || path.join(process.cwd(), '.mcp-identity.json');
14
- }
15
- async load() {
16
- try {
17
- if (fs.existsSync(this.filePath)) {
18
- const content = fs.readFileSync(this.filePath, 'utf-8');
19
- return JSON.parse(content);
20
- }
21
- }
22
- catch {
23
- // Ignore errors
24
- }
25
- return null;
26
- }
27
- async save(identity) {
28
- fs.writeFileSync(this.filePath, JSON.stringify(identity, null, 2));
29
- }
30
- async exists() {
31
- return fs.existsSync(this.filePath);
32
- }
33
- }
34
- /**
35
- * In-memory storage for Lambda/Edge runtime environments
36
- */
37
- export class MemoryStorage {
38
- static instances = new Map();
39
- key;
40
- constructor(key) {
41
- // Use a unique key for this instance (e.g., based on agent name)
42
- this.key = key || 'default';
43
- }
44
- async load() {
45
- return MemoryStorage.instances.get(this.key) || null;
46
- }
47
- async save(identity) {
48
- MemoryStorage.instances.set(this.key, identity);
49
- }
50
- async exists() {
51
- return MemoryStorage.instances.has(this.key);
52
- }
53
- /**
54
- * Clear all stored identities (useful for testing)
55
- */
56
- static clear() {
57
- MemoryStorage.instances.clear();
58
- }
59
- }
60
- /**
61
- * Environment variable storage loader
62
- * This works with both file and memory storage as a fallback
63
- */
64
- export class EnvironmentStorage {
65
- static load() {
66
- if (process.env.AGENT_DID && process.env.AGENT_PUBLIC_KEY && process.env.AGENT_PRIVATE_KEY) {
67
- return {
68
- did: process.env.AGENT_DID,
69
- publicKey: process.env.AGENT_PUBLIC_KEY,
70
- privateKey: process.env.AGENT_PRIVATE_KEY,
71
- agentId: process.env.AGENT_ID || '',
72
- agentSlug: process.env.AGENT_SLUG || '',
73
- registeredAt: process.env.AGENT_REGISTERED_AT || new Date().toISOString()
74
- };
75
- }
76
- return null;
77
- }
78
- }
79
- /**
80
- * Combined storage that tries multiple providers in order
81
- */
82
- export class CombinedStorage {
83
- providers;
84
- primaryProvider;
85
- constructor(providers) {
86
- if (providers.length === 0) {
87
- throw new Error('At least one storage provider is required');
88
- }
89
- this.providers = providers;
90
- this.primaryProvider = providers[0];
91
- }
92
- async load() {
93
- // Try environment variables first
94
- const envIdentity = EnvironmentStorage.load();
95
- if (envIdentity) {
96
- return envIdentity;
97
- }
98
- // Try each provider in order
99
- for (const provider of this.providers) {
100
- const identity = await provider.load();
101
- if (identity) {
102
- return identity;
103
- }
104
- }
105
- return null;
106
- }
107
- async save(identity) {
108
- // Save to primary provider only
109
- await this.primaryProvider.save(identity);
110
- }
111
- async exists() {
112
- // Check if identity exists in any provider
113
- for (const provider of this.providers) {
114
- if (await provider.exists()) {
115
- return true;
116
- }
117
- }
118
- return false;
119
- }
120
- }
121
- /**
122
- * Storage factory based on runtime detection
123
- */
124
- export class StorageFactory {
125
- static create(options) {
126
- const storageType = options?.storage || 'auto';
127
- let baseStorage;
128
- if (storageType === 'memory') {
129
- baseStorage = new MemoryStorage(options?.memoryKey);
130
- }
131
- else if (storageType === 'file') {
132
- baseStorage = new FileStorage(options?.customPath);
133
- }
134
- else if (storageType === 'auto') {
135
- // Auto-detect based on runtime
136
- // Check if we're in a Lambda/Edge environment
137
- if (process.env.AWS_LAMBDA_FUNCTION_NAME ||
138
- process.env.VERCEL ||
139
- process.env.NETLIFY ||
140
- !fs.existsSync ||
141
- typeof fs.writeFileSync !== 'function') {
142
- baseStorage = new MemoryStorage(options?.memoryKey);
143
- }
144
- else {
145
- // Default to file storage for Node.js
146
- baseStorage = new FileStorage(options?.customPath);
147
- }
148
- }
149
- else {
150
- throw new Error(`Unknown storage type: ${storageType}`);
151
- }
152
- // Wrap with encryption if password provided
153
- if (options?.encryptionPassword) {
154
- const { createEncryptedStorage } = require('./encrypted-storage');
155
- return createEncryptedStorage(baseStorage, options.encryptionPassword);
156
- }
157
- return baseStorage;
158
- }
159
- }
160
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}