@codefionn/llmleaf-client 0.1.2 → 0.1.4

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.
@@ -35,7 +35,7 @@ import type { Message } from "@bufbuild/protobuf";
35
35
  * Describes the file llmleaf/v1/llmleaf.proto.
36
36
  */
37
37
  export const file_llmleaf_v1_llmleaf: GenFile = /*@__PURE__*/
38
- fileDesc("ChhsbG1sZWFmL3YxL2xsbWxlYWYucHJvdG8SCmxsbWxlYWYudjEicwoFVXNhZ2USFQoNcHJvbXB0X3Rva2VucxgBIAEoDRIZChFjb21wbGV0aW9uX3Rva2VucxgCIAEoDRIUCgx0b3RhbF90b2tlbnMYAyABKA0SFQoIY29zdF91c2QYBCABKAFIAIgBAUILCglfY29zdF91c2QiNQoNRXJyb3JSZXNwb25zZRIkCgVlcnJvchgBIAEoCzIVLmxsbWxlYWYudjEuRXJyb3JCb2R5IlQKCUVycm9yQm9keRIPCgdtZXNzYWdlGAEgASgJEhEKBHR5cGUYAiABKAlIAIgBARIRCgRjb2RlGAMgASgJSAGIAQFCBwoFX3R5cGVCBwoFX2NvZGUiagoLQ29udGVudFBhcnQSJAoEdGV4dBgBIAEoCzIULmxsbWxlYWYudjEuVGV4dFBhcnRIABItCglpbWFnZV91cmwYAiABKAsyGC5sbG1sZWFmLnYxLkltYWdlVXJsUGFydEgAQgYKBHBhcnQiGAoIVGV4dFBhcnQSDAoEdGV4dBgBIAEoCSI7CgxJbWFnZVVybFBhcnQSCwoDdXJsGAEgASgJEhMKBmRldGFpbBgCIAEoCUgAiAEBQgkKB19kZXRhaWwiNgoMQ29udGVudFBhcnRzEiYKBWl0ZW1zGAEgAygLMhcubGxtbGVhZi52MS5Db250ZW50UGFydCIvCgxGdW5jdGlvbkNhbGwSDAoEbmFtZRgBIAEoCRIRCglhcmd1bWVudHMYAiABKAkiUAoIVG9vbENhbGwSCgoCaWQYASABKAkSDAoEdHlwZRgCIAEoCRIqCghmdW5jdGlvbhgDIAEoCzIYLmxsbWxlYWYudjEuRnVuY3Rpb25DYWxsIlUKEUZ1bmN0aW9uQ2FsbERlbHRhEhEKBG5hbWUYASABKAlIAIgBARIWCglhcmd1bWVudHMYAiABKAlIAYgBAUIHCgVfbmFtZUIMCgpfYXJndW1lbnRzIpUBCg1Ub29sQ2FsbERlbHRhEg0KBWluZGV4GAEgASgNEg8KAmlkGAIgASgJSACIAQESEQoEdHlwZRgDIAEoCUgBiAEBEjQKCGZ1bmN0aW9uGAQgASgLMh0ubGxtbGVhZi52MS5GdW5jdGlvbkNhbGxEZWx0YUgCiAEBQgUKA19pZEIHCgVfdHlwZUILCglfZnVuY3Rpb24i5QEKC0NoYXRNZXNzYWdlEh4KBHJvbGUYASABKA4yEC5sbG1sZWFmLnYxLlJvbGUSDgoEdGV4dBgCIAEoCUgAEikKBXBhcnRzGAMgASgLMhgubGxtbGVhZi52MS5Db250ZW50UGFydHNIABIRCgRuYW1lGAQgASgJSAGIAQESKAoKdG9vbF9jYWxscxgFIAMoCzIULmxsbWxlYWYudjEuVG9vbENhbGwSGQoMdG9vbF9jYWxsX2lkGAYgASgJSAKIAQFCCQoHY29udGVudEIHCgVfbmFtZUIPCg1fdG9vbF9jYWxsX2lkIm0KC0Z1bmN0aW9uRGVmEgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIXCgpwYXJhbWV0ZXJzGAMgASgJSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQg0KC19wYXJhbWV0ZXJzIkIKB1Rvb2xEZWYSDAoEdHlwZRgBIAEoCRIpCghmdW5jdGlvbhgCIAEoCzIXLmxsbWxlYWYudjEuRnVuY3Rpb25EZWYiVAoKVG9vbENob2ljZRIOCgRtb2RlGAEgASgJSAASLAoFbmFtZWQYAiABKAsyGy5sbG1sZWFmLnYxLk5hbWVkVG9vbENob2ljZUgAQggKBmNob2ljZSJLCg9OYW1lZFRvb2xDaG9pY2USDAoEdHlwZRgBIAEoCRIqCghmdW5jdGlvbhgCIAEoCzIYLmxsbWxlYWYudjEuRnVuY3Rpb25OYW1lIhwKDEZ1bmN0aW9uTmFtZRIMCgRuYW1lGAEgASgJIkgKDlJlc3BvbnNlRm9ybWF0EgwKBHR5cGUYASABKAkSGAoLanNvbl9zY2hlbWEYAiABKAlIAIgBAUIOCgxfanNvbl9zY2hlbWEixQUKC0NoYXRSZXF1ZXN0Eg0KBW1vZGVsGAEgASgJEikKCG1lc3NhZ2VzGAIgAygLMhcubGxtbGVhZi52MS5DaGF0TWVzc2FnZRITCgZzdHJlYW0YAyABKAhIAIgBARIYCgt0ZW1wZXJhdHVyZRgEIAEoAkgBiAEBEhIKBXRvcF9wGAUgASgCSAKIAQESFwoKbWF4X3Rva2VucxgGIAEoDUgDiAEBEiIKFW1heF9jb21wbGV0aW9uX3Rva2VucxgHIAEoDUgEiAEBEgwKBHN0b3AYCCADKAkSDgoBbhgJIAEoDUgFiAEBEhEKBHNlZWQYCiABKANIBogBARIeChFmcmVxdWVuY3lfcGVuYWx0eRgLIAEoAkgHiAEBEh0KEHByZXNlbmNlX3BlbmFsdHkYDCABKAJICIgBARIiCgV0b29scxgNIAMoCzITLmxsbWxlYWYudjEuVG9vbERlZhIwCgt0b29sX2Nob2ljZRgOIAEoCzIWLmxsbWxlYWYudjEuVG9vbENob2ljZUgJiAEBEjgKD3Jlc3BvbnNlX2Zvcm1hdBgPIAEoCzIaLmxsbWxlYWYudjEuUmVzcG9uc2VGb3JtYXRICogBARIdChByZWFzb25pbmdfZWZmb3J0GBAgASgJSAuIAQESEgoFZXh0cmEYESABKAlIDIgBAUIJCgdfc3RyZWFtQg4KDF90ZW1wZXJhdHVyZUIICgZfdG9wX3BCDQoLX21heF90b2tlbnNCGAoWX21heF9jb21wbGV0aW9uX3Rva2Vuc0IECgJfbkIHCgVfc2VlZEIUChJfZnJlcXVlbmN5X3BlbmFsdHlCEwoRX3ByZXNlbmNlX3BlbmFsdHlCDgoMX3Rvb2xfY2hvaWNlQhIKEF9yZXNwb25zZV9mb3JtYXRCEwoRX3JlYXNvbmluZ19lZmZvcnRCCAoGX2V4dHJhIokBCgZDaG9pY2USDQoFaW5kZXgYASABKA0SKAoHbWVzc2FnZRgCIAEoCzIXLmxsbWxlYWYudjEuQ2hhdE1lc3NhZ2USNAoNZmluaXNoX3JlYXNvbhgDIAEoDjIYLmxsbWxlYWYudjEuRmluaXNoUmVhc29uSACIAQFCEAoOX2ZpbmlzaF9yZWFzb24ikQEKDENoYXRSZXNwb25zZRIKCgJpZBgBIAEoCRIOCgZvYmplY3QYAiABKAkSDwoHY3JlYXRlZBgDIAEoAxINCgVtb2RlbBgEIAEoCRIjCgdjaG9pY2VzGAUgAygLMhIubGxtbGVhZi52MS5DaG9pY2USIAoFdXNhZ2UYBiABKAsyES5sbG1sZWFmLnYxLlVzYWdlIoYBCgVEZWx0YRIjCgRyb2xlGAEgASgOMhAubGxtbGVhZi52MS5Sb2xlSACIAQESFAoHY29udGVudBgCIAEoCUgBiAEBEi0KCnRvb2xfY2FsbHMYAyADKAsyGS5sbG1sZWFmLnYxLlRvb2xDYWxsRGVsdGFCBwoFX3JvbGVCCgoIX2NvbnRlbnQihgEKC0NodW5rQ2hvaWNlEg0KBWluZGV4GAEgASgNEiAKBWRlbHRhGAIgASgLMhEubGxtbGVhZi52MS5EZWx0YRI0Cg1maW5pc2hfcmVhc29uGAMgASgOMhgubGxtbGVhZi52MS5GaW5pc2hSZWFzb25IAIgBAUIQCg5fZmluaXNoX3JlYXNvbiKsAQoTQ2hhdENvbXBsZXRpb25DaHVuaxIKCgJpZBgBIAEoCRIOCgZvYmplY3QYAiABKAkSDwoHY3JlYXRlZBgDIAEoAxINCgVtb2RlbBgEIAEoCRIoCgdjaG9pY2VzGAUgAygLMhcubGxtbGVhZi52MS5DaHVua0Nob2ljZRIlCgV1c2FnZRgGIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2VIAIgBAUIICgZfdXNhZ2UiqAEKEEVtYmVkZGluZ1JlcXVlc3QSDQoFbW9kZWwYASABKAkSDQoFaW5wdXQYAiADKAkSFwoKZGltZW5zaW9ucxgDIAEoDUgAiAEBEhwKD2VuY29kaW5nX2Zvcm1hdBgEIAEoCUgBiAEBEhIKBWV4dHJhGAUgASgJSAKIAQFCDQoLX2RpbWVuc2lvbnNCEgoQX2VuY29kaW5nX2Zvcm1hdEIICgZfZXh0cmEiPQoJRW1iZWRkaW5nEg4KBm9iamVjdBgBIAEoCRINCgVpbmRleBgCIAEoDRIRCgllbWJlZGRpbmcYAyADKAIieQoRRW1iZWRkaW5nUmVzcG9uc2USDgoGb2JqZWN0GAEgASgJEiMKBGRhdGEYAiADKAsyFS5sbG1sZWFmLnYxLkVtYmVkZGluZxINCgVtb2RlbBgDIAEoCRIgCgV1c2FnZRgEIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2UiqgEKDVNwZWVjaFJlcXVlc3QSDQoFbW9kZWwYASABKAkSDQoFaW5wdXQYAiABKAkSDQoFdm9pY2UYAyABKAkSHAoPcmVzcG9uc2VfZm9ybWF0GAQgASgJSACIAQESEgoFc3BlZWQYBSABKAJIAYgBARISCgVleHRyYRgGIAEoCUgCiAEBQhIKEF9yZXNwb25zZV9mb3JtYXRCCAoGX3NwZWVkQggKBl9leHRyYSJCCgVWb2ljZRIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESEQoJbGFuZ3VhZ2VzGAMgAygJQgcKBV9uYW1lIkIKDlZvaWNlc1Jlc3BvbnNlEg0KBW1vZGVsGAEgASgJEiEKBnZvaWNlcxgCIAMoCzIRLmxsbWxlYWYudjEuVm9pY2UixQEKFFRyYW5zY3JpcHRpb25SZXF1ZXN0Eg0KBW1vZGVsGAEgASgJEhUKCGxhbmd1YWdlGAIgASgJSACIAQESEwoGcHJvbXB0GAMgASgJSAGIAQESHAoPcmVzcG9uc2VfZm9ybWF0GAQgASgJSAKIAQESGAoLdGVtcGVyYXR1cmUYBSABKAJIA4gBAUILCglfbGFuZ3VhZ2VCCQoHX3Byb21wdEISChBfcmVzcG9uc2VfZm9ybWF0Qg4KDF90ZW1wZXJhdHVyZSK6AQoVVHJhbnNjcmlwdGlvblJlc3BvbnNlEgwKBHRleHQYASABKAkSEQoEdGFzaxgCIAEoCUgAiAEBEhUKCGxhbmd1YWdlGAMgASgJSAGIAQESFQoIZHVyYXRpb24YBCABKAJIAogBARIlCgV1c2FnZRgFIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2VIA4gBAUIHCgVfdGFza0ILCglfbGFuZ3VhZ2VCCwoJX2R1cmF0aW9uQggKBl91c2FnZSKoAQoMQXJjaGl0ZWN0dXJlEhgKEGlucHV0X21vZGFsaXRpZXMYASADKAkSGQoRb3V0cHV0X21vZGFsaXRpZXMYAiADKAkSFQoIbW9kYWxpdHkYAyABKAlIAIgBARIRCgl0b2tlbml6ZXIYBCABKAkSGgoNaW5zdHJ1Y3RfdHlwZRgFIAEoCUgBiAEBQgsKCV9tb2RhbGl0eUIQCg5faW5zdHJ1Y3RfdHlwZSItCgdQcmljaW5nEg4KBnByb21wdBgBIAEoCRISCgpjb21wbGV0aW9uGAIgASgJIssBCgtUb3BQcm92aWRlchIbCg5jb250ZXh0X2xlbmd0aBgBIAEoDUgAiAEBEiIKFW1heF9jb21wbGV0aW9uX3Rva2VucxgCIAEoDUgBiAEBEhQKDGlzX21vZGVyYXRlZBgDIAEoCBIgChNtYXhfdGhpbmtpbmdfdG9rZW5zGAQgASgNSAKIAQFCEQoPX2NvbnRleHRfbGVuZ3RoQhgKFl9tYXhfY29tcGxldGlvbl90b2tlbnNCFgoUX21heF90aGlua2luZ190b2tlbnMiTgoNTW9kZWxFbmRwb2ludBIQCghwcm92aWRlchgBIAEoCRINCgVtb2RlbBgCIAEoCRIMCgRkb3duGAMgASgIEg4KBnNvdXJjZRgEIAEoCSLOAwoKTW9kZWxFbnRyeRIKCgJpZBgBIAEoCRIWCg5jYW5vbmljYWxfc2x1ZxgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2NyZWF0ZWQYBCABKAMSEwoLZGVzY3JpcHRpb24YBSABKAkSGwoOY29udGV4dF9sZW5ndGgYBiABKA1IAIgBARIuCgxhcmNoaXRlY3R1cmUYByABKAsyGC5sbG1sZWFmLnYxLkFyY2hpdGVjdHVyZRIpCgdwcmljaW5nGAggASgLMhMubGxtbGVhZi52MS5QcmljaW5nSAGIAQESLQoMdG9wX3Byb3ZpZGVyGAkgASgLMhcubGxtbGVhZi52MS5Ub3BQcm92aWRlchIcChRzdXBwb3J0ZWRfcGFyYW1ldGVycxgKIAMoCRIeChZ1bnN1cHBvcnRlZF9wYXJhbWV0ZXJzGAsgAygJEh8KEmRlZmF1bHRfcGFyYW1ldGVycxgMIAEoCUgCiAEBEiwKCWVuZHBvaW50cxgNIAMoCzIZLmxsbWxlYWYudjEuTW9kZWxFbmRwb2ludEIRCg9fY29udGV4dF9sZW5ndGhCCgoIX3ByaWNpbmdCFQoTX2RlZmF1bHRfcGFyYW1ldGVycyI6ChJMaXN0TW9kZWxzUmVzcG9uc2USJAoEZGF0YRgBIAMoCzIWLmxsbWxlYWYudjEuTW9kZWxFbnRyeSJMChBCYXRjaFJlcXVlc3RJdGVtEhEKCWN1c3RvbV9pZBgBIAEoCRIlCgRib2R5GAIgASgLMhcubGxtbGVhZi52MS5DaGF0UmVxdWVzdCJEChJCYXRjaENyZWF0ZVJlcXVlc3QSLgoIcmVxdWVzdHMYASADKAsyHC5sbG1sZWFmLnYxLkJhdGNoUmVxdWVzdEl0ZW0idwoLQmF0Y2hDb3VudHMSDQoFdG90YWwYASABKAQSEgoKcHJvY2Vzc2luZxgCIAEoBBIRCglzdWNjZWVkZWQYAyABKAQSDwoHZXJyb3JlZBgEIAEoBBIQCghjYW5jZWxlZBgFIAEoBBIPCgdleHBpcmVkGAYgASgEIoMCCgtCYXRjaEhhbmRsZRIKCgJpZBgBIAEoCRInCgZzdGF0dXMYAiABKA4yFy5sbG1sZWFmLnYxLkJhdGNoU3RhdHVzEicKBmNvdW50cxgDIAEoCzIXLmxsbWxlYWYudjEuQmF0Y2hDb3VudHMSFwoKY3JlYXRlZF9hdBgEIAEoA0gAiAEBEhcKCmV4cGlyZXNfYXQYBSABKANIAYgBARIVCghlbmRlZF9hdBgGIAEoA0gCiAEBEhUKCGVuZHBvaW50GAcgASgJSAOIAQFCDQoLX2NyZWF0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCCwoJX2VuZGVkX2F0QgsKCV9lbmRwb2ludCKZAQoPQmF0Y2hSZXN1bHRMaW5lEhEKCWN1c3RvbV9pZBgBIAEoCRIwCghyZXNwb25zZRgCIAEoCzIZLmxsbWxlYWYudjEuQmF0Y2hSZXNwb25zZUgAiAEBEioKBWVycm9yGAMgASgLMhYubGxtbGVhZi52MS5CYXRjaEVycm9ySAGIAQFCCwoJX3Jlc3BvbnNlQggKBl9lcnJvciJMCg1CYXRjaFJlc3BvbnNlEhMKC3N0YXR1c19jb2RlGAEgASgNEiYKBGJvZHkYAiABKAsyGC5sbG1sZWFmLnYxLkNoYXRSZXNwb25zZSIrCgpCYXRjaEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSpLCgRSb2xlEhQKEFJPTEVfVU5TUEVDSUZJRUQQABIKCgZTWVNURU0QARIICgRVU0VSEAISDQoJQVNTSVNUQU5UEAMSCAoEVE9PTBAEKmcKDEZpbmlzaFJlYXNvbhIdChlGSU5JU0hfUkVBU09OX1VOU1BFQ0lGSUVEEAASCAoEU1RPUBABEgoKBkxFTkdUSBACEg4KClRPT0xfQ0FMTFMQAxISCg5DT05URU5UX0ZJTFRFUhAEKqEBCgtCYXRjaFN0YXR1cxIcChhCQVRDSF9TVEFUVVNfVU5TUEVDSUZJRUQQABIOCgpWQUxJREFUSU5HEAESDwoLSU5fUFJPR1JFU1MQAhIOCgpGSU5BTElaSU5HEAMSDQoJQ09NUExFVEVEEAQSCgoGRkFJTEVEEAUSCwoHRVhQSVJFRBAGEg0KCUNBTkNFTElORxAHEgwKCENBTkNFTEVEEAhCWAoXZXUuY29kZWZpb25uLmxsbWxlYWYudjFQAVo7Z2l0aHViLmNvbS9jb2RlZmlvbm4vbGxtbGVhZi9jbGllbnRzL2dvL2xsbWxlYWZwYjtsbG1sZWFmcGJiBnByb3RvMw");
38
+ fileDesc("ChhsbG1sZWFmL3YxL2xsbWxlYWYucHJvdG8SCmxsbWxlYWYudjEikAIKBVVzYWdlEhUKDXByb21wdF90b2tlbnMYASABKA0SGQoRY29tcGxldGlvbl90b2tlbnMYAiABKA0SFAoMdG90YWxfdG9rZW5zGAMgASgNEhUKCGNvc3RfdXNkGAQgASgBSACIAQESQwoVcHJvbXB0X3Rva2Vuc19kZXRhaWxzGAUgASgLMh8ubGxtbGVhZi52MS5Qcm9tcHRUb2tlbnNEZXRhaWxzSAGIAQESIgoVY2FjaGVfY3JlYXRpb25fdG9rZW5zGAYgASgNSAKIAQFCCwoJX2Nvc3RfdXNkQhgKFl9wcm9tcHRfdG9rZW5zX2RldGFpbHNCGAoWX2NhY2hlX2NyZWF0aW9uX3Rva2VucyJDChNQcm9tcHRUb2tlbnNEZXRhaWxzEhoKDWNhY2hlZF90b2tlbnMYASABKA1IAIgBAUIQCg5fY2FjaGVkX3Rva2VucyI1Cg1FcnJvclJlc3BvbnNlEiQKBWVycm9yGAEgASgLMhUubGxtbGVhZi52MS5FcnJvckJvZHkiVAoJRXJyb3JCb2R5Eg8KB21lc3NhZ2UYASABKAkSEQoEdHlwZRgCIAEoCUgAiAEBEhEKBGNvZGUYAyABKAlIAYgBAUIHCgVfdHlwZUIHCgVfY29kZSJqCgtDb250ZW50UGFydBIkCgR0ZXh0GAEgASgLMhQubGxtbGVhZi52MS5UZXh0UGFydEgAEi0KCWltYWdlX3VybBgCIAEoCzIYLmxsbWxlYWYudjEuSW1hZ2VVcmxQYXJ0SABCBgoEcGFydCIYCghUZXh0UGFydBIMCgR0ZXh0GAEgASgJIjsKDEltYWdlVXJsUGFydBILCgN1cmwYASABKAkSEwoGZGV0YWlsGAIgASgJSACIAQFCCQoHX2RldGFpbCI2CgxDb250ZW50UGFydHMSJgoFaXRlbXMYASADKAsyFy5sbG1sZWFmLnYxLkNvbnRlbnRQYXJ0Ii8KDEZ1bmN0aW9uQ2FsbBIMCgRuYW1lGAEgASgJEhEKCWFyZ3VtZW50cxgCIAEoCSJQCghUb29sQ2FsbBIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEioKCGZ1bmN0aW9uGAMgASgLMhgubGxtbGVhZi52MS5GdW5jdGlvbkNhbGwiVQoRRnVuY3Rpb25DYWxsRGVsdGESEQoEbmFtZRgBIAEoCUgAiAEBEhYKCWFyZ3VtZW50cxgCIAEoCUgBiAEBQgcKBV9uYW1lQgwKCl9hcmd1bWVudHMilQEKDVRvb2xDYWxsRGVsdGESDQoFaW5kZXgYASABKA0SDwoCaWQYAiABKAlIAIgBARIRCgR0eXBlGAMgASgJSAGIAQESNAoIZnVuY3Rpb24YBCABKAsyHS5sbG1sZWFmLnYxLkZ1bmN0aW9uQ2FsbERlbHRhSAKIAQFCBQoDX2lkQgcKBV90eXBlQgsKCV9mdW5jdGlvbiL1AQoPUmVhc29uaW5nRGV0YWlsEgwKBHR5cGUYASABKAkSEQoEdGV4dBgCIAEoCUgAiAEBEhQKB3N1bW1hcnkYAyABKAlIAYgBARIRCgRkYXRhGAQgASgJSAKIAQESFgoJc2lnbmF0dXJlGAUgASgJSAOIAQESDwoCaWQYBiABKAlIBIgBARITCgZmb3JtYXQYByABKAlIBYgBARISCgVpbmRleBgIIAEoDUgGiAEBQgcKBV90ZXh0QgoKCF9zdW1tYXJ5QgcKBV9kYXRhQgwKCl9zaWduYXR1cmVCBQoDX2lkQgkKB19mb3JtYXRCCAoGX2luZGV4IsMCCgtDaGF0TWVzc2FnZRIeCgRyb2xlGAEgASgOMhAubGxtbGVhZi52MS5Sb2xlEg4KBHRleHQYAiABKAlIABIpCgVwYXJ0cxgDIAEoCzIYLmxsbWxlYWYudjEuQ29udGVudFBhcnRzSAASEQoEbmFtZRgEIAEoCUgBiAEBEigKCnRvb2xfY2FsbHMYBSADKAsyFC5sbG1sZWFmLnYxLlRvb2xDYWxsEhkKDHRvb2xfY2FsbF9pZBgGIAEoCUgCiAEBEhYKCXJlYXNvbmluZxgHIAEoCUgDiAEBEjYKEXJlYXNvbmluZ19kZXRhaWxzGAggAygLMhsubGxtbGVhZi52MS5SZWFzb25pbmdEZXRhaWxCCQoHY29udGVudEIHCgVfbmFtZUIPCg1fdG9vbF9jYWxsX2lkQgwKCl9yZWFzb25pbmcibQoLRnVuY3Rpb25EZWYSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhcKCnBhcmFtZXRlcnMYAyABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CDQoLX3BhcmFtZXRlcnMiQgoHVG9vbERlZhIMCgR0eXBlGAEgASgJEikKCGZ1bmN0aW9uGAIgASgLMhcubGxtbGVhZi52MS5GdW5jdGlvbkRlZiJUCgpUb29sQ2hvaWNlEg4KBG1vZGUYASABKAlIABIsCgVuYW1lZBgCIAEoCzIbLmxsbWxlYWYudjEuTmFtZWRUb29sQ2hvaWNlSABCCAoGY2hvaWNlIksKD05hbWVkVG9vbENob2ljZRIMCgR0eXBlGAEgASgJEioKCGZ1bmN0aW9uGAIgASgLMhgubGxtbGVhZi52MS5GdW5jdGlvbk5hbWUiHAoMRnVuY3Rpb25OYW1lEgwKBG5hbWUYASABKAkiSAoOUmVzcG9uc2VGb3JtYXQSDAoEdHlwZRgBIAEoCRIYCgtqc29uX3NjaGVtYRgCIAEoCUgAiAEBQg4KDF9qc29uX3NjaGVtYSLFBQoLQ2hhdFJlcXVlc3QSDQoFbW9kZWwYASABKAkSKQoIbWVzc2FnZXMYAiADKAsyFy5sbG1sZWFmLnYxLkNoYXRNZXNzYWdlEhMKBnN0cmVhbRgDIAEoCEgAiAEBEhgKC3RlbXBlcmF0dXJlGAQgASgCSAGIAQESEgoFdG9wX3AYBSABKAJIAogBARIXCgptYXhfdG9rZW5zGAYgASgNSAOIAQESIgoVbWF4X2NvbXBsZXRpb25fdG9rZW5zGAcgASgNSASIAQESDAoEc3RvcBgIIAMoCRIOCgFuGAkgASgNSAWIAQESEQoEc2VlZBgKIAEoA0gGiAEBEh4KEWZyZXF1ZW5jeV9wZW5hbHR5GAsgASgCSAeIAQESHQoQcHJlc2VuY2VfcGVuYWx0eRgMIAEoAkgIiAEBEiIKBXRvb2xzGA0gAygLMhMubGxtbGVhZi52MS5Ub29sRGVmEjAKC3Rvb2xfY2hvaWNlGA4gASgLMhYubGxtbGVhZi52MS5Ub29sQ2hvaWNlSAmIAQESOAoPcmVzcG9uc2VfZm9ybWF0GA8gASgLMhoubGxtbGVhZi52MS5SZXNwb25zZUZvcm1hdEgKiAEBEh0KEHJlYXNvbmluZ19lZmZvcnQYECABKAlIC4gBARISCgVleHRyYRgRIAEoCUgMiAEBQgkKB19zdHJlYW1CDgoMX3RlbXBlcmF0dXJlQggKBl90b3BfcEINCgtfbWF4X3Rva2Vuc0IYChZfbWF4X2NvbXBsZXRpb25fdG9rZW5zQgQKAl9uQgcKBV9zZWVkQhQKEl9mcmVxdWVuY3lfcGVuYWx0eUITChFfcHJlc2VuY2VfcGVuYWx0eUIOCgxfdG9vbF9jaG9pY2VCEgoQX3Jlc3BvbnNlX2Zvcm1hdEITChFfcmVhc29uaW5nX2VmZm9ydEIICgZfZXh0cmEiiQEKBkNob2ljZRINCgVpbmRleBgBIAEoDRIoCgdtZXNzYWdlGAIgASgLMhcubGxtbGVhZi52MS5DaGF0TWVzc2FnZRI0Cg1maW5pc2hfcmVhc29uGAMgASgOMhgubGxtbGVhZi52MS5GaW5pc2hSZWFzb25IAIgBAUIQCg5fZmluaXNoX3JlYXNvbiKRAQoMQ2hhdFJlc3BvbnNlEgoKAmlkGAEgASgJEg4KBm9iamVjdBgCIAEoCRIPCgdjcmVhdGVkGAMgASgDEg0KBW1vZGVsGAQgASgJEiMKB2Nob2ljZXMYBSADKAsyEi5sbG1sZWFmLnYxLkNob2ljZRIgCgV1c2FnZRgGIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2Ui5AEKBURlbHRhEiMKBHJvbGUYASABKA4yEC5sbG1sZWFmLnYxLlJvbGVIAIgBARIUCgdjb250ZW50GAIgASgJSAGIAQESLQoKdG9vbF9jYWxscxgDIAMoCzIZLmxsbWxlYWYudjEuVG9vbENhbGxEZWx0YRIWCglyZWFzb25pbmcYBCABKAlIAogBARI2ChFyZWFzb25pbmdfZGV0YWlscxgFIAMoCzIbLmxsbWxlYWYudjEuUmVhc29uaW5nRGV0YWlsQgcKBV9yb2xlQgoKCF9jb250ZW50QgwKCl9yZWFzb25pbmcihgEKC0NodW5rQ2hvaWNlEg0KBWluZGV4GAEgASgNEiAKBWRlbHRhGAIgASgLMhEubGxtbGVhZi52MS5EZWx0YRI0Cg1maW5pc2hfcmVhc29uGAMgASgOMhgubGxtbGVhZi52MS5GaW5pc2hSZWFzb25IAIgBAUIQCg5fZmluaXNoX3JlYXNvbiKsAQoTQ2hhdENvbXBsZXRpb25DaHVuaxIKCgJpZBgBIAEoCRIOCgZvYmplY3QYAiABKAkSDwoHY3JlYXRlZBgDIAEoAxINCgVtb2RlbBgEIAEoCRIoCgdjaG9pY2VzGAUgAygLMhcubGxtbGVhZi52MS5DaHVua0Nob2ljZRIlCgV1c2FnZRgGIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2VIAIgBAUIICgZfdXNhZ2UiqAEKEEVtYmVkZGluZ1JlcXVlc3QSDQoFbW9kZWwYASABKAkSDQoFaW5wdXQYAiADKAkSFwoKZGltZW5zaW9ucxgDIAEoDUgAiAEBEhwKD2VuY29kaW5nX2Zvcm1hdBgEIAEoCUgBiAEBEhIKBWV4dHJhGAUgASgJSAKIAQFCDQoLX2RpbWVuc2lvbnNCEgoQX2VuY29kaW5nX2Zvcm1hdEIICgZfZXh0cmEiPQoJRW1iZWRkaW5nEg4KBm9iamVjdBgBIAEoCRINCgVpbmRleBgCIAEoDRIRCgllbWJlZGRpbmcYAyADKAIieQoRRW1iZWRkaW5nUmVzcG9uc2USDgoGb2JqZWN0GAEgASgJEiMKBGRhdGEYAiADKAsyFS5sbG1sZWFmLnYxLkVtYmVkZGluZxINCgVtb2RlbBgDIAEoCRIgCgV1c2FnZRgEIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2UiqgEKDVNwZWVjaFJlcXVlc3QSDQoFbW9kZWwYASABKAkSDQoFaW5wdXQYAiABKAkSDQoFdm9pY2UYAyABKAkSHAoPcmVzcG9uc2VfZm9ybWF0GAQgASgJSACIAQESEgoFc3BlZWQYBSABKAJIAYgBARISCgVleHRyYRgGIAEoCUgCiAEBQhIKEF9yZXNwb25zZV9mb3JtYXRCCAoGX3NwZWVkQggKBl9leHRyYSJCCgVWb2ljZRIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESEQoJbGFuZ3VhZ2VzGAMgAygJQgcKBV9uYW1lIkIKDlZvaWNlc1Jlc3BvbnNlEg0KBW1vZGVsGAEgASgJEiEKBnZvaWNlcxgCIAMoCzIRLmxsbWxlYWYudjEuVm9pY2UixQEKFFRyYW5zY3JpcHRpb25SZXF1ZXN0Eg0KBW1vZGVsGAEgASgJEhUKCGxhbmd1YWdlGAIgASgJSACIAQESEwoGcHJvbXB0GAMgASgJSAGIAQESHAoPcmVzcG9uc2VfZm9ybWF0GAQgASgJSAKIAQESGAoLdGVtcGVyYXR1cmUYBSABKAJIA4gBAUILCglfbGFuZ3VhZ2VCCQoHX3Byb21wdEISChBfcmVzcG9uc2VfZm9ybWF0Qg4KDF90ZW1wZXJhdHVyZSK6AQoVVHJhbnNjcmlwdGlvblJlc3BvbnNlEgwKBHRleHQYASABKAkSEQoEdGFzaxgCIAEoCUgAiAEBEhUKCGxhbmd1YWdlGAMgASgJSAGIAQESFQoIZHVyYXRpb24YBCABKAJIAogBARIlCgV1c2FnZRgFIAEoCzIRLmxsbWxlYWYudjEuVXNhZ2VIA4gBAUIHCgVfdGFza0ILCglfbGFuZ3VhZ2VCCwoJX2R1cmF0aW9uQggKBl91c2FnZSKoAQoMQXJjaGl0ZWN0dXJlEhgKEGlucHV0X21vZGFsaXRpZXMYASADKAkSGQoRb3V0cHV0X21vZGFsaXRpZXMYAiADKAkSFQoIbW9kYWxpdHkYAyABKAlIAIgBARIRCgl0b2tlbml6ZXIYBCABKAkSGgoNaW5zdHJ1Y3RfdHlwZRgFIAEoCUgBiAEBQgsKCV9tb2RhbGl0eUIQCg5faW5zdHJ1Y3RfdHlwZSItCgdQcmljaW5nEg4KBnByb21wdBgBIAEoCRISCgpjb21wbGV0aW9uGAIgASgJIssBCgtUb3BQcm92aWRlchIbCg5jb250ZXh0X2xlbmd0aBgBIAEoDUgAiAEBEiIKFW1heF9jb21wbGV0aW9uX3Rva2VucxgCIAEoDUgBiAEBEhQKDGlzX21vZGVyYXRlZBgDIAEoCBIgChNtYXhfdGhpbmtpbmdfdG9rZW5zGAQgASgNSAKIAQFCEQoPX2NvbnRleHRfbGVuZ3RoQhgKFl9tYXhfY29tcGxldGlvbl90b2tlbnNCFgoUX21heF90aGlua2luZ190b2tlbnMiTgoNTW9kZWxFbmRwb2ludBIQCghwcm92aWRlchgBIAEoCRINCgVtb2RlbBgCIAEoCRIMCgRkb3duGAMgASgIEg4KBnNvdXJjZRgEIAEoCSLOAwoKTW9kZWxFbnRyeRIKCgJpZBgBIAEoCRIWCg5jYW5vbmljYWxfc2x1ZxgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2NyZWF0ZWQYBCABKAMSEwoLZGVzY3JpcHRpb24YBSABKAkSGwoOY29udGV4dF9sZW5ndGgYBiABKA1IAIgBARIuCgxhcmNoaXRlY3R1cmUYByABKAsyGC5sbG1sZWFmLnYxLkFyY2hpdGVjdHVyZRIpCgdwcmljaW5nGAggASgLMhMubGxtbGVhZi52MS5QcmljaW5nSAGIAQESLQoMdG9wX3Byb3ZpZGVyGAkgASgLMhcubGxtbGVhZi52MS5Ub3BQcm92aWRlchIcChRzdXBwb3J0ZWRfcGFyYW1ldGVycxgKIAMoCRIeChZ1bnN1cHBvcnRlZF9wYXJhbWV0ZXJzGAsgAygJEh8KEmRlZmF1bHRfcGFyYW1ldGVycxgMIAEoCUgCiAEBEiwKCWVuZHBvaW50cxgNIAMoCzIZLmxsbWxlYWYudjEuTW9kZWxFbmRwb2ludEIRCg9fY29udGV4dF9sZW5ndGhCCgoIX3ByaWNpbmdCFQoTX2RlZmF1bHRfcGFyYW1ldGVycyI6ChJMaXN0TW9kZWxzUmVzcG9uc2USJAoEZGF0YRgBIAMoCzIWLmxsbWxlYWYudjEuTW9kZWxFbnRyeSJMChBCYXRjaFJlcXVlc3RJdGVtEhEKCWN1c3RvbV9pZBgBIAEoCRIlCgRib2R5GAIgASgLMhcubGxtbGVhZi52MS5DaGF0UmVxdWVzdCJEChJCYXRjaENyZWF0ZVJlcXVlc3QSLgoIcmVxdWVzdHMYASADKAsyHC5sbG1sZWFmLnYxLkJhdGNoUmVxdWVzdEl0ZW0idwoLQmF0Y2hDb3VudHMSDQoFdG90YWwYASABKAQSEgoKcHJvY2Vzc2luZxgCIAEoBBIRCglzdWNjZWVkZWQYAyABKAQSDwoHZXJyb3JlZBgEIAEoBBIQCghjYW5jZWxlZBgFIAEoBBIPCgdleHBpcmVkGAYgASgEIoMCCgtCYXRjaEhhbmRsZRIKCgJpZBgBIAEoCRInCgZzdGF0dXMYAiABKA4yFy5sbG1sZWFmLnYxLkJhdGNoU3RhdHVzEicKBmNvdW50cxgDIAEoCzIXLmxsbWxlYWYudjEuQmF0Y2hDb3VudHMSFwoKY3JlYXRlZF9hdBgEIAEoA0gAiAEBEhcKCmV4cGlyZXNfYXQYBSABKANIAYgBARIVCghlbmRlZF9hdBgGIAEoA0gCiAEBEhUKCGVuZHBvaW50GAcgASgJSAOIAQFCDQoLX2NyZWF0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCCwoJX2VuZGVkX2F0QgsKCV9lbmRwb2ludCKZAQoPQmF0Y2hSZXN1bHRMaW5lEhEKCWN1c3RvbV9pZBgBIAEoCRIwCghyZXNwb25zZRgCIAEoCzIZLmxsbWxlYWYudjEuQmF0Y2hSZXNwb25zZUgAiAEBEioKBWVycm9yGAMgASgLMhYubGxtbGVhZi52MS5CYXRjaEVycm9ySAGIAQFCCwoJX3Jlc3BvbnNlQggKBl9lcnJvciJMCg1CYXRjaFJlc3BvbnNlEhMKC3N0YXR1c19jb2RlGAEgASgNEiYKBGJvZHkYAiABKAsyGC5sbG1sZWFmLnYxLkNoYXRSZXNwb25zZSIrCgpCYXRjaEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSpLCgRSb2xlEhQKEFJPTEVfVU5TUEVDSUZJRUQQABIKCgZTWVNURU0QARIICgRVU0VSEAISDQoJQVNTSVNUQU5UEAMSCAoEVE9PTBAEKmcKDEZpbmlzaFJlYXNvbhIdChlGSU5JU0hfUkVBU09OX1VOU1BFQ0lGSUVEEAASCAoEU1RPUBABEgoKBkxFTkdUSBACEg4KClRPT0xfQ0FMTFMQAxISCg5DT05URU5UX0ZJTFRFUhAEKqEBCgtCYXRjaFN0YXR1cxIcChhCQVRDSF9TVEFUVVNfVU5TUEVDSUZJRUQQABIOCgpWQUxJREFUSU5HEAESDwoLSU5fUFJPR1JFU1MQAhIOCgpGSU5BTElaSU5HEAMSDQoJQ09NUExFVEVEEAQSCgoGRkFJTEVEEAUSCwoHRVhQSVJFRBAGEg0KCUNBTkNFTElORxAHEgwKCENBTkNFTEVEEAhCWAoXZXUuY29kZWZpb25uLmxsbWxlYWYudjFQAVo7Z2l0aHViLmNvbS9jb2RlZmlvbm4vbGxtbGVhZi9jbGllbnRzL2dvL2xsbWxlYWZwYjtsbG1sZWFmcGJiBnByb3RvMw");
39
39
 
40
40
  /**
41
41
  * Token accounting echoed on every response. `cost_usd` is an llmleaf addition
@@ -64,6 +64,22 @@ export type Usage = Message<"llmleaf.v1.Usage"> & {
64
64
  * @generated from field: optional double cost_usd = 4;
65
65
  */
66
66
  costUsd?: number | undefined;
67
+
68
+ /**
69
+ * Prompt-cache hit accounting, OpenAI-shaped (`usage.prompt_tokens_details`). Absent when the
70
+ * upstream reported no caching. `cached_tokens` is how many of `prompt_tokens` were a cache *read*.
71
+ *
72
+ * @generated from field: optional llmleaf.v1.PromptTokensDetails prompt_tokens_details = 5;
73
+ */
74
+ promptTokensDetails?: PromptTokensDetails | undefined;
75
+
76
+ /**
77
+ * Input tokens written to the provider's prompt cache this request — a cache *write* (creation).
78
+ * An llmleaf extension (Anthropic reports it; OpenAI/OpenRouter do not), absent/0 when there was none.
79
+ *
80
+ * @generated from field: optional uint32 cache_creation_tokens = 6;
81
+ */
82
+ cacheCreationTokens?: number | undefined;
67
83
  };
68
84
 
69
85
  /**
@@ -73,6 +89,26 @@ export type Usage = Message<"llmleaf.v1.Usage"> & {
73
89
  export const UsageSchema: GenMessage<Usage> = /*@__PURE__*/
74
90
  messageDesc(file_llmleaf_v1_llmleaf, 0);
75
91
 
92
+ /**
93
+ * Breakdown of `Usage.prompt_tokens`. Today only the cached (cache-read / hit) share is surfaced —
94
+ * the count of prompt tokens served from the provider's cache rather than processed fresh.
95
+ *
96
+ * @generated from message llmleaf.v1.PromptTokensDetails
97
+ */
98
+ export type PromptTokensDetails = Message<"llmleaf.v1.PromptTokensDetails"> & {
99
+ /**
100
+ * @generated from field: optional uint32 cached_tokens = 1;
101
+ */
102
+ cachedTokens?: number | undefined;
103
+ };
104
+
105
+ /**
106
+ * Describes the message llmleaf.v1.PromptTokensDetails.
107
+ * Use `create(PromptTokensDetailsSchema)` to create a new message.
108
+ */
109
+ export const PromptTokensDetailsSchema: GenMessage<PromptTokensDetails> = /*@__PURE__*/
110
+ messageDesc(file_llmleaf_v1_llmleaf, 1);
111
+
76
112
  /**
77
113
  * The canonical error envelope returned by every endpoint: {"error":{"message":...}}.
78
114
  *
@@ -90,7 +126,7 @@ export type ErrorResponse = Message<"llmleaf.v1.ErrorResponse"> & {
90
126
  * Use `create(ErrorResponseSchema)` to create a new message.
91
127
  */
92
128
  export const ErrorResponseSchema: GenMessage<ErrorResponse> = /*@__PURE__*/
93
- messageDesc(file_llmleaf_v1_llmleaf, 1);
129
+ messageDesc(file_llmleaf_v1_llmleaf, 2);
94
130
 
95
131
  /**
96
132
  * @generated from message llmleaf.v1.ErrorBody
@@ -119,7 +155,7 @@ export type ErrorBody = Message<"llmleaf.v1.ErrorBody"> & {
119
155
  * Use `create(ErrorBodySchema)` to create a new message.
120
156
  */
121
157
  export const ErrorBodySchema: GenMessage<ErrorBody> = /*@__PURE__*/
122
- messageDesc(file_llmleaf_v1_llmleaf, 2);
158
+ messageDesc(file_llmleaf_v1_llmleaf, 3);
123
159
 
124
160
  /**
125
161
  * A single content part for multimodal messages:
@@ -152,7 +188,7 @@ export type ContentPart = Message<"llmleaf.v1.ContentPart"> & {
152
188
  * Use `create(ContentPartSchema)` to create a new message.
153
189
  */
154
190
  export const ContentPartSchema: GenMessage<ContentPart> = /*@__PURE__*/
155
- messageDesc(file_llmleaf_v1_llmleaf, 3);
191
+ messageDesc(file_llmleaf_v1_llmleaf, 4);
156
192
 
157
193
  /**
158
194
  * @generated from message llmleaf.v1.TextPart
@@ -169,7 +205,7 @@ export type TextPart = Message<"llmleaf.v1.TextPart"> & {
169
205
  * Use `create(TextPartSchema)` to create a new message.
170
206
  */
171
207
  export const TextPartSchema: GenMessage<TextPart> = /*@__PURE__*/
172
- messageDesc(file_llmleaf_v1_llmleaf, 4);
208
+ messageDesc(file_llmleaf_v1_llmleaf, 5);
173
209
 
174
210
  /**
175
211
  * @generated from message llmleaf.v1.ImageUrlPart
@@ -193,7 +229,7 @@ export type ImageUrlPart = Message<"llmleaf.v1.ImageUrlPart"> & {
193
229
  * Use `create(ImageUrlPartSchema)` to create a new message.
194
230
  */
195
231
  export const ImageUrlPartSchema: GenMessage<ImageUrlPart> = /*@__PURE__*/
196
- messageDesc(file_llmleaf_v1_llmleaf, 5);
232
+ messageDesc(file_llmleaf_v1_llmleaf, 6);
197
233
 
198
234
  /**
199
235
  * @generated from message llmleaf.v1.ContentParts
@@ -210,7 +246,7 @@ export type ContentParts = Message<"llmleaf.v1.ContentParts"> & {
210
246
  * Use `create(ContentPartsSchema)` to create a new message.
211
247
  */
212
248
  export const ContentPartsSchema: GenMessage<ContentParts> = /*@__PURE__*/
213
- messageDesc(file_llmleaf_v1_llmleaf, 6);
249
+ messageDesc(file_llmleaf_v1_llmleaf, 7);
214
250
 
215
251
  /**
216
252
  * A function the model called. `arguments` is a JSON-encoded string (OpenAI shape).
@@ -234,7 +270,7 @@ export type FunctionCall = Message<"llmleaf.v1.FunctionCall"> & {
234
270
  * Use `create(FunctionCallSchema)` to create a new message.
235
271
  */
236
272
  export const FunctionCallSchema: GenMessage<FunctionCall> = /*@__PURE__*/
237
- messageDesc(file_llmleaf_v1_llmleaf, 7);
273
+ messageDesc(file_llmleaf_v1_llmleaf, 8);
238
274
 
239
275
  /**
240
276
  * @generated from message llmleaf.v1.ToolCall
@@ -263,7 +299,7 @@ export type ToolCall = Message<"llmleaf.v1.ToolCall"> & {
263
299
  * Use `create(ToolCallSchema)` to create a new message.
264
300
  */
265
301
  export const ToolCallSchema: GenMessage<ToolCall> = /*@__PURE__*/
266
- messageDesc(file_llmleaf_v1_llmleaf, 8);
302
+ messageDesc(file_llmleaf_v1_llmleaf, 9);
267
303
 
268
304
  /**
269
305
  * Incremental tool-call fragment on a streaming delta; fields arrive piecemeal.
@@ -287,7 +323,7 @@ export type FunctionCallDelta = Message<"llmleaf.v1.FunctionCallDelta"> & {
287
323
  * Use `create(FunctionCallDeltaSchema)` to create a new message.
288
324
  */
289
325
  export const FunctionCallDeltaSchema: GenMessage<FunctionCallDelta> = /*@__PURE__*/
290
- messageDesc(file_llmleaf_v1_llmleaf, 9);
326
+ messageDesc(file_llmleaf_v1_llmleaf, 10);
291
327
 
292
328
  /**
293
329
  * @generated from message llmleaf.v1.ToolCallDelta
@@ -319,7 +355,80 @@ export type ToolCallDelta = Message<"llmleaf.v1.ToolCallDelta"> & {
319
355
  * Use `create(ToolCallDeltaSchema)` to create a new message.
320
356
  */
321
357
  export const ToolCallDeltaSchema: GenMessage<ToolCallDelta> = /*@__PURE__*/
322
- messageDesc(file_llmleaf_v1_llmleaf, 10);
358
+ messageDesc(file_llmleaf_v1_llmleaf, 11);
359
+
360
+ /**
361
+ * One structured reasoning ("thinking") block, OpenRouter-shaped
362
+ * (`message.reasoning_details[]` / `delta.reasoning_details[]`). It expresses both *open* reasoning
363
+ * (visible text, optionally signed) and *hidden* reasoning (an encrypted/redacted blob the provider
364
+ * returns in place of the text). `type` is the wire discriminator and selects which field is set:
365
+ * "reasoning.text" -> text (+ optional signature) — OPEN (visible reasoning)
366
+ * "reasoning.summary" -> summary — OPEN (a summarised view)
367
+ * "reasoning.encrypted" -> data — HIDDEN (redacted / opaque)
368
+ * `signature` and `data` are opaque to the client and MUST be echoed back verbatim in the next
369
+ * request's reasoning_details to continue a signed/encrypted reasoning turn (the upstream rejects an
370
+ * altered or dropped block — e.g. before a tool call). `format` tags the provider encoding when known.
371
+ *
372
+ * @generated from message llmleaf.v1.ReasoningDetail
373
+ */
374
+ export type ReasoningDetail = Message<"llmleaf.v1.ReasoningDetail"> & {
375
+ /**
376
+ * @generated from field: string type = 1;
377
+ */
378
+ type: string;
379
+
380
+ /**
381
+ * "reasoning.text"
382
+ *
383
+ * @generated from field: optional string text = 2;
384
+ */
385
+ text?: string | undefined;
386
+
387
+ /**
388
+ * "reasoning.summary"
389
+ *
390
+ * @generated from field: optional string summary = 3;
391
+ */
392
+ summary?: string | undefined;
393
+
394
+ /**
395
+ * "reasoning.encrypted" (hidden)
396
+ *
397
+ * @generated from field: optional string data = 4;
398
+ */
399
+ data?: string | undefined;
400
+
401
+ /**
402
+ * opaque, replayed verbatim
403
+ *
404
+ * @generated from field: optional string signature = 5;
405
+ */
406
+ signature?: string | undefined;
407
+
408
+ /**
409
+ * @generated from field: optional string id = 6;
410
+ */
411
+ id?: string | undefined;
412
+
413
+ /**
414
+ * e.g. "anthropic-claude-v1"
415
+ *
416
+ * @generated from field: optional string format = 7;
417
+ */
418
+ format?: string | undefined;
419
+
420
+ /**
421
+ * @generated from field: optional uint32 index = 8;
422
+ */
423
+ index?: number | undefined;
424
+ };
425
+
426
+ /**
427
+ * Describes the message llmleaf.v1.ReasoningDetail.
428
+ * Use `create(ReasoningDetailSchema)` to create a new message.
429
+ */
430
+ export const ReasoningDetailSchema: GenMessage<ReasoningDetail> = /*@__PURE__*/
431
+ messageDesc(file_llmleaf_v1_llmleaf, 12);
323
432
 
324
433
  /**
325
434
  * @generated from message llmleaf.v1.ChatMessage
@@ -365,6 +474,20 @@ export type ChatMessage = Message<"llmleaf.v1.ChatMessage"> & {
365
474
  * @generated from field: optional string tool_call_id = 6;
366
475
  */
367
476
  toolCallId?: string | undefined;
477
+
478
+ /**
479
+ * Reasoning the assistant emitted (OpenRouter surface). `reasoning` is the flat open text; the
480
+ * structured `reasoning_details` additionally carries signatures and hidden/encrypted blocks. Send
481
+ * `reasoning_details` back verbatim on the next turn to preserve signed reasoning (see ReasoningDetail).
482
+ *
483
+ * @generated from field: optional string reasoning = 7;
484
+ */
485
+ reasoning?: string | undefined;
486
+
487
+ /**
488
+ * @generated from field: repeated llmleaf.v1.ReasoningDetail reasoning_details = 8;
489
+ */
490
+ reasoningDetails: ReasoningDetail[];
368
491
  };
369
492
 
370
493
  /**
@@ -372,7 +495,7 @@ export type ChatMessage = Message<"llmleaf.v1.ChatMessage"> & {
372
495
  * Use `create(ChatMessageSchema)` to create a new message.
373
496
  */
374
497
  export const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/
375
- messageDesc(file_llmleaf_v1_llmleaf, 11);
498
+ messageDesc(file_llmleaf_v1_llmleaf, 13);
376
499
 
377
500
  /**
378
501
  * A function the model MAY call. `parameters` is a raw JSON Schema string.
@@ -403,7 +526,7 @@ export type FunctionDef = Message<"llmleaf.v1.FunctionDef"> & {
403
526
  * Use `create(FunctionDefSchema)` to create a new message.
404
527
  */
405
528
  export const FunctionDefSchema: GenMessage<FunctionDef> = /*@__PURE__*/
406
- messageDesc(file_llmleaf_v1_llmleaf, 12);
529
+ messageDesc(file_llmleaf_v1_llmleaf, 14);
407
530
 
408
531
  /**
409
532
  * @generated from message llmleaf.v1.ToolDef
@@ -427,7 +550,7 @@ export type ToolDef = Message<"llmleaf.v1.ToolDef"> & {
427
550
  * Use `create(ToolDefSchema)` to create a new message.
428
551
  */
429
552
  export const ToolDefSchema: GenMessage<ToolDef> = /*@__PURE__*/
430
- messageDesc(file_llmleaf_v1_llmleaf, 13);
553
+ messageDesc(file_llmleaf_v1_llmleaf, 15);
431
554
 
432
555
  /**
433
556
  * tool_choice is either a mode string ("auto"|"none"|"required") or an object
@@ -459,7 +582,7 @@ export type ToolChoice = Message<"llmleaf.v1.ToolChoice"> & {
459
582
  * Use `create(ToolChoiceSchema)` to create a new message.
460
583
  */
461
584
  export const ToolChoiceSchema: GenMessage<ToolChoice> = /*@__PURE__*/
462
- messageDesc(file_llmleaf_v1_llmleaf, 14);
585
+ messageDesc(file_llmleaf_v1_llmleaf, 16);
463
586
 
464
587
  /**
465
588
  * @generated from message llmleaf.v1.NamedToolChoice
@@ -483,7 +606,7 @@ export type NamedToolChoice = Message<"llmleaf.v1.NamedToolChoice"> & {
483
606
  * Use `create(NamedToolChoiceSchema)` to create a new message.
484
607
  */
485
608
  export const NamedToolChoiceSchema: GenMessage<NamedToolChoice> = /*@__PURE__*/
486
- messageDesc(file_llmleaf_v1_llmleaf, 15);
609
+ messageDesc(file_llmleaf_v1_llmleaf, 17);
487
610
 
488
611
  /**
489
612
  * @generated from message llmleaf.v1.FunctionName
@@ -500,7 +623,7 @@ export type FunctionName = Message<"llmleaf.v1.FunctionName"> & {
500
623
  * Use `create(FunctionNameSchema)` to create a new message.
501
624
  */
502
625
  export const FunctionNameSchema: GenMessage<FunctionName> = /*@__PURE__*/
503
- messageDesc(file_llmleaf_v1_llmleaf, 16);
626
+ messageDesc(file_llmleaf_v1_llmleaf, 18);
504
627
 
505
628
  /**
506
629
  * response_format: {"type":"text"|"json_object"|"json_schema", "json_schema": {...}}
@@ -526,7 +649,7 @@ export type ResponseFormat = Message<"llmleaf.v1.ResponseFormat"> & {
526
649
  * Use `create(ResponseFormatSchema)` to create a new message.
527
650
  */
528
651
  export const ResponseFormatSchema: GenMessage<ResponseFormat> = /*@__PURE__*/
529
- messageDesc(file_llmleaf_v1_llmleaf, 17);
652
+ messageDesc(file_llmleaf_v1_llmleaf, 19);
530
653
 
531
654
  /**
532
655
  * @generated from message llmleaf.v1.ChatRequest
@@ -635,7 +758,7 @@ export type ChatRequest = Message<"llmleaf.v1.ChatRequest"> & {
635
758
  * Use `create(ChatRequestSchema)` to create a new message.
636
759
  */
637
760
  export const ChatRequestSchema: GenMessage<ChatRequest> = /*@__PURE__*/
638
- messageDesc(file_llmleaf_v1_llmleaf, 18);
761
+ messageDesc(file_llmleaf_v1_llmleaf, 20);
639
762
 
640
763
  /**
641
764
  * @generated from message llmleaf.v1.Choice
@@ -662,7 +785,7 @@ export type Choice = Message<"llmleaf.v1.Choice"> & {
662
785
  * Use `create(ChoiceSchema)` to create a new message.
663
786
  */
664
787
  export const ChoiceSchema: GenMessage<Choice> = /*@__PURE__*/
665
- messageDesc(file_llmleaf_v1_llmleaf, 19);
788
+ messageDesc(file_llmleaf_v1_llmleaf, 21);
666
789
 
667
790
  /**
668
791
  * @generated from message llmleaf.v1.ChatResponse
@@ -708,7 +831,7 @@ export type ChatResponse = Message<"llmleaf.v1.ChatResponse"> & {
708
831
  * Use `create(ChatResponseSchema)` to create a new message.
709
832
  */
710
833
  export const ChatResponseSchema: GenMessage<ChatResponse> = /*@__PURE__*/
711
- messageDesc(file_llmleaf_v1_llmleaf, 20);
834
+ messageDesc(file_llmleaf_v1_llmleaf, 22);
712
835
 
713
836
  /**
714
837
  * Streaming SSE frame: `data: <ChatCompletionChunk JSON>\n\n`, terminated by
@@ -735,6 +858,19 @@ export type Delta = Message<"llmleaf.v1.Delta"> & {
735
858
  * @generated from field: repeated llmleaf.v1.ToolCallDelta tool_calls = 3;
736
859
  */
737
860
  toolCalls: ToolCallDelta[];
861
+
862
+ /**
863
+ * Incremental reasoning. `reasoning` is open text streamed token-by-token; `reasoning_details`
864
+ * carries structured open/hidden blocks (and their signatures) as they arrive (see ReasoningDetail).
865
+ *
866
+ * @generated from field: optional string reasoning = 4;
867
+ */
868
+ reasoning?: string | undefined;
869
+
870
+ /**
871
+ * @generated from field: repeated llmleaf.v1.ReasoningDetail reasoning_details = 5;
872
+ */
873
+ reasoningDetails: ReasoningDetail[];
738
874
  };
739
875
 
740
876
  /**
@@ -742,7 +878,7 @@ export type Delta = Message<"llmleaf.v1.Delta"> & {
742
878
  * Use `create(DeltaSchema)` to create a new message.
743
879
  */
744
880
  export const DeltaSchema: GenMessage<Delta> = /*@__PURE__*/
745
- messageDesc(file_llmleaf_v1_llmleaf, 21);
881
+ messageDesc(file_llmleaf_v1_llmleaf, 23);
746
882
 
747
883
  /**
748
884
  * @generated from message llmleaf.v1.ChunkChoice
@@ -769,7 +905,7 @@ export type ChunkChoice = Message<"llmleaf.v1.ChunkChoice"> & {
769
905
  * Use `create(ChunkChoiceSchema)` to create a new message.
770
906
  */
771
907
  export const ChunkChoiceSchema: GenMessage<ChunkChoice> = /*@__PURE__*/
772
- messageDesc(file_llmleaf_v1_llmleaf, 22);
908
+ messageDesc(file_llmleaf_v1_llmleaf, 24);
773
909
 
774
910
  /**
775
911
  * @generated from message llmleaf.v1.ChatCompletionChunk
@@ -815,7 +951,7 @@ export type ChatCompletionChunk = Message<"llmleaf.v1.ChatCompletionChunk"> & {
815
951
  * Use `create(ChatCompletionChunkSchema)` to create a new message.
816
952
  */
817
953
  export const ChatCompletionChunkSchema: GenMessage<ChatCompletionChunk> = /*@__PURE__*/
818
- messageDesc(file_llmleaf_v1_llmleaf, 23);
954
+ messageDesc(file_llmleaf_v1_llmleaf, 25);
819
955
 
820
956
  /**
821
957
  * @generated from message llmleaf.v1.EmbeddingRequest
@@ -858,7 +994,7 @@ export type EmbeddingRequest = Message<"llmleaf.v1.EmbeddingRequest"> & {
858
994
  * Use `create(EmbeddingRequestSchema)` to create a new message.
859
995
  */
860
996
  export const EmbeddingRequestSchema: GenMessage<EmbeddingRequest> = /*@__PURE__*/
861
- messageDesc(file_llmleaf_v1_llmleaf, 24);
997
+ messageDesc(file_llmleaf_v1_llmleaf, 26);
862
998
 
863
999
  /**
864
1000
  * @generated from message llmleaf.v1.Embedding
@@ -889,7 +1025,7 @@ export type Embedding = Message<"llmleaf.v1.Embedding"> & {
889
1025
  * Use `create(EmbeddingSchema)` to create a new message.
890
1026
  */
891
1027
  export const EmbeddingSchema: GenMessage<Embedding> = /*@__PURE__*/
892
- messageDesc(file_llmleaf_v1_llmleaf, 25);
1028
+ messageDesc(file_llmleaf_v1_llmleaf, 27);
893
1029
 
894
1030
  /**
895
1031
  * @generated from message llmleaf.v1.EmbeddingResponse
@@ -923,7 +1059,7 @@ export type EmbeddingResponse = Message<"llmleaf.v1.EmbeddingResponse"> & {
923
1059
  * Use `create(EmbeddingResponseSchema)` to create a new message.
924
1060
  */
925
1061
  export const EmbeddingResponseSchema: GenMessage<EmbeddingResponse> = /*@__PURE__*/
926
- messageDesc(file_llmleaf_v1_llmleaf, 26);
1062
+ messageDesc(file_llmleaf_v1_llmleaf, 28);
927
1063
 
928
1064
  /**
929
1065
  * @generated from message llmleaf.v1.SpeechRequest
@@ -969,7 +1105,7 @@ export type SpeechRequest = Message<"llmleaf.v1.SpeechRequest"> & {
969
1105
  * Use `create(SpeechRequestSchema)` to create a new message.
970
1106
  */
971
1107
  export const SpeechRequestSchema: GenMessage<SpeechRequest> = /*@__PURE__*/
972
- messageDesc(file_llmleaf_v1_llmleaf, 27);
1108
+ messageDesc(file_llmleaf_v1_llmleaf, 29);
973
1109
 
974
1110
  /**
975
1111
  * @generated from message llmleaf.v1.Voice
@@ -1000,7 +1136,7 @@ export type Voice = Message<"llmleaf.v1.Voice"> & {
1000
1136
  * Use `create(VoiceSchema)` to create a new message.
1001
1137
  */
1002
1138
  export const VoiceSchema: GenMessage<Voice> = /*@__PURE__*/
1003
- messageDesc(file_llmleaf_v1_llmleaf, 28);
1139
+ messageDesc(file_llmleaf_v1_llmleaf, 30);
1004
1140
 
1005
1141
  /**
1006
1142
  * @generated from message llmleaf.v1.VoicesResponse
@@ -1022,7 +1158,7 @@ export type VoicesResponse = Message<"llmleaf.v1.VoicesResponse"> & {
1022
1158
  * Use `create(VoicesResponseSchema)` to create a new message.
1023
1159
  */
1024
1160
  export const VoicesResponseSchema: GenMessage<VoicesResponse> = /*@__PURE__*/
1025
- messageDesc(file_llmleaf_v1_llmleaf, 29);
1161
+ messageDesc(file_llmleaf_v1_llmleaf, 31);
1026
1162
 
1027
1163
  /**
1028
1164
  * The audio file itself is sent as the multipart `file` part, NOT in this message;
@@ -1068,7 +1204,7 @@ export type TranscriptionRequest = Message<"llmleaf.v1.TranscriptionRequest"> &
1068
1204
  * Use `create(TranscriptionRequestSchema)` to create a new message.
1069
1205
  */
1070
1206
  export const TranscriptionRequestSchema: GenMessage<TranscriptionRequest> = /*@__PURE__*/
1071
- messageDesc(file_llmleaf_v1_llmleaf, 30);
1207
+ messageDesc(file_llmleaf_v1_llmleaf, 32);
1072
1208
 
1073
1209
  /**
1074
1210
  * For response_format json/verbose_json. text/srt/vtt return a plain-text body.
@@ -1109,7 +1245,7 @@ export type TranscriptionResponse = Message<"llmleaf.v1.TranscriptionResponse">
1109
1245
  * Use `create(TranscriptionResponseSchema)` to create a new message.
1110
1246
  */
1111
1247
  export const TranscriptionResponseSchema: GenMessage<TranscriptionResponse> = /*@__PURE__*/
1112
- messageDesc(file_llmleaf_v1_llmleaf, 31);
1248
+ messageDesc(file_llmleaf_v1_llmleaf, 33);
1113
1249
 
1114
1250
  /**
1115
1251
  * @generated from message llmleaf.v1.Architecture
@@ -1148,7 +1284,7 @@ export type Architecture = Message<"llmleaf.v1.Architecture"> & {
1148
1284
  * Use `create(ArchitectureSchema)` to create a new message.
1149
1285
  */
1150
1286
  export const ArchitectureSchema: GenMessage<Architecture> = /*@__PURE__*/
1151
- messageDesc(file_llmleaf_v1_llmleaf, 32);
1287
+ messageDesc(file_llmleaf_v1_llmleaf, 34);
1152
1288
 
1153
1289
  /**
1154
1290
  * @generated from message llmleaf.v1.Pricing
@@ -1172,7 +1308,7 @@ export type Pricing = Message<"llmleaf.v1.Pricing"> & {
1172
1308
  * Use `create(PricingSchema)` to create a new message.
1173
1309
  */
1174
1310
  export const PricingSchema: GenMessage<Pricing> = /*@__PURE__*/
1175
- messageDesc(file_llmleaf_v1_llmleaf, 33);
1311
+ messageDesc(file_llmleaf_v1_llmleaf, 35);
1176
1312
 
1177
1313
  /**
1178
1314
  * @generated from message llmleaf.v1.TopProvider
@@ -1206,7 +1342,7 @@ export type TopProvider = Message<"llmleaf.v1.TopProvider"> & {
1206
1342
  * Use `create(TopProviderSchema)` to create a new message.
1207
1343
  */
1208
1344
  export const TopProviderSchema: GenMessage<TopProvider> = /*@__PURE__*/
1209
- messageDesc(file_llmleaf_v1_llmleaf, 34);
1345
+ messageDesc(file_llmleaf_v1_llmleaf, 36);
1210
1346
 
1211
1347
  /**
1212
1348
  * Admin-only fallback-chain entry (present only with a valid x-admin-token).
@@ -1242,7 +1378,7 @@ export type ModelEndpoint = Message<"llmleaf.v1.ModelEndpoint"> & {
1242
1378
  * Use `create(ModelEndpointSchema)` to create a new message.
1243
1379
  */
1244
1380
  export const ModelEndpointSchema: GenMessage<ModelEndpoint> = /*@__PURE__*/
1245
- messageDesc(file_llmleaf_v1_llmleaf, 35);
1381
+ messageDesc(file_llmleaf_v1_llmleaf, 37);
1246
1382
 
1247
1383
  /**
1248
1384
  * @generated from message llmleaf.v1.ModelEntry
@@ -1323,7 +1459,7 @@ export type ModelEntry = Message<"llmleaf.v1.ModelEntry"> & {
1323
1459
  * Use `create(ModelEntrySchema)` to create a new message.
1324
1460
  */
1325
1461
  export const ModelEntrySchema: GenMessage<ModelEntry> = /*@__PURE__*/
1326
- messageDesc(file_llmleaf_v1_llmleaf, 36);
1462
+ messageDesc(file_llmleaf_v1_llmleaf, 38);
1327
1463
 
1328
1464
  /**
1329
1465
  * @generated from message llmleaf.v1.ListModelsResponse
@@ -1340,7 +1476,7 @@ export type ListModelsResponse = Message<"llmleaf.v1.ListModelsResponse"> & {
1340
1476
  * Use `create(ListModelsResponseSchema)` to create a new message.
1341
1477
  */
1342
1478
  export const ListModelsResponseSchema: GenMessage<ListModelsResponse> = /*@__PURE__*/
1343
- messageDesc(file_llmleaf_v1_llmleaf, 37);
1479
+ messageDesc(file_llmleaf_v1_llmleaf, 39);
1344
1480
 
1345
1481
  /**
1346
1482
  * @generated from message llmleaf.v1.BatchRequestItem
@@ -1362,7 +1498,7 @@ export type BatchRequestItem = Message<"llmleaf.v1.BatchRequestItem"> & {
1362
1498
  * Use `create(BatchRequestItemSchema)` to create a new message.
1363
1499
  */
1364
1500
  export const BatchRequestItemSchema: GenMessage<BatchRequestItem> = /*@__PURE__*/
1365
- messageDesc(file_llmleaf_v1_llmleaf, 38);
1501
+ messageDesc(file_llmleaf_v1_llmleaf, 40);
1366
1502
 
1367
1503
  /**
1368
1504
  * @generated from message llmleaf.v1.BatchCreateRequest
@@ -1379,7 +1515,7 @@ export type BatchCreateRequest = Message<"llmleaf.v1.BatchCreateRequest"> & {
1379
1515
  * Use `create(BatchCreateRequestSchema)` to create a new message.
1380
1516
  */
1381
1517
  export const BatchCreateRequestSchema: GenMessage<BatchCreateRequest> = /*@__PURE__*/
1382
- messageDesc(file_llmleaf_v1_llmleaf, 39);
1518
+ messageDesc(file_llmleaf_v1_llmleaf, 41);
1383
1519
 
1384
1520
  /**
1385
1521
  * @generated from message llmleaf.v1.BatchCounts
@@ -1421,7 +1557,7 @@ export type BatchCounts = Message<"llmleaf.v1.BatchCounts"> & {
1421
1557
  * Use `create(BatchCountsSchema)` to create a new message.
1422
1558
  */
1423
1559
  export const BatchCountsSchema: GenMessage<BatchCounts> = /*@__PURE__*/
1424
- messageDesc(file_llmleaf_v1_llmleaf, 40);
1560
+ messageDesc(file_llmleaf_v1_llmleaf, 42);
1425
1561
 
1426
1562
  /**
1427
1563
  * @generated from message llmleaf.v1.BatchHandle
@@ -1470,7 +1606,7 @@ export type BatchHandle = Message<"llmleaf.v1.BatchHandle"> & {
1470
1606
  * Use `create(BatchHandleSchema)` to create a new message.
1471
1607
  */
1472
1608
  export const BatchHandleSchema: GenMessage<BatchHandle> = /*@__PURE__*/
1473
- messageDesc(file_llmleaf_v1_llmleaf, 41);
1609
+ messageDesc(file_llmleaf_v1_llmleaf, 43);
1474
1610
 
1475
1611
  /**
1476
1612
  * One line of the JSONL results stream (GET /v1/batches/{id}/results).
@@ -1499,7 +1635,7 @@ export type BatchResultLine = Message<"llmleaf.v1.BatchResultLine"> & {
1499
1635
  * Use `create(BatchResultLineSchema)` to create a new message.
1500
1636
  */
1501
1637
  export const BatchResultLineSchema: GenMessage<BatchResultLine> = /*@__PURE__*/
1502
- messageDesc(file_llmleaf_v1_llmleaf, 42);
1638
+ messageDesc(file_llmleaf_v1_llmleaf, 44);
1503
1639
 
1504
1640
  /**
1505
1641
  * @generated from message llmleaf.v1.BatchResponse
@@ -1521,7 +1657,7 @@ export type BatchResponse = Message<"llmleaf.v1.BatchResponse"> & {
1521
1657
  * Use `create(BatchResponseSchema)` to create a new message.
1522
1658
  */
1523
1659
  export const BatchResponseSchema: GenMessage<BatchResponse> = /*@__PURE__*/
1524
- messageDesc(file_llmleaf_v1_llmleaf, 43);
1660
+ messageDesc(file_llmleaf_v1_llmleaf, 45);
1525
1661
 
1526
1662
  /**
1527
1663
  * @generated from message llmleaf.v1.BatchError
@@ -1543,7 +1679,7 @@ export type BatchError = Message<"llmleaf.v1.BatchError"> & {
1543
1679
  * Use `create(BatchErrorSchema)` to create a new message.
1544
1680
  */
1545
1681
  export const BatchErrorSchema: GenMessage<BatchError> = /*@__PURE__*/
1546
- messageDesc(file_llmleaf_v1_llmleaf, 44);
1682
+ messageDesc(file_llmleaf_v1_llmleaf, 46);
1547
1683
 
1548
1684
  /**
1549
1685
  * @generated from enum llmleaf.v1.Role
package/src/index.ts CHANGED
@@ -24,15 +24,20 @@ export {
24
24
  enumFromWire,
25
25
  } from "./enums.js";
26
26
 
27
+ // Ergonomic accessor for the cached-prompt-tokens count on a Usage.
28
+ export { cachedTokens } from "./types.js";
29
+
27
30
  // The public typed model.
28
31
  export type {
29
32
  Usage,
33
+ PromptTokensDetails,
30
34
  TextPart,
31
35
  ImageUrlPart,
32
36
  ContentPart,
33
37
  MessageContent,
34
38
  FunctionCall,
35
39
  ToolCall,
40
+ ReasoningDetail,
36
41
  ChatMessage,
37
42
  FunctionDef,
38
43
  ToolDef,