@everfur/sdk 0.5.7 → 0.5.9

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 (138) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{Chat-C8OR_AI2.d.ts → Chat-C9dVhnyt.d.ts} +3 -3
  3. package/dist/{Chat-GrVxqwYw.d.cts → Chat-WmdRwC3b.d.cts} +3 -3
  4. package/dist/{DepthViews-CUjaiKlo.d.ts → DepthViews-CBoI9EYy.d.ts} +1 -1
  5. package/dist/{DepthViews-CKO66Myd.d.ts → DepthViews-CmxhM8iP.d.ts} +1 -1
  6. package/dist/{DepthViews-DGH2wGj_.d.cts → DepthViews-DoODlUnQ.d.cts} +1 -1
  7. package/dist/{DepthViews-D37_RviC.d.cts → DepthViews-NPFtO5Kz.d.cts} +1 -1
  8. package/dist/animations/index.cjs +1 -1
  9. package/dist/animations/index.d.cts +3 -3
  10. package/dist/animations/index.d.ts +3 -3
  11. package/dist/animations/index.js +1 -1
  12. package/dist/{attachments-BB1UJWnE.d.ts → attachments-CuFT1o5q.d.ts} +5 -5
  13. package/dist/{attachments-whGKD6W3.d.cts → attachments-OaW36D0H.d.cts} +2 -2
  14. package/dist/{attachments-CGwqUqKv.d.ts → attachments-R2oajKPT.d.ts} +2 -2
  15. package/dist/{attachments-BoAvTNhc.d.cts → attachments-c4mJcIWU.d.cts} +5 -5
  16. package/dist/{bookingCopy-CR1OG51t.d.cts → bookingCopy-DGQPrisa.d.cts} +2 -2
  17. package/dist/{bookingCopy-fV30DkIz.d.ts → bookingCopy-EtPJ4nME.d.ts} +2 -2
  18. package/dist/{branding-xpQ056sM.d.ts → branding-DiaCIJZL.d.cts} +2 -2
  19. package/dist/{branding-Xb_wL8N1.d.cts → branding-Ry0em51L.d.ts} +2 -2
  20. package/dist/{casesRepository-C8Lbu2hu.d.ts → casesRepository-Cu8h8gQK.d.ts} +1 -1
  21. package/dist/{casesRepository-DQd1BzeU.d.cts → casesRepository-DB5c8AAo.d.cts} +1 -1
  22. package/dist/chat/index.cjs +1 -1
  23. package/dist/chat/index.d.cts +9 -9
  24. package/dist/chat/index.d.ts +9 -9
  25. package/dist/chat/index.js +1 -1
  26. package/dist/client/index.cjs +4 -4
  27. package/dist/client/index.d.cts +10 -10
  28. package/dist/client/index.d.ts +10 -10
  29. package/dist/client/index.js +4 -4
  30. package/dist/{config-1sjsfSqw.d.cts → config-DQFMkaTU.d.cts} +1 -1
  31. package/dist/{config-CRqlaRdm.d.ts → config-DlR_I-0S.d.ts} +1 -1
  32. package/dist/consent/index.cjs +1 -1
  33. package/dist/consent/index.d.cts +5 -5
  34. package/dist/consent/index.d.ts +5 -5
  35. package/dist/consent/index.js +1 -1
  36. package/dist/{context-CptFbEl3.d.ts → context-CLuquPRB.d.ts} +7 -7
  37. package/dist/{context-6TkTwYWz.d.cts → context-DZEieVJ5.d.cts} +7 -7
  38. package/dist/{copy-Cbh62Ahp.d.cts → copy-B2DOzSSy.d.cts} +2 -2
  39. package/dist/{copy-fyJWwXLB.d.ts → copy-ptTCT5-J.d.ts} +2 -2
  40. package/dist/core/index.cjs +7 -7
  41. package/dist/core/index.d.cts +15 -15
  42. package/dist/core/index.d.ts +15 -15
  43. package/dist/core/index.js +7 -7
  44. package/dist/{depth-CFvkrm5i.d.ts → depth-CtyC7HOF.d.ts} +2 -2
  45. package/dist/{depth-A0lzfsHw.d.cts → depth-DuOyvthD.d.cts} +2 -2
  46. package/dist/{entitlementRepository-B9Nrivmd.d.ts → entitlementRepository-CAtyh8Xt.d.ts} +3 -3
  47. package/dist/{entitlementRepository-CCY6wtld.d.cts → entitlementRepository-DlGwxZ1k.d.cts} +3 -3
  48. package/dist/{identity-CQ_S12DE.d.cts → identity-BC9AF3y4.d.cts} +1 -1
  49. package/dist/{identity-sKp5WoCR.d.ts → identity-D_NR9ucT.d.ts} +1 -1
  50. package/dist/index.cjs +6 -6
  51. package/dist/index.d.cts +16 -16
  52. package/dist/index.d.ts +16 -16
  53. package/dist/index.js +6 -6
  54. package/dist/notifications/index.d.cts +2 -2
  55. package/dist/notifications/index.d.ts +2 -2
  56. package/dist/{pets-CO8D9-_Q.d.cts → pets-D7UjvR1A.d.cts} +1 -1
  57. package/dist/{pets-u62Gt8RO.d.ts → pets-DuuNvKTK.d.ts} +1 -1
  58. package/dist/{petsRepository-3anNlfb7.d.ts → petsRepository-C28NKFwy.d.ts} +1 -1
  59. package/dist/{petsRepository-BXOEFjRd.d.cts → petsRepository-llMvpMkp.d.cts} +1 -1
  60. package/dist/photo/index.cjs +1 -1
  61. package/dist/photo/index.js +1 -1
  62. package/dist/{ports-DoJgREyr.d.cts → ports-Dbw2h_M1.d.cts} +25 -6
  63. package/dist/{ports-BlKQDOwZ.d.ts → ports-s45HNNyc.d.ts} +25 -6
  64. package/dist/records/depth/index.cjs +1 -1
  65. package/dist/records/depth/index.d.cts +7 -7
  66. package/dist/records/depth/index.d.ts +7 -7
  67. package/dist/records/depth/index.js +1 -1
  68. package/dist/records/index.cjs +3 -3
  69. package/dist/records/index.d.cts +9 -9
  70. package/dist/records/index.d.ts +9 -9
  71. package/dist/records/index.js +3 -3
  72. package/dist/{requestFunnel-Cz3zOMJo.d.ts → requestFunnel-CqwOiZNJ.d.ts} +2 -2
  73. package/dist/{requestFunnel-iJJcNuWp.d.cts → requestFunnel-D_o7se38.d.cts} +2 -2
  74. package/dist/{runtimeTypes-CrAbk27V.d.cts → runtimeTypes-BNBENMkz.d.cts} +5 -5
  75. package/dist/{runtimeTypes-L-KYBPq-.d.ts → runtimeTypes-DS0RLoKN.d.ts} +5 -5
  76. package/dist/server/events/index.cjs +1 -1
  77. package/dist/server/events/index.d.cts +2 -2
  78. package/dist/server/events/index.d.ts +2 -2
  79. package/dist/server/events/index.js +1 -1
  80. package/dist/server/index.cjs +1 -1
  81. package/dist/server/index.d.cts +3 -3
  82. package/dist/server/index.d.ts +3 -3
  83. package/dist/server/index.js +1 -1
  84. package/dist/televet/booking/index.cjs +1 -1
  85. package/dist/televet/booking/index.d.cts +6 -6
  86. package/dist/televet/booking/index.d.ts +6 -6
  87. package/dist/televet/booking/index.js +1 -1
  88. package/dist/televet/call/index.cjs +1 -1
  89. package/dist/televet/call/index.js +1 -1
  90. package/dist/televet/index.cjs +1 -1
  91. package/dist/televet/index.js +1 -1
  92. package/dist/testing/index.d.cts +1 -1
  93. package/dist/testing/index.d.ts +1 -1
  94. package/dist/testing/rn/index.cjs +1 -1
  95. package/dist/testing/rn/index.d.cts +9 -9
  96. package/dist/testing/rn/index.d.ts +9 -9
  97. package/dist/testing/rn/index.js +1 -1
  98. package/dist/testing/web/index.d.cts +9 -9
  99. package/dist/testing/web/index.d.ts +9 -9
  100. package/dist/{timelineRows-CtCZFBTj.d.cts → timelineRows-B6nCq30k.d.cts} +1 -1
  101. package/dist/{timelineRows-BORU0Ybg.d.ts → timelineRows-DacfDpDU.d.ts} +1 -1
  102. package/dist/{tokens-CIngRkvt.d.cts → tokens-DOTIxrws.d.cts} +8 -1
  103. package/dist/{tokens-CIngRkvt.d.ts → tokens-DOTIxrws.d.ts} +8 -1
  104. package/dist/{typeStyle-YPS_MXeI.d.ts → typeStyle-DROhJNkh.d.ts} +2 -2
  105. package/dist/{typeStyle-DHJzDaUo.d.cts → typeStyle-achxqQ-h.d.cts} +2 -2
  106. package/dist/{useRecordsDepth-C9jITKwj.d.cts → useRecordsDepth-BLK8W646.d.cts} +1 -1
  107. package/dist/{useRecordsDepth-CLtpeQHl.d.ts → useRecordsDepth-C7guUoLc.d.ts} +1 -1
  108. package/dist/video/index.cjs +1 -1
  109. package/dist/video/index.js +1 -1
  110. package/dist/{view-BDSk7WW0.d.ts → view-B6JsD22K.d.ts} +2 -2
  111. package/dist/{view-B7Mz1TyH.d.cts → view-BF9oW2GJ.d.cts} +2 -2
  112. package/dist/web/consent/index.cjs +1 -1
  113. package/dist/web/consent/index.d.cts +5 -5
  114. package/dist/web/consent/index.d.ts +5 -5
  115. package/dist/web/consent/index.js +1 -1
  116. package/dist/web/index.cjs +7 -7
  117. package/dist/web/index.d.cts +19 -19
  118. package/dist/web/index.d.ts +19 -19
  119. package/dist/web/index.js +7 -7
  120. package/dist/web/notifications/index.d.cts +3 -3
  121. package/dist/web/notifications/index.d.ts +3 -3
  122. package/dist/web/records/depth/index.cjs +1 -1
  123. package/dist/web/records/depth/index.d.cts +7 -7
  124. package/dist/web/records/depth/index.d.ts +7 -7
  125. package/dist/web/records/depth/index.js +1 -1
  126. package/dist/web/records/index.cjs +1 -1
  127. package/dist/web/records/index.d.cts +9 -9
  128. package/dist/web/records/index.d.ts +9 -9
  129. package/dist/web/records/index.js +1 -1
  130. package/dist/web/televet/booking/index.cjs +1 -1
  131. package/dist/web/televet/booking/index.d.cts +7 -7
  132. package/dist/web/televet/booking/index.d.ts +7 -7
  133. package/dist/web/televet/booking/index.js +1 -1
  134. package/dist/web/televet/call/index.cjs +1 -1
  135. package/dist/web/televet/call/index.js +1 -1
  136. package/dist/web/televet/index.cjs +1 -1
  137. package/dist/web/televet/index.js +1 -1
  138. package/package.json +1 -1
@@ -1 +1 @@
1
- import {createContext,forwardRef,useState,useEffect,useCallback,useSyncExternalStore,useMemo,createElement,useContext,Component,useRef}from'react';import {TextInput,View,Pressable,ScrollView,StyleSheet,Text,Animated,Easing}from'react-native';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var $t=Object.defineProperty;var i=(e,t)=>$t(e,"name",{value:t,configurable:true});var oe=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(oe.map(e=>e.wireCode));var Jt=Object.freeze({ValidationException:"validationFailed",AuthorizationException:"authRejected",PaymentRequiredException:"paymentRequired",AccessDeniedException:"accessDenied",ResourceNotFoundException:"resourceNotFound",ConflictException:"conflict",ThrottlingException:"rateLimited",InternalFailureException:"internalError",NotImplementedException:"notImplemented",ServiceUnavailableException:"serviceUnavailable",MethodNotAllowedException:"validationFailed",authExpired:"authExpired",unavailable:"serviceUnavailable",session_required:"sessionRequired",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",event_cursor_invalid:"validationFailed",event_filter_invalid:"validationFailed",event_payload_invalid:"validationFailed",event_type_unknown:"validationFailed",idempotency_key_invalid:"validationFailed",idempotency_key_required:"validationFailed",idempotency_key_reused:"idempotencyConflict",payload_too_large:"validationFailed",webhook_url_rejected:"validationFailed",webhook_endpoint_update_empty:"validationFailed",webhook_endpoint_update_invalid:"validationFailed",event_type_not_available:"conflict",record_subject_not_found:"resourceNotFound",records_consent_required:"conflict",record_species_unsupported:"validationFailed",record_upload_invalid:"validationFailed",FILE_TOO_LARGE:"validationFailed",INVALID_CONTENT_TYPE:"validationFailed",attachment_unreadable:"validationFailed",provider_unsupported:"validationFailed",token_invalid:"validationFailed",device_cipher_unavailable:"serviceUnavailable",email_invalid:"validationFailed",consent_required:"validationFailed",consent_invalid:"validationFailed",consent_scope_wrong_route:"validationFailed",IDEMPOTENCY_KEY_IN_FLIGHT:"idempotencyInFlight",IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST:"idempotencyConflict",DAILY_QUOTA_EXCEEDED:"quotaExceeded",TIER_UPGRADE_REQUIRED:"paymentRequired",not_found:"conversationNotFound",timeout:"streamTimeout",internal_error:"internalError",invalid_request:"validationFailed",invalid_client:"authRejected",invalid_grant:"authRejected",unsupported_grant_type:"validationFailed",invalid_scope:"validationFailed",invalid_target:"validationFailed",invalid_redirect_uri:"validationFailed",invalid_client_metadata:"validationFailed",unsupported_response_type:"validationFailed",access_denied:"accessDenied",slow_down:"rateLimited",mcp_request_not_found:"resourceNotFound",mcp_request_gone:"resourceNotFound",mcp_connection_not_found:"resourceNotFound",mcp_request_conflict:"conflict",sandbox_only:"accessDenied",tenant_has_no_capabilities:"conflict",verify_mint_refused:"accessDenied",verify_mint_rate_limited:"rateLimited",verify_mint_unavailable:"serviceUnavailable",verify_user_ref_invalid:"validationFailed",insufficient_scope:"accessDenied",tenant_filter_invalid:"validationFailed",tenant_resource_not_found:"resourceNotFound",tenant_surface_not_enabled:"conflict",pet_health_species_unsupported:"validationFailed",pet_health_list_removals_unconfirmed:"validationFailed",petRefInUse:"conflict",share_limit_reached:"conflict",pet_not_registered:"resourceNotFound",species_unsupported:"validationFailed",partner_visit_owner_only:"accessDenied",partner_visit_link_conflict:"conflict",partner_visit_pet_already_mapped:"conflict"}),De=Object.freeze(oe.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Jt[e.wireCode]}))),Qt=new Map(De.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Xt=Object.freeze(["http_envelope",...[...new Set(De.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function V(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...Xt]){let n=Qt.get(o+r);if(n)return n}}i(V,"contractErrorFor");function Zt(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}i(Zt,"contractDocUrl");function Ne(e){return null}i(Ne,"publishedDocUrl");var er=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"invalidRequest",conversationNotFound:"notFound",petNotFound:"notFound",resourceNotFound:"notFound",conflict:"conflict",idempotencyConflict:"conflict",idempotencyInFlight:"conflict",streamTimeout:"connection",streamIncomplete:"connection",upstreamLlmTimeout:"connection",serviceUnavailable:"connection",internalError:"server",notImplemented:"server",mediaUploadFailed:"media",moderationBlocked:"policy",unknown:"unknown"});function Le(e){return er[e]}i(Le,"categoryFor");function Me(e){let t=V(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":case "TELEVETRATELIMITED":return "rateLimited";case "IDEMPOTENCYKEYCONFLICT":case "IDEMPOTENCYCONFLICT":return "idempotencyConflict";case "ACCESSDENIED":case "FORBIDDEN":return "accessDenied";case "NOTFOUND":case "CONVERSATIONNOTFOUND":return "conversationNotFound";case "PETNOTFOUND":return "petNotFound";case "TIMEOUT":case "STREAMTIMEOUT":return "streamTimeout";case "MEDIAUPLOADFAILED":case "UNRECOGNIZEDVIDEOFORMAT":case "FILETOOSMALL":return "mediaUploadFailed";case "MODERATIONBLOCKED":return "moderationBlocked";case "UPSTREAMLLMTIMEOUT":return "upstreamLlmTimeout";case "INTERNALERROR":case "INTERNALSERVERERROR":return "internalError";case "STREAMINCOMPLETE":case "CHATSTREAMINCOMPLETE":return "streamIncomplete";case "INVALIDANALYSISTYPE":case "INVALIDUPLOADPURPOSE":return "unknown";default:return "unknown"}}i(Me,"fromWire");var tr=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function ie(e){return tr.has(e)}i(ie,"isAutoRetryable");var rr=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function Ue(e){return ie(e)||rr.has(e)}i(Ue,"isRetryableCode");var nr=500,ae=8e3,Be=4;function qe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(nr*2**r,ae);return Math.floor(t()*o)}i(qe,"backoffDelayMs");var or=Object.freeze({authExpired:"Please sign in again to continue.",authRejected:"Please sign in again to continue.",sessionRequired:"This app needs to be updated to keep using Everfur.",accessDenied:"This feature isn't available on your account right now.",paymentRequired:"This is part of a paid plan.",quotaExceeded:"You have used today's messages. This resets tomorrow.",rateLimited:"You are sending messages quickly. Try again in a few seconds.",validationFailed:"Something in that request was not right. Check the details and try again.",sdkUpdateRequired:"This app needs to be updated to keep using Everfur.",conflict:"That is already running. Wait for it to finish, then try again.",idempotencyConflict:"That message was already delivered.",idempotencyInFlight:"That is still processing. Give it a moment.",conversationNotFound:"This conversation is no longer available.",petNotFound:"We could not find that pet. Please pick a pet and try again.",resourceNotFound:"We could not find that.",streamTimeout:"The response timed out. Tap retry to try again.",mediaUploadFailed:"We could not upload that photo. Please attach it again.",moderationBlocked:"This request cannot be answered here.",upstreamLlmTimeout:"The response timed out. Tap retry to try again.",internalError:"We hit a snag on our end. Please try again.",notImplemented:"That is not available yet.",serviceUnavailable:"That service is briefly unavailable. Try again shortly.",streamIncomplete:"The connection dropped mid-answer. Tap retry to continue.",unknown:"Something went wrong. Please try again."});function se(e){return or[e]}i(se,"userFacingError");function He(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}i(He,"defineHidden");var ir=/^[a-z][a-z0-9_]{0,63}$/;function f(e,t){let r=V(t?.wireCode,t?.wireEnvelope),o={code:e,category:Le(e),retryable:t?.retryable??Ue(e),displayMessage:se(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&ir.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&He(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&He(o,"raw",t.raw),Object.freeze(o)}i(f,"makeEverfurError");function z(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}i(z,"ok");function y(e){return Object.freeze({ok:false,error:e})}i(y,"err");var K=class K extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,K.prototype);}};i(K,"EverfurConfigError");var I=K;function j(e){throw new Error(`assertNever: unhandled discriminated-union member ${JSON.stringify(e)}`)}i(j,"assertNever");function Ve(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}i(Ve,"errorFrame");function lr(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}i(lr,"authHeaders");function D(e,t){return {...e,headers:{...dr(e.headers),...lr(t)}}}i(D,"withAuthHeaders");function dr(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let n=r.toLowerCase();n==="authorization"||n==="x-everfur-partner-key"||(t[r]=o);}return t}i(dr,"stripAuthHeaders");async function Ke(e,t){if(t.mode==="anonymous")return t.transport.request(D(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return y(le())}let o=await t.transport.request(D(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let n;try{n=await t.identity.currentToken({forceRefresh:!0});}catch{return y(le())}let a=await t.transport.request(D(e,{mode:"personalized",token:n,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?y(le(a.error.httpStatus)):a}i(Ke,"authedSend");function le(e){return f("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}i(le,"authRejectedError");function Ge(e){return f("internalError",{retryable:true,wireMessage:ur(e)})}i(Ge,"networkError");function ur(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}i(ur,"describeCause");var cr=3e4,pr=ae*2,yr="idempotency-key",fr=new Set(["POST","PUT","PATCH","DELETE"]),mr=Object.freeze({onEvent(){}}),br=Object.freeze({setTimeout:i((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:i(e=>clearTimeout(e),"clearTimeout"),now:i(()=>Date.now(),"now")});function gr(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}i(gr,"seededIdempotencyKey");function Ye(e){let t=e.observer??mr,r=e.timers??br,o=e.rng??Math.random,n=e.sleep??((E,u)=>Or(E,r,u)),a=e.maxAttempts??Be,s=e.unaryTimeoutMs??cr,l=e.newIdempotencyKey??vr(),d=i(E=>{try{t.onEvent(E);}catch{}},"emit");async function p(E,u,_){let k=_?.maxAttempts,Kt=Math.max(1,k??a),Gt=_?.idempotent??fr.has(u.method),Wt=_?.idempotencyKey===void 0?null:gr(_.idempotencyKey),ee=Gt?Wt??l():null,Yt=hr(u,ee),te=0;for(;;){let O=i(ne=>Object.freeze({call:E,method:u.method,path:u.path,attempt:te,...ee?{idempotencyKey:ee}:{},...ne}),"stamp");d(O({phase:"attempt"}));let Ie=Pr(s,r),ze=Fr(Ie.signal,u.signal),A;try{A=await Ke({...Yt,signal:ze.signal},e.auth);}catch(ne){A=y(Ge(ne));}finally{ze.dispose(),Ie.cancel();}if(A.ok)return d(O({phase:"settled",ok:true,reason:"ok"})),A;let S=A.error,H=_r(S,te,{maxAttempts:Kt,rng:o,now:r.now(),aborted:u.signal?.aborted===true,...k!==void 0?{perCallMaxAttempts:k}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),re={ok:false,code:S.code,reason:H.reason,...S.httpStatus!==void 0?{httpStatus:S.httpStatus}:{},...S.requestId!==void 0?{requestId:S.requestId}:{}};if(!H.retry)return d(O({phase:"settled",...re})),y(S);if(d(O({phase:"retry",...re,delayMs:H.delayMs})),await n(H.delayMs,u.signal),u.signal?.aborted===true)return d(O({phase:"settled",...re,reason:"aborted"})),y(S);te+=1;}}i(p,"send");async function h(E){return D(E,await wr(e.auth))}i(h,"authorize");async function*R(E,u,_){d(Object.freeze({call:E,phase:"stream.open",method:u.method,path:u.path,attempt:0}));try{yield*e.auth.transport.stream(u,_);}catch{yield Ve({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return i(R,"stream"),Object.freeze({send:p,authorize:h,stream:R})}i(Ye,"createRequestFunnel");function hr(e,t){let r={};for(let[o,n]of Object.entries(e.headers??{}))o.toLowerCase()!==yr&&(r[o]=n);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}i(hr,"assembleHeaders");function vr(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}i(vr,"defaultIdempotencyKeyFactory");var Er=10;function _r(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=Rr(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!ie(e.code))return {retry:false,reason:"terminal-code"};let n=o==="burst"?"burst-throttle":"retryable-code";if(i(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=i(()=>{if(r.policy===void 0)return null;let p;try{p=r.policy.maxAttempts(e.code);}catch{return null}return typeof p!="number"||!Number.isFinite(p)?null:Math.max(1,Math.min(Er,Math.floor(p)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=Tr(e,r.now);return d!==null?d>pr?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:n,delayMs:d}:{retry:true,reason:n,delayMs:qe(t,r.rng)}}i(_r,"decideRetry");function Rr(e){let t=e.code==="unknown"?Me(xr(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}i(Rr,"throttleKind");function Tr(e,t){let r=kr(e.raw);if(r!==null){let n=r-t;return n>0?n:0}let o=Cr(e.raw);return o===null?null:Math.round(o*1e3)}i(Tr,"retryOverrideMs");function Cr(e){for(let t of de(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}i(Cr,"findRetryAfterSeconds");function kr(e){for(let t of de(e)){let r=t.resets_at,o=Sr(r);if(o!==null)return o}return null}i(kr,"findResetsAt");function de(e){if(!We(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];We(o)&&t.push(o);}return t}i(de,"candidateScopes");function Sr(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}i(Sr,"parseInstantMs");function xr(e){for(let t of de(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}i(xr,"rawWireCode");function We(e){return typeof e=="object"&&e!==null}i(We,"isRecord");async function wr(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}i(wr,"resolveDeviceAuth");function Pr(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:i(()=>t.clearTimeout(o),"cancel")}}i(Pr,"boundedSignal");function Fr(e,t){let r=i(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let n=i(()=>o.abort(),"onAbort");return e.addEventListener("abort",n,{once:true}),t.addEventListener("abort",n,{once:true}),{signal:o.signal,dispose:i(()=>{e.removeEventListener("abort",n),t.removeEventListener("abort",n);},"dispose")}}i(Fr,"mergeSignals");function Or(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let n=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=i(()=>{t.clearTimeout(n),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}i(Or,"delayAbortable");var $e=Object.freeze({track(){},trackExpectedFailure(){}});function Je(e){let t={uri:e.uri,mimeType:e.mimeType},r=ue(e);return r!==null&&(t.sizeBytes=r),Object.freeze(t)}i(Je,"fileHandleFromMedia");function ue(e){let t=e.byteSize??e.sizeBytes;return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:null}i(ue,"mediaByteSize");function Qe(e,t){return Object.freeze(t===void 0?{mode:e}:{mode:e,maxDurationSeconds:t})}i(Qe,"captureOptionsFor");function ce(e){return e!=null&&e.isAvailable===true}i(ce,"isCaptureAvailable");var Xe=Object.freeze({setTimeout:i((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:i(e=>clearTimeout(e),"clearTimeout"),now:i(()=>Date.now(),"now")});function Ze(e,t,r){return new Promise(o=>{if(t.aborted){o();return}let n={handle:void 0},a=i(()=>{r.clearTimeout(n.handle),t.removeEventListener("abort",a),o();},"done");n.handle=r.setTimeout(a,e),t.addEventListener("abort",a,{once:true});})}i(Ze,"delayAbortable");function Ar(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=i(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}i(Ar,"mergeSignals");var pe=class pe{constructor(t){this.listeners=new Set;this.epoch=0;this.inFlight=null;this.snapshot=Object.freeze({...t});}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t);}}getSnapshot(){return this.snapshot}patch(t){this.snapshot=Object.freeze({...this.snapshot,...t});for(let r of this.listeners)r();}beginOperation(t){this.inFlight?.abort();let r=new AbortController;this.inFlight=r;let o=this.epoch;return {signal:t?Ar(r.signal,t):r.signal,epoch:o,settle:i(()=>{this.inFlight===r&&(this.inFlight=null);},"settle")}}alive(t){return t===this.epoch}rescope(){this.epoch+=1,this.inFlight?.abort(),this.inFlight=null;}dispose(){this.epoch+=1,this.inFlight?.abort(),this.inFlight=null,this.listeners.clear();}};i(pe,"MediaStore");var G=pe;function et(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}i(et,"hasLoneSurrogate");var Ir=Object.freeze(["primary_label","primary_confidence","subtype_label","subtype_display","subtype_confidence","risk_tier","confidence_tier","copy_short","disease_name","disease_framing","model_version","skin_v2","eye_v2","llm_checkup"]),zr=Object.freeze(["decision_audit","decision_thresholds","per_class_auroc","ood_layers","gate1_score","possible_conditions","top_class"]),jr=new Set(["skin_v2","eye_v2","llm_checkup"]),Dr=new Set(["primary_confidence","subtype_confidence"]),Nr=new Set(["low_risk","concern","uncertain"]),Lr=new Set(["possible","probable"]),Mr=Object.freeze({primary_label:64,subtype_label:64,subtype_display:128,copy_short:512,disease_name:128,disease_framing:512,model_version:64});function tt(e){let t=v(e)?e:{},r={};for(let n of Ir){if(!(n in t))continue;let a=t[n],s=Ur(n,a);s!==P&&(r[n]=s);}let o=0;for(let n of zr)n in t&&(o+=1);return Object.freeze({metadata:Object.freeze(r),droppedOperatorKeys:o})}i(tt,"projectDetectionMetadata");var P=Symbol("drop");function Ur(e,t){if(jr.has(e))return typeof t=="boolean"?t:P;if(Dr.has(e))return rt(t)?t:P;if(e==="risk_tier")return typeof t=="string"&&Nr.has(t)?t:P;if(e==="confidence_tier")return typeof t=="string"&&Lr.has(t)?t:P;if(typeof t!="string")return P;let r=Mr[e]??256;return t.length>r?t.slice(0,r):t}i(Ur,"acceptKey");function rt(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}i(rt,"isUnitConfidence");function nt(e){if(!v(e))return null;let t=m(e.summary),r=m(e.disclaimer),o=Br(e.recommendations??e.recommendation);return t===null&&r===null&&o.length===0?null:Object.freeze({summary:t??"",recommendations:Object.freeze(o),disclaimer:r??""})}i(nt,"parseInterpretation");function ot(e){if(!v(e))return {};if(v(e.metadata))return e.metadata;let t=e.detections;if(Array.isArray(t)&&t.length>0){let r=t[0];if(v(r)&&v(r.metadata))return r.metadata;if(v(r))return r}return e}i(ot,"locateDetectionMetadata");function it(e){return v(e)?v(e.interpretation)?e.interpretation:e:null}i(it,"locateInterpretation");function v(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(v,"isRecord");function m(e){return typeof e=="string"&&e.length>0?e:null}i(m,"asString");function Br(e){return typeof e=="string"?e.length>0?[e]:[]:Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}i(Br,"asStringList");function at(e){return rt(e)?e:null}i(at,"asUnitNumber");function ye(e){return typeof e=="number"&&Number.isFinite(e)?e:null}i(ye,"asFiniteNumber");var N=Object.freeze({initiate:"/widget/v1/uploads/initiate",precheck:"/widget/v1/photo/precheck",photoAnalyze:"/widget/v1/photo/analyze",videoAnalyze:"/widget/v1/video/analyze",job:i(e=>et(e)?null:`/widget/v1/analysis/jobs/${encodeURIComponent(e)}`,"job")});async function lt(e,t){let r={purpose:t.purpose,content_type:t.contentType};t.byteSize!==null&&(r.byte_size=t.byteSize);let o={method:"POST",path:N.initiate,body:r,...t.signal?{signal:t.signal}:{}},n=await e.send("media.initiateUpload",o);if(!n.ok)return y(n.error);let a=qr(n.value);return a===null?y(f("mediaUploadFailed",{retryable:false})):z(a)}i(lt,"initiateUpload");function qr(e){if(!v(e))return null;let t=m(e.url),r=m(e.s3_key);if(t===null||r===null)return null;let o=e.fields,n={};if(v(o))for(let[a,s]of Object.entries(o))typeof s=="string"&&(n[a]=s);return Object.freeze({url:t,fields:Object.freeze(n),s3Key:r,expiresAt:ye(e.expires_at)})}i(qr,"parsePresigned");async function dt(e,t,r,o,n){try{return await e.presignedPut(Je(t),{target:r,idempotencyKey:o,...n?{signal:n}:{}}),z(void 0)}catch{return y(f("mediaUploadFailed",{retryable:false}))}}i(dt,"stageUpload");async function ut(e,t){let r={method:"POST",path:N.precheck,body:{s3_key:t.s3Key,type:t.type},...t.signal?{signal:t.signal}:{}},o=await e.send("media.precheck",r);return o.ok?Hr(o.value):{verdict:"proceed",reasonCodes:[],precheckToken:null}}i(ut,"runPrecheck");function Hr(e){if(!v(e))return {verdict:"proceed",reasonCodes:[],precheckToken:null};let t=m(e.verdict),r=t==="retake"||t==="reject"?t:"proceed",o=Array.isArray(e.reason_codes)?e.reason_codes.filter(n=>typeof n=="string"):[];return Object.freeze({verdict:r,reasonCodes:Object.freeze(o),precheckToken:m(e.precheck_token)})}i(Hr,"parsePrecheck");async function ct(e,t,r,o,n){let a={method:"POST",path:t,body:r,...n?{signal:n}:{}},s=await e.send("media.analyze",a);if(s.ok){let d=Vr(s.value);return d!==null?{kind:"async",job:d}:{kind:"sync",body:s.value}}let l=o(s.error.httpStatus,s.error);return l!==null?{kind:"gate",gate:l}:{kind:"error",error:s.error}}i(ct,"submitAnalyze");function Vr(e){if(!v(e))return null;let t=m(e.job_id);if(t===null)return null;let r=m(e.status);return r!==null&&Yr(r)?null:Object.freeze({jobId:t,estimatedSeconds:ye(e.estimated_completion_seconds)})}i(Vr,"parseAsyncJob");var Kr=2e3,st=5e3,Gr=9e4;async function pt(e,t,r){let{timers:o,signal:n,alive:a}=r,s=o.now(),l=Math.max(Gr,(r.estimatedSeconds??0)*1e3),d=Kr;for(;;){if(n.aborted||!a())return {kind:"aborted"};if(await Ze(d,n,o),n.aborted||!a())return {kind:"aborted"};if(o.now()-s>l)return {kind:"timeout"};let p=N.job(t);if(p===null)return {kind:"notFound"};let h=await e.send("media.pollJob",{method:"GET",path:p,...n?{signal:n}:{}},{maxAttempts:1});if(n.aborted||!a())return {kind:"aborted"};if(!h.ok){if(h.error.httpStatus===404)return {kind:"notFound"};d=Math.min(st,d+1e3);continue}let R=Wr(h.value);if(R==="COMPLETED")return {kind:"complete",body:h.value};if(R==="FAILED")return {kind:"failed",error:$r(h.value)};d=Math.min(st,d+1e3);}}i(pt,"pollJob");function Wr(e){return v(e)?(m(e.status)??"PROCESSING").toUpperCase():"PROCESSING"}i(Wr,"jobStatusOf");function Yr(e){let t=e.toUpperCase();return t==="COMPLETED"||t==="FAILED"}i(Yr,"isTerminalStatus");function $r(e){let t=v(e)?m(e.error)??m(e.error_code):null;return f("internalError",{retryable:false,...t?{wireMessage:t}:{}})}i($r,"jobFailureError");function yt(e,t){return e===422?{kind:"species_unsupported",species:"cat"}:e===400?{kind:"pet_context_required"}:null}i(yt,"detectPhotoGate");function ft(e,t){let r={s3_key:e};return t.type!==void 0&&(r.type=t.type),t.petRef!=null&&(r.pet_id=t.petRef),t.precheckToken!=null&&(r.precheck_token=t.precheckToken),r}i(ft,"analyzeBody");var L=Object.freeze({kind:"accepted"});function mt(e){return new fe(e)}i(mt,"createPhotoController");var me=class me extends G{constructor(t){super({status:"idle",region:t.region??"skin",result:null,gate:L,error:null,isCaptureAvailable:ce(t.camera)}),this.funnel=t.funnel??Ye({auth:t.auth,...t.errorPolicy?{errorPolicy:t.errorPolicy}:{}}),this.camera=t.camera,this.upload=t.upload,this.telemetry=t.telemetry??$e,this.timers=t.timers??Xe,this.makeIdempotencyKey=t.makeIdempotencyKey??Zr();}async capture(t,r){if(!ce(this.camera))return y(f("unknown",{retryable:false}));let o;try{o=await this.camera.capture(Qe("photo"));}catch{return this.snapshot.status!=="idle"&&this.patch({status:"idle"}),y(f("unknown",{retryable:false}))}return this.analyze(o,t,r)}async analyze(t,r,o){let n=this.beginOperation(o.signal),a=this.makeIdempotencyKey(),s=this.timers.now();this.patch({status:"capturing",region:r,error:null,result:null,gate:L});try{let l=await lt(this.funnel,{purpose:"skin_scan",contentType:t.mimeType,byteSize:ue(t),signal:n.signal});if(n.signal.aborted||!this.alive(n.epoch))return T();if(!l.ok)return this.fail(n,l.error);let d=await dt(this.upload,t,l.value,a,n.signal);if(n.signal.aborted||!this.alive(n.epoch))return T();if(!d.ok)return this.fail(n,d.error);let p=await ut(this.funnel,{s3Key:l.value.s3Key,type:r,signal:n.signal});if(n.signal.aborted||!this.alive(n.epoch))return T();if(p.verdict!=="proceed")return this.gateRetake(n,r,p.reasonCodes);this.patch({status:"analyzing"});let h=await ct(this.funnel,N.photoAnalyze,ft(l.value.s3Key,{type:r,petRef:o.petRef,precheckToken:p.precheckToken}),yt,n.signal);if(n.signal.aborted||!this.alive(n.epoch))return T();switch(h.kind){case "error":return this.fail(n,h.error);case "gate":return this.gateDomain(n,r,h.gate);case "sync":return this.complete(n,h.body,r,null,s);case "async":{let R=await pt(this.funnel,h.job.jobId,{timers:this.timers,signal:n.signal,alive:i(()=>this.alive(n.epoch),"alive"),estimatedSeconds:h.job.estimatedSeconds});if(n.signal.aborted||!this.alive(n.epoch))return T();switch(R.kind){case "aborted":return T();case "complete":return this.complete(n,R.body,r,h.job.jobId,s);case "failed":return this.fail(n,R.error);case "timeout":return this.fail(n,f("streamTimeout",{retryable:!0}));case "notFound":return this.fail(n,f("conversationNotFound",{retryable:!1,httpStatus:404}));default:return this.fail(n,f("internalError",{retryable:!1}))}}default:return this.fail(n,f("internalError",{retryable:!1}))}}finally{n.settle();}}reset(){this.inFlight?.abort(),this.inFlight=null,this.patch({status:"idle",result:null,gate:L,error:null});}complete(t,r,o,n,a){if(!this.alive(t.epoch))return T();let s=Jr(r,o,n);return s.droppedOperatorKeys>0&&this.telemetry.track("analysis.metadata_leak_guard",{droppedKeyCount:s.droppedOperatorKeys}),this.patch({status:"complete",result:s.result,gate:L,error:null}),this.telemetry.track("analysis.species_gate",{outcome:"accepted",region:o}),this.telemetry.track("analysis.result",{capability:"photo",region:o,riskTier:s.result.riskTier??"",confidenceTier:s.result.confidenceTier??"",modelVersion:s.result.modelVersion??"",timeToResultMs:this.timers.now()-a}),z(s.result)}gateDomain(t,r,o){if(!this.alive(t.epoch))return T();let n=o.kind==="species_unsupported"?Object.freeze({kind:"species_unsupported",species:"cat"}):Object.freeze({kind:"pet_context_required"});return this.patch({status:"idle",gate:n,error:null,result:null}),this.telemetry.track("analysis.species_gate",{outcome:o.kind,region:r,...o.kind==="species_unsupported"?{species:"cat"}:{}}),y(f("unknown",{retryable:false}))}gateRetake(t,r,o){if(!this.alive(t.epoch))return T();this.patch({status:"idle",gate:Object.freeze({kind:"retake",reasons:Object.freeze([...o])}),error:null,result:null}),this.telemetry.track("analysis.quality_gate",{usable:false,reasons:o});let n=o.includes("wrong_species")?"species_unsupported":"retake";return this.telemetry.track("analysis.species_gate",{outcome:n,region:r}),y(f("unknown",{retryable:false}))}fail(t,r){return this.alive(t.epoch)?(this.patch({status:"error",error:r,gate:L}),this.telemetry.trackExpectedFailure("analysis.error",{code:r.code,...r.httpStatus!==void 0?{httpStatus:r.httpStatus}:{}}),y(r)):T()}};i(me,"PhotoController");var fe=me;function Jr(e,t,r){let o=tt(ot(e)),n=o.metadata,a=nt(it(e));return {result:Object.freeze({jobId:r,analysisType:t,primaryLabel:m(n.primary_label)??"Uncertain",riskTier:Qr(n.risk_tier),confidence:at(n.primary_confidence),subtypeDisplay:m(n.subtype_display),confidenceTier:Xr(n.confidence_tier),diseaseName:m(n.disease_name),diseaseFraming:m(n.disease_framing),copyShort:m(n.copy_short),interpretation:a,modelVersion:m(n.model_version)??(v(e)?m(e.model_version):null)}),droppedOperatorKeys:o.droppedOperatorKeys}}i(Jr,"mapPhotoResult");function Qr(e){return e==="low_risk"||e==="concern"||e==="uncertain"?e:null}i(Qr,"asRiskTier");function Xr(e){return e==="possible"||e==="probable"?e:null}i(Xr,"asConfidenceTier");function T(){return y(f("unknown",{retryable:false}))}i(T,"abortedResult");function Zr(){let e=0;return ()=>`photo-analyze-${Date.now().toString(36)}-${(e++).toString(36)}-${Math.random().toString(36).slice(2,10)}`}i(Zr,"defaultIdempotencyFactory");var bt=Symbol.for("@everfur/sdk#EverfurContext@v1"),gt=globalThis,ht=gt[bt]??(gt[bt]=createContext(null));ht.displayName??="EverfurContext";function W(){let e=useContext(ht);if(e===null)throw new I("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}i(W,"useEverfurContext");var sn=Object.freeze({status:"idle",region:"skin",result:null,gate:Object.freeze({kind:"accepted"}),error:null,isCaptureAvailable:false}),ln=i(()=>{},"NOOP_UNSUBSCRIBE");function be(e){let{runtime:t,userRef:r,scopeEpoch:o}=W(),n=e.petRef,[a,s]=useState(null);useEffect(()=>{let{services:u}=t.registry,_=t.registry.acquire("photo",`${r??""}|${n}`,()=>mt({...u.errorPolicy?{errorPolicy:u.errorPolicy}:{},auth:u.authFor(r),camera:u.camera,upload:u.upload,telemetry:u.telemetry}),k=>k.dispose());return s(_),()=>{s(k=>k===_?null:k),t.registry.release(_);}},[t,r,n,o]);let l=useCallback(u=>a?a.subscribe(u):ln,[a]),d=useCallback(()=>a?a.getSnapshot():sn,[a]),p=useSyncExternalStore(l,d,d),h=useCallback((u,_)=>a?a.analyze(u,_,{petRef:n}):Promise.resolve(vt()),[a,n]),R=useCallback(u=>a?a.capture(u,{petRef:n}):Promise.resolve(vt()),[a,n]),E=useCallback(()=>{a?.reset();},[a]);return useMemo(()=>({status:p.status,region:p.region,result:p.result,gate:p.gate,error:p.error,isCaptureAvailable:p.isCaptureAvailable,isBootstrapping:a===null,analyze:h,capture:R,reset:E}),[p,a,h,R,E])}i(be,"usePhotoCheckup");function vt(){return y(f("internalError",{retryable:true}))}i(vt,"notReadyError");function ve(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.keys(e))ve(e[t]);}return e}i(ve,"deepFreeze");var dn=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),_t={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},Rt={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},Et={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},un={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},cn={regular:"400",medium:"500",bold:"700"},pn={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},yn=0,Y="System",$="monospace",fn=["content","heading","control","compact","badge"];function mn(e){let t={};for(let r of fn)t[r]=e;return t}i(mn,"authoredTierSizes");function Tt(){return {family:Y,mono:$,fontUrl:null,families:{regular:Y,medium:Y,bold:Y,mono:$,monoMedium:$,monoBold:$},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:Et,tierSizes:mn(Et),lineHeight:un,weight:cn,letterSpacing:pn,scale:1,maxScale:yn,scaleCaps:dn}}i(Tt,"baseType");var Ct={},ge=Object.freeze({standard:Object.freeze([.2,0,0,1]),emphasized:Object.freeze([.2,.8,.2,1]),exit:Object.freeze([.4,0,1,1])});function he(e){return `cubic-bezier(${e.join(", ")})`}i(he,"cssCubicBezier");var kt={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:he(ge.standard),emphasized:he(ge.emphasized),exit:he(ge.exit)},reducedMotion:false},bn={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FDFBF8",surfaceSubtle:"#EFE9E3",background:"#FFFFFF",borderRingCream:"#D8D2C8",chatGround:"#FFFFFF",composerFill:"#FDFBF8",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#111111",secondary:"#0E462E",muted:"#6E6660",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#B91C1C",errorRed:"#FF1B00",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(185,28,28,0.12)",badgeBgNeutral:"rgba(110,102,96,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",skeleton:"#EFE9E3",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)"},St=ve({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:bn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct}),gn={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A938C",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",skeleton:"#23272C",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)"};ve({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:gn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct});var xt=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),wt=globalThis,Ee=wt[xt]??(wt[xt]=createContext(St));Ee.displayName??="EverfurThemeContext";function g(){return useContext(Ee)}i(g,"useEverfurTheme");function Tn(e,t){let r=e.scaleCaps[t];return r>0?r:void 0}i(Tn,"tierMultiplier");function b({tier:e="content",...t}){let{type:r}=g(),o=Tn(r,e);return createElement(Text,o===void 0?t:{maxFontSizeMultiplier:o,...t})}i(b,"Text");forwardRef(i(function(t,r){return createElement(TextInput,{...t,...r===null?{}:{ref:r}})},"TextInput"));var Cn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function U(e,t){let r=e.type,o=r.families[t];return t==="mono"||r.namedFaces[t]?{fontFamily:o}:{fontFamily:o,fontWeight:r.weight[Cn[t]]}}i(U,"face");var Te=class Te extends Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey};}static getDerivedStateFromError(){return {failed:true}}static getDerivedStateFromProps(r,o){return Object.is(r.resetKey,o.key)?null:{failed:false,key:r.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};i(Te,"HostRenderBoundary");var _e=Te;function Sn({render:e}){return e()}i(Sn,"RenderHost");function Re({render:e,fallback:t,resetKey:r}){return createElement(_e,{fallback:t,resetKey:r,children:createElement(Sn,{render:e})})}i(Re,"HostRender");var xn=Object.freeze({chat:Object.freeze(["chat.message.create"]),records:Object.freeze(["records.upload.create","records.record.read"]),recordsClinic:Object.freeze(["records.clinic.create"]),video:Object.freeze(["video.gait.execute"]),photo:Object.freeze(["photo.checkup.execute"]),animations:Object.freeze(["animations.state.read"]),televet:Object.freeze(["televet.visit.create"])});function wn(e){return xn[e]}i(wn,"requires");function Ot(e,t,r){let o=wn(e),n=new Map;for(let l of t)n.set(l.resource,l);if(r?.isPending===true&&o.some(l=>!n.has(l)))return Ce({name:e,enabled:false,isPending:true,limits:{}});let a=Pn(o,n);return o.filter(l=>n.get(l)?.granted!==true).length===0?Ce({name:e,enabled:true,isPending:false,limits:a}):Ce({name:e,enabled:false,isPending:false,limits:a,disabled:Fn(o,n)})}i(Ot,"decideCapability");function Pn(e,t){let r={};for(let o of e){let n=t.get(o)?.limits;if(n)for(let[a,s]of Object.entries(n)){let l=r[a];r[a]=l===void 0?s:Math.min(l,s);}}return r}i(Pn,"mergeLimits");function Fn(e,t){for(let r of e){let o=t.get(r)?.disabled;if(o)return Object.freeze({reason:o.reason,level:o.level,recoverable:o.recoverable})}return Object.freeze({reason:se("accessDenied"),level:"user_entitlement",recoverable:false})}i(Fn,"disabledFor");function Ce(e){let t={name:e.name,enabled:e.enabled,isPending:e.isPending,limits:Object.freeze({...e.limits})};return e.disabled!==void 0&&(t.disabled=e.disabled),Object.freeze(t)}i(Ce,"freezeDecision");function ke(e){let{runtime:t}=W(),r=t.entitlements,o=useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return useMemo(()=>Ot(e,o.decisions,{isPending:o.isPending}),[e,o])}i(ke,"useCapability");var In=48;function zn(e){return e.isPending?"pending":e.enabled?"enabled":"disabled"}i(zn,"selectView");function jt(e){let{capability:t,children:r,renderDisabled:o,renderPending:n,style:a}=e,s=ke(t),l=useMemo(()=>zn(s),[s]);switch(l){case "enabled":return r;case "pending":return n?jsx(Re,{render:n,fallback:jsx(It,{capability:t,style:a})}):jsx(It,{capability:t,style:a});case "disabled":return o?jsx(Re,{render:()=>o(s),fallback:jsx(zt,{decision:s,style:a}),resetKey:s}):jsx(zt,{decision:s,style:a});default:return j(l)}}i(jt,"CapabilityGate");function It({capability:e,style:t}){let r=g(),o=useMemo(()=>Dt(r),[r]);return jsx(View,{style:[o.offstate,t],accessible:true,accessibilityState:{busy:true},accessibilityLabel:`Loading ${e}`,children:jsx(View,{style:o.skeletonBar})})}i(It,"PendingSkeleton");function zt({decision:e,style:t}){let r=g(),o=useMemo(()=>Dt(r),[r]),n=e.disabled?.reason??"";return jsx(View,{style:[o.offstate,t],accessible:true,accessibilityRole:"text",accessibilityLabel:n,children:n.length>0?jsx(b,{style:o.offstateText,children:n}):null})}i(zt,"OffState");function Dt(e){let{color:t,space:r,radius:o,type:n}=e;return StyleSheet.create({offstate:{minHeight:In,justifyContent:"center",paddingHorizontal:r.lg,paddingVertical:r.md,backgroundColor:t.surfaceCream,borderRadius:o.md,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder},offstateText:{...U(e,"regular"),fontSize:n.size.body,lineHeight:Math.round(n.size.body*n.lineHeight.normal),color:t.text.muted},skeletonBar:{height:r.md,borderRadius:o.xs,backgroundColor:t.brandSofter}})}i(Dt,"makeStyles");var B=Object.freeze({title:"For educational use only",body:"Everfur is for educational purposes only. It helps you track visible changes through AI checkups. It does not diagnose, treat, prescribe, or replace veterinary care. For urgent symptoms or emergencies, contact a veterinarian immediately."});function Mt(e){let t=g(),r=useMemo(()=>Nn(t),[t]);return jsxs(View,{style:[r.container,e.style],accessible:true,accessibilityRole:"text",accessibilityLabel:`${B.title}. ${B.body}`,children:[jsx(b,{style:r.title,children:B.title}),jsx(b,{style:r.body,children:B.body})]})}i(Mt,"ClinicalDisclaimer");function Nn(e){let{color:t,space:r,type:o}=e;return StyleSheet.create({container:{paddingHorizontal:r.lg,paddingVertical:r.md,borderTopWidth:StyleSheet.hairlineWidth,borderTopColor:t.borderHairlineGreen,backgroundColor:t.surfaceCream,gap:r.xs},title:{...U(e,"bold"),fontSize:o.size.caption,lineHeight:Math.round(o.size.caption*o.lineHeight.snug),color:t.text.secondary,letterSpacing:o.letterSpacing.eyebrow},body:{...U(e,"regular"),fontSize:o.size.caption,lineHeight:Math.round(o.size.caption*o.lineHeight.snug),color:t.text.muted}})}i(Nn,"makeStyles");var Kn=1400,Gn=300;function Bt(){let e=g(),t=useMemo(()=>Wn(e),[e]),r=e.motion.reducedMotion,[o,n]=useState(false);useEffect(()=>{let l=setTimeout(()=>n(true),Gn);return ()=>clearTimeout(l)},[]);let a=useRef(new Animated.Value(0)).current;useEffect(()=>{if(r||!o)return;let l=Animated.loop(Animated.timing(a,{toValue:1,duration:Kn,easing:Easing.linear,useNativeDriver:true}));return l.start(),()=>l.stop()},[r,o,a]);let s=r?null:{transform:[{rotate:a.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]})}]};return jsx(View,{style:t.wrap,accessible:true,accessibilityState:{busy:true},accessibilityLabel:"Analyzing photo",children:o?jsxs(Fragment,{children:[jsx(Animated.View,{style:[t.ring,s]}),jsx(b,{style:t.statusLine,children:"Analyzing"})]}):null})}i(Bt,"AnalyzingIndicator");function Wn(e){let{color:t,space:r,radius:o,type:n}=e,a=n.weight.medium,s=r.xxl*2,l=r.xs;return StyleSheet.create({wrap:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:r.xl,gap:r.md},ring:{width:s,height:s,borderRadius:o.pill,borderWidth:l,borderTopColor:t.success,borderRightColor:t.success,borderBottomColor:t.borderRingCream,borderLeftColor:t.borderRingCream},statusLine:{color:t.text.secondary,fontFamily:n.family,fontSize:n.size.subtitle,lineHeight:n.size.subtitle*n.lineHeight.snug,fontWeight:a,letterSpacing:n.letterSpacing.tight,textAlign:"center"}})}i(Wn,"makeStyles");var eo=1100,to=1.6,ro=.35;function no(e,t){let{color:r}=e;switch(t){case "low_risk":return {accent:r.success,wash:r.badgeBgPositive,label:"Low risk",pulse:false};case "concern":return {accent:r.cautionAccent,wash:r.badgeBgCaution,label:"Concern",pulse:true};case "uncertain":return {accent:r.text.muted,wash:r.badgeBgNeutral,label:"Uncertain",pulse:false}}}i(no,"toneSpec");function Vt({riskTier:e}){let t=g(),r=useMemo(()=>oo(t),[t]),o=useRef(new Animated.Value(0)).current,n=e===null?null:no(t,e),a=n!==null&&n.pulse&&!t.motion.reducedMotion;return useEffect(()=>{if(!a)return;let s=Animated.loop(Animated.timing(o,{toValue:1,duration:eo,easing:Easing.out(Easing.quad),useNativeDriver:true}));return s.start(),()=>s.stop()},[a,o]),n===null?null:jsxs(View,{style:[r.pill,{backgroundColor:n.wash}],accessible:true,accessibilityRole:"text",accessibilityLabel:n.label,children:[jsxs(View,{style:r.dotWrap,children:[a?jsx(Animated.View,{pointerEvents:"none",style:[r.dotRing,{backgroundColor:n.accent,opacity:o.interpolate({inputRange:[0,1],outputRange:[ro,0]}),transform:[{scale:o.interpolate({inputRange:[0,1],outputRange:[1,to]})}]}]}):null,jsx(View,{style:[r.dot,{backgroundColor:n.accent}]})]}),jsx(b,{style:[r.label,{color:n.accent}],children:n.label})]})}i(Vt,"SeverityBadge");function oo(e){let{space:t,radius:r,type:o}=e,n=o.weight.bold,a=t.sm;return StyleSheet.create({pill:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",gap:t.sm,paddingHorizontal:t.md,paddingVertical:t.xs,borderRadius:r.pill},dotWrap:{width:a,height:a,alignItems:"center",justifyContent:"center"},dot:{width:a,height:a,borderRadius:r.pill},dotRing:{position:"absolute",width:a,height:a,borderRadius:r.pill},label:{fontFamily:o.family,fontSize:o.size.caption,lineHeight:o.size.caption*o.lineHeight.snug,fontWeight:n,letterSpacing:o.letterSpacing.eyebrow}})}i(oo,"makeStyles");var Oe=120,Z=44;function ao(e){let{petRef:t,region:r,style:o}=e;return jsx(jt,{capability:"photo",style:o,children:jsx(lo,{petRef:t,region:r,style:o})})}i(ao,"PhotoCheckup");function so(e){return e.isBootstrapping||e.status==="capturing"||e.status==="analyzing"?"loading":e.status==="error"&&e.error?"error":e.status==="complete"&&e.result?"populated":e.gate.kind!=="accepted"?"gate":e.isCaptureAvailable?"empty":"native"}i(so,"selectView");function lo({petRef:e,region:t,style:r}){let o=be({petRef:e}),n=t??"skin",a=so(o),s=useMemo(()=>()=>{o.capture(n);},[o,n]),l=g(),d=useMemo(()=>F(l),[l]);return jsxs(View,{style:[d.container,r],children:[jsx(View,{style:d.body,children:uo(a,o,s)}),jsx(Mt,{})]})}i(lo,"PhotoBody");function uo(e,t,r){switch(e){case "loading":return jsx(Bt,{});case "native":return jsx(co,{});case "empty":return jsx(po,{onCapture:r});case "error":return jsx(yo,{error:t.error,onRetry:r});case "gate":return jsx(fo,{gate:t.gate,onRetry:t.reset});case "populated":return jsx(bo,{result:t.result});default:return j(e)}}i(uo,"renderView");function co(){let e=g(),t=useMemo(()=>F(e),[e]);return jsx(View,{style:t.offstate,accessible:true,accessibilityRole:"text",accessibilityLabel:"Camera is unavailable",children:jsx(View,{style:t.emptyGlyph})})}i(co,"NativeUnavailableState");function po({onCapture:e}){let t=g(),r=useMemo(()=>F(t),[t]);return jsx(View,{style:r.centered,accessible:true,accessibilityRole:"summary",accessibilityLabel:"Take a photo to check",children:jsx(Pressable,{onPress:e,accessibilityRole:"button",accessibilityLabel:"Take photo",style:r.scanButton,children:jsx(b,{style:r.scanLabel,children:"Take photo"})})})}i(po,"EmptyState");function yo({error:e,onRetry:t}){let r=g(),o=useMemo(()=>F(r),[r]);return jsxs(View,{style:o.centered,accessible:true,accessibilityRole:"alert",children:[jsx(b,{style:o.errorText,children:e.displayMessage}),e.retryable?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:o.primaryButton,children:jsx(b,{style:o.primaryLabel,children:"Try again"})}):null]})}i(yo,"ErrorState");function fo({gate:e,onRetry:t}){let r=g(),o=useMemo(()=>F(r),[r]),n=mo(e);return jsxs(View,{style:o.centered,accessible:true,accessibilityRole:"summary",accessibilityLabel:n,children:[jsx(b,{style:o.guidanceText,children:n}),e.kind!=="species_unsupported"?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:o.primaryButton,children:jsx(b,{style:o.primaryLabel,children:"Try again"})}):null]})}i(fo,"GateState");function mo(e){switch(e.kind){case "species_unsupported":return "Photo checks are coming soon for this pet.";case "pet_context_required":return "Choose a pet first, then take the photo.";case "retake":return "That photo was hard to read. Please take another.";case "accepted":return "";default:return j(e)}}i(mo,"gateMessage");function bo({result:e}){let t=g(),r=useMemo(()=>F(t),[t]),o=e.subtypeDisplay??e.diseaseName??e.primaryLabel,n=go(t,e.riskTier);return jsxs(ScrollView,{style:r.list,contentContainerStyle:[r.listContent,{backgroundColor:n}],accessibilityLabel:"Photo checkup result",children:[jsx(b,{style:r.resultHeadline,children:o}),jsx(Vt,{riskTier:e.riskTier}),e.diseaseFraming?jsx(b,{style:r.summaryText,children:e.diseaseFraming}):null,e.copyShort?jsx(b,{style:r.summaryText,children:e.copyShort}):null,e.interpretation?jsxs(View,{style:r.interpretationBlock,children:[jsx(b,{style:r.summaryText,children:e.interpretation.summary}),jsx(b,{style:r.disclaimerText,children:e.interpretation.disclaimer})]}):null]})}i(bo,"ResultState");function go(e,t){switch(t){case "low_risk":return e.color.checkupCardLowRiskBg;case "concern":return e.color.checkupCardConcernBg;default:return e.color.surfaceCream}}i(go,"resultCardTint");function F(e){let{color:t,space:r,radius:o,type:n}=e,a=n.weight.bold,s=n.weight.medium,l=n.weight.regular,d=e.brightness==="dark"?t.onAccent:t.brand;return StyleSheet.create({container:{flex:1,minHeight:Oe,backgroundColor:t.background},body:{flex:1},centered:{minHeight:Oe,flexGrow:1,alignItems:"center",justifyContent:"center",padding:r.xl},offstate:{minHeight:Oe,alignItems:"center",justifyContent:"center",padding:r.xl},emptyGlyph:{width:r.xxl,height:r.xxl,borderRadius:o.pill,backgroundColor:t.surfaceSubtle,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder},scanButton:{minHeight:Z,minWidth:Z,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.md,borderRadius:o.pill,backgroundColor:t.scanButtonPink,shadowColor:t.brand,shadowOpacity:.18,shadowRadius:o.xs,shadowOffset:{width:0,height:r.xs},elevation:3},scanLabel:{color:d,fontFamily:n.family,fontSize:n.size.subtitle,lineHeight:n.size.subtitle*n.lineHeight.snug,fontWeight:a,letterSpacing:n.letterSpacing.tight},primaryButton:{minHeight:Z,minWidth:Z,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.sm,borderRadius:o.pill,backgroundColor:t.brand},primaryLabel:{color:t.onPrimary,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.snug,fontWeight:s},errorText:{color:t.danger,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},guidanceText:{color:t.text.muted,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},list:{flex:1},listContent:{padding:r.lg,gap:r.sm,borderRadius:o.lg,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder,shadowColor:t.brand,shadowOpacity:.08,shadowRadius:o.xs,shadowOffset:{width:0,height:r.xs},elevation:2},resultHeadline:{color:t.text.secondary,fontFamily:n.family,fontSize:n.size.verdict,lineHeight:n.size.verdict*n.lineHeight.tight,fontWeight:a,letterSpacing:n.letterSpacing.tight},summaryText:{color:t.text.primary,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,fontWeight:l},interpretationBlock:{marginTop:r.sm,paddingTop:r.sm,gap:r.xs,borderTopWidth:StyleSheet.hairlineWidth,borderTopColor:t.borderHairlineGreen},disclaimerText:{color:t.text.muted,fontFamily:n.family,fontSize:n.size.caption,lineHeight:n.size.caption*n.lineHeight.normal,fontWeight:l}})}i(F,"makeStyles");export{ao as PhotoCheckup,be as usePhotoCheckup};
1
+ import {createContext,forwardRef,useState,useEffect,useCallback,useSyncExternalStore,useMemo,createElement,useContext,Component,useRef}from'react';import {TextInput,View,Pressable,ScrollView,StyleSheet,Text,Animated,Easing}from'react-native';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var $t=Object.defineProperty;var i=(e,t)=>$t(e,"name",{value:t,configurable:true});var oe=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(oe.map(e=>e.wireCode));var Jt=Object.freeze({ValidationException:"validationFailed",AuthorizationException:"authRejected",PaymentRequiredException:"paymentRequired",AccessDeniedException:"accessDenied",ResourceNotFoundException:"resourceNotFound",ConflictException:"conflict",ThrottlingException:"rateLimited",InternalFailureException:"internalError",NotImplementedException:"notImplemented",ServiceUnavailableException:"serviceUnavailable",MethodNotAllowedException:"validationFailed",authExpired:"authExpired",unavailable:"serviceUnavailable",session_required:"sessionRequired",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",event_cursor_invalid:"validationFailed",event_filter_invalid:"validationFailed",event_payload_invalid:"validationFailed",event_type_unknown:"validationFailed",idempotency_key_invalid:"validationFailed",idempotency_key_required:"validationFailed",idempotency_key_reused:"idempotencyConflict",payload_too_large:"validationFailed",webhook_url_rejected:"validationFailed",webhook_endpoint_update_empty:"validationFailed",webhook_endpoint_update_invalid:"validationFailed",event_type_not_available:"conflict",record_subject_not_found:"resourceNotFound",records_consent_required:"conflict",record_species_unsupported:"validationFailed",record_upload_invalid:"validationFailed",FILE_TOO_LARGE:"validationFailed",INVALID_CONTENT_TYPE:"validationFailed",attachment_unreadable:"validationFailed",provider_unsupported:"validationFailed",token_invalid:"validationFailed",device_cipher_unavailable:"serviceUnavailable",email_invalid:"validationFailed",consent_required:"validationFailed",consent_invalid:"validationFailed",consent_scope_wrong_route:"validationFailed",IDEMPOTENCY_KEY_IN_FLIGHT:"idempotencyInFlight",IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST:"idempotencyConflict",DAILY_QUOTA_EXCEEDED:"quotaExceeded",TIER_UPGRADE_REQUIRED:"paymentRequired",not_found:"conversationNotFound",timeout:"streamTimeout",internal_error:"internalError",invalid_request:"validationFailed",invalid_client:"authRejected",invalid_grant:"authRejected",unsupported_grant_type:"validationFailed",invalid_scope:"validationFailed",invalid_target:"validationFailed",invalid_redirect_uri:"validationFailed",invalid_client_metadata:"validationFailed",unsupported_response_type:"validationFailed",access_denied:"accessDenied",slow_down:"rateLimited",mcp_request_not_found:"resourceNotFound",mcp_request_gone:"resourceNotFound",mcp_connection_not_found:"resourceNotFound",mcp_request_conflict:"conflict",sandbox_only:"accessDenied",tenant_has_no_capabilities:"conflict",verify_mint_refused:"accessDenied",verify_mint_rate_limited:"rateLimited",verify_mint_unavailable:"serviceUnavailable",verify_user_ref_invalid:"validationFailed",insufficient_scope:"accessDenied",tenant_filter_invalid:"validationFailed",tenant_resource_not_found:"resourceNotFound",tenant_surface_not_enabled:"conflict",pet_health_species_unsupported:"validationFailed",pet_health_list_removals_unconfirmed:"validationFailed",petRefInUse:"conflict",share_limit_reached:"conflict",pet_not_registered:"resourceNotFound",species_unsupported:"validationFailed",partner_visit_owner_only:"accessDenied",partner_visit_link_conflict:"conflict",partner_visit_pet_already_mapped:"conflict"}),De=Object.freeze(oe.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Jt[e.wireCode]}))),Qt=new Map(De.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Xt=Object.freeze(["http_envelope",...[...new Set(De.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function V(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...Xt]){let n=Qt.get(o+r);if(n)return n}}i(V,"contractErrorFor");function Zt(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}i(Zt,"contractDocUrl");function Ne(e){return null}i(Ne,"publishedDocUrl");var er=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"invalidRequest",conversationNotFound:"notFound",petNotFound:"notFound",resourceNotFound:"notFound",conflict:"conflict",idempotencyConflict:"conflict",idempotencyInFlight:"conflict",streamTimeout:"connection",streamIncomplete:"connection",upstreamLlmTimeout:"connection",serviceUnavailable:"connection",internalError:"server",notImplemented:"server",mediaUploadFailed:"media",moderationBlocked:"policy",unknown:"unknown"});function Le(e){return er[e]}i(Le,"categoryFor");function Me(e){let t=V(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":case "TELEVETRATELIMITED":return "rateLimited";case "IDEMPOTENCYKEYCONFLICT":case "IDEMPOTENCYCONFLICT":return "idempotencyConflict";case "ACCESSDENIED":case "FORBIDDEN":return "accessDenied";case "NOTFOUND":case "CONVERSATIONNOTFOUND":return "conversationNotFound";case "PETNOTFOUND":return "petNotFound";case "TIMEOUT":case "STREAMTIMEOUT":return "streamTimeout";case "MEDIAUPLOADFAILED":case "UNRECOGNIZEDVIDEOFORMAT":case "FILETOOSMALL":return "mediaUploadFailed";case "MODERATIONBLOCKED":return "moderationBlocked";case "UPSTREAMLLMTIMEOUT":return "upstreamLlmTimeout";case "INTERNALERROR":case "INTERNALSERVERERROR":return "internalError";case "STREAMINCOMPLETE":case "CHATSTREAMINCOMPLETE":return "streamIncomplete";case "INVALIDANALYSISTYPE":case "INVALIDUPLOADPURPOSE":return "unknown";default:return "unknown"}}i(Me,"fromWire");var tr=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function ie(e){return tr.has(e)}i(ie,"isAutoRetryable");var rr=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function Ue(e){return ie(e)||rr.has(e)}i(Ue,"isRetryableCode");var nr=500,ae=8e3,Be=4;function qe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(nr*2**r,ae);return Math.floor(t()*o)}i(qe,"backoffDelayMs");var or=Object.freeze({authExpired:"Please sign in again to continue.",authRejected:"Please sign in again to continue.",sessionRequired:"This app needs to be updated to keep using Everfur.",accessDenied:"This feature isn't available on your account right now.",paymentRequired:"This is part of a paid plan.",quotaExceeded:"You have used today's messages. This resets tomorrow.",rateLimited:"You are sending messages quickly. Try again in a few seconds.",validationFailed:"Something in that request was not right. Check the details and try again.",sdkUpdateRequired:"This app needs to be updated to keep using Everfur.",conflict:"That is already running. Wait for it to finish, then try again.",idempotencyConflict:"That message was already delivered.",idempotencyInFlight:"That is still processing. Give it a moment.",conversationNotFound:"This conversation is no longer available.",petNotFound:"We could not find that pet. Please pick a pet and try again.",resourceNotFound:"We could not find that.",streamTimeout:"The response timed out. Tap retry to try again.",mediaUploadFailed:"We could not upload that photo. Please attach it again.",moderationBlocked:"This request cannot be answered here.",upstreamLlmTimeout:"The response timed out. Tap retry to try again.",internalError:"We hit a snag on our end. Please try again.",notImplemented:"That is not available yet.",serviceUnavailable:"That service is briefly unavailable. Try again shortly.",streamIncomplete:"The connection dropped mid-answer. Tap retry to continue.",unknown:"Something went wrong. Please try again."});function se(e){return or[e]}i(se,"userFacingError");function He(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}i(He,"defineHidden");var ir=/^[a-z][a-z0-9_]{0,63}$/;function f(e,t){let r=V(t?.wireCode,t?.wireEnvelope),o={code:e,category:Le(e),retryable:t?.retryable??Ue(e),displayMessage:se(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&ir.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&He(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&He(o,"raw",t.raw),Object.freeze(o)}i(f,"makeEverfurError");function z(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}i(z,"ok");function y(e){return Object.freeze({ok:false,error:e})}i(y,"err");var K=class K extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,K.prototype);}};i(K,"EverfurConfigError");var I=K;function j(e){throw new Error(`assertNever: unhandled discriminated-union member ${JSON.stringify(e)}`)}i(j,"assertNever");function Ve(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}i(Ve,"errorFrame");function lr(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}i(lr,"authHeaders");function D(e,t){return {...e,headers:{...dr(e.headers),...lr(t)}}}i(D,"withAuthHeaders");function dr(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let n=r.toLowerCase();n==="authorization"||n==="x-everfur-partner-key"||(t[r]=o);}return t}i(dr,"stripAuthHeaders");async function Ke(e,t){if(t.mode==="anonymous")return t.transport.request(D(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return y(le())}let o=await t.transport.request(D(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let n;try{n=await t.identity.currentToken({forceRefresh:!0});}catch{return y(le())}let a=await t.transport.request(D(e,{mode:"personalized",token:n,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?y(le(a.error.httpStatus)):a}i(Ke,"authedSend");function le(e){return f("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}i(le,"authRejectedError");function Ge(e){return f("internalError",{retryable:true,wireMessage:ur(e)})}i(Ge,"networkError");function ur(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}i(ur,"describeCause");var cr=3e4,pr=ae*2,yr="idempotency-key",fr=new Set(["POST","PUT","PATCH","DELETE"]),mr=Object.freeze({onEvent(){}}),br=Object.freeze({setTimeout:i((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:i(e=>clearTimeout(e),"clearTimeout"),now:i(()=>Date.now(),"now")});function gr(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}i(gr,"seededIdempotencyKey");function Ye(e){let t=e.observer??mr,r=e.timers??br,o=e.rng??Math.random,n=e.sleep??((E,u)=>Or(E,r,u)),a=e.maxAttempts??Be,s=e.unaryTimeoutMs??cr,l=e.newIdempotencyKey??vr(),d=i(E=>{try{t.onEvent(E);}catch{}},"emit");async function p(E,u,_){let k=_?.maxAttempts,Kt=Math.max(1,k??a),Gt=_?.idempotent??fr.has(u.method),Wt=_?.idempotencyKey===void 0?null:gr(_.idempotencyKey),ee=Gt?Wt??l():null,Yt=hr(u,ee),te=0;for(;;){let O=i(ne=>Object.freeze({call:E,method:u.method,path:u.path,attempt:te,...ee?{idempotencyKey:ee}:{},...ne}),"stamp");d(O({phase:"attempt"}));let Ie=Fr(s,r),ze=Pr(Ie.signal,u.signal),A;try{A=await Ke({...Yt,signal:ze.signal},e.auth);}catch(ne){A=y(Ge(ne));}finally{ze.dispose(),Ie.cancel();}if(A.ok)return d(O({phase:"settled",ok:true,reason:"ok"})),A;let S=A.error,H=_r(S,te,{maxAttempts:Kt,rng:o,now:r.now(),aborted:u.signal?.aborted===true,...k!==void 0?{perCallMaxAttempts:k}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),re={ok:false,code:S.code,reason:H.reason,...S.httpStatus!==void 0?{httpStatus:S.httpStatus}:{},...S.requestId!==void 0?{requestId:S.requestId}:{}};if(!H.retry)return d(O({phase:"settled",...re})),y(S);if(d(O({phase:"retry",...re,delayMs:H.delayMs})),await n(H.delayMs,u.signal),u.signal?.aborted===true)return d(O({phase:"settled",...re,reason:"aborted"})),y(S);te+=1;}}i(p,"send");async function h(E){return D(E,await wr(e.auth))}i(h,"authorize");async function*R(E,u,_){d(Object.freeze({call:E,phase:"stream.open",method:u.method,path:u.path,attempt:0}));try{yield*e.auth.transport.stream(u,_);}catch{yield Ve({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return i(R,"stream"),Object.freeze({send:p,authorize:h,stream:R})}i(Ye,"createRequestFunnel");function hr(e,t){let r={};for(let[o,n]of Object.entries(e.headers??{}))o.toLowerCase()!==yr&&(r[o]=n);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}i(hr,"assembleHeaders");function vr(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}i(vr,"defaultIdempotencyKeyFactory");var Er=10;function _r(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=Rr(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!ie(e.code))return {retry:false,reason:"terminal-code"};let n=o==="burst"?"burst-throttle":"retryable-code";if(i(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=i(()=>{if(r.policy===void 0)return null;let p;try{p=r.policy.maxAttempts(e.code);}catch{return null}return typeof p!="number"||!Number.isFinite(p)?null:Math.max(1,Math.min(Er,Math.floor(p)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=Tr(e,r.now);return d!==null?d>pr?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:n,delayMs:d}:{retry:true,reason:n,delayMs:qe(t,r.rng)}}i(_r,"decideRetry");function Rr(e){let t=e.code==="unknown"?Me(xr(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}i(Rr,"throttleKind");function Tr(e,t){let r=kr(e.raw);if(r!==null){let n=r-t;return n>0?n:0}let o=Cr(e.raw);return o===null?null:Math.round(o*1e3)}i(Tr,"retryOverrideMs");function Cr(e){for(let t of de(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}i(Cr,"findRetryAfterSeconds");function kr(e){for(let t of de(e)){let r=t.resets_at,o=Sr(r);if(o!==null)return o}return null}i(kr,"findResetsAt");function de(e){if(!We(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];We(o)&&t.push(o);}return t}i(de,"candidateScopes");function Sr(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}i(Sr,"parseInstantMs");function xr(e){for(let t of de(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}i(xr,"rawWireCode");function We(e){return typeof e=="object"&&e!==null}i(We,"isRecord");async function wr(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}i(wr,"resolveDeviceAuth");function Fr(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:i(()=>t.clearTimeout(o),"cancel")}}i(Fr,"boundedSignal");function Pr(e,t){let r=i(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let n=i(()=>o.abort(),"onAbort");return e.addEventListener("abort",n,{once:true}),t.addEventListener("abort",n,{once:true}),{signal:o.signal,dispose:i(()=>{e.removeEventListener("abort",n),t.removeEventListener("abort",n);},"dispose")}}i(Pr,"mergeSignals");function Or(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let n=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=i(()=>{t.clearTimeout(n),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}i(Or,"delayAbortable");var $e=Object.freeze({track(){},trackExpectedFailure(){}});function Je(e){let t={uri:e.uri,mimeType:e.mimeType},r=ue(e);return r!==null&&(t.sizeBytes=r),Object.freeze(t)}i(Je,"fileHandleFromMedia");function ue(e){let t=e.byteSize??e.sizeBytes;return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:null}i(ue,"mediaByteSize");function Qe(e,t){return Object.freeze(t===void 0?{mode:e}:{mode:e,maxDurationSeconds:t})}i(Qe,"captureOptionsFor");function ce(e){return e!=null&&e.isAvailable===true}i(ce,"isCaptureAvailable");var Xe=Object.freeze({setTimeout:i((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:i(e=>clearTimeout(e),"clearTimeout"),now:i(()=>Date.now(),"now")});function Ze(e,t,r){return new Promise(o=>{if(t.aborted){o();return}let n={handle:void 0},a=i(()=>{r.clearTimeout(n.handle),t.removeEventListener("abort",a),o();},"done");n.handle=r.setTimeout(a,e),t.addEventListener("abort",a,{once:true});})}i(Ze,"delayAbortable");function Ar(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=i(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}i(Ar,"mergeSignals");var pe=class pe{constructor(t){this.listeners=new Set;this.epoch=0;this.inFlight=null;this.snapshot=Object.freeze({...t});}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t);}}getSnapshot(){return this.snapshot}patch(t){this.snapshot=Object.freeze({...this.snapshot,...t});for(let r of this.listeners)r();}beginOperation(t){this.inFlight?.abort();let r=new AbortController;this.inFlight=r;let o=this.epoch;return {signal:t?Ar(r.signal,t):r.signal,epoch:o,settle:i(()=>{this.inFlight===r&&(this.inFlight=null);},"settle")}}alive(t){return t===this.epoch}rescope(){this.epoch+=1,this.inFlight?.abort(),this.inFlight=null;}dispose(){this.epoch+=1,this.inFlight?.abort(),this.inFlight=null,this.listeners.clear();}};i(pe,"MediaStore");var G=pe;function et(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}i(et,"hasLoneSurrogate");var Ir=Object.freeze(["primary_label","primary_confidence","subtype_label","subtype_display","subtype_confidence","risk_tier","confidence_tier","copy_short","disease_name","disease_framing","model_version","skin_v2","eye_v2","llm_checkup"]),zr=Object.freeze(["decision_audit","decision_thresholds","per_class_auroc","ood_layers","gate1_score","possible_conditions","top_class"]),jr=new Set(["skin_v2","eye_v2","llm_checkup"]),Dr=new Set(["primary_confidence","subtype_confidence"]),Nr=new Set(["low_risk","concern","uncertain"]),Lr=new Set(["possible","probable"]),Mr=Object.freeze({primary_label:64,subtype_label:64,subtype_display:128,copy_short:512,disease_name:128,disease_framing:512,model_version:64});function tt(e){let t=v(e)?e:{},r={};for(let n of Ir){if(!(n in t))continue;let a=t[n],s=Ur(n,a);s!==F&&(r[n]=s);}let o=0;for(let n of zr)n in t&&(o+=1);return Object.freeze({metadata:Object.freeze(r),droppedOperatorKeys:o})}i(tt,"projectDetectionMetadata");var F=Symbol("drop");function Ur(e,t){if(jr.has(e))return typeof t=="boolean"?t:F;if(Dr.has(e))return rt(t)?t:F;if(e==="risk_tier")return typeof t=="string"&&Nr.has(t)?t:F;if(e==="confidence_tier")return typeof t=="string"&&Lr.has(t)?t:F;if(typeof t!="string")return F;let r=Mr[e]??256;return t.length>r?t.slice(0,r):t}i(Ur,"acceptKey");function rt(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}i(rt,"isUnitConfidence");function nt(e){if(!v(e))return null;let t=m(e.summary),r=m(e.disclaimer),o=Br(e.recommendations??e.recommendation);return t===null&&r===null&&o.length===0?null:Object.freeze({summary:t??"",recommendations:Object.freeze(o),disclaimer:r??""})}i(nt,"parseInterpretation");function ot(e){if(!v(e))return {};if(v(e.metadata))return e.metadata;let t=e.detections;if(Array.isArray(t)&&t.length>0){let r=t[0];if(v(r)&&v(r.metadata))return r.metadata;if(v(r))return r}return e}i(ot,"locateDetectionMetadata");function it(e){return v(e)?v(e.interpretation)?e.interpretation:e:null}i(it,"locateInterpretation");function v(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}i(v,"isRecord");function m(e){return typeof e=="string"&&e.length>0?e:null}i(m,"asString");function Br(e){return typeof e=="string"?e.length>0?[e]:[]:Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}i(Br,"asStringList");function at(e){return rt(e)?e:null}i(at,"asUnitNumber");function ye(e){return typeof e=="number"&&Number.isFinite(e)?e:null}i(ye,"asFiniteNumber");var N=Object.freeze({initiate:"/widget/v1/uploads/initiate",precheck:"/widget/v1/photo/precheck",photoAnalyze:"/widget/v1/photo/analyze",videoAnalyze:"/widget/v1/video/analyze",job:i(e=>et(e)?null:`/widget/v1/analysis/jobs/${encodeURIComponent(e)}`,"job")});async function lt(e,t){let r={purpose:t.purpose,content_type:t.contentType};t.byteSize!==null&&(r.byte_size=t.byteSize);let o={method:"POST",path:N.initiate,body:r,...t.signal?{signal:t.signal}:{}},n=await e.send("media.initiateUpload",o);if(!n.ok)return y(n.error);let a=qr(n.value);return a===null?y(f("mediaUploadFailed",{retryable:false})):z(a)}i(lt,"initiateUpload");function qr(e){if(!v(e))return null;let t=m(e.url),r=m(e.s3_key);if(t===null||r===null)return null;let o=e.fields,n={};if(v(o))for(let[a,s]of Object.entries(o))typeof s=="string"&&(n[a]=s);return Object.freeze({url:t,fields:Object.freeze(n),s3Key:r,expiresAt:ye(e.expires_at)})}i(qr,"parsePresigned");async function dt(e,t,r,o,n){try{return await e.presignedPut(Je(t),{target:r,idempotencyKey:o,...n?{signal:n}:{}}),z(void 0)}catch{return y(f("mediaUploadFailed",{retryable:false}))}}i(dt,"stageUpload");async function ut(e,t){let r={method:"POST",path:N.precheck,body:{s3_key:t.s3Key,type:t.type},...t.signal?{signal:t.signal}:{}},o=await e.send("media.precheck",r);return o.ok?Hr(o.value):{verdict:"proceed",reasonCodes:[],precheckToken:null}}i(ut,"runPrecheck");function Hr(e){if(!v(e))return {verdict:"proceed",reasonCodes:[],precheckToken:null};let t=m(e.verdict),r=t==="retake"||t==="reject"?t:"proceed",o=Array.isArray(e.reason_codes)?e.reason_codes.filter(n=>typeof n=="string"):[];return Object.freeze({verdict:r,reasonCodes:Object.freeze(o),precheckToken:m(e.precheck_token)})}i(Hr,"parsePrecheck");async function ct(e,t,r,o,n){let a={method:"POST",path:t,body:r,...n?{signal:n}:{}},s=await e.send("media.analyze",a);if(s.ok){let d=Vr(s.value);return d!==null?{kind:"async",job:d}:{kind:"sync",body:s.value}}let l=o(s.error.httpStatus,s.error);return l!==null?{kind:"gate",gate:l}:{kind:"error",error:s.error}}i(ct,"submitAnalyze");function Vr(e){if(!v(e))return null;let t=m(e.job_id);if(t===null)return null;let r=m(e.status);return r!==null&&Yr(r)?null:Object.freeze({jobId:t,estimatedSeconds:ye(e.estimated_completion_seconds)})}i(Vr,"parseAsyncJob");var Kr=2e3,st=5e3,Gr=9e4;async function pt(e,t,r){let{timers:o,signal:n,alive:a}=r,s=o.now(),l=Math.max(Gr,(r.estimatedSeconds??0)*1e3),d=Kr;for(;;){if(n.aborted||!a())return {kind:"aborted"};if(await Ze(d,n,o),n.aborted||!a())return {kind:"aborted"};if(o.now()-s>l)return {kind:"timeout"};let p=N.job(t);if(p===null)return {kind:"notFound"};let h=await e.send("media.pollJob",{method:"GET",path:p,...n?{signal:n}:{}},{maxAttempts:1});if(n.aborted||!a())return {kind:"aborted"};if(!h.ok){if(h.error.httpStatus===404)return {kind:"notFound"};d=Math.min(st,d+1e3);continue}let R=Wr(h.value);if(R==="COMPLETED")return {kind:"complete",body:h.value};if(R==="FAILED")return {kind:"failed",error:$r(h.value)};d=Math.min(st,d+1e3);}}i(pt,"pollJob");function Wr(e){return v(e)?(m(e.status)??"PROCESSING").toUpperCase():"PROCESSING"}i(Wr,"jobStatusOf");function Yr(e){let t=e.toUpperCase();return t==="COMPLETED"||t==="FAILED"}i(Yr,"isTerminalStatus");function $r(e){let t=v(e)?m(e.error)??m(e.error_code):null;return f("internalError",{retryable:false,...t?{wireMessage:t}:{}})}i($r,"jobFailureError");function yt(e,t){return e===422?{kind:"species_unsupported",species:"cat"}:e===400?{kind:"pet_context_required"}:null}i(yt,"detectPhotoGate");function ft(e,t){let r={s3_key:e};return t.type!==void 0&&(r.type=t.type),t.petRef!=null&&(r.pet_id=t.petRef),t.precheckToken!=null&&(r.precheck_token=t.precheckToken),r}i(ft,"analyzeBody");var L=Object.freeze({kind:"accepted"});function mt(e){return new fe(e)}i(mt,"createPhotoController");var me=class me extends G{constructor(t){super({status:"idle",region:t.region??"skin",result:null,gate:L,error:null,isCaptureAvailable:ce(t.camera)}),this.funnel=t.funnel??Ye({auth:t.auth,...t.errorPolicy?{errorPolicy:t.errorPolicy}:{}}),this.camera=t.camera,this.upload=t.upload,this.telemetry=t.telemetry??$e,this.timers=t.timers??Xe,this.makeIdempotencyKey=t.makeIdempotencyKey??Zr();}async capture(t,r){if(!ce(this.camera))return y(f("unknown",{retryable:false}));let o;try{o=await this.camera.capture(Qe("photo"));}catch{return this.snapshot.status!=="idle"&&this.patch({status:"idle"}),y(f("unknown",{retryable:false}))}return this.analyze(o,t,r)}async analyze(t,r,o){let n=this.beginOperation(o.signal),a=this.makeIdempotencyKey(),s=this.timers.now();this.patch({status:"capturing",region:r,error:null,result:null,gate:L});try{let l=await lt(this.funnel,{purpose:"skin_scan",contentType:t.mimeType,byteSize:ue(t),signal:n.signal});if(n.signal.aborted||!this.alive(n.epoch))return T();if(!l.ok)return this.fail(n,l.error);let d=await dt(this.upload,t,l.value,a,n.signal);if(n.signal.aborted||!this.alive(n.epoch))return T();if(!d.ok)return this.fail(n,d.error);let p=await ut(this.funnel,{s3Key:l.value.s3Key,type:r,signal:n.signal});if(n.signal.aborted||!this.alive(n.epoch))return T();if(p.verdict!=="proceed")return this.gateRetake(n,r,p.reasonCodes);this.patch({status:"analyzing"});let h=await ct(this.funnel,N.photoAnalyze,ft(l.value.s3Key,{type:r,petRef:o.petRef,precheckToken:p.precheckToken}),yt,n.signal);if(n.signal.aborted||!this.alive(n.epoch))return T();switch(h.kind){case "error":return this.fail(n,h.error);case "gate":return this.gateDomain(n,r,h.gate);case "sync":return this.complete(n,h.body,r,null,s);case "async":{let R=await pt(this.funnel,h.job.jobId,{timers:this.timers,signal:n.signal,alive:i(()=>this.alive(n.epoch),"alive"),estimatedSeconds:h.job.estimatedSeconds});if(n.signal.aborted||!this.alive(n.epoch))return T();switch(R.kind){case "aborted":return T();case "complete":return this.complete(n,R.body,r,h.job.jobId,s);case "failed":return this.fail(n,R.error);case "timeout":return this.fail(n,f("streamTimeout",{retryable:!0}));case "notFound":return this.fail(n,f("conversationNotFound",{retryable:!1,httpStatus:404}));default:return this.fail(n,f("internalError",{retryable:!1}))}}default:return this.fail(n,f("internalError",{retryable:!1}))}}finally{n.settle();}}reset(){this.inFlight?.abort(),this.inFlight=null,this.patch({status:"idle",result:null,gate:L,error:null});}complete(t,r,o,n,a){if(!this.alive(t.epoch))return T();let s=Jr(r,o,n);return s.droppedOperatorKeys>0&&this.telemetry.track("analysis.metadata_leak_guard",{droppedKeyCount:s.droppedOperatorKeys}),this.patch({status:"complete",result:s.result,gate:L,error:null}),this.telemetry.track("analysis.species_gate",{outcome:"accepted",region:o}),this.telemetry.track("analysis.result",{capability:"photo",region:o,riskTier:s.result.riskTier??"",confidenceTier:s.result.confidenceTier??"",modelVersion:s.result.modelVersion??"",timeToResultMs:this.timers.now()-a}),z(s.result)}gateDomain(t,r,o){if(!this.alive(t.epoch))return T();let n=o.kind==="species_unsupported"?Object.freeze({kind:"species_unsupported",species:"cat"}):Object.freeze({kind:"pet_context_required"});return this.patch({status:"idle",gate:n,error:null,result:null}),this.telemetry.track("analysis.species_gate",{outcome:o.kind,region:r,...o.kind==="species_unsupported"?{species:"cat"}:{}}),y(f("unknown",{retryable:false}))}gateRetake(t,r,o){if(!this.alive(t.epoch))return T();this.patch({status:"idle",gate:Object.freeze({kind:"retake",reasons:Object.freeze([...o])}),error:null,result:null}),this.telemetry.track("analysis.quality_gate",{usable:false,reasons:o});let n=o.includes("wrong_species")?"species_unsupported":"retake";return this.telemetry.track("analysis.species_gate",{outcome:n,region:r}),y(f("unknown",{retryable:false}))}fail(t,r){return this.alive(t.epoch)?(this.patch({status:"error",error:r,gate:L}),this.telemetry.trackExpectedFailure("analysis.error",{code:r.code,...r.httpStatus!==void 0?{httpStatus:r.httpStatus}:{}}),y(r)):T()}};i(me,"PhotoController");var fe=me;function Jr(e,t,r){let o=tt(ot(e)),n=o.metadata,a=nt(it(e));return {result:Object.freeze({jobId:r,analysisType:t,primaryLabel:m(n.primary_label)??"Uncertain",riskTier:Qr(n.risk_tier),confidence:at(n.primary_confidence),subtypeDisplay:m(n.subtype_display),confidenceTier:Xr(n.confidence_tier),diseaseName:m(n.disease_name),diseaseFraming:m(n.disease_framing),copyShort:m(n.copy_short),interpretation:a,modelVersion:m(n.model_version)??(v(e)?m(e.model_version):null)}),droppedOperatorKeys:o.droppedOperatorKeys}}i(Jr,"mapPhotoResult");function Qr(e){return e==="low_risk"||e==="concern"||e==="uncertain"?e:null}i(Qr,"asRiskTier");function Xr(e){return e==="possible"||e==="probable"?e:null}i(Xr,"asConfidenceTier");function T(){return y(f("unknown",{retryable:false}))}i(T,"abortedResult");function Zr(){let e=0;return ()=>`photo-analyze-${Date.now().toString(36)}-${(e++).toString(36)}-${Math.random().toString(36).slice(2,10)}`}i(Zr,"defaultIdempotencyFactory");var bt=Symbol.for("@everfur/sdk#EverfurContext@v1"),gt=globalThis,ht=gt[bt]??(gt[bt]=createContext(null));ht.displayName??="EverfurContext";function W(){let e=useContext(ht);if(e===null)throw new I("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}i(W,"useEverfurContext");var sn=Object.freeze({status:"idle",region:"skin",result:null,gate:Object.freeze({kind:"accepted"}),error:null,isCaptureAvailable:false}),ln=i(()=>{},"NOOP_UNSUBSCRIBE");function be(e){let{runtime:t,userRef:r,scopeEpoch:o}=W(),n=e.petRef,[a,s]=useState(null);useEffect(()=>{let{services:u}=t.registry,_=t.registry.acquire("photo",`${r??""}|${n}`,()=>mt({...u.errorPolicy?{errorPolicy:u.errorPolicy}:{},auth:u.authFor(r),camera:u.camera,upload:u.upload,telemetry:u.telemetry}),k=>k.dispose());return s(_),()=>{s(k=>k===_?null:k),t.registry.release(_);}},[t,r,n,o]);let l=useCallback(u=>a?a.subscribe(u):ln,[a]),d=useCallback(()=>a?a.getSnapshot():sn,[a]),p=useSyncExternalStore(l,d,d),h=useCallback((u,_)=>a?a.analyze(u,_,{petRef:n}):Promise.resolve(vt()),[a,n]),R=useCallback(u=>a?a.capture(u,{petRef:n}):Promise.resolve(vt()),[a,n]),E=useCallback(()=>{a?.reset();},[a]);return useMemo(()=>({status:p.status,region:p.region,result:p.result,gate:p.gate,error:p.error,isCaptureAvailable:p.isCaptureAvailable,isBootstrapping:a===null,analyze:h,capture:R,reset:E}),[p,a,h,R,E])}i(be,"usePhotoCheckup");function vt(){return y(f("internalError",{retryable:true}))}i(vt,"notReadyError");function ve(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.keys(e))ve(e[t]);}return e}i(ve,"deepFreeze");var dn=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),_t={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},Rt={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},Et={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},un={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},cn={regular:"400",medium:"500",bold:"700"},pn={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},yn=0,Y="System",$="monospace",fn=["content","heading","control","compact","badge"];function mn(e){let t={};for(let r of fn)t[r]=e;return t}i(mn,"authoredTierSizes");function Tt(){return {family:Y,mono:$,fontUrl:null,families:{regular:Y,medium:Y,bold:Y,mono:$,monoMedium:$,monoBold:$},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:Et,tierSizes:mn(Et),lineHeight:un,weight:cn,letterSpacing:pn,scale:1,maxScale:yn,scaleCaps:dn}}i(Tt,"baseType");var Ct={},ge=Object.freeze({standard:Object.freeze([.2,0,0,1]),emphasized:Object.freeze([.2,.8,.2,1]),exit:Object.freeze([.4,0,1,1])});function he(e){return `cubic-bezier(${e.join(", ")})`}i(he,"cssCubicBezier");var kt={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:he(ge.standard),emphasized:he(ge.emphasized),exit:he(ge.exit)},reducedMotion:false},bn={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FDFBF8",surfaceSubtle:"#EFE9E3",background:"#FFFFFF",borderRingCream:"#D8D2C8",chatGround:"#FFFFFF",composerFill:"#FDFBF8",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#111111",secondary:"#0E462E",muted:"#6E6660",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#B91C1C",errorRed:"#FF1B00",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(185,28,28,0.12)",badgeBgNeutral:"rgba(110,102,96,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",bubbleVet:"#FFC3BC",onBubbleVet:"#111111",skeleton:"#EFE9E3",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)"},St=ve({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:bn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct}),gn={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A938C",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",bubbleVet:"#FFC3BC",onBubbleVet:"#111111",skeleton:"#23272C",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)"};ve({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:gn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct});var xt=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),wt=globalThis,Ee=wt[xt]??(wt[xt]=createContext(St));Ee.displayName??="EverfurThemeContext";function g(){return useContext(Ee)}i(g,"useEverfurTheme");function Tn(e,t){let r=e.scaleCaps[t];return r>0?r:void 0}i(Tn,"tierMultiplier");function b({tier:e="content",...t}){let{type:r}=g(),o=Tn(r,e);return createElement(Text,o===void 0?t:{maxFontSizeMultiplier:o,...t})}i(b,"Text");forwardRef(i(function(t,r){return createElement(TextInput,{...t,...r===null?{}:{ref:r}})},"TextInput"));var Cn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function U(e,t){let r=e.type,o=r.families[t];return t==="mono"||r.namedFaces[t]?{fontFamily:o}:{fontFamily:o,fontWeight:r.weight[Cn[t]]}}i(U,"face");var Te=class Te extends Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey};}static getDerivedStateFromError(){return {failed:true}}static getDerivedStateFromProps(r,o){return Object.is(r.resetKey,o.key)?null:{failed:false,key:r.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};i(Te,"HostRenderBoundary");var _e=Te;function Sn({render:e}){return e()}i(Sn,"RenderHost");function Re({render:e,fallback:t,resetKey:r}){return createElement(_e,{fallback:t,resetKey:r,children:createElement(Sn,{render:e})})}i(Re,"HostRender");var xn=Object.freeze({chat:Object.freeze(["chat.message.create"]),records:Object.freeze(["records.upload.create","records.record.read"]),recordsClinic:Object.freeze(["records.clinic.create"]),video:Object.freeze(["video.gait.execute"]),photo:Object.freeze(["photo.checkup.execute"]),animations:Object.freeze(["animations.state.read"]),televet:Object.freeze(["televet.visit.create"])});function wn(e){return xn[e]}i(wn,"requires");function Ot(e,t,r){let o=wn(e),n=new Map;for(let l of t)n.set(l.resource,l);if(r?.isPending===true&&o.some(l=>!n.has(l)))return Ce({name:e,enabled:false,isPending:true,limits:{}});let a=Fn(o,n);return o.filter(l=>n.get(l)?.granted!==true).length===0?Ce({name:e,enabled:true,isPending:false,limits:a}):Ce({name:e,enabled:false,isPending:false,limits:a,disabled:Pn(o,n)})}i(Ot,"decideCapability");function Fn(e,t){let r={};for(let o of e){let n=t.get(o)?.limits;if(n)for(let[a,s]of Object.entries(n)){let l=r[a];r[a]=l===void 0?s:Math.min(l,s);}}return r}i(Fn,"mergeLimits");function Pn(e,t){for(let r of e){let o=t.get(r)?.disabled;if(o)return Object.freeze({reason:o.reason,level:o.level,recoverable:o.recoverable})}return Object.freeze({reason:se("accessDenied"),level:"user_entitlement",recoverable:false})}i(Pn,"disabledFor");function Ce(e){let t={name:e.name,enabled:e.enabled,isPending:e.isPending,limits:Object.freeze({...e.limits})};return e.disabled!==void 0&&(t.disabled=e.disabled),Object.freeze(t)}i(Ce,"freezeDecision");function ke(e){let{runtime:t}=W(),r=t.entitlements,o=useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return useMemo(()=>Ot(e,o.decisions,{isPending:o.isPending}),[e,o])}i(ke,"useCapability");var In=48;function zn(e){return e.isPending?"pending":e.enabled?"enabled":"disabled"}i(zn,"selectView");function jt(e){let{capability:t,children:r,renderDisabled:o,renderPending:n,style:a}=e,s=ke(t),l=useMemo(()=>zn(s),[s]);switch(l){case "enabled":return r;case "pending":return n?jsx(Re,{render:n,fallback:jsx(It,{capability:t,style:a})}):jsx(It,{capability:t,style:a});case "disabled":return o?jsx(Re,{render:()=>o(s),fallback:jsx(zt,{decision:s,style:a}),resetKey:s}):jsx(zt,{decision:s,style:a});default:return j(l)}}i(jt,"CapabilityGate");function It({capability:e,style:t}){let r=g(),o=useMemo(()=>Dt(r),[r]);return jsx(View,{style:[o.offstate,t],accessible:true,accessibilityState:{busy:true},accessibilityLabel:`Loading ${e}`,children:jsx(View,{style:o.skeletonBar})})}i(It,"PendingSkeleton");function zt({decision:e,style:t}){let r=g(),o=useMemo(()=>Dt(r),[r]),n=e.disabled?.reason??"";return jsx(View,{style:[o.offstate,t],accessible:true,accessibilityRole:"text",accessibilityLabel:n,children:n.length>0?jsx(b,{style:o.offstateText,children:n}):null})}i(zt,"OffState");function Dt(e){let{color:t,space:r,radius:o,type:n}=e;return StyleSheet.create({offstate:{minHeight:In,justifyContent:"center",paddingHorizontal:r.lg,paddingVertical:r.md,backgroundColor:t.surfaceCream,borderRadius:o.md,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder},offstateText:{...U(e,"regular"),fontSize:n.size.body,lineHeight:Math.round(n.size.body*n.lineHeight.normal),color:t.text.muted},skeletonBar:{height:r.md,borderRadius:o.xs,backgroundColor:t.brandSofter}})}i(Dt,"makeStyles");var B=Object.freeze({title:"For educational use only",body:"Everfur is for educational purposes only. It helps you track visible changes through AI checkups. It does not diagnose, treat, prescribe, or replace veterinary care. For urgent symptoms or emergencies, contact a veterinarian immediately."});function Mt(e){let t=g(),r=useMemo(()=>Nn(t),[t]);return jsxs(View,{style:[r.container,e.style],accessible:true,accessibilityRole:"text",accessibilityLabel:`${B.title}. ${B.body}`,children:[jsx(b,{style:r.title,children:B.title}),jsx(b,{style:r.body,children:B.body})]})}i(Mt,"ClinicalDisclaimer");function Nn(e){let{color:t,space:r,type:o}=e;return StyleSheet.create({container:{paddingHorizontal:r.lg,paddingVertical:r.md,borderTopWidth:StyleSheet.hairlineWidth,borderTopColor:t.borderHairlineGreen,backgroundColor:t.surfaceCream,gap:r.xs},title:{...U(e,"bold"),fontSize:o.size.caption,lineHeight:Math.round(o.size.caption*o.lineHeight.snug),color:t.text.secondary,letterSpacing:o.letterSpacing.eyebrow},body:{...U(e,"regular"),fontSize:o.size.caption,lineHeight:Math.round(o.size.caption*o.lineHeight.snug),color:t.text.muted}})}i(Nn,"makeStyles");var Kn=1400,Gn=300;function Bt(){let e=g(),t=useMemo(()=>Wn(e),[e]),r=e.motion.reducedMotion,[o,n]=useState(false);useEffect(()=>{let l=setTimeout(()=>n(true),Gn);return ()=>clearTimeout(l)},[]);let a=useRef(new Animated.Value(0)).current;useEffect(()=>{if(r||!o)return;let l=Animated.loop(Animated.timing(a,{toValue:1,duration:Kn,easing:Easing.linear,useNativeDriver:true}));return l.start(),()=>l.stop()},[r,o,a]);let s=r?null:{transform:[{rotate:a.interpolate({inputRange:[0,1],outputRange:["0deg","360deg"]})}]};return jsx(View,{style:t.wrap,accessible:true,accessibilityState:{busy:true},accessibilityLabel:"Analyzing photo",children:o?jsxs(Fragment,{children:[jsx(Animated.View,{style:[t.ring,s]}),jsx(b,{style:t.statusLine,children:"Analyzing"})]}):null})}i(Bt,"AnalyzingIndicator");function Wn(e){let{color:t,space:r,radius:o,type:n}=e,a=n.weight.medium,s=r.xxl*2,l=r.xs;return StyleSheet.create({wrap:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:r.xl,gap:r.md},ring:{width:s,height:s,borderRadius:o.pill,borderWidth:l,borderTopColor:t.success,borderRightColor:t.success,borderBottomColor:t.borderRingCream,borderLeftColor:t.borderRingCream},statusLine:{color:t.text.secondary,fontFamily:n.family,fontSize:n.size.subtitle,lineHeight:n.size.subtitle*n.lineHeight.snug,fontWeight:a,letterSpacing:n.letterSpacing.tight,textAlign:"center"}})}i(Wn,"makeStyles");var eo=1100,to=1.6,ro=.35;function no(e,t){let{color:r}=e;switch(t){case "low_risk":return {accent:r.success,wash:r.badgeBgPositive,label:"Low risk",pulse:false};case "concern":return {accent:r.cautionAccent,wash:r.badgeBgCaution,label:"Concern",pulse:true};case "uncertain":return {accent:r.text.muted,wash:r.badgeBgNeutral,label:"Uncertain",pulse:false}}}i(no,"toneSpec");function Vt({riskTier:e}){let t=g(),r=useMemo(()=>oo(t),[t]),o=useRef(new Animated.Value(0)).current,n=e===null?null:no(t,e),a=n!==null&&n.pulse&&!t.motion.reducedMotion;return useEffect(()=>{if(!a)return;let s=Animated.loop(Animated.timing(o,{toValue:1,duration:eo,easing:Easing.out(Easing.quad),useNativeDriver:true}));return s.start(),()=>s.stop()},[a,o]),n===null?null:jsxs(View,{style:[r.pill,{backgroundColor:n.wash}],accessible:true,accessibilityRole:"text",accessibilityLabel:n.label,children:[jsxs(View,{style:r.dotWrap,children:[a?jsx(Animated.View,{pointerEvents:"none",style:[r.dotRing,{backgroundColor:n.accent,opacity:o.interpolate({inputRange:[0,1],outputRange:[ro,0]}),transform:[{scale:o.interpolate({inputRange:[0,1],outputRange:[1,to]})}]}]}):null,jsx(View,{style:[r.dot,{backgroundColor:n.accent}]})]}),jsx(b,{style:[r.label,{color:n.accent}],children:n.label})]})}i(Vt,"SeverityBadge");function oo(e){let{space:t,radius:r,type:o}=e,n=o.weight.bold,a=t.sm;return StyleSheet.create({pill:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",gap:t.sm,paddingHorizontal:t.md,paddingVertical:t.xs,borderRadius:r.pill},dotWrap:{width:a,height:a,alignItems:"center",justifyContent:"center"},dot:{width:a,height:a,borderRadius:r.pill},dotRing:{position:"absolute",width:a,height:a,borderRadius:r.pill},label:{fontFamily:o.family,fontSize:o.size.caption,lineHeight:o.size.caption*o.lineHeight.snug,fontWeight:n,letterSpacing:o.letterSpacing.eyebrow}})}i(oo,"makeStyles");var Oe=120,Z=44;function ao(e){let{petRef:t,region:r,style:o}=e;return jsx(jt,{capability:"photo",style:o,children:jsx(lo,{petRef:t,region:r,style:o})})}i(ao,"PhotoCheckup");function so(e){return e.isBootstrapping||e.status==="capturing"||e.status==="analyzing"?"loading":e.status==="error"&&e.error?"error":e.status==="complete"&&e.result?"populated":e.gate.kind!=="accepted"?"gate":e.isCaptureAvailable?"empty":"native"}i(so,"selectView");function lo({petRef:e,region:t,style:r}){let o=be({petRef:e}),n=t??"skin",a=so(o),s=useMemo(()=>()=>{o.capture(n);},[o,n]),l=g(),d=useMemo(()=>P(l),[l]);return jsxs(View,{style:[d.container,r],children:[jsx(View,{style:d.body,children:uo(a,o,s)}),jsx(Mt,{})]})}i(lo,"PhotoBody");function uo(e,t,r){switch(e){case "loading":return jsx(Bt,{});case "native":return jsx(co,{});case "empty":return jsx(po,{onCapture:r});case "error":return jsx(yo,{error:t.error,onRetry:r});case "gate":return jsx(fo,{gate:t.gate,onRetry:t.reset});case "populated":return jsx(bo,{result:t.result});default:return j(e)}}i(uo,"renderView");function co(){let e=g(),t=useMemo(()=>P(e),[e]);return jsx(View,{style:t.offstate,accessible:true,accessibilityRole:"text",accessibilityLabel:"Camera is unavailable",children:jsx(View,{style:t.emptyGlyph})})}i(co,"NativeUnavailableState");function po({onCapture:e}){let t=g(),r=useMemo(()=>P(t),[t]);return jsx(View,{style:r.centered,accessible:true,accessibilityRole:"summary",accessibilityLabel:"Take a photo to check",children:jsx(Pressable,{onPress:e,accessibilityRole:"button",accessibilityLabel:"Take photo",style:r.scanButton,children:jsx(b,{style:r.scanLabel,children:"Take photo"})})})}i(po,"EmptyState");function yo({error:e,onRetry:t}){let r=g(),o=useMemo(()=>P(r),[r]);return jsxs(View,{style:o.centered,accessible:true,accessibilityRole:"alert",children:[jsx(b,{style:o.errorText,children:e.displayMessage}),e.retryable?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:o.primaryButton,children:jsx(b,{style:o.primaryLabel,children:"Try again"})}):null]})}i(yo,"ErrorState");function fo({gate:e,onRetry:t}){let r=g(),o=useMemo(()=>P(r),[r]),n=mo(e);return jsxs(View,{style:o.centered,accessible:true,accessibilityRole:"summary",accessibilityLabel:n,children:[jsx(b,{style:o.guidanceText,children:n}),e.kind!=="species_unsupported"?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:o.primaryButton,children:jsx(b,{style:o.primaryLabel,children:"Try again"})}):null]})}i(fo,"GateState");function mo(e){switch(e.kind){case "species_unsupported":return "Photo checks are coming soon for this pet.";case "pet_context_required":return "Choose a pet first, then take the photo.";case "retake":return "That photo was hard to read. Please take another.";case "accepted":return "";default:return j(e)}}i(mo,"gateMessage");function bo({result:e}){let t=g(),r=useMemo(()=>P(t),[t]),o=e.subtypeDisplay??e.diseaseName??e.primaryLabel,n=go(t,e.riskTier);return jsxs(ScrollView,{style:r.list,contentContainerStyle:[r.listContent,{backgroundColor:n}],accessibilityLabel:"Photo checkup result",children:[jsx(b,{style:r.resultHeadline,children:o}),jsx(Vt,{riskTier:e.riskTier}),e.diseaseFraming?jsx(b,{style:r.summaryText,children:e.diseaseFraming}):null,e.copyShort?jsx(b,{style:r.summaryText,children:e.copyShort}):null,e.interpretation?jsxs(View,{style:r.interpretationBlock,children:[jsx(b,{style:r.summaryText,children:e.interpretation.summary}),jsx(b,{style:r.disclaimerText,children:e.interpretation.disclaimer})]}):null]})}i(bo,"ResultState");function go(e,t){switch(t){case "low_risk":return e.color.checkupCardLowRiskBg;case "concern":return e.color.checkupCardConcernBg;default:return e.color.surfaceCream}}i(go,"resultCardTint");function P(e){let{color:t,space:r,radius:o,type:n}=e,a=n.weight.bold,s=n.weight.medium,l=n.weight.regular,d=e.brightness==="dark"?t.onAccent:t.brand;return StyleSheet.create({container:{flex:1,minHeight:Oe,backgroundColor:t.background},body:{flex:1},centered:{minHeight:Oe,flexGrow:1,alignItems:"center",justifyContent:"center",padding:r.xl},offstate:{minHeight:Oe,alignItems:"center",justifyContent:"center",padding:r.xl},emptyGlyph:{width:r.xxl,height:r.xxl,borderRadius:o.pill,backgroundColor:t.surfaceSubtle,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder},scanButton:{minHeight:Z,minWidth:Z,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.md,borderRadius:o.pill,backgroundColor:t.scanButtonPink,shadowColor:t.brand,shadowOpacity:.18,shadowRadius:o.xs,shadowOffset:{width:0,height:r.xs},elevation:3},scanLabel:{color:d,fontFamily:n.family,fontSize:n.size.subtitle,lineHeight:n.size.subtitle*n.lineHeight.snug,fontWeight:a,letterSpacing:n.letterSpacing.tight},primaryButton:{minHeight:Z,minWidth:Z,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.sm,borderRadius:o.pill,backgroundColor:t.brand},primaryLabel:{color:t.onPrimary,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.snug,fontWeight:s},errorText:{color:t.danger,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},guidanceText:{color:t.text.muted,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},list:{flex:1},listContent:{padding:r.lg,gap:r.sm,borderRadius:o.lg,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder,shadowColor:t.brand,shadowOpacity:.08,shadowRadius:o.xs,shadowOffset:{width:0,height:r.xs},elevation:2},resultHeadline:{color:t.text.secondary,fontFamily:n.family,fontSize:n.size.verdict,lineHeight:n.size.verdict*n.lineHeight.tight,fontWeight:a,letterSpacing:n.letterSpacing.tight},summaryText:{color:t.text.primary,fontFamily:n.family,fontSize:n.size.body,lineHeight:n.size.body*n.lineHeight.relaxed,fontWeight:l},interpretationBlock:{marginTop:r.sm,paddingTop:r.sm,gap:r.xs,borderTopWidth:StyleSheet.hairlineWidth,borderTopColor:t.borderHairlineGreen},disclaimerText:{color:t.text.muted,fontFamily:n.family,fontSize:n.size.caption,lineHeight:n.size.caption*n.lineHeight.normal,fontWeight:l}})}i(P,"makeStyles");export{ao as PhotoCheckup,be as usePhotoCheckup};
@@ -1,10 +1,10 @@
1
- import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-DQd1BzeU.cjs';
2
- import { A as AuthContext } from './identity-CQ_S12DE.cjs';
1
+ import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-DB5c8AAo.cjs';
2
+ import { A as AuthContext } from './identity-BC9AF3y4.cjs';
3
3
  import { E as EverfurError } from './EverfurError-DmELDpXp.cjs';
4
4
  import { E as EverfurResult } from './EverfurResult-ZtH-YV1h.cjs';
5
- import { R as RequestFunnel } from './requestFunnel-iJJcNuWp.cjs';
5
+ import { R as RequestFunnel } from './requestFunnel-D_o7se38.cjs';
6
6
  import { P as PetRef, C as ConversationId, b as ResponseId } from './ids-B2GAAifq.cjs';
7
- import { i as UrgencyLevel, F as Frame } from './config-1sjsfSqw.cjs';
7
+ import { i as UrgencyLevel, F as Frame } from './config-DQFMkaTU.cjs';
8
8
  import { E as ErrorPolicyPort } from './ErrorPolicyPort-D6CybiqJ.cjs';
9
9
  import { T as TelemetryPort } from './TelemetryPort-BDNr00hu.cjs';
10
10
  import { F as FileHandle } from './ports-BN6RHF9W.cjs';
@@ -78,11 +78,30 @@ declare function isCheckinSettled(checkin: ChatCheckin): boolean;
78
78
  type ChatStatus = 'idle' | 'streaming' | 'complete' | 'error';
79
79
  /** Opaque citation record (DoneFrame.citations shape). Rendered by the UI layer, never trusted for logic. */
80
80
  type Citation = Readonly<Record<string, unknown>>;
81
+ /**
82
+ * Who wrote a message: the owner (`user`), Everfur's AI (`assistant`), or a clinician replying into the owner's
83
+ * thread (`vet`). A `vet` row is never the AI's answer: it carries no `responseId` (so it takes no AI feedback),
84
+ * no citations, no urgency and no check-in, and the prebuilt surfaces draw it as its own bubble.
85
+ */
86
+ type ChatMessageRole = 'user' | 'assistant' | 'vet';
87
+ /**
88
+ * The clinician behind a `vet` message, as the wire names them (the televet `ChatSenderResponse`: the vet's
89
+ * CURRENT `display_name` and their own description of their work). Each field is null when the wire carries
90
+ * none; the SDK never invents a name.
91
+ */
92
+ interface ChatMessageSender {
93
+ /** The clinician's name as the registry holds it now (`display_name`), trimmed; null when the wire names none. */
94
+ readonly displayName: string | null;
95
+ /** The clinician's own description of their work (`specialty`), trimmed; null when not written. */
96
+ readonly specialty: string | null;
97
+ }
81
98
  interface ChatMessage {
82
99
  /** Stable list key: a client id for a user turn, the responseId for a finalized assistant turn. */
83
100
  readonly id: string;
84
- readonly role: 'user' | 'assistant';
101
+ readonly role: ChatMessageRole;
85
102
  readonly text: string;
103
+ /** The clinician, on a `vet` message only. */
104
+ readonly sender?: ChatMessageSender;
86
105
  /**
87
106
  * ISO 8601. A history row carries the server's `created_at`; an optimistic user turn and a streamed reply
88
107
  * are stamped from the controller clock when the row is created, and the stamp survives the reply's
@@ -391,4 +410,4 @@ interface ReadableStore<S> {
391
410
  getSnapshot(): S;
392
411
  }
393
412
 
394
- export { type ChatCheckin as C, FEEDBACK_NOTES_MAX_CHARS as F, MAX_IMAGE_KEYS_PER_MESSAGE as M, type PresignedPolicy as P, type ReadableStore as R, type SendOptions as S, type Timers as T, type UploadPort as U, type ChatCheckinTarget as a, type ChatConversation as b, type ChatConversationListOptions as c, type ChatConversationPage as d, type ChatFeedbackReceipt as e, type ChatFeedbackType as f, type ChatHistoryOptions as g, type ChatMessagePage as h, type ChatMessage as i, type ChatStatus as j, type Citation as k, type ChatController as l, type ChatControllerDeps as m, type SuggestedPromptCategory as n, CHAT_FEEDBACK_TYPES as o, CHECKIN_ANSWERABLE_STATUS as p, type ChatHandlers as q, type ChatSnapshot as r, type Timers$1 as s, isCheckinSettled as t };
413
+ export { type ChatCheckin as C, FEEDBACK_NOTES_MAX_CHARS as F, MAX_IMAGE_KEYS_PER_MESSAGE as M, type PresignedPolicy as P, type ReadableStore as R, type SendOptions as S, type Timers as T, type UploadPort as U, type ChatCheckinTarget as a, type ChatConversation as b, type ChatConversationListOptions as c, type ChatConversationPage as d, type ChatFeedbackReceipt as e, type ChatFeedbackType as f, type ChatHistoryOptions as g, type ChatMessagePage as h, type ChatMessage as i, type ChatMessageRole as j, type ChatMessageSender as k, type ChatStatus as l, type Citation as m, type ChatController as n, type ChatControllerDeps as o, type SuggestedPromptCategory as p, CHAT_FEEDBACK_TYPES as q, CHECKIN_ANSWERABLE_STATUS as r, type ChatHandlers as s, type ChatSnapshot as t, type Timers$1 as u, isCheckinSettled as v };
@@ -1,10 +1,10 @@
1
- import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-C8Lbu2hu.js';
2
- import { A as AuthContext } from './identity-sKp5WoCR.js';
1
+ import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-Cu8h8gQK.js';
2
+ import { A as AuthContext } from './identity-D_NR9ucT.js';
3
3
  import { E as EverfurError } from './EverfurError-DmELDpXp.js';
4
4
  import { E as EverfurResult } from './EverfurResult-SGvHKsCB.js';
5
- import { R as RequestFunnel } from './requestFunnel-Cz3zOMJo.js';
5
+ import { R as RequestFunnel } from './requestFunnel-CqwOiZNJ.js';
6
6
  import { P as PetRef, C as ConversationId, b as ResponseId } from './ids-B2GAAifq.js';
7
- import { i as UrgencyLevel, F as Frame } from './config-CRqlaRdm.js';
7
+ import { i as UrgencyLevel, F as Frame } from './config-DlR_I-0S.js';
8
8
  import { E as ErrorPolicyPort } from './ErrorPolicyPort-D22LUVrK.js';
9
9
  import { T as TelemetryPort } from './TelemetryPort-BDNr00hu.js';
10
10
  import { F as FileHandle } from './ports-BN6RHF9W.js';
@@ -78,11 +78,30 @@ declare function isCheckinSettled(checkin: ChatCheckin): boolean;
78
78
  type ChatStatus = 'idle' | 'streaming' | 'complete' | 'error';
79
79
  /** Opaque citation record (DoneFrame.citations shape). Rendered by the UI layer, never trusted for logic. */
80
80
  type Citation = Readonly<Record<string, unknown>>;
81
+ /**
82
+ * Who wrote a message: the owner (`user`), Everfur's AI (`assistant`), or a clinician replying into the owner's
83
+ * thread (`vet`). A `vet` row is never the AI's answer: it carries no `responseId` (so it takes no AI feedback),
84
+ * no citations, no urgency and no check-in, and the prebuilt surfaces draw it as its own bubble.
85
+ */
86
+ type ChatMessageRole = 'user' | 'assistant' | 'vet';
87
+ /**
88
+ * The clinician behind a `vet` message, as the wire names them (the televet `ChatSenderResponse`: the vet's
89
+ * CURRENT `display_name` and their own description of their work). Each field is null when the wire carries
90
+ * none; the SDK never invents a name.
91
+ */
92
+ interface ChatMessageSender {
93
+ /** The clinician's name as the registry holds it now (`display_name`), trimmed; null when the wire names none. */
94
+ readonly displayName: string | null;
95
+ /** The clinician's own description of their work (`specialty`), trimmed; null when not written. */
96
+ readonly specialty: string | null;
97
+ }
81
98
  interface ChatMessage {
82
99
  /** Stable list key: a client id for a user turn, the responseId for a finalized assistant turn. */
83
100
  readonly id: string;
84
- readonly role: 'user' | 'assistant';
101
+ readonly role: ChatMessageRole;
85
102
  readonly text: string;
103
+ /** The clinician, on a `vet` message only. */
104
+ readonly sender?: ChatMessageSender;
86
105
  /**
87
106
  * ISO 8601. A history row carries the server's `created_at`; an optimistic user turn and a streamed reply
88
107
  * are stamped from the controller clock when the row is created, and the stamp survives the reply's
@@ -391,4 +410,4 @@ interface ReadableStore<S> {
391
410
  getSnapshot(): S;
392
411
  }
393
412
 
394
- export { type ChatCheckin as C, FEEDBACK_NOTES_MAX_CHARS as F, MAX_IMAGE_KEYS_PER_MESSAGE as M, type PresignedPolicy as P, type ReadableStore as R, type SendOptions as S, type Timers as T, type UploadPort as U, type ChatCheckinTarget as a, type ChatConversation as b, type ChatConversationListOptions as c, type ChatConversationPage as d, type ChatFeedbackReceipt as e, type ChatFeedbackType as f, type ChatHistoryOptions as g, type ChatMessagePage as h, type ChatMessage as i, type ChatStatus as j, type Citation as k, type ChatController as l, type ChatControllerDeps as m, type SuggestedPromptCategory as n, CHAT_FEEDBACK_TYPES as o, CHECKIN_ANSWERABLE_STATUS as p, type ChatHandlers as q, type ChatSnapshot as r, type Timers$1 as s, isCheckinSettled as t };
413
+ export { type ChatCheckin as C, FEEDBACK_NOTES_MAX_CHARS as F, MAX_IMAGE_KEYS_PER_MESSAGE as M, type PresignedPolicy as P, type ReadableStore as R, type SendOptions as S, type Timers as T, type UploadPort as U, type ChatCheckinTarget as a, type ChatConversation as b, type ChatConversationListOptions as c, type ChatConversationPage as d, type ChatFeedbackReceipt as e, type ChatFeedbackType as f, type ChatHistoryOptions as g, type ChatMessagePage as h, type ChatMessage as i, type ChatMessageRole as j, type ChatMessageSender as k, type ChatStatus as l, type Citation as m, type ChatController as n, type ChatControllerDeps as o, type SuggestedPromptCategory as p, CHAT_FEEDBACK_TYPES as q, CHECKIN_ANSWERABLE_STATUS as r, type ChatHandlers as s, type ChatSnapshot as t, type Timers$1 as u, isCheckinSettled as v };