ankka 0.12.0 → 0.13.0

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 (55) hide show
  1. package/dist/_proto/ankka/protocol/v1/client_pb.d.ts +594 -0
  2. package/dist/_proto/ankka/protocol/v1/client_pb.js +172 -30
  3. package/dist/_proto/ankka/protocol/v1/discovery_pb.d.ts +134 -0
  4. package/dist/_proto/ankka/protocol/v1/discovery_pb.js +51 -36
  5. package/dist/_proto/ankka/protocol/v1/mcp_pb.d.ts +120 -0
  6. package/dist/_proto/ankka/protocol/v1/mcp_pb.js +29 -0
  7. package/dist/agent.d.ts +10 -0
  8. package/dist/agent.js +20 -0
  9. package/dist/autonomous.d.ts +5 -0
  10. package/dist/autonomous.js +10 -0
  11. package/dist/client-keys.d.ts +89 -0
  12. package/dist/client-keys.js +182 -0
  13. package/dist/consumer.d.ts +5 -0
  14. package/dist/consumer.js +10 -0
  15. package/dist/endpoint.d.ts +10 -0
  16. package/dist/endpoint.js +20 -0
  17. package/dist/graph.d.ts +5 -0
  18. package/dist/graph.js +10 -0
  19. package/dist/index.d.ts +6 -1
  20. package/dist/index.js +5 -0
  21. package/dist/mcp-endpoint.d.ts +144 -0
  22. package/dist/mcp-endpoint.js +256 -0
  23. package/dist/routes.d.ts +25 -2
  24. package/dist/routes.js +29 -2
  25. package/dist/server/discovery.d.ts +7 -0
  26. package/dist/server/discovery.js +26 -2
  27. package/dist/server/http.d.ts +8 -0
  28. package/dist/server/http.js +10 -4
  29. package/dist/server/mcp.d.ts +17 -0
  30. package/dist/server/mcp.js +157 -0
  31. package/dist/server/server.d.ts +11 -1
  32. package/dist/server/server.js +19 -0
  33. package/dist/server/storageEndpoint.d.ts +14 -0
  34. package/dist/server/storageEndpoint.js +82 -0
  35. package/dist/service.d.ts +6 -1
  36. package/dist/service.js +47 -4
  37. package/dist/sigv4.d.ts +47 -0
  38. package/dist/sigv4.js +149 -0
  39. package/dist/spec.d.ts +8 -2
  40. package/dist/spec.js +53 -3
  41. package/dist/storage.d.ts +288 -0
  42. package/dist/storage.js +1081 -0
  43. package/dist/testkit/integration.d.ts +9 -0
  44. package/dist/testkit/integration.js +5 -1
  45. package/dist/testkit/kinds.d.ts +16 -4
  46. package/dist/testkit/kinds.js +36 -14
  47. package/dist/testkit/unit.d.ts +4 -1
  48. package/dist/testkit/unit.js +8 -4
  49. package/dist/timedAction.d.ts +10 -0
  50. package/dist/timedAction.js +20 -0
  51. package/dist/version.d.ts +1 -1
  52. package/dist/version.js +1 -1
  53. package/dist/workflow.d.ts +8 -0
  54. package/dist/workflow.js +15 -0
  55. package/package.json +1 -1
@@ -5,7 +5,7 @@ import { file_ankka_protocol_v1_payload } from "./payload_pb.js";
5
5
  /**
6
6
  * Describes the file ankka/protocol/v1/discovery.proto.
7
7
  */
8
- export const file_ankka_protocol_v1_discovery = /*@__PURE__*/ fileDesc("CiFhbmtrYS9wcm90b2NvbC92MS9kaXNjb3ZlcnkucHJvdG8SEWFua2thLnByb3RvY29sLnYxIkAKC1NpZGVjYXJJbmZvEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAkSFwoPcnVudGltZV92ZXJzaW9uGAIgASgJIqsBCgRTcGVjEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAkSJwoDc2RrGAIgASgLMhouYW5ra2EucHJvdG9jb2wudjEuU2RrSW5mbxIwCgpjb21wb25lbnRzGAMgAygLMhwuYW5ra2EucHJvdG9jb2wudjEuQ29tcG9uZW50Ei4KCWVuZHBvaW50cxgEIAMoCzIbLmFua2thLnByb3RvY29sLnYxLkVuZHBvaW50IigKB1Nka0luZm8SDAoEbmFtZRgBIAEoCRIPCgd2ZXJzaW9uGAIgASgJIsAECglDb21wb25lbnQSJQoEa2luZBgBIAEoDjIXLmFua2thLnByb3RvY29sLnYxLktpbmQSCgoCaWQYAiABKAkSLAoIaGFuZGxlcnMYAyADKAsyGi5hbmtrYS5wcm90b2NvbC52MS5IYW5kbGVyEj4KDWV2ZW50X3NvdXJjZWQYCiABKAsyJS5hbmtrYS5wcm90b2NvbC52MS5FdmVudFNvdXJjZWREZXRhaWxIABI2CglrZXlfdmFsdWUYCyABKAsyIS5hbmtrYS5wcm90b2NvbC52MS5LZXlWYWx1ZURldGFpbEgAEjUKCHdvcmtmbG93GAwgASgLMiEuYW5ra2EucHJvdG9jb2wudjEuV29ya2Zsb3dEZXRhaWxIABItCgR2aWV3GA0gASgLMh0uYW5ra2EucHJvdG9jb2wudjEuVmlld0RldGFpbEgAEjUKCGNvbnN1bWVyGA4gASgLMiEuYW5ra2EucHJvdG9jb2wudjEuQ29uc3VtZXJEZXRhaWxIABI8Cgx0aW1lZF9hY3Rpb24YDyABKAsyJC5hbmtrYS5wcm90b2NvbC52MS5UaW1lZEFjdGlvbkRldGFpbEgAEi8KBWFnZW50GBAgASgLMh4uYW5ra2EucHJvdG9jb2wudjEuQWdlbnREZXRhaWxIABJEChBhdXRvbm9tb3VzX2FnZW50GBEgASgLMiguYW5ra2EucHJvdG9jb2wudjEuQXV0b25vbW91c0FnZW50RGV0YWlsSABCCAoGZGV0YWlsIj0KB0hhbmRsZXISDAoEbmFtZRgBIAEoCRIRCglyZWFkX29ubHkYAiABKAgSEQoJc3RyZWFtaW5nGAMgASgIIkAKEkV2ZW50U291cmNlZERldGFpbBIWCg5zbmFwc2hvdF9ldmVyeRgBIAEoBRISCgpyZXBsaWNhdGVkGAIgASgIIhAKDktleVZhbHVlRGV0YWlsIv8ECg5Xb3JrZmxvd0RldGFpbBINCgVzdGVwcxgBIAMoCRJBCghzZXR0aW5ncxgCIAEoCzIqLmFua2thLnByb3RvY29sLnYxLldvcmtmbG93RGV0YWlsLlNldHRpbmdzSACIAQEaowIKCFNldHRpbmdzEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgDSACIAQESKAobZGVmYXVsdF9zdGVwX3RpbWVvdXRfbWlsbGlzGAIgASgDSAGIAQESSQoQZGVmYXVsdF9yZWNvdmVyeRgDIAEoCzIqLmFua2thLnByb3RvY29sLnYxLldvcmtmbG93RGV0YWlsLlJlY292ZXJ5SAKIAQESPQoFc3RlcHMYBCADKAsyLi5hbmtrYS5wcm90b2NvbC52MS5Xb3JrZmxvd0RldGFpbC5TdGVwU2V0dGluZ3NCEQoPX3RpbWVvdXRfbWlsbGlzQh4KHF9kZWZhdWx0X3N0ZXBfdGltZW91dF9taWxsaXNCEwoRX2RlZmF1bHRfcmVjb3ZlcnkanAEKDFN0ZXBTZXR0aW5ncxIMCgRzdGVwGAEgASgJEhsKDnRpbWVvdXRfbWlsbGlzGAIgASgDSACIAQESQQoIcmVjb3ZlcnkYAyABKAsyKi5hbmtrYS5wcm90b2NvbC52MS5Xb3JrZmxvd0RldGFpbC5SZWNvdmVyeUgBiAEBQhEKD190aW1lb3V0X21pbGxpc0ILCglfcmVjb3ZlcnkaSQoIUmVjb3ZlcnkSEwoLbWF4X3JldHJpZXMYASABKAUSGAoLZmFpbG92ZXJfdG8YAiABKAlIAIgBAUIOCgxfZmFpbG92ZXJfdG9CCwoJX3NldHRpbmdzIpADCgZTb3VyY2USOwoJY29tcG9uZW50GAEgASgLMiYuYW5ra2EucHJvdG9jb2wudjEuU291cmNlLkNvbXBvbmVudFJlZkgAEg8KBXRvcGljGAIgASgJSAASNQoKc3RhcnRfZnJvbRgDIAEoCzIcLmFua2thLnByb3RvY29sLnYxLlN0YXJ0RnJvbUgBiAEBEjIKCGNvbnRyYWN0GAQgASgLMhsuYW5ra2EucHJvdG9jb2wudjEuQ29udHJhY3RIAogBARITCgZicm9rZXIYBSABKAlIA4gBARIVCghwYXJhbGxlbBgGIAEoCEgEiAEBEhQKB3Byb2plY3QYByABKAlIBYgBARpBCgxDb21wb25lbnRSZWYSJQoEa2luZBgBIAEoDjIXLmFua2thLnByb3RvY29sLnYxLktpbmQSCgoCaWQYAiABKAlCCAoGc291cmNlQg0KC19zdGFydF9mcm9tQgsKCV9jb250cmFjdEIJCgdfYnJva2VyQgsKCV9wYXJhbGxlbEIKCghfcHJvamVjdCItCghDb250cmFjdBIMCgRuYW1lGAEgASgJEhMKC2ZpbmdlcnByaW50GAIgASgJIp8BCgtQdWJsaWNhdGlvbhINCgV0b3BpYxgBIAEoCRIyCghjb250cmFjdBgCIAEoCzIbLmFua2thLnByb3RvY29sLnYxLkNvbnRyYWN0SACIAQESEwoGYnJva2VyGAMgASgJSAGIAQESFAoHcHJvamVjdBgEIAEoCUgCiAEBQgsKCV9jb250cmFjdEIJCgdfYnJva2VyQgoKCF9wcm9qZWN0IpsBCglTdGFydEZyb20SMwoFbmFtZWQYASABKA4yIi5hbmtrYS5wcm90b2NvbC52MS5TdGFydEZyb20uTmFtZWRIABITCglhdF9taWxsaXMYAiABKANIACI4CgVOYW1lZBIVChFOQU1FRF9VTlNQRUNJRklFRBAAEgwKCEVBUkxJRVNUEAESCgoGTEFURVNUEAJCCgoIcG9zaXRpb24i6AEKClZpZXdEZXRhaWwSKQoGc291cmNlGAEgASgLMhkuYW5ra2EucHJvdG9jb2wudjEuU291cmNlEhQKDHJvd19tYW5pZmVzdBgCIAEoCRIPCgdxdWVyaWVzGAMgAygJEhQKB3ZlcnNpb24YBCABKA1IAIgBARIqCgdzb3VyY2VzGAUgAygLMhkuYW5ra2EucHJvdG9jb2wudjEuU291cmNlEjoKEGRlY2xhcmVkX3F1ZXJpZXMYBiADKAsyIC5hbmtrYS5wcm90b2NvbC52MS5EZWNsYXJlZFF1ZXJ5QgoKCF92ZXJzaW9uIkEKDURlY2xhcmVkUXVlcnkSDAoEbmFtZRgBIAEoCRIRCglzdGF0ZW1lbnQYAiABKAkSDwoHd2F0Y2hlZBgDIAEoCCLlAQoOQ29uc3VtZXJEZXRhaWwSKQoGc291cmNlGAEgASgLMhkuYW5ra2EucHJvdG9jb2wudjEuU291cmNlEhgKC3Byb2R1Y2VzX3RvGAIgASgJSACIAQESFAoHdmVyc2lvbhgDIAEoDUgBiAEBEjUKCHByb2R1Y2VzGAQgASgLMh4uYW5ra2EucHJvdG9jb2wudjEuUHVibGljYXRpb25IAogBARIYChBtaXJyb3JlZF9jaGFuZ2VzGAUgASgIQg4KDF9wcm9kdWNlc190b0IKCghfdmVyc2lvbkILCglfcHJvZHVjZXMiEwoRVGltZWRBY3Rpb25EZXRhaWwiwgEKC0FnZW50RGV0YWlsEgwKBHJvbGUYASABKAkSGwoTbWF4X3Rvb2xfY2FsbF9zdGVwcxgCIAEoBRImCgV0b29scxgDIAMoCzIXLmFua2thLnByb3RvY29sLnYxLlRvb2wSEgoKZ3VhcmRyYWlscxgEIAMoCRIxCgttY3Bfc2VydmVycxgFIAMoCzIcLmFua2thLnByb3RvY29sLnYxLk1jcFNlcnZlchIZChFyZXN1bHRfZ3VhcmRyYWlscxgGIAMoCSKFAQoEVG9vbBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhkKEWlucHV0X3NjaGVtYV9qc29uGAMgASgJEjIKCGFwcHJvdmFsGAQgASgLMhsuYW5ra2EucHJvdG9jb2wudjEuQXBwcm92YWxIAIgBAUILCglfYXBwcm92YWwiOAoIQXBwcm92YWwSGgoNd2l0aGluX21pbGxpcxgBIAEoA0gAiAEBQhAKDl93aXRoaW5fbWlsbGlzItYCCglNY3BTZXJ2ZXISDAoEbmFtZRgBIAEoCRINCgN1cmwYAiABKAlIABI3CgdzZXJ2aWNlGAMgASgLMiQuYW5ra2EucHJvdG9jb2wudjEuTWNwU2VydmVyLlNlcnZpY2VIABIyCghhcHByb3ZhbBgEIAEoCzIbLmFua2thLnByb3RvY29sLnYxLkFwcHJvdmFsSAGIAQESNAoHaGVhZGVycxgFIAMoCzIjLmFua2thLnByb3RvY29sLnYxLk1jcFNlcnZlci5IZWFkZXIaRwoHU2VydmljZRIUCgdwcm9qZWN0GAEgASgJSACIAQESDAoEbmFtZRgCIAEoCRIMCgRwYXRoGAMgASgJQgoKCF9wcm9qZWN0GigKBkhlYWRlchIMCgRuYW1lGAEgASgJEhAKCHZhcmlhYmxlGAIgASgJQgkKB2FkZHJlc3NCCwoJX2FwcHJvdmFsIsYHChVBdXRvbm9tb3VzQWdlbnREZXRhaWwSEwoLZGVzY3JpcHRpb24YASABKAkSGQoMaW5zdHJ1Y3Rpb25zGAIgASgJSACIAQESJgoFdG9vbHMYAyADKAsyFy5hbmtrYS5wcm90b2NvbC52MS5Ub29sEhIKCmd1YXJkcmFpbHMYBCADKAkSRQoKdGFza190eXBlcxgFIAMoCzIxLmFua2thLnByb3RvY29sLnYxLkF1dG9ub21vdXNBZ2VudERldGFpbC5UYXNrVHlwZRJICgdhY2NlcHRzGAYgAygLMjcuYW5ra2EucHJvdG9jb2wudjEuQXV0b25vbW91c0FnZW50RGV0YWlsLlRhc2tBY2NlcHRhbmNlElIKCHNldHRpbmdzGAcgASgLMjsuYW5ra2EucHJvdG9jb2wudjEuQXV0b25vbW91c0FnZW50RGV0YWlsLkF1dG9ub21vdXNTZXR0aW5nc0gBiAEBEhIKBW1vZGVsGAggASgJSAKIAQESMQoLbWNwX3NlcnZlcnMYCSADKAsyHC5hbmtrYS5wcm90b2NvbC52MS5NY3BTZXJ2ZXISGQoRcmVzdWx0X2d1YXJkcmFpbHMYCiADKAkadAoIVGFza1R5cGUSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIfChJyZXN1bHRfc2NoZW1hX2pzb24YAyABKAlIAIgBARINCgVydWxlcxgEIAMoCUIVChNfcmVzdWx0X3NjaGVtYV9qc29uGjsKDlRhc2tBY2NlcHRhbmNlEhEKCXRhc2tfdHlwZRgBIAEoCRIWCg5tYXhfaXRlcmF0aW9ucxgCIAEoBRqeAgoSQXV0b25vbW91c1NldHRpbmdzEiIKFWFwcHJvYWNoaW5nX2J1ZGdldF9hdBgBIAEoAUgAiAEBEiAKE3JlcGVhdGVkX2ZhaWx1cmVfYXQYAiABKAVIAYgBARIlChhtYXhfY29uc2VjdXRpdmVfZmFpbHVyZXMYAyABKAVIAogBARIqCh1kZXBlbmRlbmN5X3N0dWNrX2FmdGVyX21pbGxpcxgEIAEoA0gDiAEBQhgKFl9hcHByb2FjaGluZ19idWRnZXRfYXRCFgoUX3JlcGVhdGVkX2ZhaWx1cmVfYXRCGwoZX21heF9jb25zZWN1dGl2ZV9mYWlsdXJlc0IgCh5fZGVwZW5kZW5jeV9zdHVja19hZnRlcl9taWxsaXNCDwoNX2luc3RydWN0aW9uc0ILCglfc2V0dGluZ3NCCAoGX21vZGVsIvsBCghFbmRwb2ludBIKCgJpZBgBIAEoCRIOCgZwcmVmaXgYAiABKAkSLAoDYWNsGAMgASgOMh8uYW5ra2EucHJvdG9jb2wudjEuRW5kcG9pbnQuQWNsEigKBnJvdXRlcxgEIAMoCzIYLmFua2thLnByb3RvY29sLnYxLlJvdXRlEjcKDWFsbG93X2NhbGxlcnMYBSADKAsyIC5hbmtrYS5wcm90b2NvbC52MS5DYWxsZXJNYXRjaGVyIkIKA0FjbBINCglBTExPV19BTEwQABIMCghERU5ZX0FMTBABEhEKDUFVVEhFTlRJQ0FURUQQAhILCgdDQUxMRVJTEAMihAIKDUNhbGxlck1hdGNoZXISLAoIaW50ZXJuZXQYASABKAsyGC5hbmtrYS5wcm90b2NvbC52MS5FbXB0eUgAEjIKB3NlcnZpY2UYAiABKAsyHy5hbmtrYS5wcm90b2NvbC52MS5OYW1lZFNlcnZpY2VIABIyCg5hbnlfaW5fcHJvamVjdBgDIAEoCzIYLmFua2thLnByb3RvY29sLnYxLkVtcHR5SAASKAoEc2VsZhgEIAEoCzIYLmFua2thLnByb3RvY29sLnYxLkVtcHR5SAASKwoHZ3JhbnRlZBgFIAEoCzIYLmFua2thLnByb3RvY29sLnYxLkVtcHR5SABCBgoEa2luZCI+CgxOYW1lZFNlcnZpY2USFAoHcHJvamVjdBgBIAEoCUgAiAEBEgwKBG5hbWUYAiABKAlCCgoIX3Byb2plY3Qi3gEKBVJvdXRlEgoKAmlkGAEgASgJEg4KBm1ldGhvZBgCIAEoCRIQCgh0ZW1wbGF0ZRgDIAEoCRIQCghoYXNfYm9keRgEIAEoCBIRCglzdHJlYW1pbmcYBSABKAgSMQoDYWNsGAYgASgOMh8uYW5ra2EucHJvdG9jb2wudjEuRW5kcG9pbnQuQWNsSACIAQESNwoNYWxsb3dfY2FsbGVycxgHIAMoCzIgLmFua2thLnByb3RvY29sLnYxLkNhbGxlck1hdGNoZXISDgoGc29ja2V0GAggASgIQgYKBF9hY2wiGgoHUHJvYmxlbRIPCgdtZXNzYWdlGAEgASgJKo8BCgRLaW5kEhgKFEVWRU5UX1NPVVJDRURfRU5USVRZEAASFAoQS0VZX1ZBTFVFX0VOVElUWRABEgwKCFdPUktGTE9XEAISCAoEVklFVxADEgwKCENPTlNVTUVSEAQSEAoMVElNRURfQUNUSU9OEAUSCQoFQUdFTlQQBhIUChBBVVRPTk9NT1VTX0FHRU5UEAcylQEKCURpc2NvdmVyeRJDCghEaXNjb3ZlchIeLmFua2thLnByb3RvY29sLnYxLlNpZGVjYXJJbmZvGhcuYW5ra2EucHJvdG9jb2wudjEuU3BlYxJDCgtSZXBvcnRFcnJvchIaLmFua2thLnByb3RvY29sLnYxLlByb2JsZW0aGC5hbmtrYS5wcm90b2NvbC52MS5FbXB0eWIGcHJvdG8z", [file_ankka_protocol_v1_payload]);
8
+ export const file_ankka_protocol_v1_discovery = /*@__PURE__*/ fileDesc("CiFhbmtrYS9wcm90b2NvbC92MS9kaXNjb3ZlcnkucHJvdG8SEWFua2thLnByb3RvY29sLnYxIkAKC1NpZGVjYXJJbmZvEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAkSFwoPcnVudGltZV92ZXJzaW9uGAIgASgJIuIBCgRTcGVjEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAkSJwoDc2RrGAIgASgLMhouYW5ra2EucHJvdG9jb2wudjEuU2RrSW5mbxIwCgpjb21wb25lbnRzGAMgAygLMhwuYW5ra2EucHJvdG9jb2wudjEuQ29tcG9uZW50Ei4KCWVuZHBvaW50cxgEIAMoCzIbLmFua2thLnByb3RvY29sLnYxLkVuZHBvaW50EjUKDW1jcF9lbmRwb2ludHMYBSADKAsyHi5hbmtrYS5wcm90b2NvbC52MS5NY3BFbmRwb2ludCKrAQoLTWNwRW5kcG9pbnQSCgoCaWQYASABKAkSDAoEcGF0aBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSJgoDYWNsGAUgASgLMhkuYW5ra2EucHJvdG9jb2wudjEuTWNwQWNsEikKBXRvb2xzGAYgAygLMhouYW5ra2EucHJvdG9jb2wudjEuTWNwVG9vbBIQCghicm9rZXJlZBgHIAEoCCJ8CgdNY3BUb29sEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSGQoRaW5wdXRfc2NoZW1hX2pzb24YAyABKAkSKwoDYWNsGAQgASgLMhkuYW5ra2EucHJvdG9jb2wudjEuTWNwQWNsSACIAQFCBgoEX2FjbCKFAQoGTWNwQWNsEhEKCWFsbG93X2FsbBgBIAEoCBIQCghkZW55X2FsbBgCIAEoCBIOCgZ0b2tlbnMYAyABKAgSEwoLY2xpZW50X2tleXMYBCABKAgSMQoHY2FsbGVycxgFIAMoCzIgLmFua2thLnByb3RvY29sLnYxLkNhbGxlck1hdGNoZXIiKAoHU2RrSW5mbxIMCgRuYW1lGAEgASgJEg8KB3ZlcnNpb24YAiABKAkiwAQKCUNvbXBvbmVudBIlCgRraW5kGAEgASgOMhcuYW5ra2EucHJvdG9jb2wudjEuS2luZBIKCgJpZBgCIAEoCRIsCghoYW5kbGVycxgDIAMoCzIaLmFua2thLnByb3RvY29sLnYxLkhhbmRsZXISPgoNZXZlbnRfc291cmNlZBgKIAEoCzIlLmFua2thLnByb3RvY29sLnYxLkV2ZW50U291cmNlZERldGFpbEgAEjYKCWtleV92YWx1ZRgLIAEoCzIhLmFua2thLnByb3RvY29sLnYxLktleVZhbHVlRGV0YWlsSAASNQoId29ya2Zsb3cYDCABKAsyIS5hbmtrYS5wcm90b2NvbC52MS5Xb3JrZmxvd0RldGFpbEgAEi0KBHZpZXcYDSABKAsyHS5hbmtrYS5wcm90b2NvbC52MS5WaWV3RGV0YWlsSAASNQoIY29uc3VtZXIYDiABKAsyIS5hbmtrYS5wcm90b2NvbC52MS5Db25zdW1lckRldGFpbEgAEjwKDHRpbWVkX2FjdGlvbhgPIAEoCzIkLmFua2thLnByb3RvY29sLnYxLlRpbWVkQWN0aW9uRGV0YWlsSAASLwoFYWdlbnQYECABKAsyHi5hbmtrYS5wcm90b2NvbC52MS5BZ2VudERldGFpbEgAEkQKEGF1dG9ub21vdXNfYWdlbnQYESABKAsyKC5hbmtrYS5wcm90b2NvbC52MS5BdXRvbm9tb3VzQWdlbnREZXRhaWxIAEIICgZkZXRhaWwiPQoHSGFuZGxlchIMCgRuYW1lGAEgASgJEhEKCXJlYWRfb25seRgCIAEoCBIRCglzdHJlYW1pbmcYAyABKAgiQAoSRXZlbnRTb3VyY2VkRGV0YWlsEhYKDnNuYXBzaG90X2V2ZXJ5GAEgASgFEhIKCnJlcGxpY2F0ZWQYAiABKAgiEAoOS2V5VmFsdWVEZXRhaWwi/wQKDldvcmtmbG93RGV0YWlsEg0KBXN0ZXBzGAEgAygJEkEKCHNldHRpbmdzGAIgASgLMiouYW5ra2EucHJvdG9jb2wudjEuV29ya2Zsb3dEZXRhaWwuU2V0dGluZ3NIAIgBARqjAgoIU2V0dGluZ3MSGwoOdGltZW91dF9taWxsaXMYASABKANIAIgBARIoChtkZWZhdWx0X3N0ZXBfdGltZW91dF9taWxsaXMYAiABKANIAYgBARJJChBkZWZhdWx0X3JlY292ZXJ5GAMgASgLMiouYW5ra2EucHJvdG9jb2wudjEuV29ya2Zsb3dEZXRhaWwuUmVjb3ZlcnlIAogBARI9CgVzdGVwcxgEIAMoCzIuLmFua2thLnByb3RvY29sLnYxLldvcmtmbG93RGV0YWlsLlN0ZXBTZXR0aW5nc0IRCg9fdGltZW91dF9taWxsaXNCHgocX2RlZmF1bHRfc3RlcF90aW1lb3V0X21pbGxpc0ITChFfZGVmYXVsdF9yZWNvdmVyeRqcAQoMU3RlcFNldHRpbmdzEgwKBHN0ZXAYASABKAkSGwoOdGltZW91dF9taWxsaXMYAiABKANIAIgBARJBCghyZWNvdmVyeRgDIAEoCzIqLmFua2thLnByb3RvY29sLnYxLldvcmtmbG93RGV0YWlsLlJlY292ZXJ5SAGIAQFCEQoPX3RpbWVvdXRfbWlsbGlzQgsKCV9yZWNvdmVyeRpJCghSZWNvdmVyeRITCgttYXhfcmV0cmllcxgBIAEoBRIYCgtmYWlsb3Zlcl90bxgCIAEoCUgAiAEBQg4KDF9mYWlsb3Zlcl90b0ILCglfc2V0dGluZ3MikAMKBlNvdXJjZRI7Cgljb21wb25lbnQYASABKAsyJi5hbmtrYS5wcm90b2NvbC52MS5Tb3VyY2UuQ29tcG9uZW50UmVmSAASDwoFdG9waWMYAiABKAlIABI1CgpzdGFydF9mcm9tGAMgASgLMhwuYW5ra2EucHJvdG9jb2wudjEuU3RhcnRGcm9tSAGIAQESMgoIY29udHJhY3QYBCABKAsyGy5hbmtrYS5wcm90b2NvbC52MS5Db250cmFjdEgCiAEBEhMKBmJyb2tlchgFIAEoCUgDiAEBEhUKCHBhcmFsbGVsGAYgASgISASIAQESFAoHcHJvamVjdBgHIAEoCUgFiAEBGkEKDENvbXBvbmVudFJlZhIlCgRraW5kGAEgASgOMhcuYW5ra2EucHJvdG9jb2wudjEuS2luZBIKCgJpZBgCIAEoCUIICgZzb3VyY2VCDQoLX3N0YXJ0X2Zyb21CCwoJX2NvbnRyYWN0QgkKB19icm9rZXJCCwoJX3BhcmFsbGVsQgoKCF9wcm9qZWN0Ii0KCENvbnRyYWN0EgwKBG5hbWUYASABKAkSEwoLZmluZ2VycHJpbnQYAiABKAkinwEKC1B1YmxpY2F0aW9uEg0KBXRvcGljGAEgASgJEjIKCGNvbnRyYWN0GAIgASgLMhsuYW5ra2EucHJvdG9jb2wudjEuQ29udHJhY3RIAIgBARITCgZicm9rZXIYAyABKAlIAYgBARIUCgdwcm9qZWN0GAQgASgJSAKIAQFCCwoJX2NvbnRyYWN0QgkKB19icm9rZXJCCgoIX3Byb2plY3QimwEKCVN0YXJ0RnJvbRIzCgVuYW1lZBgBIAEoDjIiLmFua2thLnByb3RvY29sLnYxLlN0YXJ0RnJvbS5OYW1lZEgAEhMKCWF0X21pbGxpcxgCIAEoA0gAIjgKBU5hbWVkEhUKEU5BTUVEX1VOU1BFQ0lGSUVEEAASDAoIRUFSTElFU1QQARIKCgZMQVRFU1QQAkIKCghwb3NpdGlvbiLoAQoKVmlld0RldGFpbBIpCgZzb3VyY2UYASABKAsyGS5hbmtrYS5wcm90b2NvbC52MS5Tb3VyY2USFAoMcm93X21hbmlmZXN0GAIgASgJEg8KB3F1ZXJpZXMYAyADKAkSFAoHdmVyc2lvbhgEIAEoDUgAiAEBEioKB3NvdXJjZXMYBSADKAsyGS5hbmtrYS5wcm90b2NvbC52MS5Tb3VyY2USOgoQZGVjbGFyZWRfcXVlcmllcxgGIAMoCzIgLmFua2thLnByb3RvY29sLnYxLkRlY2xhcmVkUXVlcnlCCgoIX3ZlcnNpb24iQQoNRGVjbGFyZWRRdWVyeRIMCgRuYW1lGAEgASgJEhEKCXN0YXRlbWVudBgCIAEoCRIPCgd3YXRjaGVkGAMgASgIIuUBCg5Db25zdW1lckRldGFpbBIpCgZzb3VyY2UYASABKAsyGS5hbmtrYS5wcm90b2NvbC52MS5Tb3VyY2USGAoLcHJvZHVjZXNfdG8YAiABKAlIAIgBARIUCgd2ZXJzaW9uGAMgASgNSAGIAQESNQoIcHJvZHVjZXMYBCABKAsyHi5hbmtrYS5wcm90b2NvbC52MS5QdWJsaWNhdGlvbkgCiAEBEhgKEG1pcnJvcmVkX2NoYW5nZXMYBSABKAhCDgoMX3Byb2R1Y2VzX3RvQgoKCF92ZXJzaW9uQgsKCV9wcm9kdWNlcyITChFUaW1lZEFjdGlvbkRldGFpbCLCAQoLQWdlbnREZXRhaWwSDAoEcm9sZRgBIAEoCRIbChNtYXhfdG9vbF9jYWxsX3N0ZXBzGAIgASgFEiYKBXRvb2xzGAMgAygLMhcuYW5ra2EucHJvdG9jb2wudjEuVG9vbBISCgpndWFyZHJhaWxzGAQgAygJEjEKC21jcF9zZXJ2ZXJzGAUgAygLMhwuYW5ra2EucHJvdG9jb2wudjEuTWNwU2VydmVyEhkKEXJlc3VsdF9ndWFyZHJhaWxzGAYgAygJIoUBCgRUb29sEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSGQoRaW5wdXRfc2NoZW1hX2pzb24YAyABKAkSMgoIYXBwcm92YWwYBCABKAsyGy5hbmtrYS5wcm90b2NvbC52MS5BcHByb3ZhbEgAiAEBQgsKCV9hcHByb3ZhbCI4CghBcHByb3ZhbBIaCg13aXRoaW5fbWlsbGlzGAEgASgDSACIAQFCEAoOX3dpdGhpbl9taWxsaXMi1gIKCU1jcFNlcnZlchIMCgRuYW1lGAEgASgJEg0KA3VybBgCIAEoCUgAEjcKB3NlcnZpY2UYAyABKAsyJC5hbmtrYS5wcm90b2NvbC52MS5NY3BTZXJ2ZXIuU2VydmljZUgAEjIKCGFwcHJvdmFsGAQgASgLMhsuYW5ra2EucHJvdG9jb2wudjEuQXBwcm92YWxIAYgBARI0CgdoZWFkZXJzGAUgAygLMiMuYW5ra2EucHJvdG9jb2wudjEuTWNwU2VydmVyLkhlYWRlchpHCgdTZXJ2aWNlEhQKB3Byb2plY3QYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAlCCgoIX3Byb2plY3QaKAoGSGVhZGVyEgwKBG5hbWUYASABKAkSEAoIdmFyaWFibGUYAiABKAlCCQoHYWRkcmVzc0ILCglfYXBwcm92YWwixgcKFUF1dG9ub21vdXNBZ2VudERldGFpbBITCgtkZXNjcmlwdGlvbhgBIAEoCRIZCgxpbnN0cnVjdGlvbnMYAiABKAlIAIgBARImCgV0b29scxgDIAMoCzIXLmFua2thLnByb3RvY29sLnYxLlRvb2wSEgoKZ3VhcmRyYWlscxgEIAMoCRJFCgp0YXNrX3R5cGVzGAUgAygLMjEuYW5ra2EucHJvdG9jb2wudjEuQXV0b25vbW91c0FnZW50RGV0YWlsLlRhc2tUeXBlEkgKB2FjY2VwdHMYBiADKAsyNy5hbmtrYS5wcm90b2NvbC52MS5BdXRvbm9tb3VzQWdlbnREZXRhaWwuVGFza0FjY2VwdGFuY2USUgoIc2V0dGluZ3MYByABKAsyOy5hbmtrYS5wcm90b2NvbC52MS5BdXRvbm9tb3VzQWdlbnREZXRhaWwuQXV0b25vbW91c1NldHRpbmdzSAGIAQESEgoFbW9kZWwYCCABKAlIAogBARIxCgttY3Bfc2VydmVycxgJIAMoCzIcLmFua2thLnByb3RvY29sLnYxLk1jcFNlcnZlchIZChFyZXN1bHRfZ3VhcmRyYWlscxgKIAMoCRp0CghUYXNrVHlwZRIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEh8KEnJlc3VsdF9zY2hlbWFfanNvbhgDIAEoCUgAiAEBEg0KBXJ1bGVzGAQgAygJQhUKE19yZXN1bHRfc2NoZW1hX2pzb24aOwoOVGFza0FjY2VwdGFuY2USEQoJdGFza190eXBlGAEgASgJEhYKDm1heF9pdGVyYXRpb25zGAIgASgFGp4CChJBdXRvbm9tb3VzU2V0dGluZ3MSIgoVYXBwcm9hY2hpbmdfYnVkZ2V0X2F0GAEgASgBSACIAQESIAoTcmVwZWF0ZWRfZmFpbHVyZV9hdBgCIAEoBUgBiAEBEiUKGG1heF9jb25zZWN1dGl2ZV9mYWlsdXJlcxgDIAEoBUgCiAEBEioKHWRlcGVuZGVuY3lfc3R1Y2tfYWZ0ZXJfbWlsbGlzGAQgASgDSAOIAQFCGAoWX2FwcHJvYWNoaW5nX2J1ZGdldF9hdEIWChRfcmVwZWF0ZWRfZmFpbHVyZV9hdEIbChlfbWF4X2NvbnNlY3V0aXZlX2ZhaWx1cmVzQiAKHl9kZXBlbmRlbmN5X3N0dWNrX2FmdGVyX21pbGxpc0IPCg1faW5zdHJ1Y3Rpb25zQgsKCV9zZXR0aW5nc0IICgZfbW9kZWwi+wEKCEVuZHBvaW50EgoKAmlkGAEgASgJEg4KBnByZWZpeBgCIAEoCRIsCgNhY2wYAyABKA4yHy5hbmtrYS5wcm90b2NvbC52MS5FbmRwb2ludC5BY2wSKAoGcm91dGVzGAQgAygLMhguYW5ra2EucHJvdG9jb2wudjEuUm91dGUSNwoNYWxsb3dfY2FsbGVycxgFIAMoCzIgLmFua2thLnByb3RvY29sLnYxLkNhbGxlck1hdGNoZXIiQgoDQWNsEg0KCUFMTE9XX0FMTBAAEgwKCERFTllfQUxMEAESEQoNQVVUSEVOVElDQVRFRBACEgsKB0NBTExFUlMQAyKEAgoNQ2FsbGVyTWF0Y2hlchIsCghpbnRlcm5ldBgBIAEoCzIYLmFua2thLnByb3RvY29sLnYxLkVtcHR5SAASMgoHc2VydmljZRgCIAEoCzIfLmFua2thLnByb3RvY29sLnYxLk5hbWVkU2VydmljZUgAEjIKDmFueV9pbl9wcm9qZWN0GAMgASgLMhguYW5ra2EucHJvdG9jb2wudjEuRW1wdHlIABIoCgRzZWxmGAQgASgLMhguYW5ra2EucHJvdG9jb2wudjEuRW1wdHlIABIrCgdncmFudGVkGAUgASgLMhguYW5ra2EucHJvdG9jb2wudjEuRW1wdHlIAEIGCgRraW5kIj4KDE5hbWVkU2VydmljZRIUCgdwcm9qZWN0GAEgASgJSACIAQESDAoEbmFtZRgCIAEoCUIKCghfcHJvamVjdCLeAQoFUm91dGUSCgoCaWQYASABKAkSDgoGbWV0aG9kGAIgASgJEhAKCHRlbXBsYXRlGAMgASgJEhAKCGhhc19ib2R5GAQgASgIEhEKCXN0cmVhbWluZxgFIAEoCBIxCgNhY2wYBiABKA4yHy5hbmtrYS5wcm90b2NvbC52MS5FbmRwb2ludC5BY2xIAIgBARI3Cg1hbGxvd19jYWxsZXJzGAcgAygLMiAuYW5ra2EucHJvdG9jb2wudjEuQ2FsbGVyTWF0Y2hlchIOCgZzb2NrZXQYCCABKAhCBgoEX2FjbCIaCgdQcm9ibGVtEg8KB21lc3NhZ2UYASABKAkqjwEKBEtpbmQSGAoURVZFTlRfU09VUkNFRF9FTlRJVFkQABIUChBLRVlfVkFMVUVfRU5USVRZEAESDAoIV09SS0ZMT1cQAhIICgRWSUVXEAMSDAoIQ09OU1VNRVIQBBIQCgxUSU1FRF9BQ1RJT04QBRIJCgVBR0VOVBAGEhQKEEFVVE9OT01PVVNfQUdFTlQQBzKVAQoJRGlzY292ZXJ5EkMKCERpc2NvdmVyEh4uYW5ra2EucHJvdG9jb2wudjEuU2lkZWNhckluZm8aFy5hbmtrYS5wcm90b2NvbC52MS5TcGVjEkMKC1JlcG9ydEVycm9yEhouYW5ra2EucHJvdG9jb2wudjEuUHJvYmxlbRoYLmFua2thLnByb3RvY29sLnYxLkVtcHR5YgZwcm90bzM", [file_ankka_protocol_v1_payload]);
9
9
  /**
10
10
  * Describes the message ankka.protocol.v1.SidecarInfo.
11
11
  * Use `create(SidecarInfoSchema)` to create a new message.
@@ -16,76 +16,91 @@ export const SidecarInfoSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v
16
16
  * Use `create(SpecSchema)` to create a new message.
17
17
  */
18
18
  export const SpecSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 1);
19
+ /**
20
+ * Describes the message ankka.protocol.v1.McpEndpoint.
21
+ * Use `create(McpEndpointSchema)` to create a new message.
22
+ */
23
+ export const McpEndpointSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 2);
24
+ /**
25
+ * Describes the message ankka.protocol.v1.McpTool.
26
+ * Use `create(McpToolSchema)` to create a new message.
27
+ */
28
+ export const McpToolSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 3);
29
+ /**
30
+ * Describes the message ankka.protocol.v1.McpAcl.
31
+ * Use `create(McpAclSchema)` to create a new message.
32
+ */
33
+ export const McpAclSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 4);
19
34
  /**
20
35
  * Describes the message ankka.protocol.v1.SdkInfo.
21
36
  * Use `create(SdkInfoSchema)` to create a new message.
22
37
  */
23
- export const SdkInfoSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 2);
38
+ export const SdkInfoSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 5);
24
39
  /**
25
40
  * Describes the message ankka.protocol.v1.Component.
26
41
  * Use `create(ComponentSchema)` to create a new message.
27
42
  */
28
- export const ComponentSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 3);
43
+ export const ComponentSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 6);
29
44
  /**
30
45
  * Describes the message ankka.protocol.v1.Handler.
31
46
  * Use `create(HandlerSchema)` to create a new message.
32
47
  */
33
- export const HandlerSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 4);
48
+ export const HandlerSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 7);
34
49
  /**
35
50
  * Describes the message ankka.protocol.v1.EventSourcedDetail.
36
51
  * Use `create(EventSourcedDetailSchema)` to create a new message.
37
52
  */
38
- export const EventSourcedDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 5);
53
+ export const EventSourcedDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 8);
39
54
  /**
40
55
  * Describes the message ankka.protocol.v1.KeyValueDetail.
41
56
  * Use `create(KeyValueDetailSchema)` to create a new message.
42
57
  */
43
- export const KeyValueDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 6);
58
+ export const KeyValueDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 9);
44
59
  /**
45
60
  * Describes the message ankka.protocol.v1.WorkflowDetail.
46
61
  * Use `create(WorkflowDetailSchema)` to create a new message.
47
62
  */
48
- export const WorkflowDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 7);
63
+ export const WorkflowDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 10);
49
64
  /**
50
65
  * Describes the message ankka.protocol.v1.WorkflowDetail.Settings.
51
66
  * Use `create(WorkflowDetail_SettingsSchema)` to create a new message.
52
67
  */
53
- export const WorkflowDetail_SettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 7, 0);
68
+ export const WorkflowDetail_SettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 10, 0);
54
69
  /**
55
70
  * Describes the message ankka.protocol.v1.WorkflowDetail.StepSettings.
56
71
  * Use `create(WorkflowDetail_StepSettingsSchema)` to create a new message.
57
72
  */
58
- export const WorkflowDetail_StepSettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 7, 1);
73
+ export const WorkflowDetail_StepSettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 10, 1);
59
74
  /**
60
75
  * Describes the message ankka.protocol.v1.WorkflowDetail.Recovery.
61
76
  * Use `create(WorkflowDetail_RecoverySchema)` to create a new message.
62
77
  */
63
- export const WorkflowDetail_RecoverySchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 7, 2);
78
+ export const WorkflowDetail_RecoverySchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 10, 2);
64
79
  /**
65
80
  * Describes the message ankka.protocol.v1.Source.
66
81
  * Use `create(SourceSchema)` to create a new message.
67
82
  */
68
- export const SourceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 8);
83
+ export const SourceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 11);
69
84
  /**
70
85
  * Describes the message ankka.protocol.v1.Source.ComponentRef.
71
86
  * Use `create(Source_ComponentRefSchema)` to create a new message.
72
87
  */
73
- export const Source_ComponentRefSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 8, 0);
88
+ export const Source_ComponentRefSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 11, 0);
74
89
  /**
75
90
  * Describes the message ankka.protocol.v1.Contract.
76
91
  * Use `create(ContractSchema)` to create a new message.
77
92
  */
78
- export const ContractSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 9);
93
+ export const ContractSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 12);
79
94
  /**
80
95
  * Describes the message ankka.protocol.v1.Publication.
81
96
  * Use `create(PublicationSchema)` to create a new message.
82
97
  */
83
- export const PublicationSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 10);
98
+ export const PublicationSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 13);
84
99
  /**
85
100
  * Describes the message ankka.protocol.v1.StartFrom.
86
101
  * Use `create(StartFromSchema)` to create a new message.
87
102
  */
88
- export const StartFromSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 11);
103
+ export const StartFromSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 14);
89
104
  /**
90
105
  * @generated from enum ankka.protocol.v1.StartFrom.Named
91
106
  */
@@ -110,82 +125,82 @@ export const StartFrom_Named = {
110
125
  /**
111
126
  * Describes the enum ankka.protocol.v1.StartFrom.Named.
112
127
  */
113
- export const StartFrom_NamedSchema = /*@__PURE__*/ enumDesc(file_ankka_protocol_v1_discovery, 11, 0);
128
+ export const StartFrom_NamedSchema = /*@__PURE__*/ enumDesc(file_ankka_protocol_v1_discovery, 14, 0);
114
129
  /**
115
130
  * Describes the message ankka.protocol.v1.ViewDetail.
116
131
  * Use `create(ViewDetailSchema)` to create a new message.
117
132
  */
118
- export const ViewDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 12);
133
+ export const ViewDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 15);
119
134
  /**
120
135
  * Describes the message ankka.protocol.v1.DeclaredQuery.
121
136
  * Use `create(DeclaredQuerySchema)` to create a new message.
122
137
  */
123
- export const DeclaredQuerySchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 13);
138
+ export const DeclaredQuerySchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 16);
124
139
  /**
125
140
  * Describes the message ankka.protocol.v1.ConsumerDetail.
126
141
  * Use `create(ConsumerDetailSchema)` to create a new message.
127
142
  */
128
- export const ConsumerDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 14);
143
+ export const ConsumerDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 17);
129
144
  /**
130
145
  * Describes the message ankka.protocol.v1.TimedActionDetail.
131
146
  * Use `create(TimedActionDetailSchema)` to create a new message.
132
147
  */
133
- export const TimedActionDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 15);
148
+ export const TimedActionDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 18);
134
149
  /**
135
150
  * Describes the message ankka.protocol.v1.AgentDetail.
136
151
  * Use `create(AgentDetailSchema)` to create a new message.
137
152
  */
138
- export const AgentDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 16);
153
+ export const AgentDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 19);
139
154
  /**
140
155
  * Describes the message ankka.protocol.v1.Tool.
141
156
  * Use `create(ToolSchema)` to create a new message.
142
157
  */
143
- export const ToolSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 17);
158
+ export const ToolSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 20);
144
159
  /**
145
160
  * Describes the message ankka.protocol.v1.Approval.
146
161
  * Use `create(ApprovalSchema)` to create a new message.
147
162
  */
148
- export const ApprovalSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 18);
163
+ export const ApprovalSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 21);
149
164
  /**
150
165
  * Describes the message ankka.protocol.v1.McpServer.
151
166
  * Use `create(McpServerSchema)` to create a new message.
152
167
  */
153
- export const McpServerSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 19);
168
+ export const McpServerSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 22);
154
169
  /**
155
170
  * Describes the message ankka.protocol.v1.McpServer.Service.
156
171
  * Use `create(McpServer_ServiceSchema)` to create a new message.
157
172
  */
158
- export const McpServer_ServiceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 19, 0);
173
+ export const McpServer_ServiceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 22, 0);
159
174
  /**
160
175
  * Describes the message ankka.protocol.v1.McpServer.Header.
161
176
  * Use `create(McpServer_HeaderSchema)` to create a new message.
162
177
  */
163
- export const McpServer_HeaderSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 19, 1);
178
+ export const McpServer_HeaderSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 22, 1);
164
179
  /**
165
180
  * Describes the message ankka.protocol.v1.AutonomousAgentDetail.
166
181
  * Use `create(AutonomousAgentDetailSchema)` to create a new message.
167
182
  */
168
- export const AutonomousAgentDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 20);
183
+ export const AutonomousAgentDetailSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 23);
169
184
  /**
170
185
  * Describes the message ankka.protocol.v1.AutonomousAgentDetail.TaskType.
171
186
  * Use `create(AutonomousAgentDetail_TaskTypeSchema)` to create a new message.
172
187
  */
173
- export const AutonomousAgentDetail_TaskTypeSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 20, 0);
188
+ export const AutonomousAgentDetail_TaskTypeSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 23, 0);
174
189
  /**
175
190
  * Describes the message ankka.protocol.v1.AutonomousAgentDetail.TaskAcceptance.
176
191
  * Use `create(AutonomousAgentDetail_TaskAcceptanceSchema)` to create a new message.
177
192
  */
178
- export const AutonomousAgentDetail_TaskAcceptanceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 20, 1);
193
+ export const AutonomousAgentDetail_TaskAcceptanceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 23, 1);
179
194
  /**
180
195
  * Describes the message ankka.protocol.v1.AutonomousAgentDetail.AutonomousSettings.
181
196
  * Use `create(AutonomousAgentDetail_AutonomousSettingsSchema)` to create a new message.
182
197
  */
183
- export const AutonomousAgentDetail_AutonomousSettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 20, 2);
198
+ export const AutonomousAgentDetail_AutonomousSettingsSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 23, 2);
184
199
  /**
185
200
  * Describes the message ankka.protocol.v1.Endpoint.
186
201
  * Use `create(EndpointSchema)` to create a new message.
187
202
  */
188
- export const EndpointSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 21);
203
+ export const EndpointSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 24);
189
204
  /**
190
205
  * @generated from enum ankka.protocol.v1.Endpoint.Acl
191
206
  */
@@ -210,27 +225,27 @@ export const Endpoint_Acl = {
210
225
  /**
211
226
  * Describes the enum ankka.protocol.v1.Endpoint.Acl.
212
227
  */
213
- export const Endpoint_AclSchema = /*@__PURE__*/ enumDesc(file_ankka_protocol_v1_discovery, 21, 0);
228
+ export const Endpoint_AclSchema = /*@__PURE__*/ enumDesc(file_ankka_protocol_v1_discovery, 24, 0);
214
229
  /**
215
230
  * Describes the message ankka.protocol.v1.CallerMatcher.
216
231
  * Use `create(CallerMatcherSchema)` to create a new message.
217
232
  */
218
- export const CallerMatcherSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 22);
233
+ export const CallerMatcherSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 25);
219
234
  /**
220
235
  * Describes the message ankka.protocol.v1.NamedService.
221
236
  * Use `create(NamedServiceSchema)` to create a new message.
222
237
  */
223
- export const NamedServiceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 23);
238
+ export const NamedServiceSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 26);
224
239
  /**
225
240
  * Describes the message ankka.protocol.v1.Route.
226
241
  * Use `create(RouteSchema)` to create a new message.
227
242
  */
228
- export const RouteSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 24);
243
+ export const RouteSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 27);
229
244
  /**
230
245
  * Describes the message ankka.protocol.v1.Problem.
231
246
  * Use `create(ProblemSchema)` to create a new message.
232
247
  */
233
- export const ProblemSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 25);
248
+ export const ProblemSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_discovery, 28);
234
249
  /**
235
250
  * @generated from enum ankka.protocol.v1.Kind
236
251
  */
@@ -0,0 +1,120 @@
1
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
+ import type { Failure, Metadata } from "./payload_pb.ts";
3
+ import type { Caller, Principal } from "./endpoint_pb.ts";
4
+ import type { Message } from "@bufbuild/protobuf";
5
+ /**
6
+ * Describes the file ankka/protocol/v1/mcp.proto.
7
+ */
8
+ export declare const file_ankka_protocol_v1_mcp: GenFile;
9
+ /**
10
+ * @generated from message ankka.protocol.v1.McpToolRequest
11
+ */
12
+ export type McpToolRequest = Message<"ankka.protocol.v1.McpToolRequest"> & {
13
+ /**
14
+ * @generated from field: string endpoint_id = 1;
15
+ */
16
+ endpointId: string;
17
+ /**
18
+ * @generated from field: string tool = 2;
19
+ */
20
+ tool: string;
21
+ /**
22
+ * a JSON object, already checked against the tool's schema's types
23
+ *
24
+ * @generated from field: string arguments_json = 3;
25
+ */
26
+ argumentsJson: string;
27
+ /**
28
+ * when the ACL authenticated: a token's or a client key's, never the credential
29
+ *
30
+ * @generated from field: optional ankka.protocol.v1.Principal principal = 4;
31
+ */
32
+ principal?: Principal | undefined;
33
+ /**
34
+ * @generated from field: optional ankka.protocol.v1.Caller caller = 5;
35
+ */
36
+ caller?: Caller | undefined;
37
+ /**
38
+ * the trace, and the tool as the caller of what it calls
39
+ *
40
+ * @generated from field: ankka.protocol.v1.Metadata metadata = 6;
41
+ */
42
+ metadata?: Metadata | undefined;
43
+ };
44
+ /**
45
+ * Describes the message ankka.protocol.v1.McpToolRequest.
46
+ * Use `create(McpToolRequestSchema)` to create a new message.
47
+ */
48
+ export declare const McpToolRequestSchema: GenMessage<McpToolRequest>;
49
+ /**
50
+ * @generated from message ankka.protocol.v1.McpToolReply
51
+ */
52
+ export type McpToolReply = Message<"ankka.protocol.v1.McpToolReply"> & {
53
+ /**
54
+ * @generated from oneof ankka.protocol.v1.McpToolReply.reply
55
+ */
56
+ reply: {
57
+ /**
58
+ * @generated from field: ankka.protocol.v1.McpToolAnswer ok = 1;
59
+ */
60
+ value: McpToolAnswer;
61
+ case: "ok";
62
+ } | {
63
+ /**
64
+ * a tool error: the message the model reads
65
+ *
66
+ * @generated from field: string error = 2;
67
+ */
68
+ value: string;
69
+ case: "error";
70
+ } | {
71
+ /**
72
+ * the process could not run it
73
+ *
74
+ * @generated from field: ankka.protocol.v1.Failure failure = 3;
75
+ */
76
+ value: Failure;
77
+ case: "failure";
78
+ } | {
79
+ case: undefined;
80
+ value?: undefined;
81
+ };
82
+ };
83
+ /**
84
+ * Describes the message ankka.protocol.v1.McpToolReply.
85
+ * Use `create(McpToolReplySchema)` to create a new message.
86
+ */
87
+ export declare const McpToolReplySchema: GenMessage<McpToolReply>;
88
+ /**
89
+ * @generated from message ankka.protocol.v1.McpToolAnswer
90
+ */
91
+ export type McpToolAnswer = Message<"ankka.protocol.v1.McpToolAnswer"> & {
92
+ /**
93
+ * @generated from field: string text = 1;
94
+ */
95
+ text: string;
96
+ /**
97
+ * when the result is a record or a map
98
+ *
99
+ * @generated from field: optional string structured_json = 2;
100
+ */
101
+ structuredJson?: string | undefined;
102
+ };
103
+ /**
104
+ * Describes the message ankka.protocol.v1.McpToolAnswer.
105
+ * Use `create(McpToolAnswerSchema)` to create a new message.
106
+ */
107
+ export declare const McpToolAnswerSchema: GenMessage<McpToolAnswer>;
108
+ /**
109
+ * @generated from service ankka.protocol.v1.Mcp
110
+ */
111
+ export declare const Mcp: GenService<{
112
+ /**
113
+ * @generated from rpc ankka.protocol.v1.Mcp.InvokeTool
114
+ */
115
+ invokeTool: {
116
+ methodKind: "unary";
117
+ input: typeof McpToolRequestSchema;
118
+ output: typeof McpToolReplySchema;
119
+ };
120
+ }>;
@@ -0,0 +1,29 @@
1
+ // A tool of an MCP endpoint the process declared in discovery (protocol 1.20). The sidecar serves
2
+ // the endpoint: it answers the MCP protocol, applies the ACL and checks the arguments against the
3
+ // tool's schema, then asks the process to run the tool. The process never sees the credential.
4
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
+ import { file_ankka_protocol_v1_payload } from "./payload_pb.js";
6
+ import { file_ankka_protocol_v1_endpoint } from "./endpoint_pb.js";
7
+ /**
8
+ * Describes the file ankka/protocol/v1/mcp.proto.
9
+ */
10
+ export const file_ankka_protocol_v1_mcp = /*@__PURE__*/ fileDesc("ChthbmtrYS9wcm90b2NvbC92MS9tY3AucHJvdG8SEWFua2thLnByb3RvY29sLnYxIvkBCg5NY3BUb29sUmVxdWVzdBITCgtlbmRwb2ludF9pZBgBIAEoCRIMCgR0b29sGAIgASgJEhYKDmFyZ3VtZW50c19qc29uGAMgASgJEjQKCXByaW5jaXBhbBgEIAEoCzIcLmFua2thLnByb3RvY29sLnYxLlByaW5jaXBhbEgAiAEBEi4KBmNhbGxlchgFIAEoCzIZLmFua2thLnByb3RvY29sLnYxLkNhbGxlckgBiAEBEi0KCG1ldGFkYXRhGAYgASgLMhsuYW5ra2EucHJvdG9jb2wudjEuTWV0YWRhdGFCDAoKX3ByaW5jaXBhbEIJCgdfY2FsbGVyIocBCgxNY3BUb29sUmVwbHkSLgoCb2sYASABKAsyIC5hbmtrYS5wcm90b2NvbC52MS5NY3BUb29sQW5zd2VySAASDwoFZXJyb3IYAiABKAlIABItCgdmYWlsdXJlGAMgASgLMhouYW5ra2EucHJvdG9jb2wudjEuRmFpbHVyZUgAQgcKBXJlcGx5Ik8KDU1jcFRvb2xBbnN3ZXISDAoEdGV4dBgBIAEoCRIcCg9zdHJ1Y3R1cmVkX2pzb24YAiABKAlIAIgBAUISChBfc3RydWN0dXJlZF9qc29uMlcKA01jcBJQCgpJbnZva2VUb29sEiEuYW5ra2EucHJvdG9jb2wudjEuTWNwVG9vbFJlcXVlc3QaHy5hbmtrYS5wcm90b2NvbC52MS5NY3BUb29sUmVwbHliBnByb3RvMw", [file_ankka_protocol_v1_payload, file_ankka_protocol_v1_endpoint]);
11
+ /**
12
+ * Describes the message ankka.protocol.v1.McpToolRequest.
13
+ * Use `create(McpToolRequestSchema)` to create a new message.
14
+ */
15
+ export const McpToolRequestSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_mcp, 0);
16
+ /**
17
+ * Describes the message ankka.protocol.v1.McpToolReply.
18
+ * Use `create(McpToolReplySchema)` to create a new message.
19
+ */
20
+ export const McpToolReplySchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_mcp, 1);
21
+ /**
22
+ * Describes the message ankka.protocol.v1.McpToolAnswer.
23
+ * Use `create(McpToolAnswerSchema)` to create a new message.
24
+ */
25
+ export const McpToolAnswerSchema = /*@__PURE__*/ messageDesc(file_ankka_protocol_v1_mcp, 2);
26
+ /**
27
+ * @generated from service ankka.protocol.v1.Mcp
28
+ */
29
+ export const Mcp = /*@__PURE__*/ serviceDesc(file_ankka_protocol_v1_mcp, 0);
package/dist/agent.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { Metadata } from "./effects/common.ts";
2
+ import { type ClientKeys } from "./client-keys.ts";
2
3
  import { type ComponentClient, type Secrets } from "./client.ts";
4
+ import { type Buckets } from "./storage.ts";
3
5
  import type { GuardrailRef, HandlerTable, ToolRef } from "./handlers.ts";
4
6
  import { AgentEffects } from "./effects/agent.ts";
5
7
  import { type Services } from "./services.ts";
@@ -15,6 +17,14 @@ export declare abstract class Agent {
15
17
  get secrets(): Secrets;
16
18
  /** A unit test's store in place of the runtime's: `component.secrets = new InMemorySecrets()`. */
17
19
  set secrets(store: Secrets);
20
+ /** The service's client keys (1.20): issued for its MCP endpoint, kept by the runtime, each shown once. */
21
+ get clientKeys(): ClientKeys;
22
+ /** A unit test's in place of the runtime's: `component.clientKeys = new InMemoryClientKeys()`. */
23
+ set clientKeys(keys: ClientKeys);
24
+ /** The service's buckets: `this.storage.default`, or `this.storage.bucket("photos")`. */
25
+ get storage(): Buckets;
26
+ /** A unit test's store in place of the runtime's: `component.storage = new InMemoryBuckets()`. */
27
+ set storage(buckets: Buckets);
18
28
  /** Other services, called as this one, through the runtime: `this.services.service("orders")`. */
19
29
  get services(): Services;
20
30
  /** A unit test's in place of the runtime's: `component.services = new ScriptedServices()`. */
package/dist/agent.js CHANGED
@@ -5,7 +5,9 @@
5
5
  // static readonly tools = { lookup: tool("lookup", "Looks up a cart by id.", CartLookup, (a: Assistant, input) => a.lookup(input.cartId)) }
6
6
  // static readonly guardrails = { noSecrets: guardrail("no-secrets", (stage, text) => text.includes("sk-") ? "a key leaked" : null) }
7
7
  // static readonly handlers = { ask: command("ask", s.string, s.string, (a: Assistant, q) => a.ask(q)), chat: stream("chat", s.string, (a: Assistant, q) => a.ask(q)) }
8
+ import { clientKeysFor } from "./client-keys.js";
8
9
  import { secretsFor } from "./client.js";
10
+ import { processStorage } from "./storage.js";
9
11
  import { AgentEffects } from "./effects/agent.js";
10
12
  import { servicesFor } from "./services.js";
11
13
  export class Agent {
@@ -34,6 +36,24 @@ export class Agent {
34
36
  set secrets(store) {
35
37
  this.#secrets = store;
36
38
  }
39
+ #clientKeys;
40
+ /** The service's client keys (1.20): issued for its MCP endpoint, kept by the runtime, each shown once. */
41
+ get clientKeys() {
42
+ return this.#clientKeys ?? clientKeysFor(this.client);
43
+ }
44
+ /** A unit test's in place of the runtime's: `component.clientKeys = new InMemoryClientKeys()`. */
45
+ set clientKeys(keys) {
46
+ this.#clientKeys = keys;
47
+ }
48
+ #storage;
49
+ /** The service's buckets: `this.storage.default`, or `this.storage.bucket("photos")`. */
50
+ get storage() {
51
+ return this.#storage ?? processStorage();
52
+ }
53
+ /** A unit test's store in place of the runtime's: `component.storage = new InMemoryBuckets()`. */
54
+ set storage(buckets) {
55
+ this.#storage = buckets;
56
+ }
37
57
  #services;
38
58
  /** Other services, called as this one, through the runtime: `this.services.service("orders")`. */
39
59
  get services() {
@@ -1,6 +1,7 @@
1
1
  import { type ApprovalRequest, type DecisionInput } from "./approvals.ts";
2
2
  import type { McpServerRef, ResultGuardrailRef } from "./mcp.ts";
3
3
  import { type ComponentClient, type Secrets } from "./client.ts";
4
+ import { type Buckets } from "./storage.ts";
4
5
  import type { GuardrailRef, ToolRef } from "./handlers.ts";
5
6
  import type { Schema } from "./schema.ts";
6
7
  import { type Services } from "./services.ts";
@@ -58,6 +59,10 @@ export declare abstract class AutonomousAgent {
58
59
  get secrets(): Secrets;
59
60
  /** A unit test's store in place of the runtime's: `component.secrets = new InMemorySecrets()`. */
60
61
  set secrets(store: Secrets);
62
+ /** The service's buckets: `this.storage.default`, or `this.storage.bucket("photos")`. */
63
+ get storage(): Buckets;
64
+ /** A unit test's store in place of the runtime's: `component.storage = new InMemoryBuckets()`. */
65
+ set storage(buckets: Buckets);
61
66
  /** Other services, called as this one, through the runtime: `this.services.service("orders")`. */
62
67
  get services(): Services;
63
68
  /** A unit test's in place of the runtime's: `component.services = new ScriptedServices()`. */
@@ -16,6 +16,7 @@
16
16
  // request's tools run again — so a tool with a side effect should tolerate a repeat.
17
17
  import { requestFromJson } from "./approvals.js";
18
18
  import { secretsFor } from "./client.js";
19
+ import { processStorage } from "./storage.js";
19
20
  import { decodeJsonValue, reviver } from "./json.js";
20
21
  import { toJsonSchema } from "./schema.js";
21
22
  import { servicesFor } from "./services.js";
@@ -68,6 +69,15 @@ export class AutonomousAgent {
68
69
  set secrets(store) {
69
70
  this.#secrets = store;
70
71
  }
72
+ #storage;
73
+ /** The service's buckets: `this.storage.default`, or `this.storage.bucket("photos")`. */
74
+ get storage() {
75
+ return this.#storage ?? processStorage();
76
+ }
77
+ /** A unit test's store in place of the runtime's: `component.storage = new InMemoryBuckets()`. */
78
+ set storage(buckets) {
79
+ this.#storage = buckets;
80
+ }
71
81
  #services;
72
82
  /** Other services, called as this one, through the runtime: `this.services.service("orders")`. */
73
83
  get services() {
@@ -0,0 +1,89 @@
1
+ import { type ComponentClient } from "./client.ts";
2
+ import { Duration, Instant } from "./time.ts";
3
+ /** The first protocol whose runtime keeps client keys; an older one answers `UNIMPLEMENTED`. */
4
+ export declare const CLIENT_KEYS_SINCE = "1.20";
5
+ /** When a client key stops being admitted. There is no default: the issuer says, every time. */
6
+ export type Expiry = {
7
+ readonly kind: "after";
8
+ readonly millis: number;
9
+ } | {
10
+ readonly kind: "at";
11
+ readonly epochMillis: number;
12
+ } | {
13
+ readonly kind: "never";
14
+ };
15
+ export declare const Expiry: Readonly<{
16
+ /** After a while from now: `Expiry.after({ days: 365 })`, or a `Duration`. */
17
+ after(by: Duration | {
18
+ readonly days?: number;
19
+ readonly hours?: number;
20
+ readonly minutes?: number;
21
+ readonly seconds?: number;
22
+ readonly millis?: number;
23
+ }): Expiry;
24
+ /** At an instant. */
25
+ at(when: Instant | Date): Expiry;
26
+ /** Never: admitted until it is revoked. */
27
+ never: Expiry;
28
+ }>;
29
+ /** What to issue: the subject a tool is told, how long, and what for. */
30
+ export interface IssueClientKey {
31
+ readonly subject: string;
32
+ readonly expiry: Expiry;
33
+ /** The MCP endpoint's path; needed only when the service has several. */
34
+ readonly endpoint?: string;
35
+ /** The tools the key may call; every tool when empty. */
36
+ readonly scope?: Iterable<string>;
37
+ /** What a tool reads as the principal's claims: at most 16, each name and value at most 256 characters. */
38
+ readonly attributes?: Readonly<Record<string, string>>;
39
+ readonly label?: string;
40
+ }
41
+ /** An issued key: its id, which lists and revokes it, and the key, shown here once. */
42
+ export interface IssuedClientKey {
43
+ readonly id: string;
44
+ readonly clientKey: string;
45
+ }
46
+ /** One client key as a listing shows it: never the key, nor anything it could be derived from. */
47
+ export interface ClientKeySummary {
48
+ readonly id: string;
49
+ readonly subject: string;
50
+ readonly attributes: Readonly<Record<string, string>>;
51
+ readonly label: string | null;
52
+ readonly endpoint: string;
53
+ readonly scope: readonly string[];
54
+ readonly issuedAt: Instant;
55
+ readonly expiresAt: Instant | null;
56
+ readonly lastUsed: Instant | null;
57
+ readonly revokedAt: Instant | null;
58
+ }
59
+ /**
60
+ * The service's client keys, kept by the runtime. A refusal is a `CommandError` with the runtime's
61
+ * code: `BAD_REQUEST` for a request that breaks a rule, `UNAVAILABLE` when the service's MCP
62
+ * endpoints admit no client key (there is then nothing to keep them), `NOT_FOUND` for an unknown id.
63
+ */
64
+ export declare class ClientKeys {
65
+ #private;
66
+ /** The keys reached through `client`'s sidecar; with none, every call throws. */
67
+ constructor(client?: ComponentClient);
68
+ /** Issues a key; the answer is the one place the key is ever shown. */
69
+ issue(request: IssueClientKey): Promise<IssuedClientKey>;
70
+ /** Every client key of the service, revoked ones included; never a key itself. */
71
+ list(): Promise<ClientKeySummary[]>;
72
+ /** Revokes a key: refused on its next request on every instance. Revoking twice is not an error. */
73
+ revoke(id: string): Promise<void>;
74
+ }
75
+ /** Client keys for unit tests: a map, issuing keys that look like the runtime's and applying its rules. */
76
+ export declare class InMemoryClientKeys extends ClientKeys {
77
+ #private;
78
+ constructor();
79
+ /** The key issued under `id`, which a test may present; the runtime shows it only once. */
80
+ keyOf(id: string): string | undefined;
81
+ issue(request: IssueClientKey): Promise<IssuedClientKey>;
82
+ list(): Promise<ClientKeySummary[]>;
83
+ revoke(id: string): Promise<void>;
84
+ }
85
+ /**
86
+ * @internal The client keys reached through `client`'s sidecar. Not a member of the client, which an
87
+ * entity holds too: only the component kinds that may issue keys call this.
88
+ */
89
+ export declare function clientKeysFor(client: ComponentClient): ClientKeys;