@everfur/sdk 0.14.0 → 0.15.1
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 +118 -0
- package/LICENSE.md +1 -0
- package/README.md +12 -5
- package/SDK-LICENSE.txt +130 -0
- package/THIRD_PARTY_NOTICES +9 -0
- package/dist/CameraPort.d-Cv31Pz7g.d.cts +1 -0
- package/dist/CameraPort.d-Cv31Pz7g.d.ts +1 -0
- package/dist/{Chat.d-aycmX1CA.d.cts → Chat.d-BO5iJsR2.d.cts} +12 -3
- package/dist/{Chat.d-puminpyi.d.ts → Chat.d-BlsnQwCQ.d.ts} +12 -3
- package/dist/{DepthViews.d-DIvxzLDf.d.ts → DepthViews.d--1daZblh.d.cts} +2 -1
- package/dist/{DepthViews.d-wLNkzk9f.d.cts → DepthViews.d-BuEWI6Ln.d.ts} +2 -1
- package/dist/{DepthViews.d-Dy0Zl-s-.d.ts → DepthViews.d-CKTnEeUo.d.ts} +2 -1
- package/dist/{DepthViews.d-BdvFZgPs.d.cts → DepthViews.d-PuBGdAYk.d.cts} +2 -1
- package/dist/ErrorPolicyPort.d-68yrE3BE.d.ts +1 -0
- package/dist/ErrorPolicyPort.d-DirW9hgO.d.cts +1 -0
- package/dist/EverfurError.d-8NHtlgzA.d.cts +1 -0
- package/dist/EverfurError.d-8NHtlgzA.d.ts +1 -0
- package/dist/EverfurResult.d-BFH-3s6E.d.cts +1 -0
- package/dist/EverfurResult.d-D_-254ZY.d.ts +1 -0
- package/dist/IntakeMedia.d-4a89XrP7.d.ts +1 -0
- package/dist/IntakeMedia.d-DGxrhgIW.d.ts +1 -0
- package/dist/IntakeMedia.d-DUPR4lVM.d.cts +1 -0
- package/dist/IntakeMedia.d-JJCUvQu7.d.cts +1 -0
- package/dist/LICENSE.md +1 -0
- package/dist/LifecyclePort.d-Cr1p33a7.d.cts +1 -0
- package/dist/LifecyclePort.d-Cr1p33a7.d.ts +1 -0
- package/dist/PhotoController.d-BzCJOE7e.d.cts +1 -0
- package/dist/PhotoController.d-D0XiUUOl.d.ts +1 -0
- package/dist/{RecordsPage.d-9Ank15PT.d.ts → RecordsPage.d-CBB8sfoY.d.ts} +2 -1
- package/dist/{RecordsPage.d-DMKU0IKc.d.cts → RecordsPage.d-Dq5gpQG0.d.cts} +2 -1
- package/dist/SDK-LICENSE.txt +130 -0
- package/dist/THIRD_PARTY_NOTICES +9 -0
- package/dist/TelemetryPort.d-BDNr00hu.d.cts +1 -0
- package/dist/TelemetryPort.d-BDNr00hu.d.ts +1 -0
- package/dist/animations/index.cjs +2 -1
- package/dist/animations/index.d.cts +24 -21
- package/dist/animations/index.d.ts +24 -21
- package/dist/animations/index.js +2 -1
- package/dist/{attachments.d--sIsfk6e.d.ts → attachments.d-C2nkIyDB.d.ts} +3 -2
- package/dist/{attachments.d-rp3xs-Q3.d.ts → attachments.d-DFP9yvz9.d.ts} +7 -6
- package/dist/{attachments.d-DNUCiyy5.d.cts → attachments.d-DRHsJkni.d.cts} +7 -6
- package/dist/{attachments.d-ZEpTUeWN.d.cts → attachments.d-DRUC35Ti.d.cts} +3 -2
- package/dist/{bookingCopy.d-D0uIIFAJ.d.ts → bookingCopy.d-CFL-1Be2.d.ts} +3 -2
- package/dist/{bookingCopy.d-DUrmVcLs.d.cts → bookingCopy.d-bF_QknDC.d.cts} +3 -2
- package/dist/{branding.d-CTXTUg_8.d.cts → branding.d-Bbc6p1XY.d.cts} +2 -1
- package/dist/{branding.d-DxJSoFce.d.ts → branding.d-y6c0UwhE.d.ts} +2 -1
- package/dist/cacheEpoch.d-DknKn3S0.d.cts +1 -0
- package/dist/cacheEpoch.d-DknKn3S0.d.ts +1 -0
- package/dist/callCopy.d-Bw6oZT54.d.cts +1 -0
- package/dist/callCopy.d-Bw6oZT54.d.ts +1 -0
- package/dist/callRoom.d-B1DoYdJe.d.cts +1 -0
- package/dist/callRoom.d-Dqm1rUqT.d.ts +1 -0
- package/dist/{casesRepository.d-DCnix2pT.d.cts → casesRepository.d-BMOnT1fg.d.cts} +2 -1
- package/dist/{casesRepository.d-DbirgbyH.d.ts → casesRepository.d-C__BnffJ.d.ts} +2 -1
- package/dist/chat/index.cjs +16 -15
- package/dist/chat/index.d.cts +10 -9
- package/dist/chat/index.d.ts +10 -9
- package/dist/chat/index.js +16 -15
- package/dist/client/index.cjs +4 -3
- package/dist/client/index.d.cts +11 -10
- package/dist/client/index.d.ts +11 -10
- package/dist/client/index.js +4 -3
- package/dist/{clinicBatch.d-Ccmrngcu.d.cts → clinicBatch.d-C5deJ4xY.d.cts} +3 -2
- package/dist/{clinicBatch.d-D9Ci7IpP.d.ts → clinicBatch.d-D68RYvc3.d.ts} +3 -2
- package/dist/clinicModels.d-BXgKZqDb.d.cts +1 -0
- package/dist/clinicModels.d-CaS64-P-.d.ts +1 -0
- package/dist/clinicRequestProps.d-1dCtouGA.d.cts +1 -0
- package/dist/clinicRequestProps.d-CjsMg_OD.d.ts +1 -0
- package/dist/{config.d-DJ4mvf_w.d.cts → config.d-BQgrIDdu.d.cts} +2 -1
- package/dist/{config.d-MX7IKP2f.d.ts → config.d-XSMThgVj.d.ts} +2 -1
- package/dist/consent/index.cjs +1 -0
- package/dist/consent/index.d.cts +6 -5
- package/dist/consent/index.d.ts +6 -5
- package/dist/consent/index.js +1 -0
- package/dist/{context.d-C6MJsMpN.d.cts → context.d-Ba8YyJpk.d.cts} +8 -7
- package/dist/{context.d-BdnBe8Oe.d.ts → context.d-xoh5vmxS.d.ts} +8 -7
- package/dist/{copy.d-C_u7shha.d.cts → copy.d-Cq-s-UUv.d.cts} +3 -2
- package/dist/{copy.d-BIfQOoDB.d.ts → copy.d-HV9fU5kh.d.ts} +3 -2
- package/dist/core/index.cjs +3 -2
- package/dist/core/index.d.cts +17 -16
- package/dist/core/index.d.ts +17 -16
- package/dist/core/index.js +3 -2
- package/dist/{depth.d-COFxYWLU.d.ts → depth.d-D7kKiYl7.d.ts} +3 -2
- package/dist/{depth.d-D2e5WZuE.d.cts → depth.d-DYnkz8Re.d.cts} +3 -2
- package/dist/{entitlementRepository.d-BP15dFbe.d.cts → entitlementRepository.d-B_kEPLhz.d.cts} +4 -3
- package/dist/{entitlementRepository.d-DLuxnGi5.d.ts → entitlementRepository.d-DmnUZLl_.d.ts} +4 -3
- package/dist/features.d-DrQxTw3-.d.cts +1 -0
- package/dist/features.d-DrQxTw3-.d.ts +1 -0
- package/dist/{focus.d-jQWp0hdK.d.cts → focus.d-BHm_QtQ9.d.cts} +21 -4
- package/dist/{focus.d-C0Tr0oVJ.d.ts → focus.d-CjL6Cj0m.d.ts} +21 -4
- package/dist/health-plan/index.cjs +48 -42
- package/dist/health-plan/index.d.cts +9 -8
- package/dist/health-plan/index.d.ts +9 -8
- package/dist/health-plan/index.js +49 -43
- package/dist/{idempotency.d-DXb1BN2A.d.ts → idempotency.d-BSRK8od4.d.cts} +9 -1
- package/dist/{idempotency.d-HF6fyRt2.d.cts → idempotency.d-CFc4CCc9.d.ts} +9 -1
- package/dist/{identity.d-BePPZ7Uv.d.ts → identity.d-Be2Es9Td.d.ts} +2 -1
- package/dist/{identity.d-CJfnWOdH.d.cts → identity.d-HbwYQ4-z.d.cts} +2 -1
- package/dist/ids.d-B2GAAifq.d.cts +1 -0
- package/dist/ids.d-B2GAAifq.d.ts +1 -0
- package/dist/index.cjs +19 -18
- package/dist/index.d.cts +17 -16
- package/dist/index.d.ts +17 -16
- package/dist/index.js +19 -18
- package/dist/{introEvents.d-DHlMvmC7.d.ts → introEvents.d-DflJ6J9H.d.ts} +2 -1
- package/dist/{introEvents.d-BkGDT_kG.d.cts → introEvents.d-Dr34KIaD.d.cts} +2 -1
- package/dist/introEvents.d-dS3fJCH1.d.cts +1 -0
- package/dist/introEvents.d-dS3fJCH1.d.ts +1 -0
- package/dist/models.d-BSqvbTE1.d.cts +1 -0
- package/dist/models.d-DOwnr8fi.d.ts +1 -0
- package/dist/notifications/index.cjs +1 -0
- package/dist/notifications/index.d.cts +5 -4
- package/dist/notifications/index.d.ts +5 -4
- package/dist/notifications/index.js +1 -0
- package/dist/{optInView.d-s-w4aGN3.d.ts → optInView.d-3mbj1mR6.d.ts} +15 -2
- package/dist/{optInView.d-0iI5JoAf.d.cts → optInView.d-D23o1gtT.d.cts} +15 -2
- package/dist/optionalModule.d-DbJmsq5f.d.cts +1 -0
- package/dist/optionalModule.d-DbJmsq5f.d.ts +1 -0
- package/dist/{parse.d-EmsgOUMQ.d.cts → parse.d-4lUXdmvY.d.cts} +2 -1
- package/dist/{parse.d-COt1qVA6.d.ts → parse.d-BERabxHw.d.ts} +2 -1
- package/dist/{pets.d-nNAVnw7f.d.cts → pets.d-CHU0UbXt.d.cts} +2 -1
- package/dist/{pets.d-BFT_b53y.d.ts → pets.d-D_ayuqjp.d.ts} +2 -1
- package/dist/{petsRepository.d-B2TpRE7r.d.cts → petsRepository.d-Bwfe8yuR.d.cts} +2 -1
- package/dist/{petsRepository.d-RGwSZcYl.d.ts → petsRepository.d-DUaAWoTv.d.ts} +2 -1
- package/dist/photo/index.cjs +1 -0
- package/dist/photo/index.d.cts +1 -0
- package/dist/photo/index.d.ts +1 -0
- package/dist/photo/index.js +1 -0
- package/dist/{planSignals.d-DSnxKoWe.d.ts → planSignals.d-CON9gTvJ.d.ts} +3 -2
- package/dist/{planSignals.d-BDbp2e-k.d.cts → planSignals.d-Dha2CMDF.d.cts} +3 -2
- package/dist/ports.d-BX4f4UsB.d.cts +1 -0
- package/dist/ports.d-BX4f4UsB.d.ts +1 -0
- package/dist/{ports.d-DBA_gsq5.d.cts → ports.d-ClbPRUtx.d.cts} +5 -4
- package/dist/{ports.d-D2n4HRUy.d.ts → ports.d-DzEJMVRs.d.ts} +5 -4
- package/dist/presentation.d-vy8kTGfR.d.cts +1 -0
- package/dist/presentation.d-vy8kTGfR.d.ts +1 -0
- package/dist/profile.d-CSs1wlXT.d.cts +1 -0
- package/dist/profile.d-CSs1wlXT.d.ts +1 -0
- package/dist/projection.d-CeIUsbSk.d.cts +1 -0
- package/dist/projection.d-CeIUsbSk.d.ts +1 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.cts +1 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.ts +1 -0
- package/dist/records/depth/index.cjs +1 -0
- package/dist/records/depth/index.d.cts +10 -9
- package/dist/records/depth/index.d.ts +10 -9
- package/dist/records/depth/index.js +1 -0
- package/dist/records/index.cjs +63 -52
- package/dist/records/index.d.cts +22 -15
- package/dist/records/index.d.ts +22 -15
- package/dist/records/index.js +64 -53
- package/dist/recordsAsk.d-C5CGSi3j.d.cts +1 -0
- package/dist/recordsAsk.d-C5CGSi3j.d.ts +1 -0
- package/dist/{requestFunnel.d-RZex94XX.d.cts → requestFunnel.d-JoqddYSx.d.cts} +3 -2
- package/dist/{requestFunnel.d-D9edIEjZ.d.ts → requestFunnel.d-YabU6G-Z.d.ts} +3 -2
- package/dist/resolve.d-CoQWUy1Y.d.cts +1 -0
- package/dist/resolve.d-CoQWUy1Y.d.ts +1 -0
- package/dist/{runtimeTypes.d-LkwZaF7z.d.cts → runtimeTypes.d-Cv38YuzP.d.cts} +6 -5
- package/dist/{runtimeTypes.d-BYq38b17.d.ts → runtimeTypes.d-DQTBJAbk.d.ts} +6 -5
- package/dist/{screenProps.d-BVzRzowC.d.ts → screenProps.d-BuJLzFkN.d.ts} +2 -1
- package/dist/{screenProps.d-CQ0qZJkr.d.cts → screenProps.d-C-AuHoyF.d.cts} +2 -1
- package/dist/server/events/index.cjs +2 -1
- package/dist/server/events/index.d.cts +3 -2
- package/dist/server/events/index.d.ts +3 -2
- package/dist/server/events/index.js +2 -1
- package/dist/server/index.cjs +2 -1
- package/dist/server/index.d.cts +4 -3
- package/dist/server/index.d.ts +4 -3
- package/dist/server/index.js +2 -1
- package/dist/sheetCopy.d-CAhLOxjc.d.cts +1 -0
- package/dist/sheetCopy.d-CAhLOxjc.d.ts +1 -0
- package/dist/sheetSeam.d-B09jf4YC.d.ts +1 -0
- package/dist/sheetSeam.d-BBuEIVsa.d.cts +1 -0
- package/dist/shop/index.cjs +6 -4
- package/dist/shop/index.d.cts +16 -3
- package/dist/shop/index.d.ts +16 -3
- package/dist/shop/index.js +6 -4
- package/dist/species.d-BXAIMh7I.d.cts +1 -0
- package/dist/species.d-BXAIMh7I.d.ts +1 -0
- package/dist/tabs/index.cjs +4 -3
- package/dist/tabs/index.d.cts +10 -8
- package/dist/tabs/index.d.ts +10 -8
- package/dist/tabs/index.js +4 -3
- package/dist/tabsModel.d-BfIQg6yS.d.cts +1 -0
- package/dist/tabsModel.d-BfIQg6yS.d.ts +1 -0
- package/dist/televet/booking/index.cjs +1 -0
- package/dist/televet/booking/index.d.cts +7 -6
- package/dist/televet/booking/index.d.ts +7 -6
- package/dist/televet/booking/index.js +1 -0
- package/dist/televet/call/index.cjs +1 -0
- package/dist/televet/call/index.d.cts +1 -0
- package/dist/televet/call/index.d.ts +1 -0
- package/dist/televet/call/index.js +1 -0
- package/dist/televet/index.cjs +1 -0
- package/dist/televet/index.d.cts +1 -0
- package/dist/televet/index.d.ts +1 -0
- package/dist/televet/index.js +1 -0
- package/dist/televetGlobal.d-CC-DrqkQ.d.ts +1 -0
- package/dist/televetGlobal.d-CKwDCbmN.d.cts +1 -0
- package/dist/testing/index.cjs +2 -1
- package/dist/testing/index.d.cts +2 -1
- package/dist/testing/index.d.ts +2 -1
- package/dist/testing/index.js +2 -1
- package/dist/testing/rn/index.cjs +2 -2
- package/dist/testing/rn/index.d.cts +13 -11
- package/dist/testing/rn/index.d.ts +13 -11
- package/dist/testing/rn/index.js +2 -2
- package/dist/testing/web/index.cjs +1 -0
- package/dist/testing/web/index.d.cts +10 -9
- package/dist/testing/web/index.d.ts +10 -9
- package/dist/testing/web/index.js +1 -0
- package/dist/texting/index.cjs +2 -1
- package/dist/texting/index.d.cts +9 -6
- package/dist/texting/index.d.ts +9 -6
- package/dist/texting/index.js +2 -1
- package/dist/{threadOptions.d-B6GA09aM.d.ts → threadOptions.d-8x_1evAr.d.ts} +3 -2
- package/dist/{threadOptions.d-9r4Csa7k.d.cts → threadOptions.d-DBrmOwmb.d.cts} +3 -2
- package/dist/{timelineRows.d-BvM2A7_G.d.cts → timelineRows.d-B6lLC8Ud.d.cts} +2 -1
- package/dist/{timelineRows.d-Bes8ip2v.d.ts → timelineRows.d-Brlkti-G.d.ts} +2 -1
- package/dist/{tokens.d-DarDaV39.d.cts → tokens.d-BUVqme2D.d.cts} +2 -1
- package/dist/{tokens.d-DarDaV39.d.ts → tokens.d-BUVqme2D.d.ts} +2 -1
- package/dist/{typeStyle.d-Co5KF0up.d.ts → typeStyle.d-B3Kdtjie.d.ts} +3 -2
- package/dist/{typeStyle.d-xIZj02Ru.d.cts → typeStyle.d-DmlwyJq-.d.cts} +3 -2
- package/dist/uploadTransport.d-CWL7CdWP.d.cts +1 -0
- package/dist/uploadTransport.d-EGoUl7gX.d.ts +1 -0
- package/dist/useIntroSeen.d-CTWFUthO.d.cts +1 -0
- package/dist/useIntroSeen.d-CTWFUthO.d.ts +1 -0
- package/dist/{usePresentation.d-DYTF_ZGf.d.cts → usePresentation.d-BcdCIuEU.d.cts} +2 -1
- package/dist/{usePresentation.d-BGz32Vlm.d.ts → usePresentation.d-Bne14SlX.d.ts} +2 -1
- package/dist/useRecords.d-BYNX01El.d.cts +1 -0
- package/dist/useRecords.d-DWk61a4c.d.ts +1 -0
- package/dist/{useRecordsDepth.d-BQRL0Hez.d.ts → useRecordsDepth.d-Cd6J03o5.d.ts} +2 -1
- package/dist/{useRecordsDepth.d--LLA_4ga.d.cts → useRecordsDepth.d-DAa169VY.d.cts} +2 -1
- package/dist/useVetVisit.d-BtdwhmgD.d.cts +1 -0
- package/dist/useVetVisit.d-DoYQimyt.d.ts +1 -0
- package/dist/video/index.cjs +1 -0
- package/dist/video/index.d.cts +1 -0
- package/dist/video/index.d.ts +1 -0
- package/dist/video/index.js +1 -0
- package/dist/{view.d-0yBjLTV3.d.cts → view.d-3d5_O7Xk.d.cts} +4 -3
- package/dist/{view.d-DqbCADFa.d.ts → view.d-DkGM8GNA.d.ts} +4 -3
- package/dist/visitIntent.d-D7_yVp1I.d.cts +1 -0
- package/dist/visitIntent.d-D7_yVp1I.d.ts +1 -0
- package/dist/web/consent/index.cjs +1 -0
- package/dist/web/consent/index.d.cts +6 -5
- package/dist/web/consent/index.d.ts +6 -5
- package/dist/web/consent/index.js +1 -0
- package/dist/web/health-plan/index.cjs +37 -31
- package/dist/web/health-plan/index.d.cts +11 -10
- package/dist/web/health-plan/index.d.ts +11 -10
- package/dist/web/health-plan/index.js +37 -31
- package/dist/web/index.cjs +24 -21
- package/dist/web/index.d.cts +39 -29
- package/dist/web/index.d.ts +39 -29
- package/dist/web/index.js +24 -21
- package/dist/web/intro/index.cjs +1 -0
- package/dist/web/intro/index.d.cts +7 -6
- package/dist/web/intro/index.d.ts +7 -6
- package/dist/web/intro/index.js +1 -0
- package/dist/web/notifications/index.cjs +1 -0
- package/dist/web/notifications/index.d.cts +4 -3
- package/dist/web/notifications/index.d.ts +4 -3
- package/dist/web/notifications/index.js +1 -0
- package/dist/web/records/depth/index.cjs +1 -0
- package/dist/web/records/depth/index.d.cts +10 -9
- package/dist/web/records/depth/index.d.ts +10 -9
- package/dist/web/records/depth/index.js +1 -0
- package/dist/web/records/index.cjs +3 -2
- package/dist/web/records/index.d.cts +12 -11
- package/dist/web/records/index.d.ts +12 -11
- package/dist/web/records/index.js +3 -2
- package/dist/web/records/upload/index.cjs +1 -0
- package/dist/web/records/upload/index.d.cts +1 -0
- package/dist/web/records/upload/index.d.ts +1 -0
- package/dist/web/records/upload/index.js +1 -0
- package/dist/web/records-sheet/index.cjs +88 -62
- package/dist/web/records-sheet/index.d.cts +10 -2
- package/dist/web/records-sheet/index.d.ts +10 -2
- package/dist/web/records-sheet/index.js +88 -62
- package/dist/web/shop/index.cjs +8 -6
- package/dist/web/shop/index.d.cts +4 -3
- package/dist/web/shop/index.d.ts +4 -3
- package/dist/web/shop/index.js +8 -6
- package/dist/web/televet/booking/index.cjs +1 -0
- package/dist/web/televet/booking/index.d.cts +8 -7
- package/dist/web/televet/booking/index.d.ts +8 -7
- package/dist/web/televet/booking/index.js +1 -0
- package/dist/web/televet/call/index.cjs +1 -0
- package/dist/web/televet/call/index.d.cts +1 -0
- package/dist/web/televet/call/index.d.ts +1 -0
- package/dist/web/televet/call/index.js +1 -0
- package/dist/web/televet/index.cjs +1 -0
- package/dist/web/televet/index.d.cts +1 -0
- package/dist/web/televet/index.d.ts +1 -0
- package/dist/web/televet/index.js +1 -0
- package/dist/web/texting/index.cjs +2 -1
- package/dist/web/texting/index.d.cts +9 -6
- package/dist/web/texting/index.d.ts +9 -6
- package/dist/web/texting/index.js +2 -1
- package/package.json +11 -5
- package/LICENSE +0 -21
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Everfur SDK License
|
|
2
|
+
|
|
3
|
+
Version 2.1. Effective October 1, 2026. Published at https://docs.everfur.com/license.
|
|
4
|
+
|
|
5
|
+
This Everfur SDK License (this "License") is a binding agreement between Strand Health Inc., a Delaware corporation doing business as Everfur, with its principal place of business at 1002 Dean Street, Suite 101, Brooklyn, NY 11238 ("Everfur"), and the entity or individual that accepts this License or that downloads, installs, copies, accesses or uses any Everfur Materials ("Licensee").
|
|
6
|
+
|
|
7
|
+
THE EVERFUR MATERIALS ARE PROPRIETARY AND CONFIDENTIAL. THEY ARE NOT OPEN SOURCE SOFTWARE AND ARE NOT LICENSED UNDER THE MIT LICENSE OR ANY OTHER OPEN SOURCE LICENSE. EVERFUR GRANTS NO RIGHTS TO ANYONE WHO HAS NOT ACCEPTED THIS LICENSE IN THE EVERFUR PARTNER CONSOLE, AND ANY OTHER DOWNLOAD, INSTALLATION, COPY OR USE IS UNAUTHORIZED. BY CLICKING TO ACCEPT THIS LICENSE, OR BY DOWNLOADING, INSTALLING, COPYING, ACCESSING OR USING ANY EVERFUR MATERIALS, LICENSEE AGREES TO BE BOUND BY THIS LICENSE. AN INDIVIDUAL WHO ACCEPTS ON BEHALF OF AN ENTITY REPRESENTS THAT THEY HAVE AUTHORITY TO BIND THAT ENTITY, AND THE ENTITY IS THE LICENSEE.
|
|
8
|
+
|
|
9
|
+
- "Authorized Personnel" means Licensee's employees and individual contractors who need access to the Everfur Materials to integrate the Licensee Application with the Services, who are bound by written confidentiality and use restrictions at least as protective of Everfur as this License, and whose names Licensee gives Everfur on request.
|
|
10
|
+
|
|
11
|
+
- "Credentials" means publishable keys, secret keys, docs keys, session tokens, webhook signing secrets and any other access credentials Everfur issues.
|
|
12
|
+
|
|
13
|
+
- "Documentation" means the guides, references, sample code, interface descriptions and contract files Everfur makes available, including at docs.everfur.com and through the Everfur MCP server and command line tool.
|
|
14
|
+
|
|
15
|
+
- "End User" means an individual who uses the Licensee Application.
|
|
16
|
+
|
|
17
|
+
- "Everfur Materials" means the SDK, the Documentation, the Services, the Credentials, the Output, any Integration Code and any other code, data, models, configuration or information Everfur makes available, together with all copies, modifications and derivative works of any of them, by whomever made.
|
|
18
|
+
|
|
19
|
+
- "Licensee Application" means the mobile application, website or storefront that Licensee owns and operates and that is identified in the Partner Agreement or, for evaluation, in the partner console.
|
|
20
|
+
|
|
21
|
+
- "Output" means any response, content, record, data, analysis or other result the Services return.
|
|
22
|
+
|
|
23
|
+
- "Partner Agreement" means a written agreement signed by Everfur and Licensee under which Everfur provides the Services for Production Use.
|
|
24
|
+
|
|
25
|
+
- "Production Use" means any use with real End Users, real animal health information or a live tenant.
|
|
26
|
+
|
|
27
|
+
- "Sandbox" means a test tenant that Everfur designates as a sandbox.
|
|
28
|
+
|
|
29
|
+
- "SDK" means the @everfur/sdk, @everfur/mcp and @everfur/cli packages and all other software Everfur makes available, in any form and any version released under this License, together with all updates.
|
|
30
|
+
|
|
31
|
+
- "Services" means Everfur's hosted application programming interfaces, models, data and services that the SDK accesses.
|
|
32
|
+
|
|
33
|
+
Everfur grants rights only to a Licensee that has accepted this License in the Everfur partner console. Anyone else receives no right or license of any kind.
|
|
34
|
+
|
|
35
|
+
Evaluation license. If Licensee has accepted this License and holds Credentials for a Sandbox, Everfur grants Licensee a limited, revocable, nonexclusive, nontransferable and nonsublicensable license, for ninety (90) days after acceptance or until Everfur ends it, whichever comes first, for its Authorized Personnel to install and use the SDK and the Documentation internally, solely to evaluate and build an integration of the Licensee Application with the Services in a Sandbox. The evaluation license excludes Production Use, and Everfur may end it at any time for any reason.
|
|
36
|
+
|
|
37
|
+
Production license. If Licensee has also signed a Partner Agreement that is in effect, Everfur grants Licensee, for the term of that Partner Agreement, a limited, revocable, nonexclusive, nontransferable and nonsublicensable license to: (a) let its Authorized Personnel install and use the SDK internally, solely to integrate the Licensee Application with the Services; (b) reproduce the SDK in object code form, unmodified, solely as compiled or bundled into the Licensee Application, and distribute it to End Users solely as an inseparable part of the Licensee Application; and (c) display Output within the Licensee Application to the End User who requested it, who may copy, save and share that Output for personal, noncommercial purposes.
|
|
38
|
+
|
|
39
|
+
End user terms. Licensee will distribute the Licensee Application only under end user terms that prohibit reverse engineering, extraction and redistribution of the application to the extent permitted by law, and that disclaim all warranties and liability on Everfur's behalf.
|
|
40
|
+
|
|
41
|
+
Versions. Each version of the SDK is governed by the version of this License that Licensee accepted for it. Licensee will use only versions of the SDK released under this License, and this License supersedes, as between Everfur and Licensee, any license under which Licensee received any earlier version.
|
|
42
|
+
|
|
43
|
+
Services. No version of the SDK, under any license, grants any right to access the Services. Access to the Services requires valid Credentials and is governed by this License and the Partner Agreement.
|
|
44
|
+
|
|
45
|
+
Partner Agreement. If this License conflicts with a Partner Agreement, the Partner Agreement controls only where it refers expressly to this License and to the provision it changes.
|
|
46
|
+
|
|
47
|
+
Except as expressly permitted in the section titled Who may use the Everfur Materials, Licensee will not, and will not permit, assist or enable any person to:
|
|
48
|
+
|
|
49
|
+
1. copy, modify, adapt, translate, port or create derivative works of any Everfur Materials;
|
|
50
|
+
|
|
51
|
+
2. decompile, disassemble, decrypt, deobfuscate, unminify, reverse engineer or otherwise attempt to derive the source code, algorithms, models, prompts, weights, data structures, schemas, ontologies, scoring logic or underlying ideas of any Everfur Materials, except to the limited extent applicable law expressly permits that activity notwithstanding this restriction, and then only after giving Everfur thirty (30) days' written notice and an opportunity to provide the information on reasonable terms;
|
|
52
|
+
|
|
53
|
+
3. intercept, record, replay, inspect or analyze network traffic between the SDK and the Services, except as Authorized Personnel need to debug Licensee's own integration in a Sandbox;
|
|
54
|
+
|
|
55
|
+
4. access the Services other than through the SDK and the interfaces described in the Documentation, or call any undocumented interface;
|
|
56
|
+
|
|
57
|
+
5. sell, rent, lease, lend, sublicense, publish, disclose, host, mirror or distribute any Everfur Materials on a standalone basis or in source code form, or place them in any public or private repository, package registry, archive, forum or AI system that anyone other than Authorized Personnel can access;
|
|
58
|
+
|
|
59
|
+
6. use any Everfur Materials, or any information obtained from them, to design, build, train, improve, benchmark or market any product or service that competes with or substitutes for the Services, or assist any third party in doing so;
|
|
60
|
+
|
|
61
|
+
7. use any Everfur Materials or Output to train, fine tune, distill, evaluate, ground or improve any artificial intelligence or machine learning model, dataset or retrieval index other than Everfur's;
|
|
62
|
+
|
|
63
|
+
8. scrape, harvest, crawl, cache in bulk or systematically extract Output or other data from the Services, build any database from them, or retain Output except as a Partner Agreement permits;
|
|
64
|
+
|
|
65
|
+
9. use Output outside the Licensee Application or for anyone other than the End User who requested it, except as a Partner Agreement permits;
|
|
66
|
+
|
|
67
|
+
10. circumvent, disable or interfere with any Credential, entitlement check, rate limit, usage limit, attribution, security feature or other technological measure, or attempt to access any tenant, data or capability not provisioned for Licensee;
|
|
68
|
+
|
|
69
|
+
11. run any penetration test, vulnerability scan, load test or other security test against the Services without Everfur's prior written authorization, although Licensee may report suspected vulnerabilities to security@everfur.com;
|
|
70
|
+
|
|
71
|
+
12. publish or disclose the results of any benchmark, comparison, performance, security or functionality test of any Everfur Materials;
|
|
72
|
+
|
|
73
|
+
13. remove, alter, obscure or misrepresent any proprietary notice, license header, attribution, clinical disclaimer, urgency banner or source indication included in or displayed by the Everfur Materials, or represent Output as a diagnosis or as advice from Licensee's own veterinarians or staff;
|
|
74
|
+
|
|
75
|
+
14. disclose, share or embed any secret Credential in any client application, or use any Credential for any tenant, application or purpose other than the one for which Everfur issued it;
|
|
76
|
+
|
|
77
|
+
15. combine, link or distribute any Everfur Materials with software in a manner that would subject them to the terms of any open source or copyleft license;
|
|
78
|
+
|
|
79
|
+
16. attempt to reidentify any person or animal from deidentified data in any Everfur Materials;
|
|
80
|
+
|
|
81
|
+
17. use any Everfur trademark, name or logo except as Everfur permits in writing, or register or use any mark, domain or handle confusingly similar to one;
|
|
82
|
+
|
|
83
|
+
18. permit anyone other than Authorized Personnel to access nonpublic Everfur Materials; or
|
|
84
|
+
|
|
85
|
+
19. use any Everfur Materials in violation of law, including laws governing veterinary practice, telemedicine, privacy, data protection, electronic communications, consumer protection and export control.
|
|
86
|
+
|
|
87
|
+
AI coding assistants. Notwithstanding the Restrictions, Authorized Personnel may use AI coding assistants, including through the Everfur MCP server, solely to integrate the Licensee Application with the Services, provided Licensee turns on every available setting that prevents the assistant's provider from training on or retaining the Everfur Materials.
|
|
88
|
+
|
|
89
|
+
Licensee will keep secret Credentials only in server environments under its control, will protect all Credentials with at least the care it uses for its own most sensitive credentials and no less than reasonable care, will notify Everfur at security@everfur.com within twenty four (24) hours after learning of any unauthorized access to or use of any Credential, the Services or other Everfur Materials, or of any breach of the Restrictions by any person, and will cooperate with Everfur's investigation. Everfur may rotate, revoke or suspend any Credential at any time. Licensee acknowledges that the Credentials and entitlement checks are technological measures that effectively control access to the Everfur Materials.
|
|
90
|
+
|
|
91
|
+
The Everfur Materials are licensed, not sold. As between the parties, Everfur owns all right, title and interest, including all intellectual property rights, in and to the Everfur Materials, including Output except as a Partner Agreement expressly provides. The Everfur Materials contain trade secrets of Everfur. If Licensee or anyone acting for it creates any modification or derivative work of the Everfur Materials, whether or not permitted, Licensee assigns all rights in it to Everfur. All rights not expressly granted in this License are reserved, and no right or license is granted by implication, estoppel or otherwise.
|
|
92
|
+
|
|
93
|
+
If Everfur writes or provides code, configuration or integration plans for the Licensee Application ("Integration Code"), Everfur owns the Integration Code to the extent it embodies or is derived from the Everfur Materials and licenses it to Licensee under this License. Licensee owns the Licensee Application and its preexisting code, excluding the Everfur Materials.
|
|
94
|
+
|
|
95
|
+
The SDK in every form, the nonpublic portions of the Documentation, the Credentials and all nonpublic information about the Services, including their architecture, performance, models, roadmaps and pricing, are Everfur's confidential information. Distribution of the SDK in object code inside the Licensee Application does not make it public. Licensee will use Everfur's confidential information only to exercise its rights under this License, will disclose it only to Authorized Personnel and will protect it with at least reasonable care. Licensee may not use any of it on the basis that it was retained in the unaided memory of any person. If law requires disclosure, Licensee will give Everfur prompt notice and cooperate in seeking protection. These obligations last for five (5) years after this License ends and, for trade secrets, for as long as the information remains a trade secret.
|
|
96
|
+
|
|
97
|
+
Everfur may use any suggestion, comment or other feedback from Licensee or its personnel for any purpose without restriction or compensation, and Licensee assigns to Everfur all rights in it.
|
|
98
|
+
|
|
99
|
+
The SDK may include components licensed by third parties under open source licenses, identified in a notices file distributed with the SDK. Those licenses govern only those components. Nothing in this License restricts rights Licensee has under those licenses in those components, and nothing in those licenses grants any right in any other part of the Everfur Materials.
|
|
100
|
+
|
|
101
|
+
Everfur may update, modify, deprecate or discontinue any part of the Everfur Materials, may change any capability of the Services for Licensee through server side configuration, and may require Licensee to install an update within the period stated in the Partner Agreement or, if none is stated, within thirty (30) days. Everfur may suspend any access immediately if Everfur believes Licensee has breached this License or that suspension is needed to protect the Services, End Users or third parties. Everfur has no support obligation except under a Partner Agreement.
|
|
102
|
+
|
|
103
|
+
The SDK and the Services collect technical data about their use, such as version, platform, configuration, errors, performance, integration identifiers and request metadata. Everfur may use that data to provide, secure, support, improve and enforce the Everfur Materials, subject to the Partner Agreement's terms on End User data.
|
|
104
|
+
|
|
105
|
+
On Everfur's written request, no more than once in any twelve month period unless Everfur reasonably suspects a breach, Licensee will within ten (10) days: (a) certify in writing, signed by an officer, that it complies with this License; (b) give Everfur a list of all Authorized Personnel who have accessed nonpublic Everfur Materials; and (c) give Everfur, or an independent auditor bound by confidentiality, reasonable access to the records, systems, code repositories and personnel needed to verify compliance with the Restrictions. If a verification reveals a breach, Licensee will reimburse Everfur's costs of the verification.
|
|
106
|
+
|
|
107
|
+
Any use of the Everfur Materials beyond the scope of this License is unlicensed. Without limiting Everfur's other remedies, Licensee will pay Everfur for any unlicensed use at Everfur's then current list price for the corresponding use or, if there is none, at the highest price Everfur charged any customer for comparable use in the prior twelve months, from the date the unlicensed use began.
|
|
108
|
+
|
|
109
|
+
This License begins when Licensee first accepts it or first downloads, installs, copies, accesses or uses any Everfur Materials, whichever is earlier. The evaluation license ends as stated above, and the production license ends when the Partner Agreement ends. This License terminates automatically, without notice, if Licensee breaches the Restrictions, Credentials and security or Confidentiality sections. Everfur may terminate this License (a) for any other breach that Licensee does not cure within ten (10) days after notice; (b) immediately on notice if Licensee or its parent undergoes a change of control involving a competitor of Everfur; or (c) immediately on notice if Licensee or any of its affiliates challenges the validity or ownership of any Everfur intellectual property.
|
|
110
|
+
|
|
111
|
+
When this License or any license under it ends, all affected rights end. Licensee will immediately stop using the affected Everfur Materials, remove the SDK from the Licensee Application in its next release and in any event within thirty (30) days, delete all copies of the Everfur Materials, Credentials and Output in its possession or control except as a Partner Agreement expressly permits, and certify that deletion in writing, signed by an officer, within ten (10) days after Everfur requests it. End Users may keep copies of the Licensee Application already installed on their devices, but the Services may stop responding to them. The Restrictions, Ownership and reservation of rights, Integration code, Confidentiality, Feedback, Verification and audit, Unlicensed use, Effect of termination, Equitable relief and enforcement, Disclaimer of warranties, Limitation of liability, Indemnification, Governing law and disputes, Notices and General sections survive.
|
|
112
|
+
|
|
113
|
+
Licensee agrees that any breach of the Restrictions, Credentials and security or Confidentiality sections will cause Everfur irreparable harm for which money damages are inadequate, and that Everfur is entitled to injunctive and other equitable relief to prevent or stop it, in any court of competent jurisdiction and without posting bond to the extent permitted by law, in addition to every other remedy. Licensee will reimburse Everfur's reasonable attorneys' fees and costs in any action or proceeding in which Everfur prevails in enforcing or defending this License.
|
|
114
|
+
|
|
115
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, AND EXCEPT AS EXPRESSLY STATED IN A PARTNER AGREEMENT, THE EVERFUR MATERIALS ARE PROVIDED "AS IS" AND "AS AVAILABLE", AND EVERFUR DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT. Output is not veterinary medical advice, diagnosis or treatment and is not a substitute for examination and care by a licensed veterinarian, except where a licensed veterinarian provides care through the Services under a Partner Agreement.
|
|
116
|
+
|
|
117
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, EVERFUR WILL NOT BE LIABLE UNDER THIS LICENSE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, OR FOR LOST PROFITS, REVENUE, DATA OR GOODWILL, AND EVERFUR'S TOTAL LIABILITY ARISING OUT OF OR RELATING TO THIS LICENSE WILL NOT EXCEED ONE HUNDRED U.S. DOLLARS (US$100). Everfur's liability for the Services is governed solely by the Partner Agreement. Nothing in this License or any Partner Agreement limits Licensee's liability for breach of the Restrictions, Credentials and security or Confidentiality sections, for infringement or misappropriation of Everfur's intellectual property, for fees under the Unlicensed use section, or under the Indemnification section.
|
|
118
|
+
|
|
119
|
+
Licensee will defend, indemnify and hold harmless Everfur and its officers, directors, employees and agents from and against all claims, losses, damages, liabilities, costs and expenses, including reasonable attorneys' fees, arising out of or relating to (a) the Licensee Application, excluding the unmodified Everfur Materials; (b) Licensee's presentation or use of Output; (c) any breach of this License by Licensee or its personnel; or (d) Licensee's violation of law.
|
|
120
|
+
|
|
121
|
+
Licensee will comply with all applicable export control and sanctions laws and will not export, reexport or provide access to any Everfur Materials to any prohibited country, entity or person.
|
|
122
|
+
|
|
123
|
+
The SDK is "commercial computer software" and the Documentation is "commercial computer software documentation" as those terms are used in 48 C.F.R. 12.212 and 48 C.F.R. 227.7202. U.S. government end users acquire only the rights set out in this License.
|
|
124
|
+
|
|
125
|
+
This License is governed by the laws of the State of New York, without regard to its conflict of laws rules, and the United Nations Convention on Contracts for the International Sale of Goods does not apply. The state and federal courts located in New York County, New York have exclusive jurisdiction over any claim Licensee brings arising out of or relating to this License, and Licensee consents to personal jurisdiction there. Everfur may bring any claim or seek equitable relief in any court of competent jurisdiction. EACH PARTY WAIVES TRIAL BY JURY. Licensee will bring claims only in its individual capacity and not as a plaintiff or class member in any class or representative proceeding. Any claim by Licensee must be brought within one (1) year after it arises.
|
|
126
|
+
|
|
127
|
+
Notices to Everfur must be sent by email to legal@everfur.com and by courier to Strand Health Inc. dba Everfur, 1002 Dean Street, Suite 101, Brooklyn, NY 11238, Attention: Legal. Suspected security vulnerabilities go to security@everfur.com. Everfur may give notice to Licensee through the partner console or the contact details Licensee provided there.
|
|
128
|
+
|
|
129
|
+
Licensee may not assign or transfer this License, by operation of law, change of control or otherwise, without Everfur's prior written consent, and any attempt to do so is void. Everfur may assign this License freely. If any provision is held unenforceable, it will be reformed and enforced to the maximum extent permissible and the rest of this License remains in effect; in particular, if applicable law limits any restriction on reverse engineering, every other restriction remains in full force. No waiver is effective unless in writing, and no failure or delay in enforcing any right is a waiver. Acceptance by clicking or other electronic means is binding. This License and the Partner Agreement are the entire agreement between the parties about the Everfur Materials. The parties are independent contractors, and headings do not affect interpretation.
|
|
130
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
THIRD-PARTY NOTICES — @everfur/sdk
|
|
2
|
+
|
|
3
|
+
Distribution: npm package.
|
|
4
|
+
Generated from the build output contributions by scripts/package-license.mjs.
|
|
5
|
+
The licenses below govern only their respective third-party components, not the Everfur Materials.
|
|
6
|
+
External dependencies and host-provided peers are not bundled here and retain their own notices.
|
|
7
|
+
|
|
8
|
+
No third-party package code is bundled in this distribution.
|
|
9
|
+
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
|
|
1
2
|
/**
|
|
2
3
|
* Analytics sink. `track` records an event; `trackExpectedFailure` records a handled, product-expected
|
|
3
4
|
* failure (a settled `EverfurError`, never a crash) so expected failures stay off the crash channel.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
|
|
1
2
|
/**
|
|
2
3
|
* Analytics sink. `track` records an event; `trackExpectedFailure` records a handled, product-expected
|
|
3
4
|
* failure (a settled `EverfurError`, never a crash) so expected failures stay off the crash channel.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
|
|
1
2
|
"use strict";var react=require("react"),reactNative=require("react-native"),jsxRuntime=require("react/jsx-runtime"),zod=require("zod");var freezeInPlace=Object.freeze;function deepFreeze(value){if(value!==null&&typeof value=="object"&&!Object.isFrozen(value)){freezeInPlace(value);for(let key of Object.keys(value))deepFreeze(value[key])}return value}var TEXT_SCALE_TIER_CAPS=/* @__PURE__ */Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),SPACE={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},RADIUS={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},TYPE_SIZE={nano:8,small:9,micro:10,tiny:11,caption:13,bodyTight:15,body:17,subtitle:20,heading:22,verdict:24},LINE_HEIGHT={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},WEIGHT={regular:"400",medium:"500",bold:"700"},LETTER_SPACING={eyebrow:1,monoWide:.9,headerBrand:-.42,tight:-.35},DEFAULT_MAX_FONT_SCALE=0,SYSTEM_FONT_FAMILY="System",SYSTEM_MONO_FAMILY="monospace",TIERS=["content","heading","control","compact","badge"];function authoredTierSizes(size){let out={};for(let tier of TIERS)out[tier]=size;return out}var NO_FONT_SOURCES=[];function baseType(){return{family:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,fontUrl:null,families:{regular:SYSTEM_FONT_FAMILY,medium:SYSTEM_FONT_FAMILY,bold:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,monoMedium:SYSTEM_MONO_FAMILY,monoBold:SYSTEM_MONO_FAMILY},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:TYPE_SIZE,tierSizes:authoredTierSizes(TYPE_SIZE),lineHeight:LINE_HEIGHT,weight:WEIGHT,letterSpacing:LETTER_SPACING,scale:1,maxScale:DEFAULT_MAX_FONT_SCALE,scaleCaps:TEXT_SCALE_TIER_CAPS,headingFamily:null,headingWeight:null,fontSources:NO_FONT_SOURCES}}var NO_SLOTS={},EASING_CURVES=/* @__PURE__ */Object.freeze({standard:/* @__PURE__ */Object.freeze([.2,0,0,1]),emphasized:/* @__PURE__ */Object.freeze([.2,.8,.2,1]),exit:/* @__PURE__ */Object.freeze([.4,0,1,1])});function cssCubicBezier(curve){return`cubic-bezier(${curve.join(", ")})`}var MOTION={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:cssCubicBezier(EASING_CURVES.standard),emphasized:cssCubicBezier(EASING_CURVES.emphasized),exit:cssCubicBezier(EASING_CURVES.exit)},reducedMotion:false},LIGHT_COLOR={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:"#FFFFFF",surfaceSubtle:"#F1F5F2",background:"#FFFFFF",borderRingCream:"#E4E4E4",chatGround:"#FFFFFF",composerFill:"#FFFFFF",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#000000",secondary:"#0E462E",muted:"#6B6B6B",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:"#C03410",onDanger:"#FFFFFF",errorRed:"#C03410",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(192,52,16,0.06)",badgeBgNeutral:"rgba(107,107,107,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#E9F1E9",scanButtonPink:"#FFC3BC",highlight:"#FFC3BC",onHighlight:"#000000",mark:"#07C168",controlEdge:"rgba(16,70,46,0.18)",structureEdge:"rgba(16,70,46,0.25)",primaryEdge:"#10462E",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)",info:"#10462E",badgeBgInfo:"rgba(16,70,46,0.10)",infoEdge:"rgba(16,70,46,0.25)"},EVERFUR_LIGHT=deepFreeze({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false,assistantAvatarUrl:null},color:LIGHT_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS}),DARK_COLOR={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:"#9A9A9A",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",onDanger:"#0E1F17",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#23272C",scanButtonPink:"#FFC3BC",highlight:"#605051",onHighlight:"#F5F3F0",mark:"#07C168",controlEdge:"rgba(107,211,154,0.22)",structureEdge:"rgba(107,211,154,0.28)",primaryEdge:"#6BD39A",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)",info:"#6BD39A",badgeBgInfo:"rgba(107,211,154,0.12)",infoEdge:"rgba(107,211,154,0.28)"};deepFreeze({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false,assistantAvatarUrl:null},color:DARK_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS});var EVERFUR_THEME_CONTEXT_SYMBOL=/* @__PURE__ */Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),globalThemeHost=globalThis,EverfurThemeContext=globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]??(globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]=react.createContext(EVERFUR_LIGHT));EverfurThemeContext.displayName??="EverfurThemeContext";function useEverfurTheme(){return react.useContext(EverfurThemeContext)}function tierMultiplier(type,tier){let cap=type.scaleCaps[tier];return cap>0?cap:void 0}function Text({tier:tier="content",...props}){let{type:type}=useEverfurTheme(),cap=tierMultiplier(type,tier);return react.createElement(reactNative.Text,cap===void 0?props:{maxFontSizeMultiplier:cap,...props})}react.forwardRef(function(props,ref){return react.createElement(reactNative.TextInput,{...props,...ref===null?{}:{ref:ref}})});function assertNever(x){throw new Error(`assertNever: unhandled discriminated-union member ${JSON.stringify(x)}`)}function errorFrame(fields){/* @__PURE__ */
|
|
2
3
|
return Object.freeze({kind:"error",terminal:true,code:fields.code,retryable:fields.retryable,wireMessage:fields.wireMessage,synthesized:fields.synthesized,lastEventId:fields.lastEventId,serverRequestId:null})}var FACE_WEIGHT=/* @__PURE__ */Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function face(theme,weight){let type=theme.type,fontFamily=type.families[weight];return weight==="mono"||type.namedFaces[weight]?{fontFamily:fontFamily}:{fontFamily:fontFamily,fontWeight:type.weight[FACE_WEIGHT[weight]]}}var HostRenderBoundary=class extends react.Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey}}static getDerivedStateFromError(){return{failed:true}}static getDerivedStateFromProps(props,state){return Object.is(props.resetKey,state.key)?null:{failed:false,key:props.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};function RenderHost({render:render}){return render()}function HostRender({render:render,fallback:fallback,resetKey:resetKey}){return react.createElement(HostRenderBoundary,{fallback:fallback,resetKey:resetKey,children:react.createElement(RenderHost,{render:render})})}var CONTRACT_RETRYABILITY=/* @__PURE__ */Object.freeze([
|
|
3
4
|
/* @__PURE__ */Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),
|
|
@@ -100,7 +101,7 @@ return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _Everf
|
|
|
100
101
|
return jsxRuntime.jsx(reactNative.View,{style:[styles.offstate,style],accessible:true,accessibilityState:{busy:true},accessibilityLabel:`Loading ${capability}`,children:/* @__PURE__ */jsxRuntime.jsx(reactNative.View,{style:styles.skeletonBar})})}function OffState({decision:decision,style:style}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles(theme),[theme]),message=decision.disabled?.reason??"";/* @__PURE__ */
|
|
101
102
|
return jsxRuntime.jsx(reactNative.View,{style:[styles.offstate,style],accessible:true,accessibilityRole:"text",accessibilityLabel:message,children:message.length>0?/* @__PURE__ */jsxRuntime.jsx(Text,{style:styles.offstateText,children:message}):null})}function makeStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme;return reactNative.StyleSheet.create({offstate:{minHeight:MIN_OFFSTATE_HEIGHT,justifyContent:"center",paddingHorizontal:space.lg,paddingVertical:space.md,backgroundColor:color.surfaceCream,borderRadius:radius.md,borderWidth:reactNative.StyleSheet.hairlineWidth,borderColor:color.brandBorder},offstateText:{...face(theme,"regular"),fontSize:type.size.body,lineHeight:Math.round(type.size.body*type.lineHeight.normal),color:color.text.muted},skeletonBar:{height:space.md,borderRadius:radius.xs,backgroundColor:color.brandSofter}})}function mintFailedError(cause,refusal){let message=cause instanceof Error?cause.message:typeof cause=="string"?cause:null;return makeEverfurError("authRejected",{retryable:false,...refusal?.wireCode?{wireCode:refusal.wireCode}:{},...refusal?.requestId?{requestId:refusal.requestId}:{},...message?{wireMessage:message}:{},...cause!=null?{raw:cause}:{}})}function newSessionId(){let bytes=new Uint8Array(16),cryptoObj=globalThis.crypto;if(typeof cryptoObj?.getRandomValues=="function")cryptoObj.getRandomValues(bytes);else for(let i=0;i<bytes.length;i+=1)bytes[i]=Math.floor(Math.random()*256);bytes[6]=bytes[6]&15|64,bytes[8]=bytes[8]&63|128;let hex=[];for(let i=0;i<bytes.length;i+=1)hex.push(bytes[i].toString(16).padStart(2,"0"));return hex.slice(0,4).join("")+"-"+hex.slice(4,6).join("")+"-"+hex.slice(6,8).join("")+"-"+hex.slice(8,10).join("")+"-"+hex.slice(10,16).join("")}function authHeaders(auth){let headers={};return auth.mode==="personalized"?headers.authorization=`Bearer ${auth.token}`:headers["x-everfur-partner-key"]=auth.publishableKey,auth.userRef&&(headers["x-everfur-user-ref"]=auth.userRef),auth.sessionId&&(headers["x-everfur-session-id"]=auth.sessionId),headers}function withAuthHeaders(req,auth){return{...req,headers:{...stripAuthHeaders(req.headers),...authHeaders(auth)}}}function stripAuthHeaders(headers){if(!headers)return{};let out={};for(let[key,value]of Object.entries(headers)){let lower=key.toLowerCase();lower==="authorization"||lower==="x-everfur-partner-key"||(out[key]=value)}return out}async function authedSend(req,ctx){if(ctx.mode==="anonymous")return ctx.transport.request(withAuthHeaders(req,{mode:"anonymous",publishableKey:ctx.publishableKey,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));let token;try{token=await ctx.identity.currentToken()}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause))}let first=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:token,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));if(first.ok||first.error.httpStatus!==401)return first;let refreshed;try{refreshed=await ctx.identity.currentToken({forceRefresh:!0})}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause,{wireCode:wireCodeOf(first.error.raw),requestId:first.error.requestId}))}let retry=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:refreshed,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));return!retry.ok&&retry.error.httpStatus===401?(ctx.identity.reportRejected?.(),err(refusedAfterRemintError(retry.error))):retry}function refusedAfterRemintError(refusal){let raw=refusal.raw,wireCode=wireCodeOf(raw);return makeEverfurError("authRejected",{retryable:false,...refusal.httpStatus!==void 0?{httpStatus:refusal.httpStatus}:{},...refusal.requestId?{requestId:refusal.requestId}:{},...wireCode?{wireCode:wireCode}:{},...refusal.reasonCode?{reasonCode:refusal.reasonCode}:{},...refusal.wireMessage?{wireMessage:refusal.wireMessage}:{},...raw!=null?{raw:raw}:{}})}function wireCodeOf(body){if(typeof body!="object"||body===null)return null;let b=body,code=(typeof b.error=="object"&&b.error!==null?b.error.code:void 0)??b.code;return typeof code=="string"&&code.length>0?code:null}function networkError(cause){return makeEverfurError("internalError",{retryable:true,wireMessage:describeCause(cause)})}function describeCause(cause){return cause instanceof Error?cause.message:typeof cause=="string"?cause:"network request failed"}var FUNNEL_UNARY_TIMEOUT_MS=3e4,RETRY_OVERRIDE_MAX_MS=BACKOFF_CAP_MS*2,IDEMPOTENCY_HEADER="idempotency-key",MUTATING_METHODS=/* @__PURE__ */new Set(["POST","PUT","PATCH","DELETE"]),NOOP_OBSERVER=/* @__PURE__ */Object.freeze({onEvent(){}}),defaultFunnelTimers=/* @__PURE__ */Object.freeze({setTimeout:(handler,ms)=>setTimeout(handler,ms),clearTimeout:handle=>clearTimeout(handle),now:()=>Date.now()});function seededIdempotencyKey(seed){let safe=seed.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return safe.length===0?null:`efs_${safe}`.slice(0,128)}function createRequestFunnel(deps){let observer=deps.observer??NOOP_OBSERVER,timers=deps.timers??defaultFunnelTimers,rng=deps.rng??Math.random,sleep=deps.sleep??((ms,signal)=>delayAbortable(ms,timers,signal)),ceiling=deps.maxAttempts??MAX_RETRY_ATTEMPTS,timeoutMs=deps.unaryTimeoutMs??FUNNEL_UNARY_TIMEOUT_MS,mintKey=deps.newIdempotencyKey??defaultIdempotencyKeyFactory(),emit=event=>{try{observer.onEvent(event)}catch{}};async function send(call,req,opts){let perCallMaxAttempts=opts?.maxAttempts,maxAttempts=Math.max(1,perCallMaxAttempts??ceiling),idempotent=opts?.idempotent??MUTATING_METHODS.has(req.method),seeded=opts?.idempotencyKey===void 0?null:seededIdempotencyKey(opts.idempotencyKey),idempotencyKey=idempotent?seeded??mintKey():null,base=assembleHeaders(req,idempotencyKey),attempt=0;for(;;){let stamp=extra=>/* @__PURE__ */Object.freeze({call:call,method:req.method,path:req.path,attempt:attempt,...idempotencyKey?{idempotencyKey:idempotencyKey}:{},...extra});emit(stamp({phase:"attempt"}));let deadline=boundedSignal(timeoutMs,timers),merged=mergeSignals(deadline.signal,req.signal),settled;try{settled=await authedSend({...base,signal:merged.signal},deps.auth)}catch(cause){settled=err(networkError(cause))}finally{merged.dispose(),deadline.cancel()}if(settled.ok)return emit(stamp({phase:"settled",ok:true,reason:"ok"})),settled;let error=settled.error,decision=decideRetry(error,attempt,{maxAttempts:maxAttempts,rng:rng,now:timers.now(),aborted:req.signal?.aborted===true,...perCallMaxAttempts!==void 0?{perCallMaxAttempts:perCallMaxAttempts}:{},...deps.errorPolicy!==void 0?{policy:deps.errorPolicy}:{}}),settledEvent={ok:false,code:error.code,reason:decision.reason,...error.httpStatus!==void 0?{httpStatus:error.httpStatus}:{},...error.requestId!==void 0?{requestId:error.requestId}:{}};if(!decision.retry)return emit(stamp({phase:"settled",...settledEvent})),err(error);if(emit(stamp({phase:"retry",...settledEvent,delayMs:decision.delayMs})),await sleep(decision.delayMs,req.signal),req.signal?.aborted===true)return emit(stamp({phase:"settled",...settledEvent,reason:"aborted"})),err(error);attempt+=1}}async function authorize(req){return withAuthHeaders(req,await resolveDeviceAuth(deps.auth))}async function*stream(call,req,signal){emit(
|
|
102
103
|
/* @__PURE__ */Object.freeze({call:call,phase:"stream.open",method:req.method,path:req.path,attempt:0}));try{yield*deps.auth.transport.stream(req,signal)}catch{yield errorFrame({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null})}}/* @__PURE__ */
|
|
103
|
-
return Object.freeze({send:send,authorize:authorize,stream:stream})}function assembleHeaders(req,idempotencyKey){let headers={};for(let[key,value]of Object.entries(req.headers??{}))key.toLowerCase()!==IDEMPOTENCY_HEADER&&(headers[key]=value);return idempotencyKey!==null&&(headers["Idempotency-Key"]=idempotencyKey),{...req,headers:headers}}function defaultIdempotencyKeyFactory(){let counter=0;return()=>`efk_${Date.now().toString(36)}_${(counter++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}var POLICY_MAX_ATTEMPTS_CAP=10;function decideRetry(error,attempt,ctx){if(ctx.aborted)return{retry:false,reason:"aborted"};let throttle=throttleKind(error);if(throttle==="quota")return{retry:false,reason:"daily-quota-exhausted"};if(throttle!=="burst"&&!isAutoRetryable(error.code))return{retry:false,reason:"terminal-code"};let reason=throttle==="burst"?"burst-throttle":"retryable-code";if((()=>{if(ctx.policy===void 0)return false;try{return!ctx.policy.shouldRetry(error.code,attempt)}catch{return false}})())return{retry:false,reason:"terminal-code"};let policyCeiling=()=>{if(ctx.policy===void 0)return null;let raw;try{raw=ctx.policy.maxAttempts(error.code)}catch{return null}return typeof raw!="number"||!Number.isFinite(raw)?null:Math.max(1,Math.min(POLICY_MAX_ATTEMPTS_CAP,Math.floor(raw)))},ceiling=ctx.perCallMaxAttempts??policyCeiling()??ctx.maxAttempts;if(attempt+1>=ceiling)return{retry:false,reason:"attempts-exhausted"};let override=retryOverrideMs(error,ctx.now);return override!==null?override>RETRY_OVERRIDE_MAX_MS?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:reason,delayMs:override}:{retry:true,reason:reason,delayMs:backoffDelayMs(attempt,ctx.rng)}}function throttleKind(error){let code=error.code==="unknown"?fromWire(rawWireCode(error.raw)):error.code;return code==="quotaExceeded"?"quota":code==="rateLimited"||error.httpStatus===429?"burst":null}function retryOverrideMs(error,now){let at=findResetsAt(error.raw);if(at!==null){let delta=at-now;return delta>0?delta:0}let wait=findRetryAfterSeconds(error.raw);return wait===null?null:Math.round(wait*1e3)}function findRetryAfterSeconds(raw){for(let scope of candidateScopes(raw)){let value=scope.retry_after_seconds;if(typeof value=="number"&&Number.isFinite(value)&&value>=0)return value}return null}function findResetsAt(raw){for(let scope of candidateScopes(raw)){let value=scope.resets_at,parsed=parseInstantMs(value);if(parsed!==null)return parsed}return null}function candidateScopes(raw){if(!isRecord(raw))return[];let out=[raw];for(let nested of["error","detail"]){let value=raw[nested];isRecord(value)&&out.push(value)}return out}function parseInstantMs(value){if(typeof value=="number"&&Number.isFinite(value))return value<1e11?Math.round(value*1e3):Math.round(value);if(typeof value=="string"&&value.trim().length>0){let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}return null}function rawWireCode(raw){for(let scope of candidateScopes(raw)){let code=scope.code;if(typeof code=="string"&&code.length>0)return code}return null}function isRecord(value){return typeof value=="object"&&value!==null}async function resolveDeviceAuth(auth){return auth.mode==="anonymous"?{mode:"anonymous",publishableKey:auth.publishableKey,userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}:{mode:"personalized",token:await auth.identity.currentToken(),userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}}function boundedSignal(ms,timers){let ctrl=new AbortController,handle=timers.setTimeout(()=>ctrl.abort(),ms);return{signal:ctrl.signal,cancel:()=>timers.clearTimeout(handle)}}function mergeSignals(deadline,caller){let noop=()=>{};if(!caller)return{signal:deadline,dispose:noop};let ctrl=new AbortController;if(deadline.aborted||caller.aborted)return ctrl.abort(),{signal:ctrl.signal,dispose:noop};let onAbort=()=>ctrl.abort();return deadline.addEventListener("abort",onAbort,{once:true}),caller.addEventListener("abort",onAbort,{once:true}),{signal:ctrl.signal,dispose:()=>{deadline.removeEventListener("abort",onAbort),caller.removeEventListener("abort",onAbort)}}}function delayAbortable(ms,timers,signal){return ms<=0||signal?.aborted===true?Promise.resolve():new Promise(resolve=>{let handle=timers.setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{timers.clearTimeout(handle),resolve()};signal?.addEventListener("abort",onAbort,{once:true})})}function hasLoneSurrogate(value){for(let i=0;i<value.length;i+=1){let code=value.charCodeAt(i);if(code>=55296&&code<=56319){let low=value.charCodeAt(i+1);if(!(low>=56320&&low<=57343))return true;i+=1}else if(code>=56320&&code<=57343)return true}return false}function mapTier(wire){let tier={url:wire.url,kind:wire.kind,expiresAt:wire.expires_at};return typeof wire.loop_duration_ms=="number"&&(tier.loopDurationMs=wire.loop_duration_ms),typeof wire.cache_key=="string"&&wire.cache_key.length>0&&(tier.cacheKey=wire.cache_key),/* @__PURE__ */Object.freeze(tier)}function mapPetStateResponse(wire){let tiers={};wire.tiers.animation&&(tiers.animation=mapTier(wire.tiers.animation)),wire.tiers.image&&(tiers.image=mapTier(wire.tiers.image));let overlays={};wire.overlays.weather_alert&&(overlays.weatherAlert=mapTier(wire.overlays.weather_alert));let response={category:wire.category,tiers:/* @__PURE__ */Object.freeze(tiers),overlays:/* @__PURE__ */Object.freeze(overlays),idle:"bundled",ttlSeconds:wire.ttl_seconds,degraded:wire.degraded};return typeof wire.cache_epoch=="number"&&(response.cacheEpoch=wire.cache_epoch),/* @__PURE__ */Object.freeze(response)}var mediaKindWireSchema=/* @__PURE__ */zod.z.enum(["webp","video"]),categoryWireSchema=/* @__PURE__ */zod.z.enum(["health","attention","moment","activity","mood","idle"]),petStateTierWireSchema=/* @__PURE__ */zod.z.object({url:/* @__PURE__ */zod.z.string(),kind:/* @__PURE__ */mediaKindWireSchema.default("webp"),loop_duration_ms:/* @__PURE__ */zod.z.number().nullish(),expires_at:/* @__PURE__ */zod.z.string(),cache_key:/* @__PURE__ */zod.z.string().nullish()}),petStateResponseWireSchema=/* @__PURE__ */zod.z.object({category:categoryWireSchema,tiers:/* @__PURE__ */zod.z.object({animation:/* @__PURE__ */petStateTierWireSchema.
|
|
104
|
+
return Object.freeze({send:send,authorize:authorize,stream:stream})}function assembleHeaders(req,idempotencyKey){let headers={};for(let[key,value]of Object.entries(req.headers??{}))key.toLowerCase()!==IDEMPOTENCY_HEADER&&(headers[key]=value);return idempotencyKey!==null&&(headers["Idempotency-Key"]=idempotencyKey),{...req,headers:headers}}function defaultIdempotencyKeyFactory(){let counter=0;return()=>`efk_${Date.now().toString(36)}_${(counter++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}var POLICY_MAX_ATTEMPTS_CAP=10;function decideRetry(error,attempt,ctx){if(ctx.aborted)return{retry:false,reason:"aborted"};let throttle=throttleKind(error);if(throttle==="quota")return{retry:false,reason:"daily-quota-exhausted"};if(throttle!=="burst"&&!isAutoRetryable(error.code))return{retry:false,reason:"terminal-code"};let reason=throttle==="burst"?"burst-throttle":"retryable-code";if((()=>{if(ctx.policy===void 0)return false;try{return!ctx.policy.shouldRetry(error.code,attempt)}catch{return false}})())return{retry:false,reason:"terminal-code"};let policyCeiling=()=>{if(ctx.policy===void 0)return null;let raw;try{raw=ctx.policy.maxAttempts(error.code)}catch{return null}return typeof raw!="number"||!Number.isFinite(raw)?null:Math.max(1,Math.min(POLICY_MAX_ATTEMPTS_CAP,Math.floor(raw)))},ceiling=ctx.perCallMaxAttempts??policyCeiling()??ctx.maxAttempts;if(attempt+1>=ceiling)return{retry:false,reason:"attempts-exhausted"};let override=retryOverrideMs(error,ctx.now);return override!==null?override>RETRY_OVERRIDE_MAX_MS?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:reason,delayMs:override}:{retry:true,reason:reason,delayMs:backoffDelayMs(attempt,ctx.rng)}}function throttleKind(error){let code=error.code==="unknown"?fromWire(rawWireCode(error.raw)):error.code;return code==="quotaExceeded"?"quota":code==="rateLimited"||error.httpStatus===429?"burst":null}function retryOverrideMs(error,now){let at=findResetsAt(error.raw);if(at!==null){let delta=at-now;return delta>0?delta:0}let wait=findRetryAfterSeconds(error.raw);return wait===null?null:Math.round(wait*1e3)}function findRetryAfterSeconds(raw){for(let scope of candidateScopes(raw)){let value=scope.retry_after_seconds;if(typeof value=="number"&&Number.isFinite(value)&&value>=0)return value}return null}function findResetsAt(raw){for(let scope of candidateScopes(raw)){let value=scope.resets_at,parsed=parseInstantMs(value);if(parsed!==null)return parsed}return null}function candidateScopes(raw){if(!isRecord(raw))return[];let out=[raw];for(let nested of["error","detail"]){let value=raw[nested];isRecord(value)&&out.push(value)}return out}function parseInstantMs(value){if(typeof value=="number"&&Number.isFinite(value))return value<1e11?Math.round(value*1e3):Math.round(value);if(typeof value=="string"&&value.trim().length>0){let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}return null}function rawWireCode(raw){for(let scope of candidateScopes(raw)){let code=scope.code;if(typeof code=="string"&&code.length>0)return code}return null}function isRecord(value){return typeof value=="object"&&value!==null}async function resolveDeviceAuth(auth){return auth.mode==="anonymous"?{mode:"anonymous",publishableKey:auth.publishableKey,userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}:{mode:"personalized",token:await auth.identity.currentToken(),userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}}function boundedSignal(ms,timers){let ctrl=new AbortController,handle=timers.setTimeout(()=>ctrl.abort(),ms);return{signal:ctrl.signal,cancel:()=>timers.clearTimeout(handle)}}function mergeSignals(deadline,caller){let noop=()=>{};if(!caller)return{signal:deadline,dispose:noop};let ctrl=new AbortController;if(deadline.aborted||caller.aborted)return ctrl.abort(),{signal:ctrl.signal,dispose:noop};let onAbort=()=>ctrl.abort();return deadline.addEventListener("abort",onAbort,{once:true}),caller.addEventListener("abort",onAbort,{once:true}),{signal:ctrl.signal,dispose:()=>{deadline.removeEventListener("abort",onAbort),caller.removeEventListener("abort",onAbort)}}}function delayAbortable(ms,timers,signal){return ms<=0||signal?.aborted===true?Promise.resolve():new Promise(resolve=>{let handle=timers.setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{timers.clearTimeout(handle),resolve()};signal?.addEventListener("abort",onAbort,{once:true})})}function hasLoneSurrogate(value){for(let i=0;i<value.length;i+=1){let code=value.charCodeAt(i);if(code>=55296&&code<=56319){let low=value.charCodeAt(i+1);if(!(low>=56320&&low<=57343))return true;i+=1}else if(code>=56320&&code<=57343)return true}return false}function mapTier(wire){let tier={url:wire.url,kind:wire.kind,expiresAt:wire.expires_at};return typeof wire.loop_duration_ms=="number"&&(tier.loopDurationMs=wire.loop_duration_ms),typeof wire.cache_key=="string"&&wire.cache_key.length>0&&(tier.cacheKey=wire.cache_key),/* @__PURE__ */Object.freeze(tier)}function mapPetStateResponse(wire){let tiers={};wire.tiers.animation&&(tiers.animation=mapTier(wire.tiers.animation)),wire.tiers.image&&(tiers.image=mapTier(wire.tiers.image));let overlays={};wire.overlays.weather_alert&&(overlays.weatherAlert=mapTier(wire.overlays.weather_alert));let response={category:wire.category,tiers:/* @__PURE__ */Object.freeze(tiers),overlays:/* @__PURE__ */Object.freeze(overlays),idle:"bundled",ttlSeconds:wire.ttl_seconds,degraded:wire.degraded};return typeof wire.cache_epoch=="number"&&(response.cacheEpoch=wire.cache_epoch),/* @__PURE__ */Object.freeze(response)}var mediaKindWireSchema=/* @__PURE__ */zod.z.enum(["webp","video"]),categoryWireSchema=/* @__PURE__ */zod.z.enum(["health","attention","moment","activity","mood","idle"]),petStateTierWireSchema=/* @__PURE__ */zod.z.object({url:/* @__PURE__ */zod.z.string(),kind:/* @__PURE__ */mediaKindWireSchema.default("webp"),loop_duration_ms:/* @__PURE__ */zod.z.number().nullish(),expires_at:/* @__PURE__ */zod.z.string(),cache_key:/* @__PURE__ */zod.z.string().nullish()}),petStateResponseWireSchema=/* @__PURE__ */zod.z.object({category:categoryWireSchema,tiers:/* @__PURE__ */zod.z.object({animation:/* @__PURE__ */petStateTierWireSchema.nullish(),image:/* @__PURE__ */petStateTierWireSchema.nullish()}).default({}),overlays:/* @__PURE__ */zod.z.object({weather_alert:/* @__PURE__ */petStateTierWireSchema.nullish()}).default({}),idle:/* @__PURE__ */zod.z.literal("bundled").default("bundled"),ttl_seconds:/* @__PURE__ */zod.z.number(),degraded:/* @__PURE__ */zod.z.boolean().default(false),cache_epoch:/* @__PURE__ */zod.z.number().default(0)});function parsePetStateWire(raw){let parsed=petStateResponseWireSchema.safeParse(raw);return parsed.success?parsed.data:null}function createPetStateRepository(auth){return createPetStateRepositoryOver(createRequestFunnel({auth:auth}))}function createPetStateRepositoryOver(funnel){return{async getState(petRef,opts){if(hasLoneSurrogate(petRef))return err(makeEverfurError("validationFailed",{retryable:false,wireMessage:"pet_ref contains an unpaired surrogate and cannot be encoded"}));let path=`/widget/v1/pets/${encodeURIComponent(petRef)}/state`,res=await funnel.send("animations.getState",opts?.signal?{method:"GET",path:path,signal:opts.signal}:{method:"GET",path:path},opts?.maxAttempts!==void 0?{maxAttempts:opts.maxAttempts}:void 0);if(res.ok){let wire=parsePetStateWire(res.value);return wire===null?err(makeEverfurError("internalError",{retryable:true})):ok(mapPetStateResponse(wire))}return res.error.httpStatus===404?ok(null):err(res.error)}}}function stableMediaKey(source){if(source===void 0)return"bundled:none";if(typeof source=="number")return`bundled:${source}`;if("kind"in source)return`bundled:${source.id}`;let uri=source.uri,q=uri.indexOf("?");return q===-1?uri:uri.slice(0,q)}function selectTier(i){return i.hasPhoto&&!i.photoFailed?"photo":i.canAnimate&&!i.animationFailed?"animation":i.hasImage&&!i.imageFailed?"image":"idle"}function retireTier(current,failed){switch(current){case"photo":return{failed:freezeFailed({...failed,photo:true}),reason:"network_error"};case"animation":return{failed:freezeFailed({...failed,animation:true}),reason:"network_error"};case"image":return{failed:freezeFailed({...failed,image:true}),reason:"network_error"};case"idle":return{failed:freezeFailed(failed),reason:"idle_asset_failed"};default:return{failed:freezeFailed(failed),reason:"network_error"}}}var NO_FAILURES=/* @__PURE__ */Object.freeze({photo:false,animation:false,image:false});function freezeFailed(f){/* @__PURE__ */
|
|
104
105
|
return Object.freeze({photo:f.photo,animation:f.animation,image:f.image})}function isLoaderSafeCategory(category){switch(category){case"activity":case"mood":case"moment":case"idle":return true;case"health":case"attention":return false;default:return false}}var CACHE_EPOCH_STORAGE_KEY="everfur.petState.cacheEpoch";function createCacheEpochGuard(deps){let lastActed=0,loaded=false,inFlight=null,run=async serverEpoch=>{if(loaded||(lastActed=await readStoredEpoch(deps.kv),loaded=true),serverEpoch<=lastActed)return false;try{await deps.kv.setItem(CACHE_EPOCH_STORAGE_KEY,String(serverEpoch))}catch{}lastActed=serverEpoch;try{await deps.cache.clearMemoryCache()}catch{}try{await deps.cache.clearDiskCache()}catch{}return true};return{async sync(serverEpoch){return typeof serverEpoch!="number"||!Number.isFinite(serverEpoch)||serverEpoch<=0||loaded&&serverEpoch<=lastActed?false:inFlight||(inFlight=run(serverEpoch).finally(()=>{inFlight=null}),inFlight)}}}async function readStoredEpoch(kv){let raw;try{raw=await kv.getItem(CACHE_EPOCH_STORAGE_KEY)}catch{return 0}if(raw===null)return 0;let parsed=Number(raw);return Number.isFinite(parsed)&&parsed>0?parsed:0}var SUPPORTED_SCHEMA_VERSION=1,MANIFEST_LKG_STORAGE_KEY="everfur.manifest.lastKnownGood",COMPILED_DEFAULT_IDLE=/* @__PURE__ */Object.freeze({kind:"bundled",id:"everfur-idle"}),COMPILED_DEFAULT_MANIFEST=/* @__PURE__ */Object.freeze({schemaVersion:SUPPORTED_SCHEMA_VERSION,revision:"compiled-default",surfaces:/* @__PURE__ */Object.freeze({animations:/* @__PURE__ */Object.freeze({enabled:true,idle:COMPILED_DEFAULT_IDLE})})}),bundledIdleSchema=/* @__PURE__ */zod.z.object({kind:/* @__PURE__ */zod.z.literal("bundled"),id:/* @__PURE__ */zod.z.string().min(1)}),animationsSurfaceWireSchema=/* @__PURE__ */zod.z.object({enabled:/* @__PURE__ */zod.z.boolean().default(true),idle:/* @__PURE__ */bundledIdleSchema.optional()}),manifestWireSchema=/* @__PURE__ */zod.z.object({schema_version:/* @__PURE__ */zod.z.number().int(),revision:/* @__PURE__ */zod.z.string().default(""),surfaces:/* @__PURE__ */zod.z.object({animations:/* @__PURE__ */animationsSurfaceWireSchema.optional()}).default({})});function parseManifest(raw){let parsed=manifestWireSchema.safeParse(raw);if(!parsed.success)return{ok:false,reason:"unparseable"};if(parsed.data.schema_version>SUPPORTED_SCHEMA_VERSION)return{ok:false,reason:"newer_schema"};let animationsWire=parsed.data.surfaces.animations,surfaces={};return animationsWire&&(surfaces.animations=/* @__PURE__ */Object.freeze({enabled:animationsWire.enabled,idle:animationsWire.idle?/* @__PURE__ */Object.freeze({...animationsWire.idle}):COMPILED_DEFAULT_IDLE})),{ok:true,manifest:/* @__PURE__ */Object.freeze({schemaVersion:parsed.data.schema_version,revision:parsed.data.revision,surfaces:/* @__PURE__ */Object.freeze(surfaces)})}}async function resolveManifest(liveRaw,kv,tel){if(liveRaw!=null){let parsed=parseManifest(liveRaw);if(parsed.ok)return await writeLastKnownGood(kv,liveRaw),tel.track("manifest.fallback",{source:"live"}),/* @__PURE__ */Object.freeze({manifest:parsed.manifest,source:"live"});parsed.reason==="newer_schema"&&tel.track("manifest.refused_newer",{})}let lkg=await readLastKnownGood(kv);return lkg?(tel.track("manifest.fallback",{source:"last-known-good"}),/* @__PURE__ */Object.freeze({manifest:lkg,source:"last-known-good"})):(tel.track("manifest.fallback",{source:"compiled-default"}),/* @__PURE__ */Object.freeze({manifest:COMPILED_DEFAULT_MANIFEST,source:"compiled-default"}))}function animationsSurfaceOf(manifest){return manifest.surfaces.animations??COMPILED_DEFAULT_MANIFEST.surfaces.animations??{enabled:true,idle:COMPILED_DEFAULT_IDLE}}async function writeLastKnownGood(kv,raw){try{await kv.setItem(MANIFEST_LKG_STORAGE_KEY,JSON.stringify(raw))}catch{}}async function readLastKnownGood(kv){let stored;try{stored=await kv.getItem(MANIFEST_LKG_STORAGE_KEY)}catch{return null}if(stored===null)return null;let json;try{json=JSON.parse(stored)}catch{return null}let parsed=parseManifest(json);return parsed.ok?parsed.manifest:null}var EMPTY_SNAPSHOT=/* @__PURE__ */Object.freeze({data:null,isPending:false,isError:false,error:null,isDark:false});function createPetStateStore(deps){let{repo:repo,cacheEpoch:cacheEpoch,timers:timers}=deps,listeners=/* @__PURE__ */new Set,warm=/* @__PURE__ */new Map,snapshot=EMPTY_SNAPSHOT,currentPetRef=null,dataPetRef=null,isFocused=false,terminatedPetRef=null,remintHandle=null,inFlight=null,epoch=0,emit=()=>{for(let listener of listeners)listener()},patch=partial=>{snapshot=/* @__PURE__ */Object.freeze({...snapshot,...partial}),emit()},clearRemint=()=>{remintHandle!==null&&(timers.clearTimeout(remintHandle),remintHandle=null)},staleMs=data=>data?Math.max(1,data.ttlSeconds)*1e3:6e4,touchWarm=petRef=>{let entry=warm.get(petRef);entry!==void 0&&(warm.delete(petRef),warm.set(petRef,entry))},setWarm=(petRef,data)=>{for(warm.delete(petRef),warm.set(petRef,/* @__PURE__ */Object.freeze({data:data,fetchedAt:timers.now()}));warm.size>32;){let oldest=warm.keys().next().value;if(oldest===void 0||oldest===petRef)break;warm.delete(oldest)}},hasGoodTiers=petRef=>{let entry=warm.get(petRef);return entry?!!(entry.data.tiers.animation||entry.data.tiers.image):false},scheduleRemint=(petRef,ttlSeconds)=>{if(clearRemint(),!isFocused)return;let ms=Math.max(1,ttlSeconds)*1e3,scheduledEpoch=epoch;remintHandle=timers.setTimeout(()=>{remintHandle=null,!(scheduledEpoch!==epoch||currentPetRef!==petRef||!isFocused)&&fetchOnce(petRef,0)},ms)},fetchOnce=async(petRef,attempt)=>{if(currentPetRef!==petRef||terminatedPetRef===petRef||!isFocused)return;let myEpoch=epoch;inFlight?.abort();let ctrl=new AbortController;inFlight=ctrl;let res=await repo.getState(petRef,{signal:ctrl.signal});if(!(myEpoch!==epoch||currentPetRef!==petRef)){if(res.ok){let resp=res.value;if(resp===null){onTerminalDark(petRef);return}cacheEpoch.sync(resp.cacheEpoch);let respHasTiers=!!(resp.tiers.animation||resp.tiers.image);if(resp.degraded&&!respHasTiers&&hasGoodTiers(petRef)){patch({isError:false,error:null,isPending:false,isDark:false}),scheduleRemint(petRef,resp.ttlSeconds);return}setWarm(petRef,resp),dataPetRef=petRef,patch({data:resp,isPending:false,isError:false,error:null,isDark:false}),scheduleRemint(petRef,resp.ttlSeconds);return}if(isTerminalPetStateError(res.error)){onTerminalDisabled(petRef,res.error);return}if(patch({isError:true,error:res.error,isPending:snapshot.data===null&&dataPetRef!==petRef}),attempt<2){clearRemint();let backoff=500*(attempt+1),scheduledEpoch=epoch;remintHandle=timers.setTimeout(()=>{remintHandle=null,!(scheduledEpoch!==epoch||currentPetRef!==petRef||!isFocused)&&fetchOnce(petRef,attempt+1)},backoff)}else scheduleRemint(petRef,5)}},onTerminalDark=petRef=>{terminatedPetRef=petRef,warm.delete(petRef),clearRemint(),dataPetRef=petRef,patch({data:null,isPending:false,isError:false,error:null,isDark:true})},onTerminalDisabled=(petRef,error)=>{terminatedPetRef=petRef,warm.delete(petRef),clearRemint(),dataPetRef=petRef,patch({data:null,isPending:false,isError:false,error:error,isDark:true})};return{observe(petRef,opts){let focusChanged=opts.isFocused!==isFocused;if(isFocused=opts.isFocused,petRef!==currentPetRef){if(epoch+=1,inFlight?.abort(),inFlight=null,clearRemint(),terminatedPetRef=null,currentPetRef=petRef,petRef===null){dataPetRef=null,snapshot=EMPTY_SNAPSHOT,emit();return}let warmEntry=warm.get(petRef),fresh=warmEntry&&timers.now()-warmEntry.fetchedAt<staleMs(warmEntry.data)?warmEntry:null;fresh?(touchWarm(petRef),dataPetRef=petRef,patch({data:fresh.data,isPending:false,isError:false,error:null,isDark:false})):patch({isPending:true,isError:false,error:null,isDark:false}),isFocused&&fetchOnce(petRef,0);return}if(!focusChanged||petRef===null)return;if(!isFocused){clearRemint();return}let entry=warm.get(petRef);!entry||timers.now()-entry.fetchedAt>=staleMs(entry.data)?terminatedPetRef!==petRef&&fetchOnce(petRef,0):scheduleRemint(petRef,entry.data.ttlSeconds)},getSnapshot(){return snapshot},subscribe(listener){return listeners.add(listener),()=>{listeners.delete(listener)}},getCachedPetStateMedia(petRef){let entry=warm.get(petRef);return!entry||timers.now()-entry.fetchedAt>=staleMs(entry.data)?null:(touchWarm(petRef),entry.data)},dispose(){epoch+=1,inFlight?.abort(),inFlight=null,clearRemint(),listeners.clear(),warm.clear()}}}function isTerminalPetStateError(error){if(typeof error!="object"||error===null)return false;let record=error,status=typeof record.status=="number"?record.status:record.httpStatus;return status===403||status===404}var noopTelemetry=/* @__PURE__ */Object.freeze({track(){},trackExpectedFailure(){}});function createAnimationController(deps){let telemetry=deps.telemetry??noopTelemetry,timers=deps.timers??defaultTimers(deps.now),store=createPetStateStore({repo:deps.repo,cacheEpoch:createCacheEpochGuard({kv:deps.kv,cache:deps.cache}),timers:timers}),listeners=/* @__PURE__ */new Set,failed=NO_FAILURES,fallbackReason="none",paused=false,photoUrl=null,lastData=null,lastDark=false,dataToken=0,lastShownKey="",view=pendingView(surface()),disposed=false;function surface(){let manifest=deps.manifest?deps.manifest():COMPILED_DEFAULT_MANIFEST;return animationsSurfaceOf(manifest)}let emit=()=>{for(let listener of listeners)listener()},unsubscribeStore=store.subscribe(()=>{onStoreChange()});function onStoreChange(){let snap=store.getSnapshot();(snap.data!==lastData||snap.isDark!==lastDark)&&(lastData=snap.data,lastDark=snap.isDark,failed=NO_FAILURES,fallbackReason=snap.isDark?"dark_or_missing":"none",dataToken+=1),recompute(snap)}function recompute(snap=store.getSnapshot()){let surf=surface(),next=buildView(surf,snap,{failed:failed,fallbackReason:fallbackReason,paused:paused,photoUrl:photoUrl,reducedMotion:deps.reducedMotion()});view=next,maybeEmitShown(next),emit()}function maybeEmitShown(next){if(next.kind!=="ready")return;let key=`${next.category}|${next.tier}|${next.fallbackReason}|${next.reducedMotion?1:0}`;key!==lastShownKey&&(lastShownKey=key,telemetry.track("pet_state_shown",{category:next.category,tier:next.tier,fallback_reason:next.fallbackReason,reduced_motion:next.reducedMotion}),next.fallbackReason==="idle_asset_failed"&&telemetry.trackExpectedFailure("idle_asset_failed",{category:next.category}))}return{observe(petRef,opts){disposed||(photoUrl=opts.photoUrl??null,failed=NO_FAILURES,store.observe(petRef,{isFocused:opts.isFocused}),onStoreChange())},getState(){return view},subscribe(listener){return listeners.add(listener),()=>{listeners.delete(listener)}},onMediaError(){if(disposed||view.kind!=="ready")return;let retired=retireTier(view.tier,failed);failed=retired.failed,fallbackReason=retired.reason,recompute()},setPaused(next){disposed||paused===next||(paused=next,recompute())},dispose(){disposed||(disposed=true,unsubscribeStore(),store.dispose(),listeners.clear())}}}function buildView(surf,snap,inputs){let idleSource=surf.idle;if(!surf.enabled)/* @__PURE__ */
|
|
105
106
|
return Object.freeze({kind:"disabled",reason:userFacingError("accessDenied"),level:"partner_config",source:idleSource,idle:surf.idle});if(snap.isPending&&snap.data===null&&!snap.isDark)/* @__PURE__ */
|
|
106
107
|
return Object.freeze({kind:"pending",showSkeleton:true,source:idleSource});let data=snap.data,category=data?.category??"idle",animation=data?.tiers.animation,image=data?.tiers.image,canAnimate=!!animation&&animation?.kind==="webp"&&!inputs.reducedMotion&&!inputs.failed.animation,tier=selectTier({hasPhoto:inputs.photoUrl!==null&&inputs.photoUrl.length>0,photoFailed:inputs.failed.photo,canAnimate:canAnimate,animationFailed:inputs.failed.animation,hasImage:!!image,imageFailed:inputs.failed.image}),source=idleSource,loopDurationMs=null,cacheHit=false;tier==="photo"&&inputs.photoUrl?source=uriSource(inputs.photoUrl,void 0):tier==="animation"&&animation?(source=uriSource(animation.url,animation.cacheKey),loopDurationMs=animation.loopDurationMs??null,cacheHit=animation.cacheKey!==void 0):tier==="image"&&image&&(source=uriSource(image.url,image.cacheKey),cacheHit=image.cacheKey!==void 0);let recyclingKey=source.kind==="uri"?source.cacheKey:`bundled:${source.id}`;/* @__PURE__ */
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
/*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
|
|
1
2
|
import { ReactNode } from 'react';
|
|
2
3
|
import { StyleProp, ViewStyle } from 'react-native';
|
|
3
4
|
import { E as EverfurResult } from '../EverfurResult.d-BFH-3s6E.cjs';
|
|
4
|
-
import { A as AuthContext } from '../identity.d-
|
|
5
|
-
export { I as IdentityProvider, n as newSessionId } from '../identity.d-
|
|
5
|
+
import { A as AuthContext } from '../identity.d-HbwYQ4-z.cjs';
|
|
6
|
+
export { I as IdentityProvider, n as newSessionId } from '../identity.d-HbwYQ4-z.cjs';
|
|
6
7
|
import { P as PetRef } from '../ids.d-B2GAAifq.cjs';
|
|
7
8
|
export { B as Brand, U as UserRef, _ as __brand } from '../ids.d-B2GAAifq.cjs';
|
|
8
9
|
import { z } from 'zod';
|
|
@@ -13,7 +14,7 @@ import { E as EverfurError } from '../EverfurError.d-8NHtlgzA.cjs';
|
|
|
13
14
|
export { a as EverfurErrorCategory, b as EverfurErrorCode } from '../EverfurError.d-8NHtlgzA.cjs';
|
|
14
15
|
import { D as DisabledLevel, a as CapabilityDecision } from '../resolve.d-CoQWUy1Y.cjs';
|
|
15
16
|
export { b as CapabilityDisabled, C as CapabilityName } from '../resolve.d-CoQWUy1Y.cjs';
|
|
16
|
-
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-
|
|
17
|
+
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-BQgrIDdu.cjs';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* The full /state payload. `degraded` + `cache_epoch` + `cache_key` are additive fields an older backend
|
|
@@ -22,7 +23,7 @@ export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFra
|
|
|
22
23
|
declare const petStateResponseWireSchema: z.ZodObject<{
|
|
23
24
|
category: z.ZodEnum<["health", "attention", "moment", "activity", "mood", "idle"]>;
|
|
24
25
|
tiers: z.ZodDefault<z.ZodObject<{
|
|
25
|
-
animation: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
animation: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
26
27
|
url: z.ZodString;
|
|
27
28
|
kind: z.ZodDefault<z.ZodEnum<["webp", "video"]>>;
|
|
28
29
|
loop_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
@@ -40,8 +41,8 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
40
41
|
kind?: "video" | "webp" | undefined;
|
|
41
42
|
loop_duration_ms?: number | null | undefined;
|
|
42
43
|
cache_key?: string | null | undefined;
|
|
43
|
-
}
|
|
44
|
-
image: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
}>>>;
|
|
45
|
+
image: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
45
46
|
url: z.ZodString;
|
|
46
47
|
kind: z.ZodDefault<z.ZodEnum<["webp", "video"]>>;
|
|
47
48
|
loop_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
@@ -59,7 +60,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
59
60
|
kind?: "video" | "webp" | undefined;
|
|
60
61
|
loop_duration_ms?: number | null | undefined;
|
|
61
62
|
cache_key?: string | null | undefined;
|
|
62
|
-
}
|
|
63
|
+
}>>>;
|
|
63
64
|
}, "strip", z.ZodTypeAny, {
|
|
64
65
|
image?: {
|
|
65
66
|
kind: "video" | "webp";
|
|
@@ -67,14 +68,14 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
67
68
|
expires_at: string;
|
|
68
69
|
loop_duration_ms?: number | null | undefined;
|
|
69
70
|
cache_key?: string | null | undefined;
|
|
70
|
-
} | undefined;
|
|
71
|
+
} | null | undefined;
|
|
71
72
|
animation?: {
|
|
72
73
|
kind: "video" | "webp";
|
|
73
74
|
url: string;
|
|
74
75
|
expires_at: string;
|
|
75
76
|
loop_duration_ms?: number | null | undefined;
|
|
76
77
|
cache_key?: string | null | undefined;
|
|
77
|
-
} | undefined;
|
|
78
|
+
} | null | undefined;
|
|
78
79
|
}, {
|
|
79
80
|
image?: {
|
|
80
81
|
url: string;
|
|
@@ -82,17 +83,17 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
82
83
|
kind?: "video" | "webp" | undefined;
|
|
83
84
|
loop_duration_ms?: number | null | undefined;
|
|
84
85
|
cache_key?: string | null | undefined;
|
|
85
|
-
} | undefined;
|
|
86
|
+
} | null | undefined;
|
|
86
87
|
animation?: {
|
|
87
88
|
url: string;
|
|
88
89
|
expires_at: string;
|
|
89
90
|
kind?: "video" | "webp" | undefined;
|
|
90
91
|
loop_duration_ms?: number | null | undefined;
|
|
91
92
|
cache_key?: string | null | undefined;
|
|
92
|
-
} | undefined;
|
|
93
|
+
} | null | undefined;
|
|
93
94
|
}>>;
|
|
94
95
|
overlays: z.ZodDefault<z.ZodObject<{
|
|
95
|
-
weather_alert: z.ZodOptional<z.ZodObject<{
|
|
96
|
+
weather_alert: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
96
97
|
url: z.ZodString;
|
|
97
98
|
kind: z.ZodDefault<z.ZodEnum<["webp", "video"]>>;
|
|
98
99
|
loop_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
@@ -110,7 +111,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
110
111
|
kind?: "video" | "webp" | undefined;
|
|
111
112
|
loop_duration_ms?: number | null | undefined;
|
|
112
113
|
cache_key?: string | null | undefined;
|
|
113
|
-
}
|
|
114
|
+
}>>>;
|
|
114
115
|
}, "strip", z.ZodTypeAny, {
|
|
115
116
|
weather_alert?: {
|
|
116
117
|
kind: "video" | "webp";
|
|
@@ -118,7 +119,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
118
119
|
expires_at: string;
|
|
119
120
|
loop_duration_ms?: number | null | undefined;
|
|
120
121
|
cache_key?: string | null | undefined;
|
|
121
|
-
} | undefined;
|
|
122
|
+
} | null | undefined;
|
|
122
123
|
}, {
|
|
123
124
|
weather_alert?: {
|
|
124
125
|
url: string;
|
|
@@ -126,7 +127,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
126
127
|
kind?: "video" | "webp" | undefined;
|
|
127
128
|
loop_duration_ms?: number | null | undefined;
|
|
128
129
|
cache_key?: string | null | undefined;
|
|
129
|
-
} | undefined;
|
|
130
|
+
} | null | undefined;
|
|
130
131
|
}>>;
|
|
131
132
|
idle: z.ZodDefault<z.ZodLiteral<"bundled">>;
|
|
132
133
|
ttl_seconds: z.ZodNumber;
|
|
@@ -142,14 +143,14 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
142
143
|
expires_at: string;
|
|
143
144
|
loop_duration_ms?: number | null | undefined;
|
|
144
145
|
cache_key?: string | null | undefined;
|
|
145
|
-
} | undefined;
|
|
146
|
+
} | null | undefined;
|
|
146
147
|
animation?: {
|
|
147
148
|
kind: "video" | "webp";
|
|
148
149
|
url: string;
|
|
149
150
|
expires_at: string;
|
|
150
151
|
loop_duration_ms?: number | null | undefined;
|
|
151
152
|
cache_key?: string | null | undefined;
|
|
152
|
-
} | undefined;
|
|
153
|
+
} | null | undefined;
|
|
153
154
|
};
|
|
154
155
|
overlays: {
|
|
155
156
|
weather_alert?: {
|
|
@@ -158,7 +159,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
158
159
|
expires_at: string;
|
|
159
160
|
loop_duration_ms?: number | null | undefined;
|
|
160
161
|
cache_key?: string | null | undefined;
|
|
161
|
-
} | undefined;
|
|
162
|
+
} | null | undefined;
|
|
162
163
|
};
|
|
163
164
|
ttl_seconds: number;
|
|
164
165
|
degraded: boolean;
|
|
@@ -174,14 +175,14 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
174
175
|
kind?: "video" | "webp" | undefined;
|
|
175
176
|
loop_duration_ms?: number | null | undefined;
|
|
176
177
|
cache_key?: string | null | undefined;
|
|
177
|
-
} | undefined;
|
|
178
|
+
} | null | undefined;
|
|
178
179
|
animation?: {
|
|
179
180
|
url: string;
|
|
180
181
|
expires_at: string;
|
|
181
182
|
kind?: "video" | "webp" | undefined;
|
|
182
183
|
loop_duration_ms?: number | null | undefined;
|
|
183
184
|
cache_key?: string | null | undefined;
|
|
184
|
-
} | undefined;
|
|
185
|
+
} | null | undefined;
|
|
185
186
|
} | undefined;
|
|
186
187
|
overlays?: {
|
|
187
188
|
weather_alert?: {
|
|
@@ -190,7 +191,7 @@ declare const petStateResponseWireSchema: z.ZodObject<{
|
|
|
190
191
|
kind?: "video" | "webp" | undefined;
|
|
191
192
|
loop_duration_ms?: number | null | undefined;
|
|
192
193
|
cache_key?: string | null | undefined;
|
|
193
|
-
} | undefined;
|
|
194
|
+
} | null | undefined;
|
|
194
195
|
} | undefined;
|
|
195
196
|
degraded?: boolean | undefined;
|
|
196
197
|
cache_epoch?: number | undefined;
|
|
@@ -249,6 +250,8 @@ interface PetStateRepository {
|
|
|
249
250
|
*/
|
|
250
251
|
getState(petRef: PetRef, opts?: {
|
|
251
252
|
signal?: AbortSignal;
|
|
253
|
+
/** Attempt ceiling for this read (a reader that keeps its own retry schedule passes 1). */
|
|
254
|
+
maxAttempts?: number;
|
|
252
255
|
}): Promise<EverfurResult<PetStateResponse | null>>;
|
|
253
256
|
}
|
|
254
257
|
/** Build the repository over a device AuthContext (personalized bearer XOR anonymous pk). */
|