@slashfi/agents-sdk 0.26.2 → 0.27.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 (50) hide show
  1. package/dist/agent-definitions/config.d.ts +44 -0
  2. package/dist/agent-definitions/config.d.ts.map +1 -0
  3. package/dist/agent-definitions/config.js +234 -0
  4. package/dist/agent-definitions/config.js.map +1 -0
  5. package/dist/cjs/agent-definitions/config.js +237 -0
  6. package/dist/cjs/agent-definitions/config.js.map +1 -0
  7. package/dist/cjs/codegen.js +46 -2
  8. package/dist/cjs/codegen.js.map +1 -1
  9. package/dist/cjs/index.js +21 -3
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/mcp-client.js +159 -0
  12. package/dist/cjs/mcp-client.js.map +1 -0
  13. package/dist/cjs/pkce.js +49 -0
  14. package/dist/cjs/pkce.js.map +1 -0
  15. package/dist/cjs/registry-consumer.js +217 -2
  16. package/dist/cjs/registry-consumer.js.map +1 -1
  17. package/dist/cjs/server.js +33 -2
  18. package/dist/cjs/server.js.map +1 -1
  19. package/dist/codegen.d.ts +25 -0
  20. package/dist/codegen.d.ts.map +1 -1
  21. package/dist/codegen.js +46 -2
  22. package/dist/codegen.js.map +1 -1
  23. package/dist/index.d.ts +8 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/mcp-client.d.ts +87 -0
  28. package/dist/mcp-client.d.ts.map +1 -0
  29. package/dist/mcp-client.js +152 -0
  30. package/dist/mcp-client.js.map +1 -0
  31. package/dist/pkce.d.ts +29 -0
  32. package/dist/pkce.d.ts.map +1 -0
  33. package/dist/pkce.js +44 -0
  34. package/dist/pkce.js.map +1 -0
  35. package/dist/registry-consumer.d.ts +4 -0
  36. package/dist/registry-consumer.d.ts.map +1 -1
  37. package/dist/registry-consumer.js +216 -2
  38. package/dist/registry-consumer.js.map +1 -1
  39. package/dist/server.d.ts +13 -0
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +33 -2
  42. package/dist/server.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/agent-definitions/config.ts +318 -0
  45. package/src/codegen.ts +76 -1
  46. package/src/index.ts +35 -2
  47. package/src/mcp-client.ts +230 -0
  48. package/src/pkce.ts +54 -0
  49. package/src/registry-consumer.ts +257 -2
  50. package/src/server.ts +49 -2
package/src/server.ts CHANGED
@@ -120,6 +120,19 @@ export interface AgentServerOptions {
120
120
  keyStore?: import("./key-manager.js").KeyStore;
121
121
  /** OIDC provider for user sign-in (authorization code flow) */
122
122
  oidcProvider?: OIDCProviderConfig;
123
+ /**
124
+ * Registry capabilities — advertised in MCP initialize response.
125
+ * When set, this server identifies as an agent registry (superset of MCP).
126
+ * Consumers use this to differentiate `registry` type from plain `mcp`.
127
+ */
128
+ registry?: {
129
+ /** Registry protocol version */
130
+ version?: string;
131
+ /** Feature flags (e.g., 'shared-oauth', 'agent-listing') */
132
+ features?: string[];
133
+ /** OAuth callback URL for shared OAuth flows */
134
+ oauthCallbackUrl?: string;
135
+ };
123
136
  }
124
137
 
125
138
  export interface AgentServer {
@@ -518,7 +531,16 @@ export function createAgentServer(
518
531
  case "initialize":
519
532
  return jsonRpcSuccess(request.id, {
520
533
  protocolVersion: "2024-11-05",
521
- capabilities: { tools: { listChanged: false } },
534
+ capabilities: {
535
+ tools: { listChanged: false },
536
+ ...(options.registry && {
537
+ registry: {
538
+ version: options.registry.version ?? "1.0",
539
+ ...(options.registry.features && { features: options.registry.features }),
540
+ ...(options.registry.oauthCallbackUrl && { oauthCallbackUrl: options.registry.oauthCallbackUrl }),
541
+ },
542
+ }),
543
+ },
522
544
  serverInfo: { name: serverName, version: serverVersion },
523
545
  });
524
546
 
@@ -1178,7 +1200,7 @@ export function createAgentServer(
1178
1200
  return cors ? addCors(res) : res;
1179
1201
  }
1180
1202
 
1181
- // ── GET /.well-known/configuration → Server discovery ──
1203
+ // ── GET /.well-known/configuration → Server discovery (deprecated, use MCP initialize capabilities) ──
1182
1204
  if (path === "/.well-known/configuration" && req.method === "GET") {
1183
1205
  const baseUrl = resolveBaseUrl(req);
1184
1206
  const res = jsonResponse({
@@ -1196,6 +1218,31 @@ export function createAgentServer(
1196
1218
  return cors ? addCors(res) : res;
1197
1219
  }
1198
1220
 
1221
+ // ── GET /.well-known/oauth-authorization-server → OAuth Server Metadata (RFC 8414) ──
1222
+ // Only exposed when the server requires auth (private registries).
1223
+ // Public registries (e.g. registry.slash.com) skip this entirely.
1224
+ if (
1225
+ path === "/.well-known/oauth-authorization-server" &&
1226
+ req.method === "GET" &&
1227
+ (options.registry?.oauthCallbackUrl || serverSigningKeys.length > 0)
1228
+ ) {
1229
+ const baseUrl = resolveBaseUrl(req);
1230
+ const res = jsonResponse({
1231
+ issuer: baseUrl,
1232
+ authorization_endpoint: `${baseUrl}/oauth/authorize`,
1233
+ token_endpoint: `${baseUrl}/oauth/token`,
1234
+ jwks_uri: `${baseUrl}/.well-known/jwks.json`,
1235
+ response_types_supported: ["code"],
1236
+ grant_types_supported: ["authorization_code", "client_credentials", "jwt_exchange"],
1237
+ code_challenge_methods_supported: ["S256"],
1238
+ token_endpoint_auth_methods_supported: ["client_secret_post", "none"],
1239
+ ...(options.registry?.oauthCallbackUrl && {
1240
+ registration_endpoint: `${baseUrl}/oauth/register`,
1241
+ }),
1242
+ });
1243
+ return cors ? addCors(res) : res;
1244
+ }
1245
+
1199
1246
  // ── GET /list → List agents (legacy endpoint) ──
1200
1247
  if (path === "/list" && req.method === "GET") {
1201
1248
  const agents = registry.list();