@adcp/sdk 12.0.1 → 12.0.3

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 (52) hide show
  1. package/dist/lib/index.d.mts +2 -2
  2. package/dist/lib/index.d.ts +2 -2
  3. package/dist/lib/index.d.ts.map +1 -1
  4. package/dist/lib/index.js +2 -0
  5. package/dist/lib/index.js.map +1 -1
  6. package/dist/lib/index.mjs +3 -1
  7. package/dist/lib/index.mjs.map +1 -1
  8. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  9. package/dist/lib/server/adcp-server.d.ts.map +1 -1
  10. package/dist/lib/server/adcp-server.js +18 -0
  11. package/dist/lib/server/adcp-server.js.map +1 -1
  12. package/dist/lib/server/adcp-server.mjs +15 -0
  13. package/dist/lib/server/adcp-server.mjs.map +1 -1
  14. package/dist/lib/server/create-adcp-server.d.mts +24 -0
  15. package/dist/lib/server/create-adcp-server.d.ts +24 -0
  16. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  17. package/dist/lib/server/create-adcp-server.js +24 -2
  18. package/dist/lib/server/create-adcp-server.js.map +1 -1
  19. package/dist/lib/server/create-adcp-server.mjs +29 -2
  20. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  21. package/dist/lib/server/index.d.mts +3 -1
  22. package/dist/lib/server/index.d.ts +3 -1
  23. package/dist/lib/server/index.d.ts.map +1 -1
  24. package/dist/lib/server/index.js +3 -0
  25. package/dist/lib/server/index.js.map +1 -1
  26. package/dist/lib/server/index.mjs +2 -0
  27. package/dist/lib/server/index.mjs.map +1 -1
  28. package/dist/lib/server/legacy/v5/index.d.mts +1 -1
  29. package/dist/lib/server/legacy/v5/index.d.ts +1 -1
  30. package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
  31. package/dist/lib/server/legacy/v5/index.js.map +1 -1
  32. package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
  33. package/dist/lib/server/mcp-app.d.mts +57 -0
  34. package/dist/lib/server/mcp-app.d.ts +58 -0
  35. package/dist/lib/server/mcp-app.d.ts.map +1 -0
  36. package/dist/lib/server/mcp-app.js +110 -0
  37. package/dist/lib/server/mcp-app.js.map +1 -0
  38. package/dist/lib/server/mcp-app.mjs +83 -0
  39. package/dist/lib/server/mcp-app.mjs.map +1 -0
  40. package/dist/lib/server/mcp-modern-server.d.ts.map +1 -1
  41. package/dist/lib/server/mcp-modern-server.js +23 -1
  42. package/dist/lib/server/mcp-modern-server.js.map +1 -1
  43. package/dist/lib/server/mcp-modern-server.mjs +24 -1
  44. package/dist/lib/server/mcp-modern-server.mjs.map +1 -1
  45. package/dist/lib/version.d.mts +3 -3
  46. package/dist/lib/version.d.ts +3 -3
  47. package/dist/lib/version.js +3 -3
  48. package/dist/lib/version.js.map +1 -1
  49. package/dist/lib/version.mjs +3 -3
  50. package/dist/lib/version.mjs.map +1 -1
  51. package/docs/guides/BUILD-AN-AGENT.md +70 -0
  52. package/package.json +1 -1
@@ -10,8 +10,14 @@ import {
10
10
  ADCP_STATE_STORE,
11
11
  wrapMcpServer,
12
12
  setSdkServerInstructions,
13
+ setMcpAppResources,
13
14
  wrapInitializeHandler
14
15
  } from "./adcp-server.mjs";
16
+ import {
17
+ mcpAppResourceMetadata,
18
+ normalizeMcpAppResources,
19
+ readMcpAppResource
20
+ } from "./mcp-app.mjs";
15
21
  import { createTaskCapableServer, InMemoryTaskStore } from "./tasks.mjs";
16
22
  import { adcpError, applyAdcpErrorAllowlist, sanitizeStructuredAdcpError } from "./errors.mjs";
17
23
  import { AdcpError } from "./decisioning/async-outcome.mjs";
@@ -1156,6 +1162,15 @@ function createAdcpServer(config) {
1156
1162
  responseEnhancer
1157
1163
  } = config;
1158
1164
  const frameworkInputSchemaFor = (toolName) => config.exposeToolSchemas === true ? shallowToolInputHintSchema(toolName) ?? PASSTHROUGH_INPUT_SCHEMA : PASSTHROUGH_INPUT_SCHEMA;
1165
+ const mcpAppResources = normalizeMcpAppResources(config.resources);
1166
+ const mcpAppResourceUris = new Set(mcpAppResources.map((resource) => resource.uri));
1167
+ for (const [toolName, tool] of Object.entries(config.customTools ?? {})) {
1168
+ const resourceUri = tool?._meta?.ui?.resourceUri;
1169
+ if (resourceUri === void 0 || mcpAppResourceUris.has(resourceUri)) continue;
1170
+ const message = `[adcp/createAdcpServer] customTools["${toolName}"]._meta.ui.resourceUri references "${resourceUri}", but no matching MCP App resource is configured in resources[].`;
1171
+ process.emitWarning(message, { type: "AdcpServerConfigWarning", code: "ADCP_MCP_APP_RESOURCE_MISSING" });
1172
+ logger.warn(message);
1173
+ }
1159
1174
  if (testControllerBridge != null && resolveAccount === void 0 && resolveAccountFromAuth === void 0) {
1160
1175
  const message = "[adcp/createAdcpServer] testController is wired but no account resolver \u2014 configure resolveAccount (or resolveAccountFromAuth) for production. Storyboard runners without account scoping can ignore. Details: https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/VALIDATE-YOUR-AGENT.md";
1161
1176
  process.emitWarning(message, { type: "AdcpServerConfigWarning", code: "ADCP_BRIDGE_NO_RESOLVER" });
@@ -1300,6 +1315,16 @@ function createAdcpServer(config) {
1300
1315
  taskMessageQueue,
1301
1316
  instructions: resolvedInstructions
1302
1317
  });
1318
+ for (const resource of mcpAppResources) {
1319
+ server.registerResource(
1320
+ resource.name,
1321
+ resource.uri,
1322
+ mcpAppResourceMetadata(resource),
1323
+ async (uri, extra) => readMcpAppResource(resource, uri, {
1324
+ signal: extra.signal
1325
+ })
1326
+ );
1327
+ }
1303
1328
  if (pendingInstructions !== void 0) {
1304
1329
  const pending = pendingInstructions;
1305
1330
  let resolvedOnce;
@@ -2732,7 +2757,7 @@ function createAdcpServer(config) {
2732
2757
  }
2733
2758
  const custom = config.customTools[customName];
2734
2759
  if (!custom) continue;
2735
- const { description, title, inputSchema, outputSchema, annotations, handler } = custom;
2760
+ const { description, title, inputSchema, outputSchema, annotations, _meta, handler } = custom;
2736
2761
  const rawHandler = handler;
2737
2762
  const wrappedHandler = (async (...args) => {
2738
2763
  try {
@@ -2750,7 +2775,8 @@ function createAdcpServer(config) {
2750
2775
  ...title != null && { title },
2751
2776
  ...inputSchema != null && { inputSchema },
2752
2777
  ...outputSchema != null && { outputSchema },
2753
- ...annotations != null && { annotations }
2778
+ ...annotations != null && { annotations },
2779
+ ..._meta != null && { _meta }
2754
2780
  },
2755
2781
  wrappedHandler
2756
2782
  );
@@ -2912,6 +2938,7 @@ function createAdcpServer(config) {
2912
2938
  }
2913
2939
  };
2914
2940
  const wrapped = wrapMcpServer(server, compliance, adcpVersion);
2941
+ setMcpAppResources(wrapped, mcpAppResources);
2915
2942
  if (signedRequests) {
2916
2943
  const preTransport = buildSignedRequestsPreTransport(signedRequests, capConfig?.request_signing);
2917
2944
  Object.defineProperty(wrapped, ADCP_PRE_TRANSPORT, {