helpers.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * Experimental task capability assertion helpers.
  3. * WARNING: These APIs are experimental and may change without notice.
  4. *
  5. * @experimental
  6. */
  7. /**
  8. * Asserts that task creation is supported for tools/call.
  9. * Used by Client.assertTaskCapability and Server.assertTaskHandlerCapability.
  10. *
  11. * @param requests - The task requests capability object
  12. * @param method - The method being checked
  13. * @param entityName - 'Server' or 'Client' for error messages
  14. * @throws Error if the capability is not supported
  15. *
  16. * @experimental
  17. */
  18. export function assertToolsCallTaskCapability(requests, method, entityName) {
  19. if (!requests) {
  20. throw new Error(`${entityName} does not support task creation (required for ${method})`);
  21. }
  22. switch (method) {
  23. case 'tools/call':
  24. if (!requests.tools?.call) {
  25. throw new Error(`${entityName} does not support task creation for tools/call (required for ${method})`);
  26. }
  27. break;
  28. default:
  29. // Method doesn't support tasks, which is fine - no error
  30. break;
  31. }
  32. }
  33. /**
  34. * Asserts that task creation is supported for sampling/createMessage or elicitation/create.
  35. * Used by Server.assertTaskCapability and Client.assertTaskHandlerCapability.
  36. *
  37. * @param requests - The task requests capability object
  38. * @param method - The method being checked
  39. * @param entityName - 'Server' or 'Client' for error messages
  40. * @throws Error if the capability is not supported
  41. *
  42. * @experimental
  43. */
  44. export function assertClientRequestTaskCapability(requests, method, entityName) {
  45. if (!requests) {
  46. throw new Error(`${entityName} does not support task creation (required for ${method})`);
  47. }
  48. switch (method) {
  49. case 'sampling/createMessage':
  50. if (!requests.sampling?.createMessage) {
  51. throw new Error(`${entityName} does not support task creation for sampling/createMessage (required for ${method})`);
  52. }
  53. break;
  54. case 'elicitation/create':
  55. if (!requests.elicitation?.create) {
  56. throw new Error(`${entityName} does not support task creation for elicitation/create (required for ${method})`);
  57. }
  58. break;
  59. default:
  60. // Method doesn't support tasks, which is fine - no error
  61. break;
  62. }
  63. }
  64. //# sourceMappingURL=helpers.js.map