@kya-os/mcp 1.2.0 → 1.3.1

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 (91) hide show
  1. package/CHANGELOG.md +114 -10
  2. package/LICENSE +1 -1
  3. package/README.md +50 -33
  4. package/dist/auth/handshake.d.ts +1 -1
  5. package/dist/auth/handshake.js +1 -1
  6. package/dist/delegation/cascading-revocation.d.ts +1 -1
  7. package/dist/delegation/cascading-revocation.js +1 -1
  8. package/dist/delegation/delegation-graph.d.ts +1 -1
  9. package/dist/delegation/delegation-graph.js +1 -1
  10. package/dist/delegation/did-web-resolver.d.ts +51 -1
  11. package/dist/delegation/did-web-resolver.d.ts.map +1 -1
  12. package/dist/delegation/did-web-resolver.js +108 -0
  13. package/dist/delegation/did-web-resolver.js.map +1 -1
  14. package/dist/delegation/outbound-headers.d.ts +14 -14
  15. package/dist/delegation/outbound-headers.d.ts.map +1 -1
  16. package/dist/delegation/outbound-headers.js +15 -15
  17. package/dist/delegation/outbound-headers.js.map +1 -1
  18. package/dist/delegation/outbound-proof.d.ts +2 -2
  19. package/dist/delegation/outbound-proof.js +2 -2
  20. package/dist/delegation/vc-issuer.d.ts +1 -1
  21. package/dist/delegation/vc-issuer.js +1 -1
  22. package/dist/delegation/vc-verifier.d.ts +2 -1
  23. package/dist/delegation/vc-verifier.d.ts.map +1 -1
  24. package/dist/delegation/vc-verifier.js +1 -1
  25. package/dist/delegation/vc-verifier.js.map +1 -1
  26. package/dist/errors.d.ts +6 -6
  27. package/dist/errors.d.ts.map +1 -1
  28. package/dist/errors.js +3 -3
  29. package/dist/errors.js.map +1 -1
  30. package/dist/index.d.ts +8 -7
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +8 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/logging/logger.d.ts +1 -1
  35. package/dist/logging/logger.js +1 -1
  36. package/dist/middleware/index.d.ts +6 -6
  37. package/dist/middleware/index.d.ts.map +1 -1
  38. package/dist/middleware/index.js +6 -6
  39. package/dist/middleware/index.js.map +1 -1
  40. package/dist/middleware/{mcpi-transport.d.ts → kya-os-transport.d.ts} +8 -8
  41. package/dist/middleware/kya-os-transport.d.ts.map +1 -0
  42. package/dist/middleware/{mcpi-transport.js → kya-os-transport.js} +9 -9
  43. package/dist/middleware/kya-os-transport.js.map +1 -0
  44. package/dist/middleware/{with-mcpi-server.d.ts → with-kya-os-server.d.ts} +24 -24
  45. package/dist/middleware/with-kya-os-server.d.ts.map +1 -0
  46. package/dist/middleware/{with-mcpi-server.js → with-kya-os-server.js} +26 -26
  47. package/dist/middleware/with-kya-os-server.js.map +1 -0
  48. package/dist/middleware/{with-mcpi.d.ts → with-kya-os.d.ts} +41 -60
  49. package/dist/middleware/with-kya-os.d.ts.map +1 -0
  50. package/dist/middleware/{with-mcpi.js → with-kya-os.js} +66 -42
  51. package/dist/middleware/with-kya-os.js.map +1 -0
  52. package/dist/proof/errors.d.ts +1 -0
  53. package/dist/proof/errors.d.ts.map +1 -1
  54. package/dist/proof/errors.js +2 -0
  55. package/dist/proof/errors.js.map +1 -1
  56. package/dist/proof/generator.d.ts +1 -1
  57. package/dist/proof/generator.js +1 -1
  58. package/dist/proof/index.d.ts +1 -1
  59. package/dist/proof/index.d.ts.map +1 -1
  60. package/dist/proof/index.js +1 -1
  61. package/dist/proof/index.js.map +1 -1
  62. package/dist/proof/verifier.d.ts +49 -1
  63. package/dist/proof/verifier.d.ts.map +1 -1
  64. package/dist/proof/verifier.js +85 -2
  65. package/dist/proof/verifier.js.map +1 -1
  66. package/dist/providers/base.d.ts +32 -3
  67. package/dist/providers/base.d.ts.map +1 -1
  68. package/dist/providers/base.js.map +1 -1
  69. package/dist/providers/node-crypto.d.ts +2 -2
  70. package/dist/providers/node-crypto.js +2 -2
  71. package/dist/session/manager.d.ts +8 -6
  72. package/dist/session/manager.d.ts.map +1 -1
  73. package/dist/session/manager.js +16 -10
  74. package/dist/session/manager.js.map +1 -1
  75. package/dist/types/protocol.d.ts +15 -3
  76. package/dist/types/protocol.d.ts.map +1 -1
  77. package/dist/types/protocol.js +7 -3
  78. package/dist/types/protocol.js.map +1 -1
  79. package/package.json +4 -4
  80. package/schemas/README.md +6 -6
  81. package/schemas/delegation-credential.json +4 -4
  82. package/schemas/detached-proof.json +1 -1
  83. package/schemas/handshake-request.json +3 -3
  84. package/schemas/handshake-response.json +2 -2
  85. package/schemas/well-known-mcpi.json +14 -7
  86. package/dist/middleware/mcpi-transport.d.ts.map +0 -1
  87. package/dist/middleware/mcpi-transport.js.map +0 -1
  88. package/dist/middleware/with-mcpi-server.d.ts.map +0 -1
  89. package/dist/middleware/with-mcpi-server.js.map +0 -1
  90. package/dist/middleware/with-mcpi.d.ts.map +0 -1
  91. package/dist/middleware/with-mcpi.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  /**
2
- * MCPITransport — Proof-injecting Transport Wrapper
2
+ * KyaOsTransport — Proof-injecting Transport Wrapper
3
3
  *
4
4
  * Wraps any MCP Transport to intercept `tools/call` responses and attach
5
- * MCP-I detached proofs. Uses only the public Transport interface — no
5
+ * KYA-OS detached proofs. Uses only the public Transport interface — no
6
6
  * private SDK internals accessed.
7
7
  *
8
8
  * The McpServer never knows this wrapper exists. It sees a normal transport.
@@ -14,18 +14,18 @@
14
14
  * 2. Outgoing responses for those ids get a proof injected into `_meta`.
15
15
  * 3. All other message types pass through unmodified.
16
16
  *
17
- * @module mcpi-transport
17
+ * @module kya-os-transport
18
18
  */
19
19
  import { logger } from "../logging/index.js";
20
20
  /**
21
- * Creates a transport wrapper that injects MCP-I proofs into `tools/call`
21
+ * Creates a transport wrapper that injects KYA-OS proofs into `tools/call`
22
22
  * responses.
23
23
  *
24
24
  * @param inner - The real transport (Stdio, HTTP, etc.)
25
- * @param mcpi - Configured MCPIMiddleware instance
25
+ * @param kyaos - Configured KyaOsMiddleware instance
26
26
  * @param exclude - Tool names to skip proof generation for
27
27
  */
28
- export function createMCPITransport(inner, mcpi, exclude = ["_mcpi", "_mcpi_handshake"]) {
28
+ export function createKyaOsTransport(inner, kyaos, exclude = ["_kyaos", "_kyaos_handshake"]) {
29
29
  // Request id → { toolName, args } for pending tool calls
30
30
  const pending = new Map();
31
31
  const wrapper = {
@@ -62,7 +62,7 @@ export function createMCPITransport(inner, mcpi, exclude = ["_mcpi", "_mcpi_hand
62
62
  const rawResult = message.result;
63
63
  if (rawResult && !rawResult.isError) {
64
64
  const handler = async () => rawResult;
65
- const addProof = mcpi.wrapWithProof(call.toolName, handler);
65
+ const addProof = kyaos.wrapWithProof(call.toolName, handler);
66
66
  const proofed = await addProof(call.args);
67
67
  if (proofed._meta !== undefined) {
68
68
  message = {
@@ -73,7 +73,7 @@ export function createMCPITransport(inner, mcpi, exclude = ["_mcpi", "_mcpi_hand
73
73
  }
74
74
  }
75
75
  catch (error) {
76
- logger.error("[mcpi-transport] Proof injection failed", {
76
+ logger.error("[kya-os-transport] Proof injection failed", {
77
77
  tool: call.toolName,
78
78
  error: error instanceof Error ? error.message : String(error),
79
79
  });
@@ -118,4 +118,4 @@ export function createMCPITransport(inner, mcpi, exclude = ["_mcpi", "_mcpi_hand
118
118
  };
119
119
  return wrapper;
120
120
  }
121
- //# sourceMappingURL=mcpi-transport.js.map
121
+ //# sourceMappingURL=kya-os-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kya-os-transport.js","sourceRoot":"","sources":["../../src/middleware/kya-os-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyB7C;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,KAAsB,EACtB,UAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAElD,yDAAyD;IACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEhD,MAAM,OAAO,GAAc;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;QAC1B,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;QAE1B,oEAAoE;QACpE,+BAA+B;QAC/B,IAAI,SAAS,CAAC,OAAoD;YAChE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;QAC5B,CAAC;QACD,IAAI,SAAS;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,OAAiC;YAC3C,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,CAAC;QACD,IAAI,OAAO;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,CAAC,OAA2C;YACrD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,CAAC;QACD,IAAI,OAAO;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QAED,qDAAqD;QACrD,wDAAwD;QACxD,KAAK,CAAC,IAAI,CAAC,OAAuB;YAChC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE5D,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAgC,CAAC;oBAC3D,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;wBACpC,MAAM,OAAO,GAAqB,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;wBACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1C,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;4BAChC,OAAO,GAAG;gCACR,GAAG,OAAO;gCACV,MAAM,EAAE,OAAO;6BAChB,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;wBACxD,IAAI,EAAE,IAAI,CAAC,QAAQ;wBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAgC,CAAC;oBAC3D,IAAI,SAAS,EAAE,CAAC;wBACd,SAAS,CAAC,KAAK,GAAG;4BAChB,UAAU,EAAE,gDAAgD;yBAC7D,CAAC;wBACF,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;IAEF,iEAAiE;IACjE,uDAAuD;IACvD,6EAA6E;IAC7E,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAC;QACtB,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,KAAK,CAAC,SAAS,GAAG,CAAC,OAAuB,EAAE,EAAE;YAC5C,IACE,OAAO,CAAC,MAAM,KAAK,YAAY;gBAC/B,OAAO,CAAC,EAAE,KAAK,SAAS,EACxB,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAEV,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,CAAC;gBAC9B,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;wBACtB,QAAQ;wBACR,IAAI,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,78 +1,78 @@
1
1
  /**
2
- * McpServer Adapter for MCP-I
2
+ * McpServer Adapter for KYA-OS
3
3
  *
4
- * Adds MCP-I identity, session management, and proof generation to a
4
+ * Adds KYA-OS identity, session management, and proof generation to a
5
5
  * standard McpServer instance with a single function call.
6
6
  *
7
7
  * Usage:
8
- * import { withMCPI } from '@kya-os/mcp/middleware';
9
- * const mcpi = await withMCPI(server, { crypto: new NodeCryptoProvider() });
8
+ * import { withKyaOs } from '@kya-os/mcp/middleware';
9
+ * const kyaos = await withKyaOs(server, { crypto: new NodeCryptoProvider() });
10
10
  * // All tools registered on `server` now get proofs automatically.
11
11
  * await server.connect(transport); // transport is transparently wrapped
12
12
  */
13
13
  import type { CryptoProvider } from "../providers/base.js";
14
- import { type MCPIIdentityConfig, type MCPIDelegationConfig, type MCPIMiddleware } from "./with-mcpi.js";
15
- import { type Transport } from "./mcpi-transport.js";
16
- export interface WithMCPIOptions {
14
+ import { type KyaOsIdentityConfig, type KyaOsDelegationConfig, type KyaOsMiddleware } from "./with-kya-os.js";
15
+ import { type Transport } from "./kya-os-transport.js";
16
+ export interface WithKyaOsOptions {
17
17
  /** Platform-specific crypto implementation (required) */
18
18
  crypto: CryptoProvider;
19
19
  /** Identity config — auto-generated if omitted */
20
- identity?: MCPIIdentityConfig;
20
+ identity?: KyaOsIdentityConfig;
21
21
  /** Session configuration */
22
22
  session?: {
23
23
  sessionTtlMinutes?: number;
24
24
  };
25
- /** Auto-create sessions for non-MCP-I clients (default: true) */
25
+ /** Auto-create sessions for non-KYA-OS clients (default: true) */
26
26
  autoSession?: boolean;
27
27
  /** Attach proofs to all tool responses (default: true) */
28
28
  proofAllTools?: boolean;
29
29
  /** Tools to skip proof generation for */
30
30
  excludeTools?: string[];
31
31
  /** Delegation verification config */
32
- delegation?: MCPIDelegationConfig;
32
+ delegation?: KyaOsDelegationConfig;
33
33
  /**
34
- * How the MCP-I protocol tool is exposed on the server.
35
- * - "tool" (default): auto-register `_mcpi`
36
- * - "none": do not register MCP-I tool (use middleware APIs for custom runtime hooks)
34
+ * How the KYA-OS protocol tool is exposed on the server.
35
+ * - "tool" (default): auto-register `_kyaos`
36
+ * - "none": do not register KYA-OS tool (use middleware APIs for custom runtime hooks)
37
37
  */
38
38
  handshakeExposure?: "tool" | "none";
39
39
  }
40
40
  /**
41
- * Generate a fresh Ed25519 identity for MCP-I.
41
+ * Generate a fresh Ed25519 identity for KYA-OS.
42
42
  *
43
43
  * @param crypto - Platform-specific crypto provider
44
44
  * @returns Identity config with DID, kid, and key material
45
45
  */
46
- export declare function generateIdentity(crypto: CryptoProvider): Promise<MCPIIdentityConfig>;
46
+ export declare function generateIdentity(crypto: CryptoProvider): Promise<KyaOsIdentityConfig>;
47
47
  /**
48
48
  * Minimal McpServer interface — avoids hard dependency on @modelcontextprotocol/sdk.
49
- * Matches the subset of McpServer's public API that withMCPI() uses.
49
+ * Matches the subset of McpServer's public API that withKyaOs() uses.
50
50
  */
51
51
  interface McpServerLike {
52
52
  connect(transport: Transport): Promise<unknown>;
53
53
  registerTool(...args: unknown[]): void;
54
54
  }
55
55
  /**
56
- * Add MCP-I to a McpServer instance.
56
+ * Add KYA-OS to a McpServer instance.
57
57
  *
58
58
  * 1. Auto-generates Ed25519 identity (or uses provided one)
59
- * 2. Registers `_mcpi` tool by default (`handshakeExposure: "tool"`)
59
+ * 2. Registers `_kyaos` tool by default (`handshakeExposure: "tool"`)
60
60
  * 3. Patches `server.connect()` to transparently wrap the transport with
61
- * MCPITransport, which injects detached proofs into all `tools/call`
61
+ * KyaOsTransport, which injects detached proofs into all `tools/call`
62
62
  * responses using only the public Transport interface.
63
63
  *
64
64
  * The user-facing API is unchanged — register tools before or after this
65
65
  * call, then connect as normal:
66
66
  *
67
67
  * ```ts
68
- * const mcpi = await withMCPI(server, { crypto: new NodeCryptoProvider() });
69
- * await server.connect(transport); // MCPITransport wraps silently
68
+ * const kyaos = await withKyaOs(server, { crypto: new NodeCryptoProvider() });
69
+ * await server.connect(transport); // KyaOsTransport wraps silently
70
70
  * ```
71
71
  *
72
72
  * @param server - McpServer instance
73
73
  * @param options - Configuration
74
- * @returns The MCPIMiddleware instance for advanced usage (wrapWithDelegation, etc.)
74
+ * @returns The KyaOsMiddleware instance for advanced usage (wrapWithDelegation, etc.)
75
75
  */
76
- export declare function withMCPI(server: McpServerLike, options: WithMCPIOptions): Promise<MCPIMiddleware>;
76
+ export declare function withKyaOs(server: McpServerLike, options: WithKyaOsOptions): Promise<KyaOsMiddleware>;
77
77
  export {};
78
- //# sourceMappingURL=with-mcpi-server.d.ts.map
78
+ //# sourceMappingURL=with-kya-os-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-kya-os-server.d.ts","sourceRoot":"","sources":["../../src/middleware/with-kya-os-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG7E,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,MAAM,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,4BAA4B;IAC5B,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qCAAqC;IACrC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAS9B;AAED;;;GAGG;AACH,UAAU,aAAa;IACrB,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,YAAY,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAuE1B"}
@@ -1,21 +1,21 @@
1
1
  /**
2
- * McpServer Adapter for MCP-I
2
+ * McpServer Adapter for KYA-OS
3
3
  *
4
- * Adds MCP-I identity, session management, and proof generation to a
4
+ * Adds KYA-OS identity, session management, and proof generation to a
5
5
  * standard McpServer instance with a single function call.
6
6
  *
7
7
  * Usage:
8
- * import { withMCPI } from '@kya-os/mcp/middleware';
9
- * const mcpi = await withMCPI(server, { crypto: new NodeCryptoProvider() });
8
+ * import { withKyaOs } from '@kya-os/mcp/middleware';
9
+ * const kyaos = await withKyaOs(server, { crypto: new NodeCryptoProvider() });
10
10
  * // All tools registered on `server` now get proofs automatically.
11
11
  * await server.connect(transport); // transport is transparently wrapped
12
12
  */
13
13
  import { generateDidKeyFromBase64, didKeyFragment } from "../utils/did-helpers.js";
14
- import { MCPI_ACTIONS, createMCPIMiddleware, } from "./with-mcpi.js";
15
- import { createMCPITransport } from "./mcpi-transport.js";
14
+ import { KYA_OS_ACTIONS, createKyaOsMiddleware, } from "./with-kya-os.js";
15
+ import { createKyaOsTransport } from "./kya-os-transport.js";
16
16
  import { z } from "zod";
17
17
  /**
18
- * Generate a fresh Ed25519 identity for MCP-I.
18
+ * Generate a fresh Ed25519 identity for KYA-OS.
19
19
  *
20
20
  * @param crypto - Platform-specific crypto provider
21
21
  * @returns Identity config with DID, kid, and key material
@@ -31,42 +31,42 @@ export async function generateIdentity(crypto) {
31
31
  };
32
32
  }
33
33
  /**
34
- * Add MCP-I to a McpServer instance.
34
+ * Add KYA-OS to a McpServer instance.
35
35
  *
36
36
  * 1. Auto-generates Ed25519 identity (or uses provided one)
37
- * 2. Registers `_mcpi` tool by default (`handshakeExposure: "tool"`)
37
+ * 2. Registers `_kyaos` tool by default (`handshakeExposure: "tool"`)
38
38
  * 3. Patches `server.connect()` to transparently wrap the transport with
39
- * MCPITransport, which injects detached proofs into all `tools/call`
39
+ * KyaOsTransport, which injects detached proofs into all `tools/call`
40
40
  * responses using only the public Transport interface.
41
41
  *
42
42
  * The user-facing API is unchanged — register tools before or after this
43
43
  * call, then connect as normal:
44
44
  *
45
45
  * ```ts
46
- * const mcpi = await withMCPI(server, { crypto: new NodeCryptoProvider() });
47
- * await server.connect(transport); // MCPITransport wraps silently
46
+ * const kyaos = await withKyaOs(server, { crypto: new NodeCryptoProvider() });
47
+ * await server.connect(transport); // KyaOsTransport wraps silently
48
48
  * ```
49
49
  *
50
50
  * @param server - McpServer instance
51
51
  * @param options - Configuration
52
- * @returns The MCPIMiddleware instance for advanced usage (wrapWithDelegation, etc.)
52
+ * @returns The KyaOsMiddleware instance for advanced usage (wrapWithDelegation, etc.)
53
53
  */
54
- export async function withMCPI(server, options) {
54
+ export async function withKyaOs(server, options) {
55
55
  const identity = options.identity ?? (await generateIdentity(options.crypto));
56
- const mcpi = createMCPIMiddleware({
56
+ const kyaos = createKyaOsMiddleware({
57
57
  identity,
58
58
  session: options.session,
59
59
  delegation: options.delegation,
60
60
  autoSession: options.autoSession ?? true,
61
61
  }, options.crypto);
62
62
  if ((options.handshakeExposure ?? "tool") === "tool") {
63
- // Register the unified _mcpi tool for protocol operations.
64
- server.registerTool("_mcpi", {
65
- description: "MCP-I protocol — identity verification, session handshake, and server metadata",
66
- annotations: { title: "MCP-I Protocol", readOnlyHint: true },
63
+ // Register the unified _kyaos tool for protocol operations.
64
+ server.registerTool("_kyaos", {
65
+ description: "KYA-OS protocol — identity verification, session handshake, and server metadata",
66
+ annotations: { title: "KYA-OS Protocol", readOnlyHint: true },
67
67
  inputSchema: {
68
68
  action: z
69
- .enum(MCPI_ACTIONS)
69
+ .enum(KYA_OS_ACTIONS)
70
70
  .describe("Protocol operation to perform"),
71
71
  nonce: z
72
72
  .string()
@@ -86,7 +86,7 @@ export async function withMCPI(server, options) {
86
86
  .describe("Client agent DID (handshake, optional)"),
87
87
  },
88
88
  }, async (args) => {
89
- const result = await mcpi.handleMCPI(args);
89
+ const result = await kyaos.handleKyaOs(args);
90
90
  return {
91
91
  ...result,
92
92
  content: result.content.map((c) => ({ ...c, type: "text" })),
@@ -96,14 +96,14 @@ export async function withMCPI(server, options) {
96
96
  // Auto-proof interception via transport wrapper (public API only).
97
97
  //
98
98
  // We patch server.connect() so that whatever transport the caller passes
99
- // is silently wrapped with MCPITransport before McpServer sees it.
99
+ // is silently wrapped with KyaOsTransport before McpServer sees it.
100
100
  // Tool registration order does not matter — proofs are injected at the
101
101
  // transport boundary, after McpServer has already dispatched the call.
102
102
  if (options.proofAllTools !== false) {
103
- const exclude = ["_mcpi", "_mcpi_handshake", ...(options.excludeTools ?? [])];
103
+ const exclude = ["_kyaos", "_kyaos_handshake", ...(options.excludeTools ?? [])];
104
104
  const originalConnect = server.connect.bind(server);
105
- server.connect = (transport) => originalConnect(createMCPITransport(transport, mcpi, exclude));
105
+ server.connect = (transport) => originalConnect(createKyaOsTransport(transport, kyaos, exclude));
106
106
  }
107
- return mcpi;
107
+ return kyaos;
108
108
  }
109
- //# sourceMappingURL=with-mcpi-server.js.map
109
+ //# sourceMappingURL=with-kya-os-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-kya-os-server.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os-server.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  /**
2
- * MCP-I Middleware — Core Implementation
2
+ * KYA-OS Middleware — Core Implementation
3
3
  *
4
4
  * Adds identity, session management, and proof generation to MCP servers.
5
5
  *
6
- * For most use cases, prefer the high-level `withMCPI()` adapter from
7
- * `./with-mcpi-server.ts` which (by default) auto-registers the handshake
6
+ * For most use cases, prefer the high-level `withKyaOs()` adapter from
7
+ * `./with-kya-os-server.ts` which (by default) auto-registers the handshake
8
8
  * tool and auto-attaches proofs to all tool responses:
9
9
  *
10
- * import { withMCPI } from '@kya-os/mcp';
11
- * await withMCPI(server, { crypto: new NodeCryptoProvider() });
10
+ * import { withKyaOs } from '@kya-os/mcp';
11
+ * await withKyaOs(server, { crypto: new NodeCryptoProvider() });
12
12
  *
13
- * `createMCPIMiddleware()` in this file is the lower-level API used
14
- * internally by `withMCPI()` and for advanced use cases like the
13
+ * `createKyaOsMiddleware()` in this file is the lower-level API used
14
+ * internally by `withKyaOs()` and for advanced use cases like the
15
15
  * low-level `Server` API or custom request handler patterns.
16
16
  */
17
17
  import { type CryptoProvider, FetchProvider } from "../providers/base.js";
@@ -19,15 +19,15 @@ import { SessionManager, type SessionConfig } from "../session/manager.js";
19
19
  import { ProofGenerator } from "../proof/generator.js";
20
20
  import { type DIDResolver, type StatusListResolver } from "../delegation/vc-verifier.js";
21
21
  import { type DelegationCredential } from "../types/protocol.js";
22
- export interface MCPIIdentityConfig {
22
+ export interface KyaOsIdentityConfig {
23
23
  did: string;
24
24
  kid: string;
25
25
  privateKey: string;
26
26
  publicKey: string;
27
27
  agentName?: string;
28
28
  }
29
- export declare const MCPI_ACTIONS: readonly ["handshake", "identity", "reputation"];
30
- export interface MCPIDelegationConfig {
29
+ export declare const KYA_OS_ACTIONS: readonly ["handshake", "identity", "reputation"];
30
+ export interface KyaOsDelegationConfig {
31
31
  /**
32
32
  * Optional custom DID resolver. If it returns null, middleware falls back to
33
33
  * built-in did:key resolution and fetch-backed did:web resolution.
@@ -57,9 +57,12 @@ export interface MCPIDelegationConfig {
57
57
  * that receives the credential will accept it.
58
58
  *
59
59
  * Recommended for production. See: Alan Karp's transitive access analysis
60
- * and MCP-I §11.6 (Confused Deputy Attacks).
60
+ * and KYA-OS §11.6 (Confused Deputy Attacks).
61
61
  *
62
- * Default is false for backward compatibility.
62
+ * Default is `true` as of KYA-OS 1.3.x. Existing integrations that
63
+ * issue re-delegations without an `audience` constraint can set this
64
+ * to `false` to preserve legacy behavior; doing so logs a one-time
65
+ * warning per process.
63
66
  */
64
67
  requireAudienceOnRedelegation?: boolean;
65
68
  /**
@@ -74,22 +77,22 @@ export interface MCPIDelegationConfig {
74
77
  */
75
78
  allowLegacyUnsafeDelegation?: boolean;
76
79
  }
77
- export interface MCPIConfig {
80
+ export interface KyaOsConfig {
78
81
  /** Agent identity (DID + key material) */
79
- identity: MCPIIdentityConfig;
82
+ identity: KyaOsIdentityConfig;
80
83
  /** Session configuration overrides */
81
84
  session?: Omit<SessionConfig, "nonceCache">;
82
85
  /** Delegation verification overrides */
83
- delegation?: MCPIDelegationConfig;
86
+ delegation?: KyaOsDelegationConfig;
84
87
  /**
85
88
  * When true, automatically creates a session on the first tool call
86
89
  * if no session exists. Useful for demos and development where
87
- * MCP clients don't support the `_mcpi` handshake flow.
88
- * In production, MCP-I-aware runtimes should execute handshake before tool calls.
90
+ * MCP clients don't support the `_kyaos` handshake flow.
91
+ * In production, KYA-OS-aware runtimes should execute handshake before tool calls.
89
92
  */
90
93
  autoSession?: boolean;
91
94
  }
92
- export interface MCPIToolDefinition {
95
+ export interface KyaOsToolDefinition {
93
96
  name: string;
94
97
  description?: string;
95
98
  inputSchema: {
@@ -99,7 +102,7 @@ export interface MCPIToolDefinition {
99
102
  [key: string]: unknown;
100
103
  };
101
104
  }
102
- export interface MCPIToolHandler<T extends Record<string, unknown> = Record<string, unknown>> {
105
+ export interface KyaOsToolHandler<T extends Record<string, unknown> = Record<string, unknown>> {
103
106
  (args: T, sessionId?: string): Promise<{
104
107
  content: Array<{
105
108
  type: string;
@@ -114,32 +117,32 @@ export interface MCPIToolHandler<T extends Record<string, unknown> = Record<stri
114
117
  * Server interface — minimal subset of @modelcontextprotocol/sdk Server.
115
118
  * This avoids a hard dependency on the SDK at the type level.
116
119
  */
117
- export interface MCPIServer {
120
+ export interface KyaOsServer {
118
121
  setRequestHandler(schema: unknown, handler: (...args: unknown[]) => unknown): void;
119
122
  }
120
- export interface MCPIMiddleware {
123
+ export interface KyaOsMiddleware {
121
124
  /** The identity config used by this middleware instance */
122
- identity: MCPIIdentityConfig;
125
+ identity: KyaOsIdentityConfig;
123
126
  /** The SessionManager instance for manual session operations */
124
127
  sessionManager: SessionManager;
125
128
  /** The ProofGenerator instance for manual proof operations */
126
129
  proofGenerator: ProofGenerator;
127
130
  /**
128
- * Unified tool definition for `_mcpi`.
131
+ * Unified tool definition for `_kyaos`.
129
132
  * Include this in your ListToolsRequest handler's tool list.
130
133
  */
131
- mcpiTool: MCPIToolDefinition;
134
+ kyaOsTool: KyaOsToolDefinition;
132
135
  /**
133
- * @deprecated Use `mcpiTool` (`_mcpi` with `action: "handshake"`).
134
- * Tool definition for `_mcpi_handshake`.
136
+ * @deprecated Use `kyaOsTool` (`_kyaos` with `action: "handshake"`).
137
+ * Tool definition for `_kyaos_handshake`.
135
138
  * Include this in your ListToolsRequest handler's tool list.
136
139
  */
137
- handshakeTool: MCPIToolDefinition;
140
+ handshakeTool: KyaOsToolDefinition;
138
141
  /**
139
- * Handle a unified `_mcpi` action. Use this in your CallToolRequest handler
140
- * when `request.params.name === '_mcpi'`.
142
+ * Handle a unified `_kyaos` action. Use this in your CallToolRequest handler
143
+ * when `request.params.name === '_kyaos'`.
141
144
  */
142
- handleMCPI(args: Record<string, unknown>): Promise<{
145
+ handleKyaOs(args: Record<string, unknown>): Promise<{
143
146
  content: Array<{
144
147
  type: string;
145
148
  text: string;
@@ -147,9 +150,9 @@ export interface MCPIMiddleware {
147
150
  isError?: boolean;
148
151
  }>;
149
152
  /**
150
- * @deprecated Use `handleMCPI` with `action: "handshake"`.
153
+ * @deprecated Use `handleKyaOs` with `action: "handshake"`.
151
154
  * Handle a handshake call. Use this in your CallToolRequest handler
152
- * when `request.params.name === '_mcpi_handshake'`.
155
+ * when `request.params.name === '_kyaos_handshake'`.
153
156
  */
154
157
  handleHandshake(args: Record<string, unknown>): Promise<{
155
158
  content: Array<{
@@ -162,41 +165,19 @@ export interface MCPIMiddleware {
162
165
  * Wrap a tool handler to automatically generate proofs.
163
166
  * Returns a new handler that appends proof metadata to the response.
164
167
  */
165
- wrapWithProof<T extends Record<string, unknown> = Record<string, unknown>>(toolName: string, handler: MCPIToolHandler<T>): MCPIToolHandler;
168
+ wrapWithProof<T extends Record<string, unknown> = Record<string, unknown>>(toolName: string, handler: KyaOsToolHandler<T>): KyaOsToolHandler;
166
169
  /**
167
170
  * Wrap a tool handler to require a valid W3C Delegation Credential.
168
171
  *
169
- * Caller must pass the VC as `_mcpi_delegation` in the tool args.
172
+ * Caller must pass the VC as `_kyaos_delegation` in the tool args.
170
173
  * - If absent: returns a `needs_authorization` response with the consentUrl.
171
174
  * - If present but invalid: returns a structured error with reason.
172
- * - If valid with correct scope: strips `_mcpi_delegation` and calls the handler.
175
+ * - If valid with correct scope: strips `_kyaos_delegation` and calls the handler.
173
176
  */
174
177
  wrapWithDelegation(toolName: string, config: {
175
178
  scopeId: string;
176
179
  consentUrl: string;
177
- }, handler: MCPIToolHandler): MCPIToolHandler;
180
+ }, handler: KyaOsToolHandler): KyaOsToolHandler;
178
181
  }
179
- /**
180
- * Create MCP-I middleware for a standard MCP SDK Server.
181
- *
182
- * For most use cases, prefer {@link withMCPI} from `./with-mcpi-server.ts`
183
- * which wraps this function and (by default) auto-registers handshake +
184
- * auto-attaches proofs.
185
- *
186
- * Use `createMCPIMiddleware` directly when:
187
- * - You use the low-level `Server` API (not `McpServer`)
188
- * - You need custom request handler patterns
189
- * - You want per-tool control over proof/delegation wrapping
190
- *
191
- * @param config - Agent identity and session configuration
192
- * @param cryptoProvider - Platform-specific crypto implementation
193
- * @returns Middleware components for session management and proof generation
194
- *
195
- * @remarks
196
- * **Single-process only**: This middleware stores session state in memory using closure
197
- * variables (`activeSessionId`, `sessionNonces`). It is NOT suitable for multi-instance
198
- * deployments behind a load balancer. For distributed deployments, implement a custom
199
- * `SessionStore` backed by Redis, DynamoDB, or similar and pass it via `config.session`.
200
- */
201
- export declare function createMCPIMiddleware(config: MCPIConfig, cryptoProvider: CryptoProvider): MCPIMiddleware;
202
- //# sourceMappingURL=with-mcpi.d.ts.map
182
+ export declare function createKyaOsMiddleware(config: KyaOsConfig, cryptoProvider: CryptoProvider): KyaOsMiddleware;
183
+ //# sourceMappingURL=with-kya-os.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-kya-os.d.ts","sourceRoot":"","sources":["../../src/middleware/with-kya-os.ts"],"names":[],"mappings":"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"}