@kya-os/contracts 1.6.19 → 1.7.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.
@@ -9,7 +9,7 @@
9
9
  * @module @kya-os/contracts/well-known
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.WellKnownResponseSchema = exports.WellKnownConfigSchema = exports.MCPIdentitySchema = exports.AgentDocumentSchema = exports.DIDDocumentSchema = exports.WellKnownPath = void 0;
12
+ exports.WellKnownResponseSchema = exports.WellKnownConfigSchema = exports.MCPClientConfigSchema = exports.MCPServerConfigSchema = exports.MCPServerCardSchema = exports.MCPIdentitySchema = exports.AgentDocumentSchema = exports.DIDDocumentSchema = exports.WellKnownPath = void 0;
13
13
  exports.isDIDDocument = isDIDDocument;
14
14
  exports.isAgentDocument = isAgentDocument;
15
15
  exports.isMCPIdentity = isMCPIdentity;
@@ -18,6 +18,12 @@ exports.validateAgentDocument = validateAgentDocument;
18
18
  exports.validateMCPIdentity = validateMCPIdentity;
19
19
  exports.isWellKnownPath = isWellKnownPath;
20
20
  exports.getWellKnownContentType = getWellKnownContentType;
21
+ exports.isMCPServerCard = isMCPServerCard;
22
+ exports.validateMCPServerCard = validateMCPServerCard;
23
+ exports.isMCPServerConfig = isMCPServerConfig;
24
+ exports.validateMCPServerConfig = validateMCPServerConfig;
25
+ exports.isMCPClientConfig = isMCPClientConfig;
26
+ exports.validateMCPClientConfig = validateMCPClientConfig;
21
27
  const zod_1 = require("zod");
22
28
  /**
23
29
  * Well-known endpoint paths
@@ -28,6 +34,12 @@ var WellKnownPath;
28
34
  WellKnownPath["AGENT_DOCUMENT"] = "/.well-known/agent.json";
29
35
  WellKnownPath["MCP_IDENTITY"] = "/.well-known/mcp-identity";
30
36
  WellKnownPath["TOOL_PROTECTIONS"] = "/.well-known/tool-protections.json";
37
+ /** SEP-1649 MCP Server Card (current usage by Cursor/Claude Desktop) */
38
+ WellKnownPath["MCP_SERVER_CONFIG"] = "/.well-known/mcp.json";
39
+ /** SEP-1649 MCP Server Card (proposed spec path) */
40
+ WellKnownPath["MCP_SERVER_CARD"] = "/.well-known/mcp/server-card.json";
41
+ /** Client configuration helper (Cursor/Claude Desktop ready-to-use config) */
42
+ WellKnownPath["MCP_CLIENT_CONFIG"] = "/.well-known/mcp-client-config.json";
31
43
  })(WellKnownPath || (exports.WellKnownPath = WellKnownPath = {}));
32
44
  /**
33
45
  * Zod Schemas for Validation
@@ -73,9 +85,128 @@ exports.MCPIdentitySchema = zod_1.z.object({
73
85
  timestamp: zod_1.z.number(),
74
86
  metadata: zod_1.z.record(zod_1.z.unknown()).optional()
75
87
  });
88
+ /** SEP-1649 MCP Server Card Schema */
89
+ exports.MCPServerCardSchema = zod_1.z.object({
90
+ $schema: zod_1.z.string().optional(),
91
+ version: zod_1.z.string(),
92
+ protocolVersion: zod_1.z.string(),
93
+ serverInfo: zod_1.z.object({
94
+ name: zod_1.z.string(),
95
+ title: zod_1.z.string().optional(),
96
+ version: zod_1.z.string()
97
+ }),
98
+ description: zod_1.z.string().optional(),
99
+ iconUrl: zod_1.z.string().optional(),
100
+ documentationUrl: zod_1.z.string().optional(),
101
+ transport: zod_1.z.object({
102
+ type: zod_1.z.enum(['streamable-http', 'sse', 'stdio']),
103
+ endpoint: zod_1.z.string()
104
+ }),
105
+ capabilities: zod_1.z.object({
106
+ tools: zod_1.z.object({ listChanged: zod_1.z.boolean().optional() }).optional(),
107
+ prompts: zod_1.z.object({ listChanged: zod_1.z.boolean().optional() }).optional(),
108
+ resources: zod_1.z.object({
109
+ subscribe: zod_1.z.boolean().optional(),
110
+ listChanged: zod_1.z.boolean().optional()
111
+ }).optional(),
112
+ logging: zod_1.z.record(zod_1.z.unknown()).optional(),
113
+ completions: zod_1.z.record(zod_1.z.unknown()).optional(),
114
+ experimental: zod_1.z.record(zod_1.z.unknown()).optional()
115
+ }).optional(),
116
+ requires: zod_1.z.object({
117
+ sampling: zod_1.z.record(zod_1.z.unknown()).optional(),
118
+ roots: zod_1.z.record(zod_1.z.unknown()).optional(),
119
+ elicitation: zod_1.z.record(zod_1.z.unknown()).optional(),
120
+ experimental: zod_1.z.record(zod_1.z.unknown()).optional()
121
+ }).optional(),
122
+ authentication: zod_1.z.object({
123
+ required: zod_1.z.boolean(),
124
+ schemes: zod_1.z.array(zod_1.z.string())
125
+ }).optional(),
126
+ instructions: zod_1.z.string().optional(),
127
+ resources: zod_1.z.union([
128
+ zod_1.z.literal('dynamic'),
129
+ zod_1.z.array(zod_1.z.object({
130
+ name: zod_1.z.string(),
131
+ title: zod_1.z.string().optional(),
132
+ uri: zod_1.z.string(),
133
+ description: zod_1.z.string().optional(),
134
+ mimeType: zod_1.z.string().optional()
135
+ }))
136
+ ]).optional(),
137
+ tools: zod_1.z.union([
138
+ zod_1.z.literal('dynamic'),
139
+ zod_1.z.array(zod_1.z.object({
140
+ name: zod_1.z.string(),
141
+ title: zod_1.z.string().optional(),
142
+ description: zod_1.z.string().optional(),
143
+ inputSchema: zod_1.z.record(zod_1.z.unknown()).optional()
144
+ }))
145
+ ]).optional(),
146
+ prompts: zod_1.z.union([
147
+ zod_1.z.literal('dynamic'),
148
+ zod_1.z.array(zod_1.z.object({
149
+ name: zod_1.z.string(),
150
+ title: zod_1.z.string().optional(),
151
+ description: zod_1.z.string().optional(),
152
+ arguments: zod_1.z.array(zod_1.z.object({
153
+ name: zod_1.z.string(),
154
+ description: zod_1.z.string().optional(),
155
+ required: zod_1.z.boolean().optional()
156
+ })).optional()
157
+ }))
158
+ ]).optional(),
159
+ _meta: zod_1.z.record(zod_1.z.unknown()).optional()
160
+ });
161
+ /** Legacy MCP Server Config Schema */
162
+ exports.MCPServerConfigSchema = zod_1.z.object({
163
+ name: zod_1.z.string(),
164
+ description: zod_1.z.string().optional(),
165
+ url: zod_1.z.string(),
166
+ transport: zod_1.z.enum(['sse', 'stdio', 'http']),
167
+ version: zod_1.z.string().optional(),
168
+ agentDid: zod_1.z.string().optional(),
169
+ capabilities: zod_1.z.array(zod_1.z.string()).optional(),
170
+ requiresAuth: zod_1.z.boolean().optional(),
171
+ authProvider: zod_1.z.string().optional(),
172
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional()
173
+ });
174
+ /** MCP Client Config Schema */
175
+ exports.MCPClientConfigSchema = zod_1.z.object({
176
+ claudeDesktop: zod_1.z.object({
177
+ mcpServers: zod_1.z.record(zod_1.z.object({
178
+ url: zod_1.z.string(),
179
+ transport: zod_1.z.literal('sse').optional()
180
+ }))
181
+ }),
182
+ cursor: zod_1.z.object({
183
+ mcpServers: zod_1.z.record(zod_1.z.object({
184
+ url: zod_1.z.string(),
185
+ transport: zod_1.z.literal('sse').optional()
186
+ }))
187
+ }),
188
+ cursorDeepLink: zod_1.z.string().optional(),
189
+ _meta: zod_1.z.object({
190
+ serverName: zod_1.z.string().optional(),
191
+ serverUrl: zod_1.z.string().optional(),
192
+ mcpEndpoint: zod_1.z.string().optional(),
193
+ agentDid: zod_1.z.string().optional(),
194
+ generatedAt: zod_1.z.number().optional(),
195
+ instructions: zod_1.z.string().optional()
196
+ }).catchall(zod_1.z.unknown()).optional()
197
+ });
76
198
  exports.WellKnownConfigSchema = zod_1.z.object({
77
199
  serviceName: zod_1.z.string().optional(),
200
+ serviceTitle: zod_1.z.string().optional(),
78
201
  serviceEndpoint: zod_1.z.string().optional(),
202
+ description: zod_1.z.string().optional(),
203
+ serverVersion: zod_1.z.string().optional(),
204
+ protocolVersion: zod_1.z.string().optional(),
205
+ iconUrl: zod_1.z.string().optional(),
206
+ documentationUrl: zod_1.z.string().optional(),
207
+ requiresAuth: zod_1.z.boolean().optional(),
208
+ authSchemes: zod_1.z.array(zod_1.z.string()).optional(),
209
+ instructions: zod_1.z.string().optional(),
79
210
  metadata: zod_1.z.record(zod_1.z.unknown()).optional()
80
211
  });
81
212
  exports.WellKnownResponseSchema = zod_1.z.object({
@@ -125,6 +256,7 @@ function getWellKnownContentType(path) {
125
256
  return 'application/did+json';
126
257
  case WellKnownPath.AGENT_DOCUMENT:
127
258
  case WellKnownPath.TOOL_PROTECTIONS:
259
+ case WellKnownPath.MCP_SERVER_CONFIG:
128
260
  return 'application/json';
129
261
  case WellKnownPath.MCP_IDENTITY:
130
262
  return 'application/json';
@@ -132,3 +264,39 @@ function getWellKnownContentType(path) {
132
264
  return 'application/json';
133
265
  }
134
266
  }
267
+ /**
268
+ * Type guard for MCPServerCard (SEP-1649)
269
+ */
270
+ function isMCPServerCard(obj) {
271
+ return exports.MCPServerCardSchema.safeParse(obj).success;
272
+ }
273
+ /**
274
+ * Validation function for MCPServerCard (SEP-1649)
275
+ */
276
+ function validateMCPServerCard(obj) {
277
+ return exports.MCPServerCardSchema.parse(obj);
278
+ }
279
+ /**
280
+ * Type guard for MCPServerConfig (legacy)
281
+ */
282
+ function isMCPServerConfig(obj) {
283
+ return exports.MCPServerConfigSchema.safeParse(obj).success;
284
+ }
285
+ /**
286
+ * Validation function for MCPServerConfig (legacy)
287
+ */
288
+ function validateMCPServerConfig(obj) {
289
+ return exports.MCPServerConfigSchema.parse(obj);
290
+ }
291
+ /**
292
+ * Type guard for MCPClientConfig
293
+ */
294
+ function isMCPClientConfig(obj) {
295
+ return exports.MCPClientConfigSchema.safeParse(obj).success;
296
+ }
297
+ /**
298
+ * Validation function for MCPClientConfig
299
+ */
300
+ function validateMCPClientConfig(obj) {
301
+ return exports.MCPClientConfigSchema.parse(obj);
302
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kya-os/contracts",
3
- "version": "1.6.19",
3
+ "version": "1.7.1",
4
4
  "description": "Shared contracts, types, and schemas for MCP-I framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -95,6 +95,7 @@
95
95
  },
96
96
  "sideEffects": false,
97
97
  "dependencies": {
98
+ "@kya-os/consent": "^0.1.2",
98
99
  "zod": "^3.25.76"
99
100
  },
100
101
  "devDependencies": {