@everfur/sdk 0.5.0 → 0.5.2

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 (154) hide show
  1. package/CHANGELOG.md +375 -0
  2. package/dist/BookedScreen-BJPbXLCG.d.ts +54 -0
  3. package/dist/BookedScreen-Cnld-jB_.d.cts +54 -0
  4. package/dist/{Chat-TA-aTcVF.d.cts → Chat-B43wIXCv.d.cts} +3 -3
  5. package/dist/{Chat-BOX-03ho.d.ts → Chat-my5aJLz5.d.ts} +3 -3
  6. package/dist/{DepthViews-DSFyaSeL.d.cts → DepthViews-BBTv9VAs.d.cts} +1 -1
  7. package/dist/{DepthViews-Cviea-ri.d.cts → DepthViews-BLK0kgza.d.cts} +1 -1
  8. package/dist/{DepthViews-CgjX2AJ5.d.ts → DepthViews-CNqAyjne.d.ts} +1 -1
  9. package/dist/{DepthViews-D2dRqWRq.d.ts → DepthViews-G-7YRtOX.d.ts} +1 -1
  10. package/dist/animations/index.cjs +1 -1
  11. package/dist/animations/index.d.cts +3 -3
  12. package/dist/animations/index.d.ts +3 -3
  13. package/dist/animations/index.js +1 -1
  14. package/dist/{attachments-DHvnITuE.d.cts → attachments-CEmT52IA.d.cts} +5 -5
  15. package/dist/{attachments-oD5U2fXI.d.ts → attachments-CMNWE6YT.d.ts} +2 -2
  16. package/dist/{attachments-C_vtFu2f.d.ts → attachments-DU1djTNd.d.ts} +5 -5
  17. package/dist/{attachments-pIdGOQfm.d.cts → attachments-ZyjWsZdI.d.cts} +2 -2
  18. package/dist/{bookingCopy-CJir9mjb.d.ts → bookingCopy-BVhEt1bj.d.ts} +38 -200
  19. package/dist/{bookingCopy-DfuA13dh.d.cts → bookingCopy-ChZR5mtd.d.cts} +38 -200
  20. package/dist/bookingTypes-DCs8mmBb.d.cts +188 -0
  21. package/dist/bookingTypes-DCs8mmBb.d.ts +188 -0
  22. package/dist/{callCopy-rDH9JTFo.d.cts → callCopy-CPe9mbwG.d.cts} +7 -2
  23. package/dist/{callCopy-rDH9JTFo.d.ts → callCopy-CPe9mbwG.d.ts} +7 -2
  24. package/dist/{casesRepository-DHgIYKN9.d.ts → casesRepository-C5zrCcaE.d.ts} +1 -1
  25. package/dist/{casesRepository-B-Eg8ZJ3.d.cts → casesRepository-q2ak9AW0.d.cts} +1 -1
  26. package/dist/chat/index.cjs +1 -1
  27. package/dist/chat/index.d.cts +14 -10
  28. package/dist/chat/index.d.ts +14 -10
  29. package/dist/chat/index.js +1 -1
  30. package/dist/client/index.cjs +5 -5
  31. package/dist/client/index.d.cts +6 -6
  32. package/dist/client/index.d.ts +6 -6
  33. package/dist/client/index.js +5 -5
  34. package/dist/{config-ClI7QxB0.d.ts → config-DBpKJJbg.d.ts} +1 -1
  35. package/dist/{config-DAFbf721.d.cts → config-jocy3q66.d.cts} +1 -1
  36. package/dist/consent/index.cjs +1 -1
  37. package/dist/consent/index.d.cts +5 -5
  38. package/dist/consent/index.d.ts +5 -5
  39. package/dist/consent/index.js +1 -1
  40. package/dist/{context-B-dUM1Qf.d.cts → context-BfVBRgro.d.cts} +5 -5
  41. package/dist/{context-CZbgF_OH.d.ts → context-C3n9s4aG.d.ts} +5 -5
  42. package/dist/{copy-CneuYdrO.d.cts → copy-IysFx8yL.d.cts} +2 -2
  43. package/dist/{copy-CeRH3NXy.d.ts → copy-KP91zgtW.d.ts} +2 -2
  44. package/dist/core/index.cjs +7 -7
  45. package/dist/core/index.d.cts +12 -12
  46. package/dist/core/index.d.ts +12 -12
  47. package/dist/core/index.js +7 -7
  48. package/dist/{depth-DO3Ko_qs.d.ts → depth-BsMLLrQo.d.ts} +2 -2
  49. package/dist/{depth-B3NFKlF9.d.cts → depth-O9kiVUjs.d.cts} +2 -2
  50. package/dist/{entitlementRepository-74kW5mK0.d.ts → entitlementRepository-CHsY2kF3.d.ts} +2 -2
  51. package/dist/{entitlementRepository-m6zLUmiB.d.cts → entitlementRepository-DIG16pso.d.cts} +2 -2
  52. package/dist/{identity-C7uxGwfT.d.cts → identity-D7GKfOE7.d.cts} +1 -1
  53. package/dist/{identity-CLAUq-K4.d.ts → identity-k8nCQ_qM.d.ts} +1 -1
  54. package/dist/index.cjs +6 -6
  55. package/dist/index.d.cts +13 -13
  56. package/dist/index.d.ts +13 -13
  57. package/dist/index.js +6 -6
  58. package/dist/notifications/index.cjs +2 -2
  59. package/dist/notifications/index.d.cts +2 -2
  60. package/dist/notifications/index.d.ts +2 -2
  61. package/dist/notifications/index.js +2 -2
  62. package/dist/{pets-BoB5B7kp.d.cts → pets-Bod_DDiW.d.cts} +1 -1
  63. package/dist/{pets-w4M9d-Dn.d.ts → pets-C_QX8s5f.d.ts} +1 -1
  64. package/dist/{petsRepository-DZZoEG3r.d.cts → petsRepository-B3vr628I.d.cts} +1 -1
  65. package/dist/{petsRepository-BjKJ8UsN.d.ts → petsRepository-DdzgINfF.d.ts} +1 -1
  66. package/dist/photo/index.cjs +1 -1
  67. package/dist/photo/index.js +1 -1
  68. package/dist/{ports-C2EVK416.d.cts → ports-BSm48zIC.d.cts} +16 -5
  69. package/dist/{ports-BO3bzTJg.d.ts → ports-DHhxhn95.d.ts} +16 -5
  70. package/dist/records/depth/index.cjs +2 -2
  71. package/dist/records/depth/index.d.cts +7 -7
  72. package/dist/records/depth/index.d.ts +7 -7
  73. package/dist/records/depth/index.js +2 -2
  74. package/dist/records/index.cjs +3 -3
  75. package/dist/records/index.d.cts +10 -10
  76. package/dist/records/index.d.ts +10 -10
  77. package/dist/records/index.js +3 -3
  78. package/dist/{requestFunnel-D7ipek3e.d.ts → requestFunnel-CTG-wNc3.d.ts} +2 -2
  79. package/dist/{requestFunnel-Djjwgoe9.d.cts → requestFunnel-Dcjyh0j2.d.cts} +2 -2
  80. package/dist/{runtimeTypes-D2C9uD85.d.cts → runtimeTypes-4qptUulD.d.cts} +4 -4
  81. package/dist/{runtimeTypes-CTL3yToK.d.ts → runtimeTypes-CmpdQaE2.d.ts} +4 -4
  82. package/dist/server/events/index.cjs +1 -1
  83. package/dist/server/events/index.d.cts +2 -2
  84. package/dist/server/events/index.d.ts +2 -2
  85. package/dist/server/events/index.js +1 -1
  86. package/dist/server/index.cjs +2 -2
  87. package/dist/server/index.d.cts +3 -3
  88. package/dist/server/index.d.ts +3 -3
  89. package/dist/server/index.js +2 -2
  90. package/dist/televet/booking/index.cjs +1 -1
  91. package/dist/televet/booking/index.d.cts +31 -17
  92. package/dist/televet/booking/index.d.ts +31 -17
  93. package/dist/televet/booking/index.js +1 -1
  94. package/dist/televet/call/index.cjs +1 -1
  95. package/dist/televet/call/index.d.cts +13 -1
  96. package/dist/televet/call/index.d.ts +13 -1
  97. package/dist/televet/call/index.js +1 -1
  98. package/dist/televet/index.cjs +1 -1
  99. package/dist/televet/index.js +1 -1
  100. package/dist/testing/index.cjs +3 -3
  101. package/dist/testing/index.d.cts +1 -1
  102. package/dist/testing/index.d.ts +1 -1
  103. package/dist/testing/index.js +3 -3
  104. package/dist/testing/rn/index.cjs +1 -1
  105. package/dist/testing/rn/index.d.cts +7 -7
  106. package/dist/testing/rn/index.d.ts +7 -7
  107. package/dist/testing/rn/index.js +1 -1
  108. package/dist/testing/web/index.cjs +1 -1
  109. package/dist/testing/web/index.d.cts +7 -7
  110. package/dist/testing/web/index.d.ts +7 -7
  111. package/dist/testing/web/index.js +1 -1
  112. package/dist/{timelineRows-CzR1T2DR.d.cts → timelineRows-BkLhRUDt.d.cts} +1 -1
  113. package/dist/{timelineRows-7yFNK_rU.d.ts → timelineRows-Dp4ZSnAo.d.ts} +1 -1
  114. package/dist/{uploadTransport-DKJHs3Yj.d.cts → uploadTransport-C1p8FuG8.d.cts} +5 -1
  115. package/dist/{uploadTransport-D0M0T4hN.d.ts → uploadTransport-bZIKBTyK.d.ts} +5 -1
  116. package/dist/{useRecordsDepth-Bnw36jPr.d.cts → useRecordsDepth-DRNry1r9.d.cts} +1 -1
  117. package/dist/{useRecordsDepth-DFF7Faxx.d.ts → useRecordsDepth-DnDhTaUL.d.ts} +1 -1
  118. package/dist/video/index.cjs +1 -1
  119. package/dist/video/index.js +1 -1
  120. package/dist/{view-BqcOYFTr.d.ts → view-CwuOPIJc.d.ts} +7 -4
  121. package/dist/{view-CaJs8WFH.d.cts → view-D4VdPKCa.d.cts} +7 -4
  122. package/dist/web/consent/index.cjs +1 -1
  123. package/dist/web/consent/index.d.cts +5 -5
  124. package/dist/web/consent/index.d.ts +5 -5
  125. package/dist/web/consent/index.js +1 -1
  126. package/dist/web/index.cjs +10 -10
  127. package/dist/web/index.d.cts +14 -14
  128. package/dist/web/index.d.ts +14 -14
  129. package/dist/web/index.js +10 -10
  130. package/dist/web/notifications/index.cjs +2 -2
  131. package/dist/web/notifications/index.d.cts +3 -3
  132. package/dist/web/notifications/index.d.ts +3 -3
  133. package/dist/web/notifications/index.js +2 -2
  134. package/dist/web/records/depth/index.cjs +2 -2
  135. package/dist/web/records/depth/index.d.cts +7 -7
  136. package/dist/web/records/depth/index.d.ts +7 -7
  137. package/dist/web/records/depth/index.js +2 -2
  138. package/dist/web/records/index.cjs +3 -3
  139. package/dist/web/records/index.d.cts +9 -9
  140. package/dist/web/records/index.d.ts +9 -9
  141. package/dist/web/records/index.js +3 -3
  142. package/dist/web/televet/booking/index.cjs +2 -2
  143. package/dist/web/televet/booking/index.d.cts +41 -52
  144. package/dist/web/televet/booking/index.d.ts +41 -52
  145. package/dist/web/televet/booking/index.js +2 -2
  146. package/dist/web/televet/call/index.cjs +1 -1
  147. package/dist/web/televet/call/index.d.cts +12 -5
  148. package/dist/web/televet/call/index.d.ts +12 -5
  149. package/dist/web/televet/call/index.js +1 -1
  150. package/dist/web/televet/index.cjs +4 -1
  151. package/dist/web/televet/index.d.cts +31 -2
  152. package/dist/web/televet/index.d.ts +31 -2
  153. package/dist/web/televet/index.js +4 -1
  154. package/package.json +4 -3
@@ -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"}),je=Object.freeze(oe.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Jt[e.wireCode]}))),Qt=new Map(je.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Xt=Object.freeze(["http_envelope",...[...new Set(je.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 n of [t??"http_envelope",...Xt]){let o=Qt.get(n+r);if(o)return o}}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 De(e){return null}i(De,"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 Ne(e){return er[e]}i(Ne,"categoryFor");function Le(e){let t=V(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),n=r.replace(/[^A-Z0-9]/g,"");if(n==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(n){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":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(Le,"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 Me(e){return ie(e)||rr.has(e)}i(Me,"isRetryableCode");var nr=500,ae=8e3,Ue=4;function Be(e,t=Math.random){let r=Math.max(0,e),n=Math.min(nr*2**r,ae);return Math.floor(t()*n)}i(Be,"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 qe(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}i(qe,"defineHidden");var ir=/^[a-z][a-z0-9_]{0,63}$/;function f(e,t){let r=V(t?.wireCode,t?.wireEnvelope),n={code:e,category:Ne(e),retryable:t?.retryable??Me(e),displayMessage:se(e)};if(t?.httpStatus!==void 0&&(n.httpStatus=t.httpStatus),t?.requestId&&(n.requestId=t.requestId),typeof t?.reasonCode=="string"&&ir.test(t.reasonCode)&&(n.reasonCode=t.reasonCode),r);return t?.wireMessage&&qe(n,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&qe(n,"raw",t.raw),Object.freeze(n)}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 He(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(He,"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,n]of Object.entries(e)){let o=r.toLowerCase();o==="authorization"||o==="x-everfur-partner-key"||(t[r]=n);}return t}i(dr,"stripAuthHeaders");async function Ve(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 n=await t.transport.request(D(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(n.ok||n.error.httpStatus!==401)return n;let o;try{o=await t.identity.currentToken({forceRefresh:!0});}catch{return y(le())}let a=await t.transport.request(D(e,{mode:"personalized",token:o,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?y(le(a.error.httpStatus)):a}i(Ve,"authedSend");function le(e){return f("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}i(le,"authRejectedError");function Ke(e){return f("internalError",{retryable:true,wireMessage:ur(e)})}i(Ke,"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 We(e){let t=e.observer??mr,r=e.timers??br,n=e.rng??Math.random,o=e.sleep??((E,u)=>Fr(E,r,u)),a=e.maxAttempts??Ue,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 Ae=wr(s,r),Ie=Pr(Ae.signal,u.signal),A;try{A=await Ve({...Yt,signal:Ie.signal},e.auth);}catch(ne){A=y(Ke(ne));}finally{Ie.dispose(),Ae.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:n,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 o(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 xr(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 He({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(We,"createRequestFunnel");function hr(e,t){let r={};for(let[n,o]of Object.entries(e.headers??{}))n.toLowerCase()!==yr&&(r[n]=o);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 n=Rr(e);if(n==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(n!=="burst"&&!ie(e.code))return {retry:false,reason:"terminal-code"};let o=n==="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:o,delayMs:d}:{retry:true,reason:o,delayMs:Be(t,r.rng)}}i(_r,"decideRetry");function Rr(e){let t=e.code==="unknown"?Le(Sr(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}i(Rr,"throttleKind");function Tr(e,t){let r=Cr(e.raw);if(r===null)return null;let n=r-t;return n>0?n:0}i(Tr,"retryOverrideMs");function Cr(e){for(let t of Ye(e)){let r=t.resets_at,n=kr(r);if(n!==null)return n}return null}i(Cr,"findResetsAt");function Ye(e){if(!Ge(e))return [];let t=[e];for(let r of ["error","detail"]){let n=e[r];Ge(n)&&t.push(n);}return t}i(Ye,"candidateScopes");function kr(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(kr,"parseInstantMs");function Sr(e){for(let t of Ye(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}i(Sr,"rawWireCode");function Ge(e){return typeof e=="object"&&e!==null}i(Ge,"isRecord");async function xr(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(xr,"resolveDeviceAuth");function wr(e,t){let r=new AbortController,n=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:i(()=>t.clearTimeout(n),"cancel")}}i(wr,"boundedSignal");function Pr(e,t){let r=i(()=>{},"noop");if(!t)return {signal:e,dispose:r};let n=new AbortController;if(e.aborted||t.aborted)return n.abort(),{signal:n.signal,dispose:r};let o=i(()=>n.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),{signal:n.signal,dispose:i(()=>{e.removeEventListener("abort",o),t.removeEventListener("abort",o);},"dispose")}}i(Pr,"mergeSignals");function Fr(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(n=>{let o=t.setTimeout(()=>{r?.removeEventListener("abort",a),n();},e),a=i(()=>{t.clearTimeout(o),n();},"onAbort");r?.addEventListener("abort",a,{once:true});})}i(Fr,"delayAbortable");var $e=Object.freeze({track(){},trackExpectedFailure(){}});function Je(e){let t={uri:e.uri,mimeType:e.mimeType},r=de(e);return r!==null&&(t.sizeBytes=r),Object.freeze(t)}i(Je,"fileHandleFromMedia");function de(e){let t=e.byteSize??e.sizeBytes;return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:null}i(de,"mediaByteSize");function Qe(e,t){return Object.freeze(t===void 0?{mode:e}:{mode:e,maxDurationSeconds:t})}i(Qe,"captureOptionsFor");function ue(e){return e!=null&&e.isAvailable===true}i(ue,"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(n=>{if(t.aborted){n();return}let o={handle:void 0},a=i(()=>{r.clearTimeout(o.handle),t.removeEventListener("abort",a),n();},"done");o.handle=r.setTimeout(a,e),t.addEventListener("abort",a,{once:true});})}i(Ze,"delayAbortable");function Or(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let n=i(()=>r.abort(),"onAbort");return e.addEventListener("abort",n,{once:true}),t.addEventListener("abort",n,{once:true}),r.signal}i(Or,"mergeSignals");var ce=class ce{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 n=this.epoch;return {signal:t?Or(r.signal,t):r.signal,epoch:n,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(ce,"MediaStore");var G=ce;function et(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let n=e.charCodeAt(t+1);if(!(n>=56320&&n<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}i(et,"hasLoneSurrogate");var Ar=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"]),Ir=Object.freeze(["decision_audit","decision_thresholds","per_class_auroc","ood_layers","gate1_score","possible_conditions","top_class"]),zr=new Set(["skin_v2","eye_v2","llm_checkup"]),jr=new Set(["primary_confidence","subtype_confidence"]),Dr=new Set(["low_risk","concern","uncertain"]),Nr=new Set(["possible","probable"]),Lr=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 o of Ar){if(!(o in t))continue;let a=t[o],s=Mr(o,a);s!==P&&(r[o]=s);}let n=0;for(let o of Ir)o in t&&(n+=1);return Object.freeze({metadata:Object.freeze(r),droppedOperatorKeys:n})}i(tt,"projectDetectionMetadata");var P=Symbol("drop");function Mr(e,t){if(zr.has(e))return typeof t=="boolean"?t:P;if(jr.has(e))return rt(t)?t:P;if(e==="risk_tier")return typeof t=="string"&&Dr.has(t)?t:P;if(e==="confidence_tier")return typeof t=="string"&&Nr.has(t)?t:P;if(typeof t!="string")return P;let r=Lr[e]??256;return t.length>r?t.slice(0,r):t}i(Mr,"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),n=Ur(e.recommendations??e.recommendation);return t===null&&r===null&&n.length===0?null:Object.freeze({summary:t??"",recommendations:Object.freeze(n),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 Ur(e){return typeof e=="string"?e.length>0?[e]:[]:Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}i(Ur,"asStringList");function at(e){return rt(e)?e:null}i(at,"asUnitNumber");function pe(e){return typeof e=="number"&&Number.isFinite(e)?e:null}i(pe,"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 n={method:"POST",path:N.initiate,body:r,...t.signal?{signal:t.signal}:{}},o=await e.send("media.initiateUpload",n);if(!o.ok)return y(o.error);let a=Br(o.value);return a===null?y(f("mediaUploadFailed",{retryable:false})):z(a)}i(lt,"initiateUpload");function Br(e){if(!v(e))return null;let t=m(e.url),r=m(e.s3_key);if(t===null||r===null)return null;let n=e.fields,o={};if(v(n))for(let[a,s]of Object.entries(n))typeof s=="string"&&(o[a]=s);return Object.freeze({url:t,fields:Object.freeze(o),s3Key:r,expiresAt:pe(e.expires_at)})}i(Br,"parsePresigned");async function dt(e,t,r,n,o){try{return await e.presignedPut(Je(t),{target:r,idempotencyKey:n,...o?{signal:o}:{}}),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}:{}},n=await e.send("media.precheck",r);return n.ok?qr(n.value):{verdict:"proceed",reasonCodes:[],precheckToken:null}}i(ut,"runPrecheck");function qr(e){if(!v(e))return {verdict:"proceed",reasonCodes:[],precheckToken:null};let t=m(e.verdict),r=t==="retake"||t==="reject"?t:"proceed",n=Array.isArray(e.reason_codes)?e.reason_codes.filter(o=>typeof o=="string"):[];return Object.freeze({verdict:r,reasonCodes:Object.freeze(n),precheckToken:m(e.precheck_token)})}i(qr,"parsePrecheck");async function ct(e,t,r,n,o){let a={method:"POST",path:t,body:r,...o?{signal:o}:{}},s=await e.send("media.analyze",a);if(s.ok){let d=Hr(s.value);return d!==null?{kind:"async",job:d}:{kind:"sync",body:s.value}}let l=n(s.error.httpStatus,s.error);return l!==null?{kind:"gate",gate:l}:{kind:"error",error:s.error}}i(ct,"submitAnalyze");function Hr(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&&Wr(r)?null:Object.freeze({jobId:t,estimatedSeconds:pe(e.estimated_completion_seconds)})}i(Hr,"parseAsyncJob");var Vr=2e3,st=5e3,Kr=9e4;async function pt(e,t,r){let{timers:n,signal:o,alive:a}=r,s=n.now(),l=Math.max(Kr,(r.estimatedSeconds??0)*1e3),d=Vr;for(;;){if(o.aborted||!a())return {kind:"aborted"};if(await Ze(d,o,n),o.aborted||!a())return {kind:"aborted"};if(n.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,...o?{signal:o}:{}},{maxAttempts:1});if(o.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=Gr(h.value);if(R==="COMPLETED")return {kind:"complete",body:h.value};if(R==="FAILED")return {kind:"failed",error:Yr(h.value)};d=Math.min(st,d+1e3);}}i(pt,"pollJob");function Gr(e){return v(e)?(m(e.status)??"PROCESSING").toUpperCase():"PROCESSING"}i(Gr,"jobStatusOf");function Wr(e){let t=e.toUpperCase();return t==="COMPLETED"||t==="FAILED"}i(Wr,"isTerminalStatus");function Yr(e){let t=v(e)?m(e.error)??m(e.error_code):null;return f("internalError",{retryable:false,...t?{wireMessage:t}:{}})}i(Yr,"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 ye(e)}i(mt,"createPhotoController");var fe=class fe extends G{constructor(t){super({status:"idle",region:t.region??"skin",result:null,gate:L,error:null,isCaptureAvailable:ue(t.camera)}),this.funnel=t.funnel??We({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??Xr();}async capture(t,r){if(!ue(this.camera))return y(f("unknown",{retryable:false}));let n;try{n=await this.camera.capture(Qe("photo"));}catch{return this.snapshot.status!=="idle"&&this.patch({status:"idle"}),y(f("unknown",{retryable:false}))}return this.analyze(n,t,r)}async analyze(t,r,n){let o=this.beginOperation(n.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:de(t),signal:o.signal});if(o.signal.aborted||!this.alive(o.epoch))return T();if(!l.ok)return this.fail(o,l.error);let d=await dt(this.upload,t,l.value,a,o.signal);if(o.signal.aborted||!this.alive(o.epoch))return T();if(!d.ok)return this.fail(o,d.error);let p=await ut(this.funnel,{s3Key:l.value.s3Key,type:r,signal:o.signal});if(o.signal.aborted||!this.alive(o.epoch))return T();if(p.verdict!=="proceed")return this.gateRetake(o,r,p.reasonCodes);this.patch({status:"analyzing"});let h=await ct(this.funnel,N.photoAnalyze,ft(l.value.s3Key,{type:r,petRef:n.petRef,precheckToken:p.precheckToken}),yt,o.signal);if(o.signal.aborted||!this.alive(o.epoch))return T();switch(h.kind){case "error":return this.fail(o,h.error);case "gate":return this.gateDomain(o,r,h.gate);case "sync":return this.complete(o,h.body,r,null,s);case "async":{let R=await pt(this.funnel,h.job.jobId,{timers:this.timers,signal:o.signal,alive:i(()=>this.alive(o.epoch),"alive"),estimatedSeconds:h.job.estimatedSeconds});if(o.signal.aborted||!this.alive(o.epoch))return T();switch(R.kind){case "aborted":return T();case "complete":return this.complete(o,R.body,r,h.job.jobId,s);case "failed":return this.fail(o,R.error);case "timeout":return this.fail(o,f("streamTimeout",{retryable:!0}));case "notFound":return this.fail(o,f("conversationNotFound",{retryable:!1,httpStatus:404}));default:return this.fail(o,f("internalError",{retryable:!1}))}}default:return this.fail(o,f("internalError",{retryable:!1}))}}finally{o.settle();}}reset(){this.inFlight?.abort(),this.inFlight=null,this.patch({status:"idle",result:null,gate:L,error:null});}complete(t,r,n,o,a){if(!this.alive(t.epoch))return T();let s=$r(r,n,o);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:n}),this.telemetry.track("analysis.result",{capability:"photo",region:n,riskTier:s.result.riskTier??"",confidenceTier:s.result.confidenceTier??"",modelVersion:s.result.modelVersion??"",timeToResultMs:this.timers.now()-a}),z(s.result)}gateDomain(t,r,n){if(!this.alive(t.epoch))return T();let o=n.kind==="species_unsupported"?Object.freeze({kind:"species_unsupported",species:"cat"}):Object.freeze({kind:"pet_context_required"});return this.patch({status:"idle",gate:o,error:null,result:null}),this.telemetry.track("analysis.species_gate",{outcome:n.kind,region:r,...n.kind==="species_unsupported"?{species:"cat"}:{}}),y(f("unknown",{retryable:false}))}gateRetake(t,r,n){if(!this.alive(t.epoch))return T();this.patch({status:"idle",gate:Object.freeze({kind:"retake",reasons:Object.freeze([...n])}),error:null,result:null}),this.telemetry.track("analysis.quality_gate",{usable:false,reasons:n});let o=n.includes("wrong_species")?"species_unsupported":"retake";return this.telemetry.track("analysis.species_gate",{outcome:o,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(fe,"PhotoController");var ye=fe;function $r(e,t,r){let n=tt(ot(e)),o=n.metadata,a=nt(it(e));return {result:Object.freeze({jobId:r,analysisType:t,primaryLabel:m(o.primary_label)??"Uncertain",riskTier:Jr(o.risk_tier),confidence:at(o.primary_confidence),subtypeDisplay:m(o.subtype_display),confidenceTier:Qr(o.confidence_tier),diseaseName:m(o.disease_name),diseaseFraming:m(o.disease_framing),copyShort:m(o.copy_short),interpretation:a,modelVersion:m(o.model_version)??(v(e)?m(e.model_version):null)}),droppedOperatorKeys:n.droppedOperatorKeys}}i($r,"mapPhotoResult");function Jr(e){return e==="low_risk"||e==="concern"||e==="uncertain"?e:null}i(Jr,"asRiskTier");function Qr(e){return e==="possible"||e==="probable"?e:null}i(Qr,"asConfidenceTier");function T(){return y(f("unknown",{retryable:false}))}i(T,"abortedResult");function Xr(){let e=0;return ()=>`photo-analyze-${Date.now().toString(36)}-${(e++).toString(36)}-${Math.random().toString(36).slice(2,10)}`}i(Xr,"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 an=Object.freeze({status:"idle",region:"skin",result:null,gate:Object.freeze({kind:"accepted"}),error:null,isCaptureAvailable:false}),sn=i(()=>{},"NOOP_UNSUBSCRIBE");function me(e){let{runtime:t,userRef:r,scopeEpoch:n}=W(),o=e.petRef,[a,s]=useState(null);useEffect(()=>{let{services:u}=t.registry,_=t.registry.acquire("photo",`${r??""}|${o}`,()=>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,o,n]);let l=useCallback(u=>a?a.subscribe(u):sn,[a]),d=useCallback(()=>a?a.getSnapshot():an,[a]),p=useSyncExternalStore(l,d,d),h=useCallback((u,_)=>a?a.analyze(u,_,{petRef:o}):Promise.resolve(vt()),[a,o]),R=useCallback(u=>a?a.capture(u,{petRef:o}):Promise.resolve(vt()),[a,o]),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(me,"usePhotoCheckup");function vt(){return y(f("internalError",{retryable:true}))}i(vt,"notReadyError");function he(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.keys(e))he(e[t]);}return e}i(he,"deepFreeze");var ln=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},dn={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},un={regular:"400",medium:"500",bold:"700"},cn={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},pn=0,Y="System",$="monospace",yn=["content","heading","control","compact","badge"];function fn(e){let t={};for(let r of yn)t[r]=e;return t}i(fn,"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:fn(Et),lineHeight:dn,weight:un,letterSpacing:cn,scale:1,maxScale:pn,scaleCaps:ln}}i(Tt,"baseType");var Ct={},be=Object.freeze({standard:Object.freeze([.2,0,0,1]),emphasized:Object.freeze([.2,.8,.2,1]),exit:Object.freeze([.4,0,1,1])});function ge(e){return `cubic-bezier(${e.join(", ")})`}i(ge,"cssCubicBezier");var kt={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:ge(be.standard),emphasized:ge(be.emphasized),exit:ge(be.exit)},reducedMotion:false},mn={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=he({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:mn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct}),bn={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)"};he({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:bn,space:_t,radius:Rt,type:Tt(),motion:kt,slots:Ct});var xt=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),wt=globalThis,ve=wt[xt]??(wt[xt]=createContext(St));ve.displayName??="EverfurThemeContext";function g(){return useContext(ve)}i(g,"useEverfurTheme");function Rn(e,t){let r=e.scaleCaps[t];return r>0?r:void 0}i(Rn,"tierMultiplier");function b({tier:e="content",...t}){let{type:r}=g(),n=Rn(r,e);return createElement(Text,n===void 0?t:{maxFontSizeMultiplier:n,...t})}i(b,"Text");forwardRef(i(function(t,r){return createElement(TextInput,{...t,...r===null?{}:{ref:r}})},"TextInput"));var Tn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function U(e,t){let r=e.type,n=r.families[t];return t==="mono"||r.namedFaces[t]?{fontFamily:n}:{fontFamily:n,fontWeight:r.weight[Tn[t]]}}i(U,"face");var Re=class Re extends Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey};}static getDerivedStateFromError(){return {failed:true}}static getDerivedStateFromProps(r,n){return Object.is(r.resetKey,n.key)?null:{failed:false,key:r.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};i(Re,"HostRenderBoundary");var Ee=Re;function kn({render:e}){return e()}i(kn,"RenderHost");function _e({render:e,fallback:t,resetKey:r}){return createElement(Ee,{fallback:t,resetKey:r,children:createElement(kn,{render:e})})}i(_e,"HostRender");var Sn=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 xn(e){return Sn[e]}i(xn,"requires");function Ot(e,t,r){let n=xn(e),o=new Map;for(let l of t)o.set(l.resource,l);if(r?.isPending===true&&n.some(l=>!o.has(l)))return Te({name:e,enabled:false,isPending:true,limits:{}});let a=wn(n,o);return n.filter(l=>o.get(l)?.granted!==true).length===0?Te({name:e,enabled:true,isPending:false,limits:a}):Te({name:e,enabled:false,isPending:false,limits:a,disabled:Pn(n,o)})}i(Ot,"decideCapability");function wn(e,t){let r={};for(let n of e){let o=t.get(n)?.limits;if(o)for(let[a,s]of Object.entries(o)){let l=r[a];r[a]=l===void 0?s:Math.min(l,s);}}return r}i(wn,"mergeLimits");function Pn(e,t){for(let r of e){let n=t.get(r)?.disabled;if(n)return Object.freeze({reason:n.reason,level:n.level,recoverable:n.recoverable})}return Object.freeze({reason:se("accessDenied"),level:"user_entitlement",recoverable:false})}i(Pn,"disabledFor");function Te(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(Te,"freezeDecision");function Ce(e){let{runtime:t}=W(),r=t.entitlements,n=useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return useMemo(()=>Ot(e,n.decisions,{isPending:n.isPending}),[e,n])}i(Ce,"useCapability");var An=48;function In(e){return e.isPending?"pending":e.enabled?"enabled":"disabled"}i(In,"selectView");function jt(e){let{capability:t,children:r,renderDisabled:n,renderPending:o,style:a}=e,s=Ce(t),l=useMemo(()=>In(s),[s]);switch(l){case "enabled":return r;case "pending":return o?jsx(_e,{render:o,fallback:jsx(It,{capability:t,style:a})}):jsx(It,{capability:t,style:a});case "disabled":return n?jsx(_e,{render:()=>n(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(),n=useMemo(()=>Dt(r),[r]);return jsx(View,{style:[n.offstate,t],accessible:true,accessibilityState:{busy:true},accessibilityLabel:`Loading ${e}`,children:jsx(View,{style:n.skeletonBar})})}i(It,"PendingSkeleton");function zt({decision:e,style:t}){let r=g(),n=useMemo(()=>Dt(r),[r]),o=e.disabled?.reason??"";return jsx(View,{style:[n.offstate,t],accessible:true,accessibilityRole:"text",accessibilityLabel:o,children:o.length>0?jsx(b,{style:n.offstateText,children:o}):null})}i(zt,"OffState");function Dt(e){let{color:t,space:r,radius:n,type:o}=e;return StyleSheet.create({offstate:{minHeight:An,justifyContent:"center",paddingHorizontal:r.lg,paddingVertical:r.md,backgroundColor:t.surfaceCream,borderRadius:n.md,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder},offstateText:{...U(e,"regular"),fontSize:o.size.body,lineHeight:Math.round(o.size.body*o.lineHeight.normal),color:t.text.muted},skeletonBar:{height:r.md,borderRadius:n.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(()=>Dn(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 Dn(e){let{color:t,space:r,type:n}=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:n.size.caption,lineHeight:Math.round(n.size.caption*n.lineHeight.snug),color:t.text.secondary,letterSpacing:n.letterSpacing.eyebrow},body:{...U(e,"regular"),fontSize:n.size.caption,lineHeight:Math.round(n.size.caption*n.lineHeight.snug),color:t.text.muted}})}i(Dn,"makeStyles");var Vn=1400,Kn=300;function Bt(){let e=g(),t=useMemo(()=>Gn(e),[e]),r=e.motion.reducedMotion,[n,o]=useState(false);useEffect(()=>{let l=setTimeout(()=>o(true),Kn);return ()=>clearTimeout(l)},[]);let a=useRef(new Animated.Value(0)).current;useEffect(()=>{if(r||!n)return;let l=Animated.loop(Animated.timing(a,{toValue:1,duration:Vn,easing:Easing.linear,useNativeDriver:true}));return l.start(),()=>l.stop()},[r,n,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:n?jsxs(Fragment,{children:[jsx(Animated.View,{style:[t.ring,s]}),jsx(b,{style:t.statusLine,children:"Analyzing"})]}):null})}i(Bt,"AnalyzingIndicator");function Gn(e){let{color:t,space:r,radius:n,type:o}=e,a=o.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:n.pill,borderWidth:l,borderTopColor:t.success,borderRightColor:t.success,borderBottomColor:t.borderRingCream,borderLeftColor:t.borderRingCream},statusLine:{color:t.text.secondary,fontFamily:o.family,fontSize:o.size.subtitle,lineHeight:o.size.subtitle*o.lineHeight.snug,fontWeight:a,letterSpacing:o.letterSpacing.tight,textAlign:"center"}})}i(Gn,"makeStyles");var Zn=1100,eo=1.6,to=.35;function ro(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(ro,"toneSpec");function Vt({riskTier:e}){let t=g(),r=useMemo(()=>no(t),[t]),n=useRef(new Animated.Value(0)).current,o=e===null?null:ro(t,e),a=o!==null&&o.pulse&&!t.motion.reducedMotion;return useEffect(()=>{if(!a)return;let s=Animated.loop(Animated.timing(n,{toValue:1,duration:Zn,easing:Easing.out(Easing.quad),useNativeDriver:true}));return s.start(),()=>s.stop()},[a,n]),o===null?null:jsxs(View,{style:[r.pill,{backgroundColor:o.wash}],accessible:true,accessibilityRole:"text",accessibilityLabel:o.label,children:[jsxs(View,{style:r.dotWrap,children:[a?jsx(Animated.View,{pointerEvents:"none",style:[r.dotRing,{backgroundColor:o.accent,opacity:n.interpolate({inputRange:[0,1],outputRange:[to,0]}),transform:[{scale:n.interpolate({inputRange:[0,1],outputRange:[1,eo]})}]}]}):null,jsx(View,{style:[r.dot,{backgroundColor:o.accent}]})]}),jsx(b,{style:[r.label,{color:o.accent}],children:o.label})]})}i(Vt,"SeverityBadge");function no(e){let{space:t,radius:r,type:n}=e,o=n.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:n.family,fontSize:n.size.caption,lineHeight:n.size.caption*n.lineHeight.snug,fontWeight:o,letterSpacing:n.letterSpacing.eyebrow}})}i(no,"makeStyles");var Fe=120,Z=44;function io(e){let{petRef:t,region:r,style:n}=e;return jsx(jt,{capability:"photo",style:n,children:jsx(so,{petRef:t,region:r,style:n})})}i(io,"PhotoCheckup");function ao(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(ao,"selectView");function so({petRef:e,region:t,style:r}){let n=me({petRef:e}),o=t??"skin",a=ao(n),s=useMemo(()=>()=>{n.capture(o);},[n,o]),l=g(),d=useMemo(()=>F(l),[l]);return jsxs(View,{style:[d.container,r],children:[jsx(View,{style:d.body,children:lo(a,n,s)}),jsx(Mt,{})]})}i(so,"PhotoBody");function lo(e,t,r){switch(e){case "loading":return jsx(Bt,{});case "native":return jsx(uo,{});case "empty":return jsx(co,{onCapture:r});case "error":return jsx(po,{error:t.error,onRetry:r});case "gate":return jsx(yo,{gate:t.gate,onRetry:t.reset});case "populated":return jsx(mo,{result:t.result});default:return j(e)}}i(lo,"renderView");function uo(){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(uo,"NativeUnavailableState");function co({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(co,"EmptyState");function po({error:e,onRetry:t}){let r=g(),n=useMemo(()=>F(r),[r]);return jsxs(View,{style:n.centered,accessible:true,accessibilityRole:"alert",children:[jsx(b,{style:n.errorText,children:e.displayMessage}),e.retryable?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:n.primaryButton,children:jsx(b,{style:n.primaryLabel,children:"Try again"})}):null]})}i(po,"ErrorState");function yo({gate:e,onRetry:t}){let r=g(),n=useMemo(()=>F(r),[r]),o=fo(e);return jsxs(View,{style:n.centered,accessible:true,accessibilityRole:"summary",accessibilityLabel:o,children:[jsx(b,{style:n.guidanceText,children:o}),e.kind!=="species_unsupported"?jsx(Pressable,{onPress:t,accessibilityRole:"button",accessibilityLabel:"Try again",style:n.primaryButton,children:jsx(b,{style:n.primaryLabel,children:"Try again"})}):null]})}i(yo,"GateState");function fo(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(fo,"gateMessage");function mo({result:e}){let t=g(),r=useMemo(()=>F(t),[t]),n=e.subtypeDisplay??e.diseaseName??e.primaryLabel,o=bo(t,e.riskTier);return jsxs(ScrollView,{style:r.list,contentContainerStyle:[r.listContent,{backgroundColor:o}],accessibilityLabel:"Photo checkup result",children:[jsx(b,{style:r.resultHeadline,children:n}),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(mo,"ResultState");function bo(e,t){switch(t){case "low_risk":return e.color.checkupCardLowRiskBg;case "concern":return e.color.checkupCardConcernBg;default:return e.color.surfaceCream}}i(bo,"resultCardTint");function F(e){let{color:t,space:r,radius:n,type:o}=e,a=o.weight.bold,s=o.weight.medium,l=o.weight.regular,d=e.brightness==="dark"?t.onAccent:t.brand;return StyleSheet.create({container:{flex:1,minHeight:Fe,backgroundColor:t.background},body:{flex:1},centered:{minHeight:Fe,flexGrow:1,alignItems:"center",justifyContent:"center",padding:r.xl},offstate:{minHeight:Fe,alignItems:"center",justifyContent:"center",padding:r.xl},emptyGlyph:{width:r.xxl,height:r.xxl,borderRadius:n.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:n.pill,backgroundColor:t.scanButtonPink,shadowColor:t.brand,shadowOpacity:.18,shadowRadius:n.xs,shadowOffset:{width:0,height:r.xs},elevation:3},scanLabel:{color:d,fontFamily:o.family,fontSize:o.size.subtitle,lineHeight:o.size.subtitle*o.lineHeight.snug,fontWeight:a,letterSpacing:o.letterSpacing.tight},primaryButton:{minHeight:Z,minWidth:Z,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.sm,borderRadius:n.pill,backgroundColor:t.brand},primaryLabel:{color:t.onPrimary,fontFamily:o.family,fontSize:o.size.body,lineHeight:o.size.body*o.lineHeight.snug,fontWeight:s},errorText:{color:t.danger,fontFamily:o.family,fontSize:o.size.body,lineHeight:o.size.body*o.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},guidanceText:{color:t.text.muted,fontFamily:o.family,fontSize:o.size.body,lineHeight:o.size.body*o.lineHeight.relaxed,textAlign:"center",marginBottom:r.md},list:{flex:1},listContent:{padding:r.lg,gap:r.sm,borderRadius:n.lg,borderWidth:StyleSheet.hairlineWidth,borderColor:t.brandBorder,shadowColor:t.brand,shadowOpacity:.08,shadowRadius:n.xs,shadowOffset:{width:0,height:r.xs},elevation:2},resultHeadline:{color:t.text.secondary,fontFamily:o.family,fontSize:o.size.verdict,lineHeight:o.size.verdict*o.lineHeight.tight,fontWeight:a,letterSpacing:o.letterSpacing.tight},summaryText:{color:t.text.primary,fontFamily:o.family,fontSize:o.size.body,lineHeight:o.size.body*o.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:o.family,fontSize:o.size.caption,lineHeight:o.size.caption*o.lineHeight.normal,fontWeight:l}})}i(F,"makeStyles");export{io as PhotoCheckup,me 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=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,10 +1,10 @@
1
- import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-B-Eg8ZJ3.cjs';
2
- import { A as AuthContext } from './identity-C7uxGwfT.cjs';
1
+ import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-q2ak9AW0.cjs';
2
+ import { A as AuthContext } from './identity-D7GKfOE7.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-Djjwgoe9.cjs';
5
+ import { R as RequestFunnel } from './requestFunnel-Dcjyh0j2.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-DAFbf721.cjs';
7
+ import { i as UrgencyLevel, F as Frame } from './config-jocy3q66.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';
@@ -280,8 +280,19 @@ interface ChatController {
280
280
  getPrompts(opts?: {
281
281
  readonly petRef?: PetRef;
282
282
  }): Promise<EverfurResult<readonly SuggestedPromptCategory[]>>;
283
- /** Adopt (or clear) the active conversation id, e.g. after bootstrap primes one. */
283
+ /**
284
+ * Adopt (or clear) the active conversation id, e.g. after bootstrap primes one. Clearing it leaves the
285
+ * transcript on screen (the recreate-and-resend after a 404 relies on that); to leave the thread, call
286
+ * `newConversation`.
287
+ */
284
288
  adoptConversation(id: ConversationId | null): void;
289
+ /**
290
+ * Leave the active thread for a fresh, empty one: what `New chat` does. The transcript clears with its history
291
+ * cursor, a failed or stopped turn and the reply's own follow-ups; a reply still streaming into it is aborted
292
+ * and dropped. The bootstrap prompts stay, since they are not tied to a thread. Nothing is fetched or deleted:
293
+ * the next `send` creates the conversation. A no-op after `dispose()`.
294
+ */
295
+ newConversation(): void;
285
296
  /** Read a page of this user's conversations; optional petRef filters on the server. */
286
297
  listConversations(opts?: ChatConversationListOptions): Promise<EverfurResult<ChatConversationPage>>;
287
298
  /**
@@ -1,10 +1,10 @@
1
- import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-DHgIYKN9.js';
2
- import { A as AuthContext } from './identity-CLAUq-K4.js';
1
+ import { C as CheckinAnswer, a as CheckinOutcome } from './casesRepository-C5zrCcaE.js';
2
+ import { A as AuthContext } from './identity-k8nCQ_qM.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-D7ipek3e.js';
5
+ import { R as RequestFunnel } from './requestFunnel-CTG-wNc3.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-ClI7QxB0.js';
7
+ import { i as UrgencyLevel, F as Frame } from './config-DBpKJJbg.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';
@@ -280,8 +280,19 @@ interface ChatController {
280
280
  getPrompts(opts?: {
281
281
  readonly petRef?: PetRef;
282
282
  }): Promise<EverfurResult<readonly SuggestedPromptCategory[]>>;
283
- /** Adopt (or clear) the active conversation id, e.g. after bootstrap primes one. */
283
+ /**
284
+ * Adopt (or clear) the active conversation id, e.g. after bootstrap primes one. Clearing it leaves the
285
+ * transcript on screen (the recreate-and-resend after a 404 relies on that); to leave the thread, call
286
+ * `newConversation`.
287
+ */
284
288
  adoptConversation(id: ConversationId | null): void;
289
+ /**
290
+ * Leave the active thread for a fresh, empty one: what `New chat` does. The transcript clears with its history
291
+ * cursor, a failed or stopped turn and the reply's own follow-ups; a reply still streaming into it is aborted
292
+ * and dropped. The bootstrap prompts stay, since they are not tied to a thread. Nothing is fetched or deleted:
293
+ * the next `send` creates the conversation. A no-op after `dispose()`.
294
+ */
295
+ newConversation(): void;
285
296
  /** Read a page of this user's conversations; optional petRef filters on the server. */
286
297
  listConversations(opts?: ChatConversationListOptions): Promise<EverfurResult<ChatConversationPage>>;
287
298
  /**