@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.
- package/CHANGELOG.md +375 -0
- package/dist/BookedScreen-BJPbXLCG.d.ts +54 -0
- package/dist/BookedScreen-Cnld-jB_.d.cts +54 -0
- package/dist/{Chat-TA-aTcVF.d.cts → Chat-B43wIXCv.d.cts} +3 -3
- package/dist/{Chat-BOX-03ho.d.ts → Chat-my5aJLz5.d.ts} +3 -3
- package/dist/{DepthViews-DSFyaSeL.d.cts → DepthViews-BBTv9VAs.d.cts} +1 -1
- package/dist/{DepthViews-Cviea-ri.d.cts → DepthViews-BLK0kgza.d.cts} +1 -1
- package/dist/{DepthViews-CgjX2AJ5.d.ts → DepthViews-CNqAyjne.d.ts} +1 -1
- package/dist/{DepthViews-D2dRqWRq.d.ts → DepthViews-G-7YRtOX.d.ts} +1 -1
- package/dist/animations/index.cjs +1 -1
- package/dist/animations/index.d.cts +3 -3
- package/dist/animations/index.d.ts +3 -3
- package/dist/animations/index.js +1 -1
- package/dist/{attachments-DHvnITuE.d.cts → attachments-CEmT52IA.d.cts} +5 -5
- package/dist/{attachments-oD5U2fXI.d.ts → attachments-CMNWE6YT.d.ts} +2 -2
- package/dist/{attachments-C_vtFu2f.d.ts → attachments-DU1djTNd.d.ts} +5 -5
- package/dist/{attachments-pIdGOQfm.d.cts → attachments-ZyjWsZdI.d.cts} +2 -2
- package/dist/{bookingCopy-CJir9mjb.d.ts → bookingCopy-BVhEt1bj.d.ts} +38 -200
- package/dist/{bookingCopy-DfuA13dh.d.cts → bookingCopy-ChZR5mtd.d.cts} +38 -200
- package/dist/bookingTypes-DCs8mmBb.d.cts +188 -0
- package/dist/bookingTypes-DCs8mmBb.d.ts +188 -0
- package/dist/{callCopy-rDH9JTFo.d.cts → callCopy-CPe9mbwG.d.cts} +7 -2
- package/dist/{callCopy-rDH9JTFo.d.ts → callCopy-CPe9mbwG.d.ts} +7 -2
- package/dist/{casesRepository-DHgIYKN9.d.ts → casesRepository-C5zrCcaE.d.ts} +1 -1
- package/dist/{casesRepository-B-Eg8ZJ3.d.cts → casesRepository-q2ak9AW0.d.cts} +1 -1
- package/dist/chat/index.cjs +1 -1
- package/dist/chat/index.d.cts +14 -10
- package/dist/chat/index.d.ts +14 -10
- package/dist/chat/index.js +1 -1
- package/dist/client/index.cjs +5 -5
- package/dist/client/index.d.cts +6 -6
- package/dist/client/index.d.ts +6 -6
- package/dist/client/index.js +5 -5
- package/dist/{config-ClI7QxB0.d.ts → config-DBpKJJbg.d.ts} +1 -1
- package/dist/{config-DAFbf721.d.cts → config-jocy3q66.d.cts} +1 -1
- package/dist/consent/index.cjs +1 -1
- package/dist/consent/index.d.cts +5 -5
- package/dist/consent/index.d.ts +5 -5
- package/dist/consent/index.js +1 -1
- package/dist/{context-B-dUM1Qf.d.cts → context-BfVBRgro.d.cts} +5 -5
- package/dist/{context-CZbgF_OH.d.ts → context-C3n9s4aG.d.ts} +5 -5
- package/dist/{copy-CneuYdrO.d.cts → copy-IysFx8yL.d.cts} +2 -2
- package/dist/{copy-CeRH3NXy.d.ts → copy-KP91zgtW.d.ts} +2 -2
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.d.cts +12 -12
- package/dist/core/index.d.ts +12 -12
- package/dist/core/index.js +7 -7
- package/dist/{depth-DO3Ko_qs.d.ts → depth-BsMLLrQo.d.ts} +2 -2
- package/dist/{depth-B3NFKlF9.d.cts → depth-O9kiVUjs.d.cts} +2 -2
- package/dist/{entitlementRepository-74kW5mK0.d.ts → entitlementRepository-CHsY2kF3.d.ts} +2 -2
- package/dist/{entitlementRepository-m6zLUmiB.d.cts → entitlementRepository-DIG16pso.d.cts} +2 -2
- package/dist/{identity-C7uxGwfT.d.cts → identity-D7GKfOE7.d.cts} +1 -1
- package/dist/{identity-CLAUq-K4.d.ts → identity-k8nCQ_qM.d.ts} +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +6 -6
- package/dist/notifications/index.cjs +2 -2
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +2 -2
- package/dist/{pets-BoB5B7kp.d.cts → pets-Bod_DDiW.d.cts} +1 -1
- package/dist/{pets-w4M9d-Dn.d.ts → pets-C_QX8s5f.d.ts} +1 -1
- package/dist/{petsRepository-DZZoEG3r.d.cts → petsRepository-B3vr628I.d.cts} +1 -1
- package/dist/{petsRepository-BjKJ8UsN.d.ts → petsRepository-DdzgINfF.d.ts} +1 -1
- package/dist/photo/index.cjs +1 -1
- package/dist/photo/index.js +1 -1
- package/dist/{ports-C2EVK416.d.cts → ports-BSm48zIC.d.cts} +16 -5
- package/dist/{ports-BO3bzTJg.d.ts → ports-DHhxhn95.d.ts} +16 -5
- package/dist/records/depth/index.cjs +2 -2
- package/dist/records/depth/index.d.cts +7 -7
- package/dist/records/depth/index.d.ts +7 -7
- package/dist/records/depth/index.js +2 -2
- package/dist/records/index.cjs +3 -3
- package/dist/records/index.d.cts +10 -10
- package/dist/records/index.d.ts +10 -10
- package/dist/records/index.js +3 -3
- package/dist/{requestFunnel-D7ipek3e.d.ts → requestFunnel-CTG-wNc3.d.ts} +2 -2
- package/dist/{requestFunnel-Djjwgoe9.d.cts → requestFunnel-Dcjyh0j2.d.cts} +2 -2
- package/dist/{runtimeTypes-D2C9uD85.d.cts → runtimeTypes-4qptUulD.d.cts} +4 -4
- package/dist/{runtimeTypes-CTL3yToK.d.ts → runtimeTypes-CmpdQaE2.d.ts} +4 -4
- package/dist/server/events/index.cjs +1 -1
- package/dist/server/events/index.d.cts +2 -2
- package/dist/server/events/index.d.ts +2 -2
- package/dist/server/events/index.js +1 -1
- package/dist/server/index.cjs +2 -2
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +2 -2
- package/dist/televet/booking/index.cjs +1 -1
- package/dist/televet/booking/index.d.cts +31 -17
- package/dist/televet/booking/index.d.ts +31 -17
- package/dist/televet/booking/index.js +1 -1
- package/dist/televet/call/index.cjs +1 -1
- package/dist/televet/call/index.d.cts +13 -1
- package/dist/televet/call/index.d.ts +13 -1
- package/dist/televet/call/index.js +1 -1
- package/dist/televet/index.cjs +1 -1
- package/dist/televet/index.js +1 -1
- package/dist/testing/index.cjs +3 -3
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +3 -3
- package/dist/testing/rn/index.cjs +1 -1
- package/dist/testing/rn/index.d.cts +7 -7
- package/dist/testing/rn/index.d.ts +7 -7
- package/dist/testing/rn/index.js +1 -1
- package/dist/testing/web/index.cjs +1 -1
- package/dist/testing/web/index.d.cts +7 -7
- package/dist/testing/web/index.d.ts +7 -7
- package/dist/testing/web/index.js +1 -1
- package/dist/{timelineRows-CzR1T2DR.d.cts → timelineRows-BkLhRUDt.d.cts} +1 -1
- package/dist/{timelineRows-7yFNK_rU.d.ts → timelineRows-Dp4ZSnAo.d.ts} +1 -1
- package/dist/{uploadTransport-DKJHs3Yj.d.cts → uploadTransport-C1p8FuG8.d.cts} +5 -1
- package/dist/{uploadTransport-D0M0T4hN.d.ts → uploadTransport-bZIKBTyK.d.ts} +5 -1
- package/dist/{useRecordsDepth-Bnw36jPr.d.cts → useRecordsDepth-DRNry1r9.d.cts} +1 -1
- package/dist/{useRecordsDepth-DFF7Faxx.d.ts → useRecordsDepth-DnDhTaUL.d.ts} +1 -1
- package/dist/video/index.cjs +1 -1
- package/dist/video/index.js +1 -1
- package/dist/{view-BqcOYFTr.d.ts → view-CwuOPIJc.d.ts} +7 -4
- package/dist/{view-CaJs8WFH.d.cts → view-D4VdPKCa.d.cts} +7 -4
- package/dist/web/consent/index.cjs +1 -1
- package/dist/web/consent/index.d.cts +5 -5
- package/dist/web/consent/index.d.ts +5 -5
- package/dist/web/consent/index.js +1 -1
- package/dist/web/index.cjs +10 -10
- package/dist/web/index.d.cts +14 -14
- package/dist/web/index.d.ts +14 -14
- package/dist/web/index.js +10 -10
- package/dist/web/notifications/index.cjs +2 -2
- package/dist/web/notifications/index.d.cts +3 -3
- package/dist/web/notifications/index.d.ts +3 -3
- package/dist/web/notifications/index.js +2 -2
- package/dist/web/records/depth/index.cjs +2 -2
- package/dist/web/records/depth/index.d.cts +7 -7
- package/dist/web/records/depth/index.d.ts +7 -7
- package/dist/web/records/depth/index.js +2 -2
- package/dist/web/records/index.cjs +3 -3
- package/dist/web/records/index.d.cts +9 -9
- package/dist/web/records/index.d.ts +9 -9
- package/dist/web/records/index.js +3 -3
- package/dist/web/televet/booking/index.cjs +2 -2
- package/dist/web/televet/booking/index.d.cts +41 -52
- package/dist/web/televet/booking/index.d.ts +41 -52
- package/dist/web/televet/booking/index.js +2 -2
- package/dist/web/televet/call/index.cjs +1 -1
- package/dist/web/televet/call/index.d.cts +12 -5
- package/dist/web/televet/call/index.d.ts +12 -5
- package/dist/web/televet/call/index.js +1 -1
- package/dist/web/televet/index.cjs +4 -1
- package/dist/web/televet/index.d.cts +31 -2
- package/dist/web/televet/index.d.ts +31 -2
- package/dist/web/televet/index.js +4 -1
- package/package.json +4 -3
package/dist/televet/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),reactNative=require('react-native');var Pr=Object.defineProperty;var n=(e,r)=>Pr(e,"name",{value:r,configurable:true});var xe=Symbol.for("@everfur/sdk/televet");function F(){let e=globalThis,r=e[xe];if(r!==void 0)return r;let t={presenter:null,snapshot:Object.freeze({request:null,serial:0,activeHost:null}),hosts:[],nextHost:1,listeners:new Set,dailyRegistered:false};return e[xe]=t,t}n(F,"televetGlobal");function q(e){let r=F();r.snapshot=Object.freeze({...r.snapshot,...e});for(let t of [...r.listeners])try{t();}catch{}}n(q,"publish");function we(e){F().presenter=e;}n(we,"setTelevetPresenter");function Se(){return F().presenter!==null}n(Se,"hasTelevetPresenter");function B(e){let r=F().presenter;if(r===null)return "absent";try{return r(e)===!1?"declined":"presented"}catch(t){return console.warn("[everfur] Your registerEverfurTelevetFlow presenter threw; the in-app visit opened instead.",t),"threw"}}n(B,"callTelevetPresenter");function Fe(e){let r=F();return r.listeners.add(e),()=>{r.listeners.delete(e);}}n(Fe,"subscribeTelevetExperience");function ie(){return F().snapshot}n(ie,"televetExperienceSnapshot");function Ar(){return F().hosts.length>0}n(Ar,"hasTelevetHost");function ke(e){if(!Ar())return false;let r=Object.freeze({...e});return q({request:r,serial:F().snapshot.serial+1}),true}n(ke,"presentTelevetExperience");function ae(){F().snapshot.request!==null&&q({request:null});}n(ae,"dismissTelevetExperience");function Oe(){let e=F(),r=e.nextHost;return e.nextHost+=1,e.hosts=[...e.hosts,r],q({activeHost:e.hosts[0]??null}),r}n(Oe,"claimTelevetHost");function Ve(e){let r=F();r.hosts=r.hosts.filter(o=>o!==e);let t=r.hosts[0]??null;q(t===null?{activeHost:t,request:null}:{activeHost:t});}n(Ve,"releaseTelevetHost");function zr(e){we(e);}n(zr,"registerEverfurTelevetFlow");function jr(){return Se()}n(jr,"hasEverfurTelevetFlow");function Dr(e){return B(e)==="presented"}n(Dr,"presentEverfurTelevetFlow");function Ae(e){let r=null;return ()=>{if(r!==null)return r;let t=e();return r=t,t.then(void 0,()=>{r===t&&(r=null);}),t}}n(Ae,"memoizeTelevetLoader");function ze(e){let[r,t]=react.useState(null);react.useEffect(()=>{let d=Oe();return t(d),()=>{Ve(d);}},[]);let o=react.useSyncExternalStore(Fe,ie,ie),a=r!==null&&o.activeHost===r?o.request:null,[u,l]=react.useState(null),s=a!==null&&u===null;return react.useEffect(()=>{if(!s)return;let d=true;return e().then(y=>{d&&l(()=>y);},y=>{d&&(console.warn("[everfur] The in-app vet visit could not load its screens.",y),ae());}),()=>{d=false;}},[s,e]),a===null||u===null?null:{module:u,request:a,serial:o.serial,dismiss:ae}}n(ze,"useTelevetExperienceHost");var Nr=Ae(()=>import('@everfur/sdk/televet/booking'));function H(){let e=ze(Nr);if(e===null)return null;let{EverfurTelevetModal:r}=e.module;return jsxRuntime.jsx(r,{request:e.request,onClose:e.dismiss},e.serial)}n(H,"EverfurTelevetHost");var se=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(se.map(e=>e.wireCode));var Ur=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(se.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ur[e.wireCode]}))),qr=new Map(De.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Br=Object.freeze(["http_envelope",...[...new Set(De.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function Y(e,r){if(typeof e!="string")return;let t=e.trim().toUpperCase();if(t.length!==0)for(let o of [r??"http_envelope",...Br]){let i=qr.get(o+t);if(i)return i}}n(Y,"contractErrorFor");function Hr(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Hr,"contractDocUrl");function Me(e){return null}n(Me,"publishedDocUrl");var Yr=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 Yr[e]}n(Ne,"categoryFor");function Le(e){let r=Y(e);if(r)return r.normalized;let t=(e??"").trim().toUpperCase(),o=t.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(t.startsWith("AUTH"))return "authExpired";switch(o){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"}}n(Le,"fromWire");var Wr=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function le(e){return Wr.has(e)}n(le,"isAutoRetryable");var Gr=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function Ue(e){return le(e)||Gr.has(e)}n(Ue,"isRetryableCode");var Kr=500,ue=8e3,qe=4;function Be(e,r=Math.random){let t=Math.max(0,e),o=Math.min(Kr*2**t,ue);return Math.floor(r()*o)}n(Be,"backoffDelayMs");var $r=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 de(e){return $r[e]}n(de,"userFacingError");function He(e,r,t){Object.defineProperty(e,r,{value:t,enumerable:false,writable:false,configurable:false});}n(He,"defineHidden");var Qr=/^[a-z][a-z0-9_]{0,63}$/;function I(e,r){let t=Y(r?.wireCode,r?.wireEnvelope),o={code:e,category:Ne(e),retryable:r?.retryable??Ue(e),displayMessage:de(e)};if(r?.httpStatus!==void 0&&(o.httpStatus=r.httpStatus),r?.requestId&&(o.requestId=r.requestId),typeof r?.reasonCode=="string"&&Qr.test(r.reasonCode)&&(o.reasonCode=r.reasonCode),t);return r?.wireMessage&&He(o,"wireMessage",r.wireMessage),r?.raw!==void 0&&r.raw!==null&&He(o,"raw",r.raw),Object.freeze(o)}n(I,"makeEverfurError");function ce(e,r){return Object.freeze(r===void 0?{ok:true,value:e}:{ok:true,value:e,warning:r})}n(ce,"ok");function R(e){return Object.freeze({ok:false,error:e})}n(R,"err");var W=class W extends Error{constructor(r,t){super(t),this.name="EverfurConfigError",this.kind=r,Object.setPrototypeOf(this,W.prototype);}};n(W,"EverfurConfigError");var M=W;function Ye(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})}n(Ye,"errorFrame");function Jr(e){let r={};return e.mode==="personalized"?r.authorization=`Bearer ${e.token}`:r["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(r["x-everfur-user-ref"]=e.userRef),e.sessionId&&(r["x-everfur-session-id"]=e.sessionId),r}n(Jr,"authHeaders");function N(e,r){return {...e,headers:{...et(e.headers),...Jr(r)}}}n(N,"withAuthHeaders");function et(e){if(!e)return {};let r={};for(let[t,o]of Object.entries(e)){let i=t.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(r[t]=o);}return r}n(et,"stripAuthHeaders");async function We(e,r){if(r.mode==="anonymous")return r.transport.request(N(e,{mode:"anonymous",publishableKey:r.publishableKey,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));let t;try{t=await r.identity.currentToken();}catch{return R(fe())}let o=await r.transport.request(N(e,{mode:"personalized",token:t,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await r.identity.currentToken({forceRefresh:!0});}catch{return R(fe())}let a=await r.transport.request(N(e,{mode:"personalized",token:i,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?R(fe(a.error.httpStatus)):a}n(We,"authedSend");function fe(e){return I("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(fe,"authRejectedError");function Ge(e){return I("internalError",{retryable:true,wireMessage:rt(e)})}n(Ge,"networkError");function rt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(rt,"describeCause");var tt=3e4,nt=ue*2,ot="idempotency-key",it=new Set(["POST","PUT","PATCH","DELETE"]),at=Object.freeze({onEvent(){}}),st=Object.freeze({setTimeout:n((e,r)=>setTimeout(e,r),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function lt(e){let r=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return r.length===0?null:`efs_${r}`.slice(0,128)}n(lt,"seededIdempotencyKey");function $e(e){let r=e.observer??at,t=e.timers??st,o=e.rng??Math.random,i=e.sleep??((c,f)=>_t(c,t,f)),a=e.maxAttempts??qe,u=e.unaryTimeoutMs??tt,l=e.newIdempotencyKey??dt(),s=n(c=>{try{r.onEvent(c);}catch{}},"emit");async function d(c,f,m){let T=m?.maxAttempts,p=Math.max(1,T??a),k=m?.idempotent??it.has(f.method),w=m?.idempotencyKey===void 0?null:lt(m.idempotencyKey),h=k?w??l():null,V=ut(f,h),S=0;for(;;){let C=n(_=>Object.freeze({call:c,method:f.method,path:f.path,attempt:S,...h?{idempotencyKey:h}:{},..._}),"stamp");s(C({phase:"attempt"}));let P=gt(u,t),g=ht(P.signal,f.signal),z;try{z=await We({...V,signal:g.signal},e.auth);}catch(_){z=R(Ge(_));}finally{g.dispose(),P.cancel();}if(z.ok)return s(C({phase:"settled",ok:true,reason:"ok"})),z;let O=z.error,v=ft(O,S,{maxAttempts:p,rng:o,now:t.now(),aborted:f.signal?.aborted===true,...T!==void 0?{perCallMaxAttempts:T}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),b={ok:false,code:O.code,reason:v.reason,...O.httpStatus!==void 0?{httpStatus:O.httpStatus}:{},...O.requestId!==void 0?{requestId:O.requestId}:{}};if(!v.retry)return s(C({phase:"settled",...b})),R(O);if(s(C({phase:"retry",...b,delayMs:v.delayMs})),await i(v.delayMs,f.signal),f.signal?.aborted===true)return s(C({phase:"settled",...b,reason:"aborted"})),R(O);S+=1;}}n(d,"send");async function y(c){return N(c,await Et(e.auth))}n(y,"authorize");async function*E(c,f,m){s(Object.freeze({call:c,phase:"stream.open",method:f.method,path:f.path,attempt:0}));try{yield*e.auth.transport.stream(f,m);}catch{yield Ye({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(E,"stream"),Object.freeze({send:d,authorize:y,stream:E})}n($e,"createRequestFunnel");function ut(e,r){let t={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ot&&(t[o]=i);return r!==null&&(t["Idempotency-Key"]=r),{...e,headers:t}}n(ut,"assembleHeaders");function dt(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(dt,"defaultIdempotencyKeyFactory");var ct=10;function ft(e,r,t){if(t.aborted)return {retry:false,reason:"aborted"};let o=pt(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!le(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(t.policy===void 0)return false;try{return !t.policy.shouldRetry(e.code,r)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let u=n(()=>{if(t.policy===void 0)return null;let d;try{d=t.policy.maxAttempts(e.code);}catch{return null}return typeof d!="number"||!Number.isFinite(d)?null:Math.max(1,Math.min(ct,Math.floor(d)))},"policyCeiling"),l=t.perCallMaxAttempts??u()??t.maxAttempts;if(r+1>=l)return {retry:false,reason:"attempts-exhausted"};let s=yt(e,t.now);return s!==null?s>nt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:s}:{retry:true,reason:i,delayMs:Be(r,t.rng)}}n(ft,"decideRetry");function pt(e){let r=e.code==="unknown"?Le(bt(e.raw)):e.code;return r==="quotaExceeded"?"quota":r==="rateLimited"||e.httpStatus===429?"burst":null}n(pt,"throttleKind");function yt(e,r){let t=mt(e.raw);if(t===null)return null;let o=t-r;return o>0?o:0}n(yt,"retryOverrideMs");function mt(e){for(let r of Qe(e)){let t=r.resets_at,o=vt(t);if(o!==null)return o}return null}n(mt,"findResetsAt");function Qe(e){if(!Ke(e))return [];let r=[e];for(let t of ["error","detail"]){let o=e[t];Ke(o)&&r.push(o);}return r}n(Qe,"candidateScopes");function vt(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 r=Date.parse(e);return Number.isFinite(r)?r:null}return null}n(vt,"parseInstantMs");function bt(e){for(let r of Qe(e)){let t=r.code;if(typeof t=="string"&&t.length>0)return t}return null}n(bt,"rawWireCode");function Ke(e){return typeof e=="object"&&e!==null}n(Ke,"isRecord");async function Et(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}:{}}}n(Et,"resolveDeviceAuth");function gt(e,r){let t=new AbortController,o=r.setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>r.clearTimeout(o),"cancel")}}n(gt,"boundedSignal");function ht(e,r){let t=n(()=>{},"noop");if(!r)return {signal:e,dispose:t};let o=new AbortController;if(e.aborted||r.aborted)return o.abort(),{signal:o.signal,dispose:t};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),r.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),r.removeEventListener("abort",i);},"dispose")}}n(ht,"mergeSignals");function _t(e,r,t){return e<=0||t?.aborted===true?Promise.resolve():new Promise(o=>{let i=r.setTimeout(()=>{t?.removeEventListener("abort",a),o();},e),a=n(()=>{r.clearTimeout(i),o();},"onAbort");t?.addEventListener("abort",a,{once:true});})}n(_t,"delayAbortable");var G=Object.freeze(["visit","join","summary","messages"]);function K(e){return typeof e=="string"&&G.includes(e)}n(K,"isVetVisitIntent");var Rt="/widget/v1/televet/handoffs",Tt="/widget/v1/televet/availability",Ct="/widget/v1/televet/chat-entry",xt=/^[a-z0-9][a-z0-9_-]{0,39}$/,nr=/^[A-Za-z0-9_-]{22}$/,Xe="everfur_flow",Ze=32,Je=128,er=64;function $(e){let r=e.httpStatus;switch(e.code){case "sessionRequired":return "sessionRequired";case "authExpired":case "authRejected":return "authRejected";case "sdkUpdateRequired":return "sdkUpdateRequired";case "validationFailed":return "invalidRequest";case "rateLimited":case "quotaExceeded":return "rateLimited";}return r===void 0?e.code==="internalError"?"network":"unknown":r===429?"rateLimited":r===404?"unavailable":r===403?"accessDenied":r===401?"authRejected":r===400||r===422?"invalidRequest":r>=500?"serverError":"unknown"}n($,"vetVisitErrorReasonOf");function rr(e){return R(I("validationFailed",{retryable:false,wireMessage:e}))}n(rr,"invalid");function pe(e){return R(I("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}n(pe,"unusable");function wt(e,r){let t={};e!==void 0&&(t.pet_ref=e);let o=r?.returnTo;if(o!=null){if(typeof o!="string"||!xt.test(o))return {ok:false,message:"returnTo must be a registered return destination key"};t.return_to=o;}let i=r?.entry;if(i!=null){if(i!=="chat"||e===void 0)return {ok:false,message:"entry 'chat' needs the pet the chat is about"};t.entry=i;}let a=r?.visitRef,u=r?.intent,l=a!=null;if(l){let s=typeof a=="string"?a.trim():"";if(s.length<1||[...s].length>er)return {ok:false,message:`visitRef must be 1..${er} characters`};t.visit_ref=s;}if(u!=null){if(!l)return {ok:false,message:"intent needs the visitRef it opens"};if(!K(u))return {ok:false,message:`intent must be one of ${G.join(", ")}`};t.intent=u;}return {ok:true,body:t}}n(wt,"handoffBody");function St(e){if(typeof e!="object"||e===null)return null;let{visit_ref:r,intent:t}=e;return typeof r!="string"||r.length===0||!K(t)?null:Object.freeze({visitRef:r,intent:t})}n(St,"parseVisitEcho");function or(e){let r=e.funnel??$e({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),t=e.telemetry,o=n(i=>(tr(t,"televet.visit.handoff_failed",{reason:$(i)}),R(i)),"failed");return {async createHandoff(i,a){let u;if(i!=null){let p=typeof i=="string"?[...i].length:0;if(p<1||p>Je)return o(I("validationFailed",{retryable:false,wireMessage:`pet_ref must be 1..${Je} characters`}));u=i;}let l=wt(u,a);if(!l.ok){let p=rr(l.message);return p.ok?p:o(p.error)}let s=l.body,d=await r.send("televet.visit.handoff",{method:"POST",path:Rt,body:s},{idempotent:false,maxAttempts:1});if(!d.ok)return o(d.error);let y=kt(d.value),E=s.return_to!==void 0,c=E?d.value?.flow_id:void 0;if(E&&(typeof c!="string"||!nr.test(c))){let p=pe("the handoff response carried no usable return flow id");return p.ok?p:o(p.error)}let f=s.visit_ref!==void 0,m=f?St(d.value?.visit):null;if(f&&m===null){let p=pe("the handoff response did not confirm the visit it opens");return p.ok?p:o(p.error)}let T=y===null?null:Object.freeze({...y,...E?{flowId:c}:{},...m!==null?{visit:m}:{}});return T===null?o(I("internalError",{retryable:false,httpStatus:502,wireMessage:"the handoff response carried no usable visit url"})):(tr(t,"televet.visit.handoff_created",{pet_scoped:s.pet_ref!==void 0}),ce(T))},async checkAvailability(i){if(typeof i!="string"||i.length>Ze)return rr(`state must be at most ${Ze} characters`);let a=await r.send("televet.visit.availability",{method:"POST",path:Tt,body:{state:i}},{idempotent:false,maxAttempts:1});if(!a.ok)return R(a.error);let u=a.value?.available;return typeof u!="boolean"?pe("the availability response carried no usable answer"):ce(Object.freeze({available:u}))},async chatEntryOpen(){try{let i=await r.send("televet.visit.chat_entry",{method:"GET",path:Ct},{maxAttempts:1});return i.ok&&i.value?.open===!0}catch{return false}}}}n(or,"createVetVisitController");function Ft(e){if(typeof e!="string")return null;let r=e.indexOf("#"),t=r<0?e:e.slice(0,r),o=t.indexOf("?");if(o<0)return null;let i=t.slice(o+1).split("&").filter(a=>a.startsWith(`${Xe}=`)).map(a=>a.slice(Xe.length+1));return i.length!==1||!nr.test(i[0]??"")?null:Object.freeze({flowId:i[0]})}n(Ft,"parseVetVisitReturn");function kt(e){if(typeof e!="object"||e===null)return null;let{url:r,expires_at:t}=e;return typeof r!="string"||typeof t!="string"||t.length===0||!Pt(r)?null:Object.freeze({url:r,expiresAt:t})}n(kt,"parseHandoff");var Ot=new Set(["localhost","127.0.0.1","[::1]"]),Vt=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/,It=/[\s\u0000-\u001f\u007f]/;function Pt(e){if(It.test(e))return false;let r=Vt.exec(e);if(r===null)return false;let t=(r[1]??"").toLowerCase(),o=r[2]??"";if(o.length===0||o.includes("@"))return false;let i=o.replace(/:\d+$/,"").toLowerCase(),a=t==="https",u=t==="http"&&Ot.has(i);if(!a&&!u)return false;let l=e.indexOf("#");if(l<0)return false;let s=e.slice(l);return s.startsWith("#h=")&&s.length>3}n(Pt,"isOpenableVisitUrl");function tr(e,r,t){if(e)try{e.track(r,t);}catch{}}n(tr,"safeTrack");var ir=Symbol.for("@everfur/sdk#EverfurContext@v1"),ar=globalThis,sr=ar[ir]??(ar[ir]=react.createContext(null));sr.displayName??="EverfurContext";function Q(){let e=react.useContext(sr);if(e===null)throw new M("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var jt=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 Dt(e){return jt[e]}n(Dt,"requires");function lr(e,r,t){let o=Dt(e),i=new Map;for(let l of r)i.set(l.resource,l);if(t?.isPending===true&&o.some(l=>!i.has(l)))return ye({name:e,enabled:false,isPending:true,limits:{}});let a=Mt(o,i);return o.filter(l=>i.get(l)?.granted!==true).length===0?ye({name:e,enabled:true,isPending:false,limits:a}):ye({name:e,enabled:false,isPending:false,limits:a,disabled:Nt(o,i)})}n(lr,"decideCapability");function Mt(e,r){let t={};for(let o of e){let i=r.get(o)?.limits;if(i)for(let[a,u]of Object.entries(i)){let l=t[a];t[a]=l===void 0?u:Math.min(l,u);}}return t}n(Mt,"mergeLimits");function Nt(e,r){for(let t of e){let o=r.get(t)?.disabled;if(o)return Object.freeze({reason:o.reason,level:o.level,recoverable:o.recoverable})}return Object.freeze({reason:de("accessDenied"),level:"user_entitlement",recoverable:false})}n(Nt,"disabledFor");function ye(e){let r={name:e.name,enabled:e.enabled,isPending:e.isPending,limits:Object.freeze({...e.limits})};return e.disabled!==void 0&&(r.disabled=e.disabled),Object.freeze(r)}n(ye,"freezeDecision");function ur(e){let{runtime:r}=Q(),t=r.entitlements,o=react.useSyncExternalStore(t.subscribe,t.getSnapshot,t.getSnapshot);return react.useMemo(()=>lr(e,o.decisions,{isPending:o.isPending}),[e,o])}n(ur,"useCapability");function dr(e){let r=globalThis.console;try{r?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}n(dr,"reportHostFailure");function qt(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}n(qt,"isThenable");function j(e,...r){if(typeof e=="function")try{let t=e(...r);return qt(t)&&Promise.resolve(t).then(void 0,dr),t}catch(t){dr(t);return}}n(j,"callHost");var cr=false;function X(e,r){return r!==void 0?(j(r,e),"onStartInApp"):B(e)==="presented"?"presenter":ke(e)?"experience":(cr||(cr=true,console.warn("[everfur] A vet visit had nowhere to open: mount <EverfurTelevetHost /> in your EverfurProvider, or pass prefer: 'redirect'.")),null)}n(X,"openVetVisitInApp");var me=Object.freeze({status:"idle",error:null,errorReason:null});function Ht(e,r,t){let{usState:o,chat:i,scope:a}=t,u=r&&(o!==null||i),l=`${o??""}|${i?"chat":""}`,[s,d]=react.useState(null);if(react.useEffect(()=>{if(!u)return;let E=true,c=e.current;return d(null),n(async()=>{try{if(i&&!(c.chatEntryOpen&&await c.chatEntryOpen()))return !1;if(o===null)return !0;if(!c.checkAvailability)return !1;let m=await c.checkAvailability(o);return m.ok&&m.value.available}catch{return false}},"ask")().then(m=>{E&&d({key:l,open:m});}),()=>{E=false;}},[u,l,o,i,a,e]),!u)return null;let y=s!==null&&s.key===l;return {open:y&&s.open,pending:!y}}n(Ht,"usePreflight");var Yt=Object.freeze({status:"opening",error:null,errorReason:null});function yr(e,r={}){let{runtime:t,userRef:o,scopeEpoch:i}=Q(),a=ur("televet"),u=a.enabled&&o!==null,l=r.usState??null,s=r.entry==="chat",d=r.petRef??null,y=r.prefer==="redirect",E=react.useMemo(()=>{if(r.controller)return r.controller;let{services:v}=t.registry;return or({auth:v.authFor(o),telemetry:v.telemetry,...v.errorPolicy?{errorPolicy:v.errorPolicy}:{}})},[t,o,i,r.controller]),c=react.useRef(E);c.current=E;let f=react.useMemo(()=>({runtime:t,userRef:o,scopeEpoch:i}),[t,o,i]),m=Ht(c,u,{usState:l,chat:s,scope:f}),T=u&&(m===null||m.open)&&(!s||d!==null),p=r.returnTo??null,[k,w]=react.useState(me),h=react.useRef(null),V=react.useRef({runtime:t,userRef:o,scopeEpoch:i});V.current={runtime:t,userRef:o,scopeEpoch:i};let S=react.useRef(E);S.current=E;let C=react.useRef(T);C.current=T;let P=react.useCallback((v,b)=>{if(h.current)return h.current;let _=n((x,D)=>(w({status:x==="cancelled"?"idle":"error",error:D,errorReason:x==="cancelled"?null:x}),Object.freeze({opened:false,reason:x,error:D})),"fail");if(!C.current)return Promise.resolve(_("unavailable",null));let A=e.prepare();if(!A.ok)return Promise.resolve(_(A.reason,null));let te=V.current,_e=S.current;w(Yt);let ne=(async()=>{let x,D={...p!==null?{returnTo:p}:{},...s?{entry:"chat"}:{},...b!==null?{visitRef:b.visitRef}:{},...b!==null&&b.intent!==null&&b.intent!==void 0?{intent:b.intent}:{}},Re=Object.keys(D).length===0?void 0:D,Te=v===void 0?d:v;try{x=await(Re===void 0?_e.createHandoff(Te):_e.createHandoff(Te,Re));}catch{return e.abandon(A.value),_("unknown",null)}let oe=V.current;if(oe.runtime!==te.runtime||oe.userRef!==te.userRef||oe.scopeEpoch!==te.scopeEpoch)return e.abandon(A.value),_("cancelled",null);if(!x.ok)return e.abandon(A.value),_($(x.error),x.error);let Ce=await e.finish(A.value,x.value);return Ce!==null?_(Ce,null):(w(me),Object.freeze(x.value.flowId===void 0?{opened:true}:{opened:true,flowId:x.value.flowId}))})().finally(()=>{h.current===ne&&(h.current=null);});return h.current=ne,ne},[e,d,p,s]),g=react.useCallback((v,b)=>{if(!C.current)return w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}));let _=v===void 0?d:v,A={..._!==null?{petRef:_}:{},...l!==null?{usState:l}:{},...b!==null?{visitRef:b.visitRef,intent:b.intent}:{}};return X(A)===null?(w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}))):(w(me),Promise.resolve(Object.freeze({opened:true})))},[d,l]),z=react.useCallback(v=>y?P(v,null):g(v,null),[y,P,g]),O=react.useCallback((v,b)=>y?P(void 0,{visitRef:v,intent:b??null}):g(void 0,{visitRef:v,intent:b??null}),[y,P,g]);return {available:T,isPending:a.isPending||(m?.pending??false),status:k.status,error:k.error,errorReason:k.errorReason,open:z,openVisit:O}}n(yr,"useVetVisitWith");var Kt=n(e=>reactNative.Linking.openURL(e),"defaultOpenUrl");function ve(e={}){let{openUrl:r,...t}=e,o=react.useMemo(()=>{let i=r??Kt;return {prepare:n(()=>({ok:true,value:null}),"prepare"),async finish(a,u){try{return await i(u.url),null}catch{return "openFailed"}},abandon:n(()=>{},"abandon")}},[r]);return yr(o,t)}n(ve,"useVetVisit");function ge(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let r of Object.keys(e))ge(e[r]);}return e}n(ge,"deepFreeze");var $t=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),vr={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},br={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},mr={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},Qt={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},Xt={regular:"400",medium:"500",bold:"700"},Zt={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},Jt=0,J="System",ee="monospace",en=["content","heading","control","compact","badge"];function rn(e){let r={};for(let t of en)r[t]=e;return r}n(rn,"authoredTierSizes");function Er(){return {family:J,mono:ee,fontUrl:null,families:{regular:J,medium:J,bold:J,mono:ee,monoMedium:ee,monoBold:ee},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:mr,tierSizes:rn(mr),lineHeight:Qt,weight:Xt,letterSpacing:Zt,scale:1,maxScale:Jt,scaleCaps:$t}}n(Er,"baseType");var gr={},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 Ee(e){return `cubic-bezier(${e.join(", ")})`}n(Ee,"cssCubicBezier");var hr={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:Ee(be.standard),emphasized:Ee(be.emphasized),exit:Ee(be.exit)},reducedMotion:false},tn={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)"},_r=ge({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:tn,space:vr,radius:br,type:Er(),motion:hr,slots:gr}),nn={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)"};ge({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:nn,space:vr,radius:br,type:Er(),motion:hr,slots:gr});var Rr=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),Tr=globalThis,he=Tr[Rr]??(Tr[Rr]=react.createContext(_r));he.displayName??="EverfurThemeContext";function U(){return react.useContext(he)}n(U,"useEverfurTheme");function dn(e,r){let t=e.scaleCaps[r];return t>0?t:void 0}n(dn,"tierMultiplier");function xr({tier:e="content",...r}){let{type:t}=U(),o=dn(t,e);return react.createElement(reactNative.Text,o===void 0?r:{maxFontSizeMultiplier:o,...r})}n(xr,"Text");react.forwardRef(n(function(r,t){return react.createElement(reactNative.TextInput,{...r,...t===null?{}:{ref:t}})},"TextInput"));function wr(e,r){if(e===void 0)return {};let t={};return e.backgroundColor!==void 0&&(t.backgroundColor=e.backgroundColor),e.borderColor!==void 0&&(t.borderColor=e.borderColor,t.borderWidth=r??1),e.borderRadius!==void 0&&(t.borderRadius=e.borderRadius),t}n(wr,"slotBox");function Sr(e){return e?.textColor===void 0?{}:{color:e.textColor}}n(Sr,"slotText");var cn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function Fr(e,r){let t=e.type,o=t.families[r];return r==="mono"||t.namedFaces[r]?{fontFamily:o}:{fontFamily:o,fontWeight:t.weight[cn[r]]}}n(Fr,"face");var kr=Object.freeze({visitButton:"Talk to a vet"});var Or=44,vn=.6;function bn(e){let{petRef:r,label:t,openUrl:o,onOpened:i,onError:a,style:u,labelStyle:l,controller:s,returnTo:d,usState:y,entry:E,visitRef:c,intent:f,onStartInApp:m,prefer:T}=e,p=T==="redirect",k=ve({...d!==void 0?{returnTo:d}:{},...y!==void 0?{usState:y}:{},...E!==void 0?{entry:E}:{},...r!==void 0?{petRef:r}:{},...o!==void 0?{openUrl:o}:{},...s!==void 0?{controller:s}:{},prefer:p?"redirect":"in-app"}),w=U(),h=react.useMemo(()=>En(w),[w]),V=react.useRef(false);if(!k.available)return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[null,jsxRuntime.jsx(H,{})]});let S=k.status==="opening",C=t??kr.visitButton;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(reactNative.Pressable,{onPress:n(()=>{if(!(S||V.current)){if(!p){let g={...r!==void 0?{petRef:r}:{},...y!==void 0?{usState:y}:{},...c!=null?{visitRef:c,intent:f??null}:{}};X(g,m)===null&&j(a,"unavailable",null);return}V.current=true,(c==null?k.open():k.openVisit(c,f??null)).then(g=>{g.opened?j(i,g.flowId??null):g.reason!=="cancelled"&&j(a,g.reason,g.error);}).finally(()=>{V.current=false;});}},"onPress"),accessibilityRole:"button",accessibilityLabel:C,accessibilityState:{busy:S,disabled:S},style:[h.button,S?h.busy:null,u],children:jsxRuntime.jsx(xr,{style:[h.label,l],children:C})}),jsxRuntime.jsx(H,{})]})}n(bn,"VetVisitButton");function En(e){let{color:r,space:t,radius:o,type:i,slots:a}=e;return reactNative.StyleSheet.create({button:{minHeight:Or,minWidth:Or,alignItems:"center",justifyContent:"center",paddingHorizontal:t.xl,paddingVertical:t.sm,borderRadius:o.pill,backgroundColor:r.primary,...wr(a.vetVisitButton)},busy:{opacity:vn},label:{...Fr(e,"medium"),color:r.onPrimary,fontSize:i.size.body,lineHeight:i.size.body*i.lineHeight.snug,...Sr(a.vetVisitButton)}})}n(En,"makeStyles");exports.EverfurTelevetHost=H;exports.VET_VISIT_INTENTS=G;exports.VetVisitButton=bn;exports.hasEverfurTelevetFlow=jr;exports.isVetVisitIntent=K;exports.parseVetVisitReturn=Ft;exports.presentEverfurTelevetFlow=Dr;exports.registerEverfurTelevetFlow=zr;exports.useVetVisit=ve;exports.vetVisitErrorReasonOf=$;
|
|
1
|
+
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),reactNative=require('react-native');var Pt=Object.defineProperty;var n=(e,t)=>Pt(e,"name",{value:t,configurable:true});var we=Symbol.for("@everfur/sdk/televet");function F(){let e=globalThis,t=e[we];if(t!==void 0)return t;let r={presenter:null,snapshot:Object.freeze({request:null,serial:0,activeHost:null}),hosts:[],nextHost:1,listeners:new Set,dailyRegistered:false};return e[we]=r,r}n(F,"televetGlobal");function q(e){let t=F();t.snapshot=Object.freeze({...t.snapshot,...e});for(let r of [...t.listeners])try{r();}catch{}}n(q,"publish");function Se(e){F().presenter=e;}n(Se,"setTelevetPresenter");function Fe(){return F().presenter!==null}n(Fe,"hasTelevetPresenter");function B(e){let t=F().presenter;if(t===null)return "absent";try{return t(e)===!1?"declined":"presented"}catch(r){return console.warn("[everfur] Your registerEverfurTelevetFlow presenter threw; the in-app visit opened instead.",r),"threw"}}n(B,"callTelevetPresenter");function ke(e){let t=F();return t.listeners.add(e),()=>{t.listeners.delete(e);}}n(ke,"subscribeTelevetExperience");function ie(){return F().snapshot}n(ie,"televetExperienceSnapshot");function At(){return F().hosts.length>0}n(At,"hasTelevetHost");function Oe(e){if(!At())return false;let t=Object.freeze({...e});return q({request:t,serial:F().snapshot.serial+1}),true}n(Oe,"presentTelevetExperience");function ae(){F().snapshot.request!==null&&q({request:null});}n(ae,"dismissTelevetExperience");function Ve(){let e=F(),t=e.nextHost;return e.nextHost+=1,e.hosts=[...e.hosts,t],q({activeHost:e.hosts[0]??null}),t}n(Ve,"claimTelevetHost");function Ie(e){let t=F();t.hosts=t.hosts.filter(o=>o!==e);let r=t.hosts[0]??null;q(r===null?{activeHost:r,request:null}:{activeHost:r});}n(Ie,"releaseTelevetHost");function zt(e){Se(e);}n(zt,"registerEverfurTelevetFlow");function jt(){return Fe()}n(jt,"hasEverfurTelevetFlow");function Dt(e){return B(e)==="presented"}n(Dt,"presentEverfurTelevetFlow");function ze(e){let t=null;return ()=>{if(t!==null)return t;let r=e();return t=r,r.then(void 0,()=>{t===r&&(t=null);}),r}}n(ze,"memoizeTelevetLoader");function je(e){let[t,r]=react.useState(null);react.useEffect(()=>{let d=Ve();return r(d),()=>{Ie(d);}},[]);let o=react.useSyncExternalStore(ke,ie,ie),a=t!==null&&o.activeHost===t?o.request:null,[u,l]=react.useState(null),s=a!==null&&u===null;return react.useEffect(()=>{if(!s)return;let d=true;return e().then(y=>{d&&l(()=>y);},y=>{d&&(console.warn("[everfur] The in-app vet visit could not load its screens.",y),ae());}),()=>{d=false;}},[s,e]),a===null||u===null?null:{module:u,request:a,serial:o.serial,dismiss:ae}}n(je,"useTelevetExperienceHost");var Mt=ze(()=>import('@everfur/sdk/televet/booking'));function H(){let e=je(Mt);if(e===null)return null;let{EverfurTelevetModal:t}=e.module;return jsxRuntime.jsx(t,{request:e.request,onClose:e.dismiss},e.serial)}n(H,"EverfurTelevetHost");var se=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(se.map(e=>e.wireCode));var Ut=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"}),Ne=Object.freeze(se.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ut[e.wireCode]}))),qt=new Map(Ne.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Bt=Object.freeze(["http_envelope",...[...new Set(Ne.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function Y(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...Bt]){let i=qt.get(o+r);if(i)return i}}n(Y,"contractErrorFor");function Ht(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ht,"contractDocUrl");function Me(e){return null}n(Me,"publishedDocUrl");var Yt=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 Yt[e]}n(Le,"categoryFor");function Ue(e){let t=Y(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"}}n(Ue,"fromWire");var Wt=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function le(e){return Wt.has(e)}n(le,"isAutoRetryable");var Gt=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function qe(e){return le(e)||Gt.has(e)}n(qe,"isRetryableCode");var Kt=500,ue=8e3,Be=4;function He(e,t=Math.random){let r=Math.max(0,e),o=Math.min(Kt*2**r,ue);return Math.floor(t()*o)}n(He,"backoffDelayMs");var $t=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 de(e){return $t[e]}n(de,"userFacingError");function Ye(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(Ye,"defineHidden");var Qt=/^[a-z][a-z0-9_]{0,63}$/;function I(e,t){let r=Y(t?.wireCode,t?.wireEnvelope),o={code:e,category:Le(e),retryable:t?.retryable??qe(e),displayMessage:de(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Qt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&Ye(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&Ye(o,"raw",t.raw),Object.freeze(o)}n(I,"makeEverfurError");function ce(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(ce,"ok");function R(e){return Object.freeze({ok:false,error:e})}n(R,"err");var W=class W extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,W.prototype);}};n(W,"EverfurConfigError");var N=W;function We(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})}n(We,"errorFrame");function Zt(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}n(Zt,"authHeaders");function M(e,t){return {...e,headers:{...er(e.headers),...Zt(t)}}}n(M,"withAuthHeaders");function er(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(er,"stripAuthHeaders");async function Ge(e,t){if(t.mode==="anonymous")return t.transport.request(M(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return R(fe())}let o=await t.transport.request(M(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return R(fe())}let a=await t.transport.request(M(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?R(fe(a.error.httpStatus)):a}n(Ge,"authedSend");function fe(e){return I("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(fe,"authRejectedError");function Ke(e){return I("internalError",{retryable:true,wireMessage:tr(e)})}n(Ke,"networkError");function tr(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(tr,"describeCause");var rr=3e4,nr=ue*2,or="idempotency-key",ir=new Set(["POST","PUT","PATCH","DELETE"]),ar=Object.freeze({onEvent(){}}),sr=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function lr(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(lr,"seededIdempotencyKey");function Qe(e){let t=e.observer??ar,r=e.timers??sr,o=e.rng??Math.random,i=e.sleep??((c,f)=>Rr(c,r,f)),a=e.maxAttempts??Be,u=e.unaryTimeoutMs??rr,l=e.newIdempotencyKey??dr(),s=n(c=>{try{t.onEvent(c);}catch{}},"emit");async function d(c,f,m){let T=m?.maxAttempts,p=Math.max(1,T??a),k=m?.idempotent??ir.has(f.method),w=m?.idempotencyKey===void 0?null:lr(m.idempotencyKey),h=k?w??l():null,V=ur(f,h),S=0;for(;;){let x=n(_=>Object.freeze({call:c,method:f.method,path:f.path,attempt:S,...h?{idempotencyKey:h}:{},..._}),"stamp");s(x({phase:"attempt"}));let P=hr(u,r),g=_r(P.signal,f.signal),z;try{z=await Ge({...V,signal:g.signal},e.auth);}catch(_){z=R(Ke(_));}finally{g.dispose(),P.cancel();}if(z.ok)return s(x({phase:"settled",ok:true,reason:"ok"})),z;let O=z.error,v=fr(O,S,{maxAttempts:p,rng:o,now:r.now(),aborted:f.signal?.aborted===true,...T!==void 0?{perCallMaxAttempts:T}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),b={ok:false,code:O.code,reason:v.reason,...O.httpStatus!==void 0?{httpStatus:O.httpStatus}:{},...O.requestId!==void 0?{requestId:O.requestId}:{}};if(!v.retry)return s(x({phase:"settled",...b})),R(O);if(s(x({phase:"retry",...b,delayMs:v.delayMs})),await i(v.delayMs,f.signal),f.signal?.aborted===true)return s(x({phase:"settled",...b,reason:"aborted"})),R(O);S+=1;}}n(d,"send");async function y(c){return M(c,await gr(e.auth))}n(y,"authorize");async function*E(c,f,m){s(Object.freeze({call:c,phase:"stream.open",method:f.method,path:f.path,attempt:0}));try{yield*e.auth.transport.stream(f,m);}catch{yield We({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(E,"stream"),Object.freeze({send:d,authorize:y,stream:E})}n(Qe,"createRequestFunnel");function ur(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==or&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(ur,"assembleHeaders");function dr(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(dr,"defaultIdempotencyKeyFactory");var cr=10;function fr(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=pr(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!le(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{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 u=n(()=>{if(r.policy===void 0)return null;let d;try{d=r.policy.maxAttempts(e.code);}catch{return null}return typeof d!="number"||!Number.isFinite(d)?null:Math.max(1,Math.min(cr,Math.floor(d)))},"policyCeiling"),l=r.perCallMaxAttempts??u()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let s=yr(e,r.now);return s!==null?s>nr?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:s}:{retry:true,reason:i,delayMs:He(t,r.rng)}}n(fr,"decideRetry");function pr(e){let t=e.code==="unknown"?Ue(Er(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(pr,"throttleKind");function yr(e,t){let r=vr(e.raw);if(r!==null){let i=r-t;return i>0?i:0}let o=mr(e.raw);return o===null?null:Math.round(o*1e3)}n(yr,"retryOverrideMs");function mr(e){for(let t of pe(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}n(mr,"findRetryAfterSeconds");function vr(e){for(let t of pe(e)){let r=t.resets_at,o=br(r);if(o!==null)return o}return null}n(vr,"findResetsAt");function pe(e){if(!$e(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];$e(o)&&t.push(o);}return t}n(pe,"candidateScopes");function br(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}n(br,"parseInstantMs");function Er(e){for(let t of pe(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Er,"rawWireCode");function $e(e){return typeof e=="object"&&e!==null}n($e,"isRecord");async function gr(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}:{}}}n(gr,"resolveDeviceAuth");function hr(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(hr,"boundedSignal");function _r(e,t){let r=n(()=>{},"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 i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(_r,"mergeSignals");function Rr(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(Rr,"delayAbortable");var G=Object.freeze(["visit","join","summary","messages"]);function K(e){return typeof e=="string"&&G.includes(e)}n(K,"isVetVisitIntent");var Tr="/widget/v1/televet/handoffs",xr="/widget/v1/televet/availability",Cr="/widget/v1/televet/chat-entry",wr=/^[a-z0-9][a-z0-9_-]{0,39}$/,nt=/^[A-Za-z0-9_-]{22}$/,Xe="everfur_flow",Je=32,Ze=128,et=64;function $(e){let t=e.httpStatus;switch(e.code){case "sessionRequired":return "sessionRequired";case "authExpired":case "authRejected":return "authRejected";case "sdkUpdateRequired":return "sdkUpdateRequired";case "validationFailed":return "invalidRequest";case "rateLimited":case "quotaExceeded":return "rateLimited";}return t===void 0?e.code==="internalError"?"network":"unknown":t===429?"rateLimited":t===404?"unavailable":t===403?"accessDenied":t===401?"authRejected":t===400||t===422?"invalidRequest":t>=500?"serverError":"unknown"}n($,"vetVisitErrorReasonOf");function tt(e){return R(I("validationFailed",{retryable:false,wireMessage:e}))}n(tt,"invalid");function ye(e){return R(I("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}n(ye,"unusable");function Sr(e,t){let r={};e!==void 0&&(r.pet_ref=e);let o=t?.returnTo;if(o!=null){if(typeof o!="string"||!wr.test(o))return {ok:false,message:"returnTo must be a registered return destination key"};r.return_to=o;}let i=t?.entry;if(i!=null){if(i!=="chat"||e===void 0)return {ok:false,message:"entry 'chat' needs the pet the chat is about"};r.entry=i;}let a=t?.visitRef,u=t?.intent,l=a!=null;if(l){let s=typeof a=="string"?a.trim():"";if(s.length<1||[...s].length>et)return {ok:false,message:`visitRef must be 1..${et} characters`};r.visit_ref=s;}if(u!=null){if(!l)return {ok:false,message:"intent needs the visitRef it opens"};if(!K(u))return {ok:false,message:`intent must be one of ${G.join(", ")}`};r.intent=u;}return {ok:true,body:r}}n(Sr,"handoffBody");function Fr(e){if(typeof e!="object"||e===null)return null;let{visit_ref:t,intent:r}=e;return typeof t!="string"||t.length===0||!K(r)?null:Object.freeze({visitRef:t,intent:r})}n(Fr,"parseVisitEcho");function ot(e){let t=e.funnel??Qe({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=e.telemetry,o=n(i=>(rt(r,"televet.visit.handoff_failed",{reason:$(i)}),R(i)),"failed");return {async createHandoff(i,a){let u;if(i!=null){let p=typeof i=="string"?[...i].length:0;if(p<1||p>Ze)return o(I("validationFailed",{retryable:false,wireMessage:`pet_ref must be 1..${Ze} characters`}));u=i;}let l=Sr(u,a);if(!l.ok){let p=tt(l.message);return p.ok?p:o(p.error)}let s=l.body,d=await t.send("televet.visit.handoff",{method:"POST",path:Tr,body:s},{idempotent:false,maxAttempts:1});if(!d.ok)return o(d.error);let y=Or(d.value),E=s.return_to!==void 0,c=E?d.value?.flow_id:void 0;if(E&&(typeof c!="string"||!nt.test(c))){let p=ye("the handoff response carried no usable return flow id");return p.ok?p:o(p.error)}let f=s.visit_ref!==void 0,m=f?Fr(d.value?.visit):null;if(f&&m===null){let p=ye("the handoff response did not confirm the visit it opens");return p.ok?p:o(p.error)}let T=y===null?null:Object.freeze({...y,...E?{flowId:c}:{},...m!==null?{visit:m}:{}});return T===null?o(I("internalError",{retryable:false,httpStatus:502,wireMessage:"the handoff response carried no usable visit url"})):(rt(r,"televet.visit.handoff_created",{pet_scoped:s.pet_ref!==void 0}),ce(T))},async checkAvailability(i){if(typeof i!="string"||i.length>Je)return tt(`state must be at most ${Je} characters`);let a=await t.send("televet.visit.availability",{method:"POST",path:xr,body:{state:i}},{idempotent:false,maxAttempts:1});if(!a.ok)return R(a.error);let u=a.value?.available;return typeof u!="boolean"?ye("the availability response carried no usable answer"):ce(Object.freeze({available:u}))},async chatEntryOpen(){try{let i=await t.send("televet.visit.chat_entry",{method:"GET",path:Cr},{maxAttempts:1});return i.ok&&i.value?.open===!0}catch{return false}}}}n(ot,"createVetVisitController");function kr(e){if(typeof e!="string")return null;let t=e.indexOf("#"),r=t<0?e:e.slice(0,t),o=r.indexOf("?");if(o<0)return null;let i=r.slice(o+1).split("&").filter(a=>a.startsWith(`${Xe}=`)).map(a=>a.slice(Xe.length+1));return i.length!==1||!nt.test(i[0]??"")?null:Object.freeze({flowId:i[0]})}n(kr,"parseVetVisitReturn");function Or(e){if(typeof e!="object"||e===null)return null;let{url:t,expires_at:r}=e;return typeof t!="string"||typeof r!="string"||r.length===0||!Ar(t)?null:Object.freeze({url:t,expiresAt:r})}n(Or,"parseHandoff");var Vr=new Set(["localhost","127.0.0.1","[::1]"]),Ir=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/,Pr=/[\s\u0000-\u001f\u007f]/;function Ar(e){if(Pr.test(e))return false;let t=Ir.exec(e);if(t===null)return false;let r=(t[1]??"").toLowerCase(),o=t[2]??"";if(o.length===0||o.includes("@"))return false;let i=o.replace(/:\d+$/,"").toLowerCase(),a=r==="https",u=r==="http"&&Vr.has(i);if(!a&&!u)return false;let l=e.indexOf("#");if(l<0)return false;let s=e.slice(l);return s.startsWith("#h=")&&s.length>3}n(Ar,"isOpenableVisitUrl");function rt(e,t,r){if(e)try{e.track(t,r);}catch{}}n(rt,"safeTrack");var it=Symbol.for("@everfur/sdk#EverfurContext@v1"),at=globalThis,st=at[it]??(at[it]=react.createContext(null));st.displayName??="EverfurContext";function Q(){let e=react.useContext(st);if(e===null)throw new N("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var Dr=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 Nr(e){return Dr[e]}n(Nr,"requires");function lt(e,t,r){let o=Nr(e),i=new Map;for(let l of t)i.set(l.resource,l);if(r?.isPending===true&&o.some(l=>!i.has(l)))return me({name:e,enabled:false,isPending:true,limits:{}});let a=Mr(o,i);return o.filter(l=>i.get(l)?.granted!==true).length===0?me({name:e,enabled:true,isPending:false,limits:a}):me({name:e,enabled:false,isPending:false,limits:a,disabled:Lr(o,i)})}n(lt,"decideCapability");function Mr(e,t){let r={};for(let o of e){let i=t.get(o)?.limits;if(i)for(let[a,u]of Object.entries(i)){let l=r[a];r[a]=l===void 0?u:Math.min(l,u);}}return r}n(Mr,"mergeLimits");function Lr(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:de("accessDenied"),level:"user_entitlement",recoverable:false})}n(Lr,"disabledFor");function me(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)}n(me,"freezeDecision");function ut(e){let{runtime:t}=Q(),r=t.entitlements,o=react.useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return react.useMemo(()=>lt(e,o.decisions,{isPending:o.isPending}),[e,o])}n(ut,"useCapability");function dt(e){let t=globalThis.console;try{t?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}n(dt,"reportHostFailure");function Br(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}n(Br,"isThenable");function j(e,...t){if(typeof e=="function")try{let r=e(...t);return Br(r)&&Promise.resolve(r).then(void 0,dt),r}catch(r){dt(r);return}}n(j,"callHost");var ct=false;function X(e,t){return t!==void 0?(j(t,e),"onStartInApp"):B(e)==="presented"?"presenter":Oe(e)?"experience":(ct||(ct=true,console.warn("[everfur] A vet visit had nowhere to open: mount <EverfurTelevetHost /> in your EverfurProvider, or pass prefer: 'redirect'.")),null)}n(X,"openVetVisitInApp");var ve=Object.freeze({status:"idle",error:null,errorReason:null});function Yr(e,t,r){let{usState:o,chat:i,scope:a}=r,u=t&&(o!==null||i),l=`${o??""}|${i?"chat":""}`,[s,d]=react.useState(null);if(react.useEffect(()=>{if(!u)return;let E=true,c=e.current;return d(null),n(async()=>{try{if(i&&!(c.chatEntryOpen&&await c.chatEntryOpen()))return !1;if(o===null)return !0;if(!c.checkAvailability)return !1;let m=await c.checkAvailability(o);return m.ok&&m.value.available}catch{return false}},"ask")().then(m=>{E&&d({key:l,open:m});}),()=>{E=false;}},[u,l,o,i,a,e]),!u)return null;let y=s!==null&&s.key===l;return {open:y&&s.open,pending:!y}}n(Yr,"usePreflight");var Wr=Object.freeze({status:"opening",error:null,errorReason:null});function yt(e,t={}){let{runtime:r,userRef:o,scopeEpoch:i}=Q(),a=ut("televet"),u=a.enabled&&o!==null,l=t.usState??null,s=t.entry==="chat",d=t.petRef??null,y=t.prefer==="redirect",E=react.useMemo(()=>{if(t.controller)return t.controller;let{services:v}=r.registry;return ot({auth:v.authFor(o),telemetry:v.telemetry,...v.errorPolicy?{errorPolicy:v.errorPolicy}:{}})},[r,o,i,t.controller]),c=react.useRef(E);c.current=E;let f=react.useMemo(()=>({runtime:r,userRef:o,scopeEpoch:i}),[r,o,i]),m=Yr(c,u,{usState:l,chat:s,scope:f}),T=u&&(m===null||m.open)&&(!s||d!==null),p=t.returnTo??null,[k,w]=react.useState(ve),h=react.useRef(null),V=react.useRef({runtime:r,userRef:o,scopeEpoch:i});V.current={runtime:r,userRef:o,scopeEpoch:i};let S=react.useRef(E);S.current=E;let x=react.useRef(T);x.current=T;let P=react.useCallback((v,b)=>{if(h.current)return h.current;let _=n((C,D)=>(w({status:C==="cancelled"?"idle":"error",error:D,errorReason:C==="cancelled"?null:C}),Object.freeze({opened:false,reason:C,error:D})),"fail");if(!x.current)return Promise.resolve(_("unavailable",null));let A=e.prepare();if(!A.ok)return Promise.resolve(_(A.reason,null));let re=V.current,Re=S.current;w(Wr);let ne=(async()=>{let C,D={...p!==null?{returnTo:p}:{},...s?{entry:"chat"}:{},...b!==null?{visitRef:b.visitRef}:{},...b!==null&&b.intent!==null&&b.intent!==void 0?{intent:b.intent}:{}},Te=Object.keys(D).length===0?void 0:D,xe=v===void 0?d:v;try{C=await(Te===void 0?Re.createHandoff(xe):Re.createHandoff(xe,Te));}catch{return e.abandon(A.value),_("unknown",null)}let oe=V.current;if(oe.runtime!==re.runtime||oe.userRef!==re.userRef||oe.scopeEpoch!==re.scopeEpoch)return e.abandon(A.value),_("cancelled",null);if(!C.ok)return e.abandon(A.value),_($(C.error),C.error);let Ce=await e.finish(A.value,C.value);return Ce!==null?_(Ce,null):(w(ve),Object.freeze(C.value.flowId===void 0?{opened:true}:{opened:true,flowId:C.value.flowId}))})().finally(()=>{h.current===ne&&(h.current=null);});return h.current=ne,ne},[e,d,p,s]),g=react.useCallback((v,b)=>{if(!x.current)return w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}));let _=v===void 0?d:v,A={..._!==null?{petRef:_}:{},...l!==null?{usState:l}:{},...b!==null?{visitRef:b.visitRef,intent:b.intent}:{}};return X(A)===null?(w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}))):(w(ve),Promise.resolve(Object.freeze({opened:true})))},[d,l]),z=react.useCallback(v=>y?P(v,null):g(v,null),[y,P,g]),O=react.useCallback((v,b)=>y?P(void 0,{visitRef:v,intent:b??null}):g(void 0,{visitRef:v,intent:b??null}),[y,P,g]);return {available:T,isPending:a.isPending||(m?.pending??false),status:k.status,error:k.error,errorReason:k.errorReason,open:z,openVisit:O}}n(yt,"useVetVisitWith");var $r=n(e=>reactNative.Linking.openURL(e),"defaultOpenUrl");function be(e={}){let{openUrl:t,...r}=e,o=react.useMemo(()=>{let i=t??$r;return {prepare:n(()=>({ok:true,value:null}),"prepare"),async finish(a,u){try{return await i(u.url),null}catch{return "openFailed"}},abandon:n(()=>{},"abandon")}},[t]);return yt(o,r)}n(be,"useVetVisit");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}n(he,"deepFreeze");var Qr=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),vt={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},bt={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},mt={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},Xr={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},Jr={regular:"400",medium:"500",bold:"700"},Zr={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},en=0,Z="System",ee="monospace",tn=["content","heading","control","compact","badge"];function rn(e){let t={};for(let r of tn)t[r]=e;return t}n(rn,"authoredTierSizes");function Et(){return {family:Z,mono:ee,fontUrl:null,families:{regular:Z,medium:Z,bold:Z,mono:ee,monoMedium:ee,monoBold:ee},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:mt,tierSizes:rn(mt),lineHeight:Xr,weight:Jr,letterSpacing:Zr,scale:1,maxScale:en,scaleCaps:Qr}}n(Et,"baseType");var gt={},Ee=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(", ")})`}n(ge,"cssCubicBezier");var ht={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:ge(Ee.standard),emphasized:ge(Ee.emphasized),exit:ge(Ee.exit)},reducedMotion:false},nn={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)"},_t=he({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:nn,space:vt,radius:bt,type:Et(),motion:ht,slots:gt}),on={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:on,space:vt,radius:bt,type:Et(),motion:ht,slots:gt});var Rt=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),Tt=globalThis,_e=Tt[Rt]??(Tt[Rt]=react.createContext(_t));_e.displayName??="EverfurThemeContext";function U(){return react.useContext(_e)}n(U,"useEverfurTheme");function cn(e,t){let r=e.scaleCaps[t];return r>0?r:void 0}n(cn,"tierMultiplier");function Ct({tier:e="content",...t}){let{type:r}=U(),o=cn(r,e);return react.createElement(reactNative.Text,o===void 0?t:{maxFontSizeMultiplier:o,...t})}n(Ct,"Text");react.forwardRef(n(function(t,r){return react.createElement(reactNative.TextInput,{...t,...r===null?{}:{ref:r}})},"TextInput"));function wt(e,t){if(e===void 0)return {};let r={};return e.backgroundColor!==void 0&&(r.backgroundColor=e.backgroundColor),e.borderColor!==void 0&&(r.borderColor=e.borderColor,r.borderWidth=t??1),e.borderRadius!==void 0&&(r.borderRadius=e.borderRadius),r}n(wt,"slotBox");function St(e){return e?.textColor===void 0?{}:{color:e.textColor}}n(St,"slotText");var fn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function Ft(e,t){let r=e.type,o=r.families[t];return t==="mono"||r.namedFaces[t]?{fontFamily:o}:{fontFamily:o,fontWeight:r.weight[fn[t]]}}n(Ft,"face");var kt=Object.freeze({visitButton:"Talk to a vet"});var Ot=44,bn=.6;function En(e){let{petRef:t,label:r,openUrl:o,onOpened:i,onError:a,style:u,labelStyle:l,controller:s,returnTo:d,usState:y,entry:E,visitRef:c,intent:f,onStartInApp:m,prefer:T}=e,p=T==="redirect",k=be({...d!==void 0?{returnTo:d}:{},...y!==void 0?{usState:y}:{},...E!==void 0?{entry:E}:{},...t!==void 0?{petRef:t}:{},...o!==void 0?{openUrl:o}:{},...s!==void 0?{controller:s}:{},prefer:p?"redirect":"in-app"}),w=U(),h=react.useMemo(()=>gn(w),[w]),V=react.useRef(false);if(!k.available)return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[null,jsxRuntime.jsx(H,{})]});let S=k.status==="opening",x=r??kt.visitButton;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(reactNative.Pressable,{onPress:n(()=>{if(!(S||V.current)){if(!p){let g={...t!==void 0?{petRef:t}:{},...y!==void 0?{usState:y}:{},...c!=null?{visitRef:c,intent:f??null}:{}};X(g,m)===null&&j(a,"unavailable",null);return}V.current=true,(c==null?k.open():k.openVisit(c,f??null)).then(g=>{g.opened?j(i,g.flowId??null):g.reason!=="cancelled"&&j(a,g.reason,g.error);}).finally(()=>{V.current=false;});}},"onPress"),accessibilityRole:"button",accessibilityLabel:x,accessibilityState:{busy:S,disabled:S},style:[h.button,S?h.busy:null,u],children:jsxRuntime.jsx(Ct,{style:[h.label,l],children:x})}),jsxRuntime.jsx(H,{})]})}n(En,"VetVisitButton");function gn(e){let{color:t,space:r,radius:o,type:i,slots:a}=e;return reactNative.StyleSheet.create({button:{minHeight:Ot,minWidth:Ot,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.sm,borderRadius:o.pill,backgroundColor:t.primary,...wt(a.vetVisitButton)},busy:{opacity:bn},label:{...Ft(e,"medium"),color:t.onPrimary,fontSize:i.size.body,lineHeight:i.size.body*i.lineHeight.snug,...St(a.vetVisitButton)}})}n(gn,"makeStyles");exports.EverfurTelevetHost=H;exports.VET_VISIT_INTENTS=G;exports.VetVisitButton=En;exports.hasEverfurTelevetFlow=jt;exports.isVetVisitIntent=K;exports.parseVetVisitReturn=kr;exports.presentEverfurTelevetFlow=Dt;exports.registerEverfurTelevetFlow=zt;exports.useVetVisit=be;exports.vetVisitErrorReasonOf=$;
|
package/dist/televet/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {createContext,forwardRef,useMemo,createElement,useRef,useState,useEffect,useSyncExternalStore,useContext,useCallback}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Linking,TextInput,Pressable,StyleSheet,Text}from'react-native';var Pr=Object.defineProperty;var n=(e,r)=>Pr(e,"name",{value:r,configurable:true});var xe=Symbol.for("@everfur/sdk/televet");function F(){let e=globalThis,r=e[xe];if(r!==void 0)return r;let t={presenter:null,snapshot:Object.freeze({request:null,serial:0,activeHost:null}),hosts:[],nextHost:1,listeners:new Set,dailyRegistered:false};return e[xe]=t,t}n(F,"televetGlobal");function q(e){let r=F();r.snapshot=Object.freeze({...r.snapshot,...e});for(let t of [...r.listeners])try{t();}catch{}}n(q,"publish");function we(e){F().presenter=e;}n(we,"setTelevetPresenter");function Se(){return F().presenter!==null}n(Se,"hasTelevetPresenter");function B(e){let r=F().presenter;if(r===null)return "absent";try{return r(e)===!1?"declined":"presented"}catch(t){return console.warn("[everfur] Your registerEverfurTelevetFlow presenter threw; the in-app visit opened instead.",t),"threw"}}n(B,"callTelevetPresenter");function Fe(e){let r=F();return r.listeners.add(e),()=>{r.listeners.delete(e);}}n(Fe,"subscribeTelevetExperience");function ie(){return F().snapshot}n(ie,"televetExperienceSnapshot");function Ar(){return F().hosts.length>0}n(Ar,"hasTelevetHost");function ke(e){if(!Ar())return false;let r=Object.freeze({...e});return q({request:r,serial:F().snapshot.serial+1}),true}n(ke,"presentTelevetExperience");function ae(){F().snapshot.request!==null&&q({request:null});}n(ae,"dismissTelevetExperience");function Oe(){let e=F(),r=e.nextHost;return e.nextHost+=1,e.hosts=[...e.hosts,r],q({activeHost:e.hosts[0]??null}),r}n(Oe,"claimTelevetHost");function Ve(e){let r=F();r.hosts=r.hosts.filter(o=>o!==e);let t=r.hosts[0]??null;q(t===null?{activeHost:t,request:null}:{activeHost:t});}n(Ve,"releaseTelevetHost");function zr(e){we(e);}n(zr,"registerEverfurTelevetFlow");function jr(){return Se()}n(jr,"hasEverfurTelevetFlow");function Dr(e){return B(e)==="presented"}n(Dr,"presentEverfurTelevetFlow");function Ae(e){let r=null;return ()=>{if(r!==null)return r;let t=e();return r=t,t.then(void 0,()=>{r===t&&(r=null);}),t}}n(Ae,"memoizeTelevetLoader");function ze(e){let[r,t]=useState(null);useEffect(()=>{let d=Oe();return t(d),()=>{Ve(d);}},[]);let o=useSyncExternalStore(Fe,ie,ie),a=r!==null&&o.activeHost===r?o.request:null,[u,l]=useState(null),s=a!==null&&u===null;return useEffect(()=>{if(!s)return;let d=true;return e().then(y=>{d&&l(()=>y);},y=>{d&&(console.warn("[everfur] The in-app vet visit could not load its screens.",y),ae());}),()=>{d=false;}},[s,e]),a===null||u===null?null:{module:u,request:a,serial:o.serial,dismiss:ae}}n(ze,"useTelevetExperienceHost");var Nr=Ae(()=>import('@everfur/sdk/televet/booking'));function H(){let e=ze(Nr);if(e===null)return null;let{EverfurTelevetModal:r}=e.module;return jsx(r,{request:e.request,onClose:e.dismiss},e.serial)}n(H,"EverfurTelevetHost");var se=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(se.map(e=>e.wireCode));var Ur=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(se.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ur[e.wireCode]}))),qr=new Map(De.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Br=Object.freeze(["http_envelope",...[...new Set(De.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function Y(e,r){if(typeof e!="string")return;let t=e.trim().toUpperCase();if(t.length!==0)for(let o of [r??"http_envelope",...Br]){let i=qr.get(o+t);if(i)return i}}n(Y,"contractErrorFor");function Hr(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Hr,"contractDocUrl");function Me(e){return null}n(Me,"publishedDocUrl");var Yr=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 Yr[e]}n(Ne,"categoryFor");function Le(e){let r=Y(e);if(r)return r.normalized;let t=(e??"").trim().toUpperCase(),o=t.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(t.startsWith("AUTH"))return "authExpired";switch(o){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"}}n(Le,"fromWire");var Wr=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function le(e){return Wr.has(e)}n(le,"isAutoRetryable");var Gr=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function Ue(e){return le(e)||Gr.has(e)}n(Ue,"isRetryableCode");var Kr=500,ue=8e3,qe=4;function Be(e,r=Math.random){let t=Math.max(0,e),o=Math.min(Kr*2**t,ue);return Math.floor(r()*o)}n(Be,"backoffDelayMs");var $r=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 de(e){return $r[e]}n(de,"userFacingError");function He(e,r,t){Object.defineProperty(e,r,{value:t,enumerable:false,writable:false,configurable:false});}n(He,"defineHidden");var Qr=/^[a-z][a-z0-9_]{0,63}$/;function I(e,r){let t=Y(r?.wireCode,r?.wireEnvelope),o={code:e,category:Ne(e),retryable:r?.retryable??Ue(e),displayMessage:de(e)};if(r?.httpStatus!==void 0&&(o.httpStatus=r.httpStatus),r?.requestId&&(o.requestId=r.requestId),typeof r?.reasonCode=="string"&&Qr.test(r.reasonCode)&&(o.reasonCode=r.reasonCode),t);return r?.wireMessage&&He(o,"wireMessage",r.wireMessage),r?.raw!==void 0&&r.raw!==null&&He(o,"raw",r.raw),Object.freeze(o)}n(I,"makeEverfurError");function ce(e,r){return Object.freeze(r===void 0?{ok:true,value:e}:{ok:true,value:e,warning:r})}n(ce,"ok");function R(e){return Object.freeze({ok:false,error:e})}n(R,"err");var W=class W extends Error{constructor(r,t){super(t),this.name="EverfurConfigError",this.kind=r,Object.setPrototypeOf(this,W.prototype);}};n(W,"EverfurConfigError");var M=W;function Ye(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})}n(Ye,"errorFrame");function Jr(e){let r={};return e.mode==="personalized"?r.authorization=`Bearer ${e.token}`:r["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(r["x-everfur-user-ref"]=e.userRef),e.sessionId&&(r["x-everfur-session-id"]=e.sessionId),r}n(Jr,"authHeaders");function N(e,r){return {...e,headers:{...et(e.headers),...Jr(r)}}}n(N,"withAuthHeaders");function et(e){if(!e)return {};let r={};for(let[t,o]of Object.entries(e)){let i=t.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(r[t]=o);}return r}n(et,"stripAuthHeaders");async function We(e,r){if(r.mode==="anonymous")return r.transport.request(N(e,{mode:"anonymous",publishableKey:r.publishableKey,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));let t;try{t=await r.identity.currentToken();}catch{return R(fe())}let o=await r.transport.request(N(e,{mode:"personalized",token:t,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await r.identity.currentToken({forceRefresh:!0});}catch{return R(fe())}let a=await r.transport.request(N(e,{mode:"personalized",token:i,userRef:r.userRef,...r.sessionId?{sessionId:r.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?R(fe(a.error.httpStatus)):a}n(We,"authedSend");function fe(e){return I("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(fe,"authRejectedError");function Ge(e){return I("internalError",{retryable:true,wireMessage:rt(e)})}n(Ge,"networkError");function rt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(rt,"describeCause");var tt=3e4,nt=ue*2,ot="idempotency-key",it=new Set(["POST","PUT","PATCH","DELETE"]),at=Object.freeze({onEvent(){}}),st=Object.freeze({setTimeout:n((e,r)=>setTimeout(e,r),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function lt(e){let r=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return r.length===0?null:`efs_${r}`.slice(0,128)}n(lt,"seededIdempotencyKey");function $e(e){let r=e.observer??at,t=e.timers??st,o=e.rng??Math.random,i=e.sleep??((c,f)=>_t(c,t,f)),a=e.maxAttempts??qe,u=e.unaryTimeoutMs??tt,l=e.newIdempotencyKey??dt(),s=n(c=>{try{r.onEvent(c);}catch{}},"emit");async function d(c,f,m){let T=m?.maxAttempts,p=Math.max(1,T??a),k=m?.idempotent??it.has(f.method),w=m?.idempotencyKey===void 0?null:lt(m.idempotencyKey),h=k?w??l():null,V=ut(f,h),S=0;for(;;){let C=n(_=>Object.freeze({call:c,method:f.method,path:f.path,attempt:S,...h?{idempotencyKey:h}:{},..._}),"stamp");s(C({phase:"attempt"}));let P=gt(u,t),g=ht(P.signal,f.signal),z;try{z=await We({...V,signal:g.signal},e.auth);}catch(_){z=R(Ge(_));}finally{g.dispose(),P.cancel();}if(z.ok)return s(C({phase:"settled",ok:true,reason:"ok"})),z;let O=z.error,v=ft(O,S,{maxAttempts:p,rng:o,now:t.now(),aborted:f.signal?.aborted===true,...T!==void 0?{perCallMaxAttempts:T}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),b={ok:false,code:O.code,reason:v.reason,...O.httpStatus!==void 0?{httpStatus:O.httpStatus}:{},...O.requestId!==void 0?{requestId:O.requestId}:{}};if(!v.retry)return s(C({phase:"settled",...b})),R(O);if(s(C({phase:"retry",...b,delayMs:v.delayMs})),await i(v.delayMs,f.signal),f.signal?.aborted===true)return s(C({phase:"settled",...b,reason:"aborted"})),R(O);S+=1;}}n(d,"send");async function y(c){return N(c,await Et(e.auth))}n(y,"authorize");async function*E(c,f,m){s(Object.freeze({call:c,phase:"stream.open",method:f.method,path:f.path,attempt:0}));try{yield*e.auth.transport.stream(f,m);}catch{yield Ye({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(E,"stream"),Object.freeze({send:d,authorize:y,stream:E})}n($e,"createRequestFunnel");function ut(e,r){let t={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ot&&(t[o]=i);return r!==null&&(t["Idempotency-Key"]=r),{...e,headers:t}}n(ut,"assembleHeaders");function dt(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(dt,"defaultIdempotencyKeyFactory");var ct=10;function ft(e,r,t){if(t.aborted)return {retry:false,reason:"aborted"};let o=pt(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!le(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(t.policy===void 0)return false;try{return !t.policy.shouldRetry(e.code,r)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let u=n(()=>{if(t.policy===void 0)return null;let d;try{d=t.policy.maxAttempts(e.code);}catch{return null}return typeof d!="number"||!Number.isFinite(d)?null:Math.max(1,Math.min(ct,Math.floor(d)))},"policyCeiling"),l=t.perCallMaxAttempts??u()??t.maxAttempts;if(r+1>=l)return {retry:false,reason:"attempts-exhausted"};let s=yt(e,t.now);return s!==null?s>nt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:s}:{retry:true,reason:i,delayMs:Be(r,t.rng)}}n(ft,"decideRetry");function pt(e){let r=e.code==="unknown"?Le(bt(e.raw)):e.code;return r==="quotaExceeded"?"quota":r==="rateLimited"||e.httpStatus===429?"burst":null}n(pt,"throttleKind");function yt(e,r){let t=mt(e.raw);if(t===null)return null;let o=t-r;return o>0?o:0}n(yt,"retryOverrideMs");function mt(e){for(let r of Qe(e)){let t=r.resets_at,o=vt(t);if(o!==null)return o}return null}n(mt,"findResetsAt");function Qe(e){if(!Ke(e))return [];let r=[e];for(let t of ["error","detail"]){let o=e[t];Ke(o)&&r.push(o);}return r}n(Qe,"candidateScopes");function vt(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 r=Date.parse(e);return Number.isFinite(r)?r:null}return null}n(vt,"parseInstantMs");function bt(e){for(let r of Qe(e)){let t=r.code;if(typeof t=="string"&&t.length>0)return t}return null}n(bt,"rawWireCode");function Ke(e){return typeof e=="object"&&e!==null}n(Ke,"isRecord");async function Et(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}:{}}}n(Et,"resolveDeviceAuth");function gt(e,r){let t=new AbortController,o=r.setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>r.clearTimeout(o),"cancel")}}n(gt,"boundedSignal");function ht(e,r){let t=n(()=>{},"noop");if(!r)return {signal:e,dispose:t};let o=new AbortController;if(e.aborted||r.aborted)return o.abort(),{signal:o.signal,dispose:t};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),r.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),r.removeEventListener("abort",i);},"dispose")}}n(ht,"mergeSignals");function _t(e,r,t){return e<=0||t?.aborted===true?Promise.resolve():new Promise(o=>{let i=r.setTimeout(()=>{t?.removeEventListener("abort",a),o();},e),a=n(()=>{r.clearTimeout(i),o();},"onAbort");t?.addEventListener("abort",a,{once:true});})}n(_t,"delayAbortable");var G=Object.freeze(["visit","join","summary","messages"]);function K(e){return typeof e=="string"&&G.includes(e)}n(K,"isVetVisitIntent");var Rt="/widget/v1/televet/handoffs",Tt="/widget/v1/televet/availability",Ct="/widget/v1/televet/chat-entry",xt=/^[a-z0-9][a-z0-9_-]{0,39}$/,nr=/^[A-Za-z0-9_-]{22}$/,Xe="everfur_flow",Ze=32,Je=128,er=64;function $(e){let r=e.httpStatus;switch(e.code){case "sessionRequired":return "sessionRequired";case "authExpired":case "authRejected":return "authRejected";case "sdkUpdateRequired":return "sdkUpdateRequired";case "validationFailed":return "invalidRequest";case "rateLimited":case "quotaExceeded":return "rateLimited";}return r===void 0?e.code==="internalError"?"network":"unknown":r===429?"rateLimited":r===404?"unavailable":r===403?"accessDenied":r===401?"authRejected":r===400||r===422?"invalidRequest":r>=500?"serverError":"unknown"}n($,"vetVisitErrorReasonOf");function rr(e){return R(I("validationFailed",{retryable:false,wireMessage:e}))}n(rr,"invalid");function pe(e){return R(I("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}n(pe,"unusable");function wt(e,r){let t={};e!==void 0&&(t.pet_ref=e);let o=r?.returnTo;if(o!=null){if(typeof o!="string"||!xt.test(o))return {ok:false,message:"returnTo must be a registered return destination key"};t.return_to=o;}let i=r?.entry;if(i!=null){if(i!=="chat"||e===void 0)return {ok:false,message:"entry 'chat' needs the pet the chat is about"};t.entry=i;}let a=r?.visitRef,u=r?.intent,l=a!=null;if(l){let s=typeof a=="string"?a.trim():"";if(s.length<1||[...s].length>er)return {ok:false,message:`visitRef must be 1..${er} characters`};t.visit_ref=s;}if(u!=null){if(!l)return {ok:false,message:"intent needs the visitRef it opens"};if(!K(u))return {ok:false,message:`intent must be one of ${G.join(", ")}`};t.intent=u;}return {ok:true,body:t}}n(wt,"handoffBody");function St(e){if(typeof e!="object"||e===null)return null;let{visit_ref:r,intent:t}=e;return typeof r!="string"||r.length===0||!K(t)?null:Object.freeze({visitRef:r,intent:t})}n(St,"parseVisitEcho");function or(e){let r=e.funnel??$e({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),t=e.telemetry,o=n(i=>(tr(t,"televet.visit.handoff_failed",{reason:$(i)}),R(i)),"failed");return {async createHandoff(i,a){let u;if(i!=null){let p=typeof i=="string"?[...i].length:0;if(p<1||p>Je)return o(I("validationFailed",{retryable:false,wireMessage:`pet_ref must be 1..${Je} characters`}));u=i;}let l=wt(u,a);if(!l.ok){let p=rr(l.message);return p.ok?p:o(p.error)}let s=l.body,d=await r.send("televet.visit.handoff",{method:"POST",path:Rt,body:s},{idempotent:false,maxAttempts:1});if(!d.ok)return o(d.error);let y=kt(d.value),E=s.return_to!==void 0,c=E?d.value?.flow_id:void 0;if(E&&(typeof c!="string"||!nr.test(c))){let p=pe("the handoff response carried no usable return flow id");return p.ok?p:o(p.error)}let f=s.visit_ref!==void 0,m=f?St(d.value?.visit):null;if(f&&m===null){let p=pe("the handoff response did not confirm the visit it opens");return p.ok?p:o(p.error)}let T=y===null?null:Object.freeze({...y,...E?{flowId:c}:{},...m!==null?{visit:m}:{}});return T===null?o(I("internalError",{retryable:false,httpStatus:502,wireMessage:"the handoff response carried no usable visit url"})):(tr(t,"televet.visit.handoff_created",{pet_scoped:s.pet_ref!==void 0}),ce(T))},async checkAvailability(i){if(typeof i!="string"||i.length>Ze)return rr(`state must be at most ${Ze} characters`);let a=await r.send("televet.visit.availability",{method:"POST",path:Tt,body:{state:i}},{idempotent:false,maxAttempts:1});if(!a.ok)return R(a.error);let u=a.value?.available;return typeof u!="boolean"?pe("the availability response carried no usable answer"):ce(Object.freeze({available:u}))},async chatEntryOpen(){try{let i=await r.send("televet.visit.chat_entry",{method:"GET",path:Ct},{maxAttempts:1});return i.ok&&i.value?.open===!0}catch{return false}}}}n(or,"createVetVisitController");function Ft(e){if(typeof e!="string")return null;let r=e.indexOf("#"),t=r<0?e:e.slice(0,r),o=t.indexOf("?");if(o<0)return null;let i=t.slice(o+1).split("&").filter(a=>a.startsWith(`${Xe}=`)).map(a=>a.slice(Xe.length+1));return i.length!==1||!nr.test(i[0]??"")?null:Object.freeze({flowId:i[0]})}n(Ft,"parseVetVisitReturn");function kt(e){if(typeof e!="object"||e===null)return null;let{url:r,expires_at:t}=e;return typeof r!="string"||typeof t!="string"||t.length===0||!Pt(r)?null:Object.freeze({url:r,expiresAt:t})}n(kt,"parseHandoff");var Ot=new Set(["localhost","127.0.0.1","[::1]"]),Vt=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/,It=/[\s\u0000-\u001f\u007f]/;function Pt(e){if(It.test(e))return false;let r=Vt.exec(e);if(r===null)return false;let t=(r[1]??"").toLowerCase(),o=r[2]??"";if(o.length===0||o.includes("@"))return false;let i=o.replace(/:\d+$/,"").toLowerCase(),a=t==="https",u=t==="http"&&Ot.has(i);if(!a&&!u)return false;let l=e.indexOf("#");if(l<0)return false;let s=e.slice(l);return s.startsWith("#h=")&&s.length>3}n(Pt,"isOpenableVisitUrl");function tr(e,r,t){if(e)try{e.track(r,t);}catch{}}n(tr,"safeTrack");var ir=Symbol.for("@everfur/sdk#EverfurContext@v1"),ar=globalThis,sr=ar[ir]??(ar[ir]=createContext(null));sr.displayName??="EverfurContext";function Q(){let e=useContext(sr);if(e===null)throw new M("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var jt=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 Dt(e){return jt[e]}n(Dt,"requires");function lr(e,r,t){let o=Dt(e),i=new Map;for(let l of r)i.set(l.resource,l);if(t?.isPending===true&&o.some(l=>!i.has(l)))return ye({name:e,enabled:false,isPending:true,limits:{}});let a=Mt(o,i);return o.filter(l=>i.get(l)?.granted!==true).length===0?ye({name:e,enabled:true,isPending:false,limits:a}):ye({name:e,enabled:false,isPending:false,limits:a,disabled:Nt(o,i)})}n(lr,"decideCapability");function Mt(e,r){let t={};for(let o of e){let i=r.get(o)?.limits;if(i)for(let[a,u]of Object.entries(i)){let l=t[a];t[a]=l===void 0?u:Math.min(l,u);}}return t}n(Mt,"mergeLimits");function Nt(e,r){for(let t of e){let o=r.get(t)?.disabled;if(o)return Object.freeze({reason:o.reason,level:o.level,recoverable:o.recoverable})}return Object.freeze({reason:de("accessDenied"),level:"user_entitlement",recoverable:false})}n(Nt,"disabledFor");function ye(e){let r={name:e.name,enabled:e.enabled,isPending:e.isPending,limits:Object.freeze({...e.limits})};return e.disabled!==void 0&&(r.disabled=e.disabled),Object.freeze(r)}n(ye,"freezeDecision");function ur(e){let{runtime:r}=Q(),t=r.entitlements,o=useSyncExternalStore(t.subscribe,t.getSnapshot,t.getSnapshot);return useMemo(()=>lr(e,o.decisions,{isPending:o.isPending}),[e,o])}n(ur,"useCapability");function dr(e){let r=globalThis.console;try{r?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}n(dr,"reportHostFailure");function qt(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}n(qt,"isThenable");function j(e,...r){if(typeof e=="function")try{let t=e(...r);return qt(t)&&Promise.resolve(t).then(void 0,dr),t}catch(t){dr(t);return}}n(j,"callHost");var cr=false;function X(e,r){return r!==void 0?(j(r,e),"onStartInApp"):B(e)==="presented"?"presenter":ke(e)?"experience":(cr||(cr=true,console.warn("[everfur] A vet visit had nowhere to open: mount <EverfurTelevetHost /> in your EverfurProvider, or pass prefer: 'redirect'.")),null)}n(X,"openVetVisitInApp");var me=Object.freeze({status:"idle",error:null,errorReason:null});function Ht(e,r,t){let{usState:o,chat:i,scope:a}=t,u=r&&(o!==null||i),l=`${o??""}|${i?"chat":""}`,[s,d]=useState(null);if(useEffect(()=>{if(!u)return;let E=true,c=e.current;return d(null),n(async()=>{try{if(i&&!(c.chatEntryOpen&&await c.chatEntryOpen()))return !1;if(o===null)return !0;if(!c.checkAvailability)return !1;let m=await c.checkAvailability(o);return m.ok&&m.value.available}catch{return false}},"ask")().then(m=>{E&&d({key:l,open:m});}),()=>{E=false;}},[u,l,o,i,a,e]),!u)return null;let y=s!==null&&s.key===l;return {open:y&&s.open,pending:!y}}n(Ht,"usePreflight");var Yt=Object.freeze({status:"opening",error:null,errorReason:null});function yr(e,r={}){let{runtime:t,userRef:o,scopeEpoch:i}=Q(),a=ur("televet"),u=a.enabled&&o!==null,l=r.usState??null,s=r.entry==="chat",d=r.petRef??null,y=r.prefer==="redirect",E=useMemo(()=>{if(r.controller)return r.controller;let{services:v}=t.registry;return or({auth:v.authFor(o),telemetry:v.telemetry,...v.errorPolicy?{errorPolicy:v.errorPolicy}:{}})},[t,o,i,r.controller]),c=useRef(E);c.current=E;let f=useMemo(()=>({runtime:t,userRef:o,scopeEpoch:i}),[t,o,i]),m=Ht(c,u,{usState:l,chat:s,scope:f}),T=u&&(m===null||m.open)&&(!s||d!==null),p=r.returnTo??null,[k,w]=useState(me),h=useRef(null),V=useRef({runtime:t,userRef:o,scopeEpoch:i});V.current={runtime:t,userRef:o,scopeEpoch:i};let S=useRef(E);S.current=E;let C=useRef(T);C.current=T;let P=useCallback((v,b)=>{if(h.current)return h.current;let _=n((x,D)=>(w({status:x==="cancelled"?"idle":"error",error:D,errorReason:x==="cancelled"?null:x}),Object.freeze({opened:false,reason:x,error:D})),"fail");if(!C.current)return Promise.resolve(_("unavailable",null));let A=e.prepare();if(!A.ok)return Promise.resolve(_(A.reason,null));let te=V.current,_e=S.current;w(Yt);let ne=(async()=>{let x,D={...p!==null?{returnTo:p}:{},...s?{entry:"chat"}:{},...b!==null?{visitRef:b.visitRef}:{},...b!==null&&b.intent!==null&&b.intent!==void 0?{intent:b.intent}:{}},Re=Object.keys(D).length===0?void 0:D,Te=v===void 0?d:v;try{x=await(Re===void 0?_e.createHandoff(Te):_e.createHandoff(Te,Re));}catch{return e.abandon(A.value),_("unknown",null)}let oe=V.current;if(oe.runtime!==te.runtime||oe.userRef!==te.userRef||oe.scopeEpoch!==te.scopeEpoch)return e.abandon(A.value),_("cancelled",null);if(!x.ok)return e.abandon(A.value),_($(x.error),x.error);let Ce=await e.finish(A.value,x.value);return Ce!==null?_(Ce,null):(w(me),Object.freeze(x.value.flowId===void 0?{opened:true}:{opened:true,flowId:x.value.flowId}))})().finally(()=>{h.current===ne&&(h.current=null);});return h.current=ne,ne},[e,d,p,s]),g=useCallback((v,b)=>{if(!C.current)return w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}));let _=v===void 0?d:v,A={..._!==null?{petRef:_}:{},...l!==null?{usState:l}:{},...b!==null?{visitRef:b.visitRef,intent:b.intent}:{}};return X(A)===null?(w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}))):(w(me),Promise.resolve(Object.freeze({opened:true})))},[d,l]),z=useCallback(v=>y?P(v,null):g(v,null),[y,P,g]),O=useCallback((v,b)=>y?P(void 0,{visitRef:v,intent:b??null}):g(void 0,{visitRef:v,intent:b??null}),[y,P,g]);return {available:T,isPending:a.isPending||(m?.pending??false),status:k.status,error:k.error,errorReason:k.errorReason,open:z,openVisit:O}}n(yr,"useVetVisitWith");var Kt=n(e=>Linking.openURL(e),"defaultOpenUrl");function ve(e={}){let{openUrl:r,...t}=e,o=useMemo(()=>{let i=r??Kt;return {prepare:n(()=>({ok:true,value:null}),"prepare"),async finish(a,u){try{return await i(u.url),null}catch{return "openFailed"}},abandon:n(()=>{},"abandon")}},[r]);return yr(o,t)}n(ve,"useVetVisit");function ge(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let r of Object.keys(e))ge(e[r]);}return e}n(ge,"deepFreeze");var $t=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),vr={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},br={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},mr={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},Qt={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},Xt={regular:"400",medium:"500",bold:"700"},Zt={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},Jt=0,J="System",ee="monospace",en=["content","heading","control","compact","badge"];function rn(e){let r={};for(let t of en)r[t]=e;return r}n(rn,"authoredTierSizes");function Er(){return {family:J,mono:ee,fontUrl:null,families:{regular:J,medium:J,bold:J,mono:ee,monoMedium:ee,monoBold:ee},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:mr,tierSizes:rn(mr),lineHeight:Qt,weight:Xt,letterSpacing:Zt,scale:1,maxScale:Jt,scaleCaps:$t}}n(Er,"baseType");var gr={},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 Ee(e){return `cubic-bezier(${e.join(", ")})`}n(Ee,"cssCubicBezier");var hr={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:Ee(be.standard),emphasized:Ee(be.emphasized),exit:Ee(be.exit)},reducedMotion:false},tn={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)"},_r=ge({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:tn,space:vr,radius:br,type:Er(),motion:hr,slots:gr}),nn={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)"};ge({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:nn,space:vr,radius:br,type:Er(),motion:hr,slots:gr});var Rr=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),Tr=globalThis,he=Tr[Rr]??(Tr[Rr]=createContext(_r));he.displayName??="EverfurThemeContext";function U(){return useContext(he)}n(U,"useEverfurTheme");function dn(e,r){let t=e.scaleCaps[r];return t>0?t:void 0}n(dn,"tierMultiplier");function xr({tier:e="content",...r}){let{type:t}=U(),o=dn(t,e);return createElement(Text,o===void 0?r:{maxFontSizeMultiplier:o,...r})}n(xr,"Text");forwardRef(n(function(r,t){return createElement(TextInput,{...r,...t===null?{}:{ref:t}})},"TextInput"));function wr(e,r){if(e===void 0)return {};let t={};return e.backgroundColor!==void 0&&(t.backgroundColor=e.backgroundColor),e.borderColor!==void 0&&(t.borderColor=e.borderColor,t.borderWidth=r??1),e.borderRadius!==void 0&&(t.borderRadius=e.borderRadius),t}n(wr,"slotBox");function Sr(e){return e?.textColor===void 0?{}:{color:e.textColor}}n(Sr,"slotText");var cn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function Fr(e,r){let t=e.type,o=t.families[r];return r==="mono"||t.namedFaces[r]?{fontFamily:o}:{fontFamily:o,fontWeight:t.weight[cn[r]]}}n(Fr,"face");var kr=Object.freeze({visitButton:"Talk to a vet"});var Or=44,vn=.6;function bn(e){let{petRef:r,label:t,openUrl:o,onOpened:i,onError:a,style:u,labelStyle:l,controller:s,returnTo:d,usState:y,entry:E,visitRef:c,intent:f,onStartInApp:m,prefer:T}=e,p=T==="redirect",k=ve({...d!==void 0?{returnTo:d}:{},...y!==void 0?{usState:y}:{},...E!==void 0?{entry:E}:{},...r!==void 0?{petRef:r}:{},...o!==void 0?{openUrl:o}:{},...s!==void 0?{controller:s}:{},prefer:p?"redirect":"in-app"}),w=U(),h=useMemo(()=>En(w),[w]),V=useRef(false);if(!k.available)return jsxs(Fragment,{children:[null,jsx(H,{})]});let S=k.status==="opening",C=t??kr.visitButton;return jsxs(Fragment,{children:[jsx(Pressable,{onPress:n(()=>{if(!(S||V.current)){if(!p){let g={...r!==void 0?{petRef:r}:{},...y!==void 0?{usState:y}:{},...c!=null?{visitRef:c,intent:f??null}:{}};X(g,m)===null&&j(a,"unavailable",null);return}V.current=true,(c==null?k.open():k.openVisit(c,f??null)).then(g=>{g.opened?j(i,g.flowId??null):g.reason!=="cancelled"&&j(a,g.reason,g.error);}).finally(()=>{V.current=false;});}},"onPress"),accessibilityRole:"button",accessibilityLabel:C,accessibilityState:{busy:S,disabled:S},style:[h.button,S?h.busy:null,u],children:jsx(xr,{style:[h.label,l],children:C})}),jsx(H,{})]})}n(bn,"VetVisitButton");function En(e){let{color:r,space:t,radius:o,type:i,slots:a}=e;return StyleSheet.create({button:{minHeight:Or,minWidth:Or,alignItems:"center",justifyContent:"center",paddingHorizontal:t.xl,paddingVertical:t.sm,borderRadius:o.pill,backgroundColor:r.primary,...wr(a.vetVisitButton)},busy:{opacity:vn},label:{...Fr(e,"medium"),color:r.onPrimary,fontSize:i.size.body,lineHeight:i.size.body*i.lineHeight.snug,...Sr(a.vetVisitButton)}})}n(En,"makeStyles");export{H as EverfurTelevetHost,G as VET_VISIT_INTENTS,bn as VetVisitButton,jr as hasEverfurTelevetFlow,K as isVetVisitIntent,Ft as parseVetVisitReturn,Dr as presentEverfurTelevetFlow,zr as registerEverfurTelevetFlow,ve as useVetVisit,$ as vetVisitErrorReasonOf};
|
|
1
|
+
import {createContext,forwardRef,useMemo,createElement,useRef,useState,useEffect,useSyncExternalStore,useContext,useCallback}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Linking,TextInput,Pressable,StyleSheet,Text}from'react-native';var Pt=Object.defineProperty;var n=(e,t)=>Pt(e,"name",{value:t,configurable:true});var we=Symbol.for("@everfur/sdk/televet");function F(){let e=globalThis,t=e[we];if(t!==void 0)return t;let r={presenter:null,snapshot:Object.freeze({request:null,serial:0,activeHost:null}),hosts:[],nextHost:1,listeners:new Set,dailyRegistered:false};return e[we]=r,r}n(F,"televetGlobal");function q(e){let t=F();t.snapshot=Object.freeze({...t.snapshot,...e});for(let r of [...t.listeners])try{r();}catch{}}n(q,"publish");function Se(e){F().presenter=e;}n(Se,"setTelevetPresenter");function Fe(){return F().presenter!==null}n(Fe,"hasTelevetPresenter");function B(e){let t=F().presenter;if(t===null)return "absent";try{return t(e)===!1?"declined":"presented"}catch(r){return console.warn("[everfur] Your registerEverfurTelevetFlow presenter threw; the in-app visit opened instead.",r),"threw"}}n(B,"callTelevetPresenter");function ke(e){let t=F();return t.listeners.add(e),()=>{t.listeners.delete(e);}}n(ke,"subscribeTelevetExperience");function ie(){return F().snapshot}n(ie,"televetExperienceSnapshot");function At(){return F().hosts.length>0}n(At,"hasTelevetHost");function Oe(e){if(!At())return false;let t=Object.freeze({...e});return q({request:t,serial:F().snapshot.serial+1}),true}n(Oe,"presentTelevetExperience");function ae(){F().snapshot.request!==null&&q({request:null});}n(ae,"dismissTelevetExperience");function Ve(){let e=F(),t=e.nextHost;return e.nextHost+=1,e.hosts=[...e.hosts,t],q({activeHost:e.hosts[0]??null}),t}n(Ve,"claimTelevetHost");function Ie(e){let t=F();t.hosts=t.hosts.filter(o=>o!==e);let r=t.hosts[0]??null;q(r===null?{activeHost:r,request:null}:{activeHost:r});}n(Ie,"releaseTelevetHost");function zt(e){Se(e);}n(zt,"registerEverfurTelevetFlow");function jt(){return Fe()}n(jt,"hasEverfurTelevetFlow");function Dt(e){return B(e)==="presented"}n(Dt,"presentEverfurTelevetFlow");function ze(e){let t=null;return ()=>{if(t!==null)return t;let r=e();return t=r,r.then(void 0,()=>{t===r&&(t=null);}),r}}n(ze,"memoizeTelevetLoader");function je(e){let[t,r]=useState(null);useEffect(()=>{let d=Ve();return r(d),()=>{Ie(d);}},[]);let o=useSyncExternalStore(ke,ie,ie),a=t!==null&&o.activeHost===t?o.request:null,[u,l]=useState(null),s=a!==null&&u===null;return useEffect(()=>{if(!s)return;let d=true;return e().then(y=>{d&&l(()=>y);},y=>{d&&(console.warn("[everfur] The in-app vet visit could not load its screens.",y),ae());}),()=>{d=false;}},[s,e]),a===null||u===null?null:{module:u,request:a,serial:o.serial,dismiss:ae}}n(je,"useTelevetExperienceHost");var Mt=ze(()=>import('@everfur/sdk/televet/booking'));function H(){let e=je(Mt);if(e===null)return null;let{EverfurTelevetModal:t}=e.module;return jsx(t,{request:e.request,onClose:e.dismiss},e.serial)}n(H,"EverfurTelevetHost");var se=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(se.map(e=>e.wireCode));var Ut=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"}),Ne=Object.freeze(se.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ut[e.wireCode]}))),qt=new Map(Ne.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),Bt=Object.freeze(["http_envelope",...[...new Set(Ne.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function Y(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...Bt]){let i=qt.get(o+r);if(i)return i}}n(Y,"contractErrorFor");function Ht(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ht,"contractDocUrl");function Me(e){return null}n(Me,"publishedDocUrl");var Yt=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 Yt[e]}n(Le,"categoryFor");function Ue(e){let t=Y(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"}}n(Ue,"fromWire");var Wt=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function le(e){return Wt.has(e)}n(le,"isAutoRetryable");var Gt=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function qe(e){return le(e)||Gt.has(e)}n(qe,"isRetryableCode");var Kt=500,ue=8e3,Be=4;function He(e,t=Math.random){let r=Math.max(0,e),o=Math.min(Kt*2**r,ue);return Math.floor(t()*o)}n(He,"backoffDelayMs");var $t=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 de(e){return $t[e]}n(de,"userFacingError");function Ye(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(Ye,"defineHidden");var Qt=/^[a-z][a-z0-9_]{0,63}$/;function I(e,t){let r=Y(t?.wireCode,t?.wireEnvelope),o={code:e,category:Le(e),retryable:t?.retryable??qe(e),displayMessage:de(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Qt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&Ye(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&Ye(o,"raw",t.raw),Object.freeze(o)}n(I,"makeEverfurError");function ce(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(ce,"ok");function R(e){return Object.freeze({ok:false,error:e})}n(R,"err");var W=class W extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,W.prototype);}};n(W,"EverfurConfigError");var N=W;function We(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})}n(We,"errorFrame");function Zt(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}n(Zt,"authHeaders");function M(e,t){return {...e,headers:{...er(e.headers),...Zt(t)}}}n(M,"withAuthHeaders");function er(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(er,"stripAuthHeaders");async function Ge(e,t){if(t.mode==="anonymous")return t.transport.request(M(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return R(fe())}let o=await t.transport.request(M(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return R(fe())}let a=await t.transport.request(M(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?R(fe(a.error.httpStatus)):a}n(Ge,"authedSend");function fe(e){return I("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(fe,"authRejectedError");function Ke(e){return I("internalError",{retryable:true,wireMessage:tr(e)})}n(Ke,"networkError");function tr(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(tr,"describeCause");var rr=3e4,nr=ue*2,or="idempotency-key",ir=new Set(["POST","PUT","PATCH","DELETE"]),ar=Object.freeze({onEvent(){}}),sr=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function lr(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(lr,"seededIdempotencyKey");function Qe(e){let t=e.observer??ar,r=e.timers??sr,o=e.rng??Math.random,i=e.sleep??((c,f)=>Rr(c,r,f)),a=e.maxAttempts??Be,u=e.unaryTimeoutMs??rr,l=e.newIdempotencyKey??dr(),s=n(c=>{try{t.onEvent(c);}catch{}},"emit");async function d(c,f,m){let T=m?.maxAttempts,p=Math.max(1,T??a),k=m?.idempotent??ir.has(f.method),w=m?.idempotencyKey===void 0?null:lr(m.idempotencyKey),h=k?w??l():null,V=ur(f,h),S=0;for(;;){let x=n(_=>Object.freeze({call:c,method:f.method,path:f.path,attempt:S,...h?{idempotencyKey:h}:{},..._}),"stamp");s(x({phase:"attempt"}));let P=hr(u,r),g=_r(P.signal,f.signal),z;try{z=await Ge({...V,signal:g.signal},e.auth);}catch(_){z=R(Ke(_));}finally{g.dispose(),P.cancel();}if(z.ok)return s(x({phase:"settled",ok:true,reason:"ok"})),z;let O=z.error,v=fr(O,S,{maxAttempts:p,rng:o,now:r.now(),aborted:f.signal?.aborted===true,...T!==void 0?{perCallMaxAttempts:T}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),b={ok:false,code:O.code,reason:v.reason,...O.httpStatus!==void 0?{httpStatus:O.httpStatus}:{},...O.requestId!==void 0?{requestId:O.requestId}:{}};if(!v.retry)return s(x({phase:"settled",...b})),R(O);if(s(x({phase:"retry",...b,delayMs:v.delayMs})),await i(v.delayMs,f.signal),f.signal?.aborted===true)return s(x({phase:"settled",...b,reason:"aborted"})),R(O);S+=1;}}n(d,"send");async function y(c){return M(c,await gr(e.auth))}n(y,"authorize");async function*E(c,f,m){s(Object.freeze({call:c,phase:"stream.open",method:f.method,path:f.path,attempt:0}));try{yield*e.auth.transport.stream(f,m);}catch{yield We({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(E,"stream"),Object.freeze({send:d,authorize:y,stream:E})}n(Qe,"createRequestFunnel");function ur(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==or&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(ur,"assembleHeaders");function dr(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(dr,"defaultIdempotencyKeyFactory");var cr=10;function fr(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=pr(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!le(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{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 u=n(()=>{if(r.policy===void 0)return null;let d;try{d=r.policy.maxAttempts(e.code);}catch{return null}return typeof d!="number"||!Number.isFinite(d)?null:Math.max(1,Math.min(cr,Math.floor(d)))},"policyCeiling"),l=r.perCallMaxAttempts??u()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let s=yr(e,r.now);return s!==null?s>nr?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:s}:{retry:true,reason:i,delayMs:He(t,r.rng)}}n(fr,"decideRetry");function pr(e){let t=e.code==="unknown"?Ue(Er(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(pr,"throttleKind");function yr(e,t){let r=vr(e.raw);if(r!==null){let i=r-t;return i>0?i:0}let o=mr(e.raw);return o===null?null:Math.round(o*1e3)}n(yr,"retryOverrideMs");function mr(e){for(let t of pe(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}n(mr,"findRetryAfterSeconds");function vr(e){for(let t of pe(e)){let r=t.resets_at,o=br(r);if(o!==null)return o}return null}n(vr,"findResetsAt");function pe(e){if(!$e(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];$e(o)&&t.push(o);}return t}n(pe,"candidateScopes");function br(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}n(br,"parseInstantMs");function Er(e){for(let t of pe(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Er,"rawWireCode");function $e(e){return typeof e=="object"&&e!==null}n($e,"isRecord");async function gr(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}:{}}}n(gr,"resolveDeviceAuth");function hr(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(hr,"boundedSignal");function _r(e,t){let r=n(()=>{},"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 i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(_r,"mergeSignals");function Rr(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(Rr,"delayAbortable");var G=Object.freeze(["visit","join","summary","messages"]);function K(e){return typeof e=="string"&&G.includes(e)}n(K,"isVetVisitIntent");var Tr="/widget/v1/televet/handoffs",xr="/widget/v1/televet/availability",Cr="/widget/v1/televet/chat-entry",wr=/^[a-z0-9][a-z0-9_-]{0,39}$/,nt=/^[A-Za-z0-9_-]{22}$/,Xe="everfur_flow",Je=32,Ze=128,et=64;function $(e){let t=e.httpStatus;switch(e.code){case "sessionRequired":return "sessionRequired";case "authExpired":case "authRejected":return "authRejected";case "sdkUpdateRequired":return "sdkUpdateRequired";case "validationFailed":return "invalidRequest";case "rateLimited":case "quotaExceeded":return "rateLimited";}return t===void 0?e.code==="internalError"?"network":"unknown":t===429?"rateLimited":t===404?"unavailable":t===403?"accessDenied":t===401?"authRejected":t===400||t===422?"invalidRequest":t>=500?"serverError":"unknown"}n($,"vetVisitErrorReasonOf");function tt(e){return R(I("validationFailed",{retryable:false,wireMessage:e}))}n(tt,"invalid");function ye(e){return R(I("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}n(ye,"unusable");function Sr(e,t){let r={};e!==void 0&&(r.pet_ref=e);let o=t?.returnTo;if(o!=null){if(typeof o!="string"||!wr.test(o))return {ok:false,message:"returnTo must be a registered return destination key"};r.return_to=o;}let i=t?.entry;if(i!=null){if(i!=="chat"||e===void 0)return {ok:false,message:"entry 'chat' needs the pet the chat is about"};r.entry=i;}let a=t?.visitRef,u=t?.intent,l=a!=null;if(l){let s=typeof a=="string"?a.trim():"";if(s.length<1||[...s].length>et)return {ok:false,message:`visitRef must be 1..${et} characters`};r.visit_ref=s;}if(u!=null){if(!l)return {ok:false,message:"intent needs the visitRef it opens"};if(!K(u))return {ok:false,message:`intent must be one of ${G.join(", ")}`};r.intent=u;}return {ok:true,body:r}}n(Sr,"handoffBody");function Fr(e){if(typeof e!="object"||e===null)return null;let{visit_ref:t,intent:r}=e;return typeof t!="string"||t.length===0||!K(r)?null:Object.freeze({visitRef:t,intent:r})}n(Fr,"parseVisitEcho");function ot(e){let t=e.funnel??Qe({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=e.telemetry,o=n(i=>(rt(r,"televet.visit.handoff_failed",{reason:$(i)}),R(i)),"failed");return {async createHandoff(i,a){let u;if(i!=null){let p=typeof i=="string"?[...i].length:0;if(p<1||p>Ze)return o(I("validationFailed",{retryable:false,wireMessage:`pet_ref must be 1..${Ze} characters`}));u=i;}let l=Sr(u,a);if(!l.ok){let p=tt(l.message);return p.ok?p:o(p.error)}let s=l.body,d=await t.send("televet.visit.handoff",{method:"POST",path:Tr,body:s},{idempotent:false,maxAttempts:1});if(!d.ok)return o(d.error);let y=Or(d.value),E=s.return_to!==void 0,c=E?d.value?.flow_id:void 0;if(E&&(typeof c!="string"||!nt.test(c))){let p=ye("the handoff response carried no usable return flow id");return p.ok?p:o(p.error)}let f=s.visit_ref!==void 0,m=f?Fr(d.value?.visit):null;if(f&&m===null){let p=ye("the handoff response did not confirm the visit it opens");return p.ok?p:o(p.error)}let T=y===null?null:Object.freeze({...y,...E?{flowId:c}:{},...m!==null?{visit:m}:{}});return T===null?o(I("internalError",{retryable:false,httpStatus:502,wireMessage:"the handoff response carried no usable visit url"})):(rt(r,"televet.visit.handoff_created",{pet_scoped:s.pet_ref!==void 0}),ce(T))},async checkAvailability(i){if(typeof i!="string"||i.length>Je)return tt(`state must be at most ${Je} characters`);let a=await t.send("televet.visit.availability",{method:"POST",path:xr,body:{state:i}},{idempotent:false,maxAttempts:1});if(!a.ok)return R(a.error);let u=a.value?.available;return typeof u!="boolean"?ye("the availability response carried no usable answer"):ce(Object.freeze({available:u}))},async chatEntryOpen(){try{let i=await t.send("televet.visit.chat_entry",{method:"GET",path:Cr},{maxAttempts:1});return i.ok&&i.value?.open===!0}catch{return false}}}}n(ot,"createVetVisitController");function kr(e){if(typeof e!="string")return null;let t=e.indexOf("#"),r=t<0?e:e.slice(0,t),o=r.indexOf("?");if(o<0)return null;let i=r.slice(o+1).split("&").filter(a=>a.startsWith(`${Xe}=`)).map(a=>a.slice(Xe.length+1));return i.length!==1||!nt.test(i[0]??"")?null:Object.freeze({flowId:i[0]})}n(kr,"parseVetVisitReturn");function Or(e){if(typeof e!="object"||e===null)return null;let{url:t,expires_at:r}=e;return typeof t!="string"||typeof r!="string"||r.length===0||!Ar(t)?null:Object.freeze({url:t,expiresAt:r})}n(Or,"parseHandoff");var Vr=new Set(["localhost","127.0.0.1","[::1]"]),Ir=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/,Pr=/[\s\u0000-\u001f\u007f]/;function Ar(e){if(Pr.test(e))return false;let t=Ir.exec(e);if(t===null)return false;let r=(t[1]??"").toLowerCase(),o=t[2]??"";if(o.length===0||o.includes("@"))return false;let i=o.replace(/:\d+$/,"").toLowerCase(),a=r==="https",u=r==="http"&&Vr.has(i);if(!a&&!u)return false;let l=e.indexOf("#");if(l<0)return false;let s=e.slice(l);return s.startsWith("#h=")&&s.length>3}n(Ar,"isOpenableVisitUrl");function rt(e,t,r){if(e)try{e.track(t,r);}catch{}}n(rt,"safeTrack");var it=Symbol.for("@everfur/sdk#EverfurContext@v1"),at=globalThis,st=at[it]??(at[it]=createContext(null));st.displayName??="EverfurContext";function Q(){let e=useContext(st);if(e===null)throw new N("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var Dr=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 Nr(e){return Dr[e]}n(Nr,"requires");function lt(e,t,r){let o=Nr(e),i=new Map;for(let l of t)i.set(l.resource,l);if(r?.isPending===true&&o.some(l=>!i.has(l)))return me({name:e,enabled:false,isPending:true,limits:{}});let a=Mr(o,i);return o.filter(l=>i.get(l)?.granted!==true).length===0?me({name:e,enabled:true,isPending:false,limits:a}):me({name:e,enabled:false,isPending:false,limits:a,disabled:Lr(o,i)})}n(lt,"decideCapability");function Mr(e,t){let r={};for(let o of e){let i=t.get(o)?.limits;if(i)for(let[a,u]of Object.entries(i)){let l=r[a];r[a]=l===void 0?u:Math.min(l,u);}}return r}n(Mr,"mergeLimits");function Lr(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:de("accessDenied"),level:"user_entitlement",recoverable:false})}n(Lr,"disabledFor");function me(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)}n(me,"freezeDecision");function ut(e){let{runtime:t}=Q(),r=t.entitlements,o=useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return useMemo(()=>lt(e,o.decisions,{isPending:o.isPending}),[e,o])}n(ut,"useCapability");function dt(e){let t=globalThis.console;try{t?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}n(dt,"reportHostFailure");function Br(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}n(Br,"isThenable");function j(e,...t){if(typeof e=="function")try{let r=e(...t);return Br(r)&&Promise.resolve(r).then(void 0,dt),r}catch(r){dt(r);return}}n(j,"callHost");var ct=false;function X(e,t){return t!==void 0?(j(t,e),"onStartInApp"):B(e)==="presented"?"presenter":Oe(e)?"experience":(ct||(ct=true,console.warn("[everfur] A vet visit had nowhere to open: mount <EverfurTelevetHost /> in your EverfurProvider, or pass prefer: 'redirect'.")),null)}n(X,"openVetVisitInApp");var ve=Object.freeze({status:"idle",error:null,errorReason:null});function Yr(e,t,r){let{usState:o,chat:i,scope:a}=r,u=t&&(o!==null||i),l=`${o??""}|${i?"chat":""}`,[s,d]=useState(null);if(useEffect(()=>{if(!u)return;let E=true,c=e.current;return d(null),n(async()=>{try{if(i&&!(c.chatEntryOpen&&await c.chatEntryOpen()))return !1;if(o===null)return !0;if(!c.checkAvailability)return !1;let m=await c.checkAvailability(o);return m.ok&&m.value.available}catch{return false}},"ask")().then(m=>{E&&d({key:l,open:m});}),()=>{E=false;}},[u,l,o,i,a,e]),!u)return null;let y=s!==null&&s.key===l;return {open:y&&s.open,pending:!y}}n(Yr,"usePreflight");var Wr=Object.freeze({status:"opening",error:null,errorReason:null});function yt(e,t={}){let{runtime:r,userRef:o,scopeEpoch:i}=Q(),a=ut("televet"),u=a.enabled&&o!==null,l=t.usState??null,s=t.entry==="chat",d=t.petRef??null,y=t.prefer==="redirect",E=useMemo(()=>{if(t.controller)return t.controller;let{services:v}=r.registry;return ot({auth:v.authFor(o),telemetry:v.telemetry,...v.errorPolicy?{errorPolicy:v.errorPolicy}:{}})},[r,o,i,t.controller]),c=useRef(E);c.current=E;let f=useMemo(()=>({runtime:r,userRef:o,scopeEpoch:i}),[r,o,i]),m=Yr(c,u,{usState:l,chat:s,scope:f}),T=u&&(m===null||m.open)&&(!s||d!==null),p=t.returnTo??null,[k,w]=useState(ve),h=useRef(null),V=useRef({runtime:r,userRef:o,scopeEpoch:i});V.current={runtime:r,userRef:o,scopeEpoch:i};let S=useRef(E);S.current=E;let x=useRef(T);x.current=T;let P=useCallback((v,b)=>{if(h.current)return h.current;let _=n((C,D)=>(w({status:C==="cancelled"?"idle":"error",error:D,errorReason:C==="cancelled"?null:C}),Object.freeze({opened:false,reason:C,error:D})),"fail");if(!x.current)return Promise.resolve(_("unavailable",null));let A=e.prepare();if(!A.ok)return Promise.resolve(_(A.reason,null));let re=V.current,Re=S.current;w(Wr);let ne=(async()=>{let C,D={...p!==null?{returnTo:p}:{},...s?{entry:"chat"}:{},...b!==null?{visitRef:b.visitRef}:{},...b!==null&&b.intent!==null&&b.intent!==void 0?{intent:b.intent}:{}},Te=Object.keys(D).length===0?void 0:D,xe=v===void 0?d:v;try{C=await(Te===void 0?Re.createHandoff(xe):Re.createHandoff(xe,Te));}catch{return e.abandon(A.value),_("unknown",null)}let oe=V.current;if(oe.runtime!==re.runtime||oe.userRef!==re.userRef||oe.scopeEpoch!==re.scopeEpoch)return e.abandon(A.value),_("cancelled",null);if(!C.ok)return e.abandon(A.value),_($(C.error),C.error);let Ce=await e.finish(A.value,C.value);return Ce!==null?_(Ce,null):(w(ve),Object.freeze(C.value.flowId===void 0?{opened:true}:{opened:true,flowId:C.value.flowId}))})().finally(()=>{h.current===ne&&(h.current=null);});return h.current=ne,ne},[e,d,p,s]),g=useCallback((v,b)=>{if(!x.current)return w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}));let _=v===void 0?d:v,A={..._!==null?{petRef:_}:{},...l!==null?{usState:l}:{},...b!==null?{visitRef:b.visitRef,intent:b.intent}:{}};return X(A)===null?(w({status:"error",error:null,errorReason:"unavailable"}),Promise.resolve(Object.freeze({opened:false,reason:"unavailable",error:null}))):(w(ve),Promise.resolve(Object.freeze({opened:true})))},[d,l]),z=useCallback(v=>y?P(v,null):g(v,null),[y,P,g]),O=useCallback((v,b)=>y?P(void 0,{visitRef:v,intent:b??null}):g(void 0,{visitRef:v,intent:b??null}),[y,P,g]);return {available:T,isPending:a.isPending||(m?.pending??false),status:k.status,error:k.error,errorReason:k.errorReason,open:z,openVisit:O}}n(yt,"useVetVisitWith");var $r=n(e=>Linking.openURL(e),"defaultOpenUrl");function be(e={}){let{openUrl:t,...r}=e,o=useMemo(()=>{let i=t??$r;return {prepare:n(()=>({ok:true,value:null}),"prepare"),async finish(a,u){try{return await i(u.url),null}catch{return "openFailed"}},abandon:n(()=>{},"abandon")}},[t]);return yt(o,r)}n(be,"useVetVisit");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}n(he,"deepFreeze");var Qr=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),vt={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},bt={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},mt={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},Xr={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},Jr={regular:"400",medium:"500",bold:"700"},Zr={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},en=0,Z="System",ee="monospace",tn=["content","heading","control","compact","badge"];function rn(e){let t={};for(let r of tn)t[r]=e;return t}n(rn,"authoredTierSizes");function Et(){return {family:Z,mono:ee,fontUrl:null,families:{regular:Z,medium:Z,bold:Z,mono:ee,monoMedium:ee,monoBold:ee},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:mt,tierSizes:rn(mt),lineHeight:Xr,weight:Jr,letterSpacing:Zr,scale:1,maxScale:en,scaleCaps:Qr}}n(Et,"baseType");var gt={},Ee=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(", ")})`}n(ge,"cssCubicBezier");var ht={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:ge(Ee.standard),emphasized:ge(Ee.emphasized),exit:ge(Ee.exit)},reducedMotion:false},nn={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)"},_t=he({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:nn,space:vt,radius:bt,type:Et(),motion:ht,slots:gt}),on={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:on,space:vt,radius:bt,type:Et(),motion:ht,slots:gt});var Rt=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),Tt=globalThis,_e=Tt[Rt]??(Tt[Rt]=createContext(_t));_e.displayName??="EverfurThemeContext";function U(){return useContext(_e)}n(U,"useEverfurTheme");function cn(e,t){let r=e.scaleCaps[t];return r>0?r:void 0}n(cn,"tierMultiplier");function Ct({tier:e="content",...t}){let{type:r}=U(),o=cn(r,e);return createElement(Text,o===void 0?t:{maxFontSizeMultiplier:o,...t})}n(Ct,"Text");forwardRef(n(function(t,r){return createElement(TextInput,{...t,...r===null?{}:{ref:r}})},"TextInput"));function wt(e,t){if(e===void 0)return {};let r={};return e.backgroundColor!==void 0&&(r.backgroundColor=e.backgroundColor),e.borderColor!==void 0&&(r.borderColor=e.borderColor,r.borderWidth=t??1),e.borderRadius!==void 0&&(r.borderRadius=e.borderRadius),r}n(wt,"slotBox");function St(e){return e?.textColor===void 0?{}:{color:e.textColor}}n(St,"slotText");var fn=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function Ft(e,t){let r=e.type,o=r.families[t];return t==="mono"||r.namedFaces[t]?{fontFamily:o}:{fontFamily:o,fontWeight:r.weight[fn[t]]}}n(Ft,"face");var kt=Object.freeze({visitButton:"Talk to a vet"});var Ot=44,bn=.6;function En(e){let{petRef:t,label:r,openUrl:o,onOpened:i,onError:a,style:u,labelStyle:l,controller:s,returnTo:d,usState:y,entry:E,visitRef:c,intent:f,onStartInApp:m,prefer:T}=e,p=T==="redirect",k=be({...d!==void 0?{returnTo:d}:{},...y!==void 0?{usState:y}:{},...E!==void 0?{entry:E}:{},...t!==void 0?{petRef:t}:{},...o!==void 0?{openUrl:o}:{},...s!==void 0?{controller:s}:{},prefer:p?"redirect":"in-app"}),w=U(),h=useMemo(()=>gn(w),[w]),V=useRef(false);if(!k.available)return jsxs(Fragment,{children:[null,jsx(H,{})]});let S=k.status==="opening",x=r??kt.visitButton;return jsxs(Fragment,{children:[jsx(Pressable,{onPress:n(()=>{if(!(S||V.current)){if(!p){let g={...t!==void 0?{petRef:t}:{},...y!==void 0?{usState:y}:{},...c!=null?{visitRef:c,intent:f??null}:{}};X(g,m)===null&&j(a,"unavailable",null);return}V.current=true,(c==null?k.open():k.openVisit(c,f??null)).then(g=>{g.opened?j(i,g.flowId??null):g.reason!=="cancelled"&&j(a,g.reason,g.error);}).finally(()=>{V.current=false;});}},"onPress"),accessibilityRole:"button",accessibilityLabel:x,accessibilityState:{busy:S,disabled:S},style:[h.button,S?h.busy:null,u],children:jsx(Ct,{style:[h.label,l],children:x})}),jsx(H,{})]})}n(En,"VetVisitButton");function gn(e){let{color:t,space:r,radius:o,type:i,slots:a}=e;return StyleSheet.create({button:{minHeight:Ot,minWidth:Ot,alignItems:"center",justifyContent:"center",paddingHorizontal:r.xl,paddingVertical:r.sm,borderRadius:o.pill,backgroundColor:t.primary,...wt(a.vetVisitButton)},busy:{opacity:bn},label:{...Ft(e,"medium"),color:t.onPrimary,fontSize:i.size.body,lineHeight:i.size.body*i.lineHeight.snug,...St(a.vetVisitButton)}})}n(gn,"makeStyles");export{H as EverfurTelevetHost,G as VET_VISIT_INTENTS,En as VetVisitButton,jt as hasEverfurTelevetFlow,K as isVetVisitIntent,kr as parseVetVisitReturn,Dt as presentEverfurTelevetFlow,zt as registerEverfurTelevetFlow,be as useVetVisit,$ as vetVisitErrorReasonOf};
|