vendor: 1,261 bytes, line 1
1var he=i=>{throw TypeError(i)};var q=(i,e,t)=>e.has(i)||he("Cannot "+t);var s=(i,e,t)=>(q(i,e,"read from private field"),t?t.call(i):e.get(i)),g=(i,e,t)=>e.has(i)?he("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),d=(i,e,t,r)=>(q(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t),h=(i,e,t)=>(q(i,e,"access private method"),t);import{a0 as De,ai as pe,aj as C,a1 as J,ak as Y,a5 as X,al as Z,am as fe,an as Se,ao as Te,ap as Ie,aq as ge,a4 as we,r as D,a6 as xe,l as Ee}from"./index-Dgv2xMGN.js";var y,n,H,m,E,k,S,T,W,O,L,M,B,I,F,a,j,ee,te,ie,se,re,ne,ae,Ce,be,Me=(be=class extends De{constructor(e,t){super();g(this,a);g(this,y);g(this,n);g(this,H);g(this,m);g(this,E);g(this,k);g(this,S);g(this,T);g(this,W);g(this,O);g(this,L);g(this,M);g(this,B);g(this,I);g(this,F,new Set);this.options=t,d(this,y,e),d(this,T,null),d(this,S,pe()),this.options.experimental_prefetchInRender||s(this,S).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(s(this,n).addObserver(this),me(s(this,n),this.options)?h(this,a,j).call(this):this.updateResult(),h(this,a,se).
1call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return oe(s(this,n),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return oe(s(this,n),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,h(this,a,re).call(this),h(this,a,ne).call(this),s(this,n).removeObserver(this)}setOptions(e){const t=this.options,r=s(this,n);if(this.options=s(this,y).defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof C(this.options.enabled,s(this,n))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");h(this,a,ae).call(this),s(this,n).setOptions(this.options),t._defaulted&&!J(this.options,t)&&s(this,y).getQueryCache().notify({type:"observerOptionsUpdated",query:s(this,n),observer:this});const l=this.hasListeners();l&&ye(s(this,n),r,this.options,t)&&h(this,a,j).call(this),this.updateResult(),l&&(s(this,n)!==r||C(this.options.enabled,s(this,n))!==C(t.enabled,s(this,n))||Y(this.options.staleTime,s(this,n))!==Y(t.staleTime,s(this,n)))&&h(this,a,ee).call(this);const o=h(this,a,te).call(this);l&&(s(this,n)!==r||C(this.options.enabled,s(this,n))!==C(t.enabled,s(this,n))||o!==s(this,I))&&h(this,a,ie).call(this,o)}getOptimisticResult(e){const t=s(this,y).getQueryCache().build(s(this,y),e),r=this.createResult(t,e);return Pe(this,r)&&(d(this,m,r),d(this,k,this.options),d(this,E,s(this,n).state)),r}getCurrentResult(){return s(this,m)}trackResult(e,t){return new Proxy(e,{get:(r,l)=>(this.trackProp(l),t==null||t(l),Reflect.get(r,l))})}trackProp(e){s(this,F).add(e)}getCurrentQuery(){return s(this,n)}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=s(this,y).defaultQueryOptions(e),r=s(this,y).getQueryCache().build(s(this,y),t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return h(this,a,j).call(this,{...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),s(this,m)))}createResult(e,t){var ue;const r=s(this,n),l=this.options,o=s(this,m),c=s(this,E),x=s(this,k),w=e!==r?e.state:s(this,H),{state:A}=e;let u={...A},U=!1,p;if(t._optimisticResults){const b=this.hasListeners(),z=!b&&me(e,t),P=b&&ye(e,r,t,l);(z||P)&&(u={...u,...Ie(A.data,e.options)}),t._optimisticResults==="isRestoring"&&(u.fetchStatus="idle")}let{error:N,errorUpdatedAt:Q,status:v}=u;p=u.data;let _=!1;if(t.placeholderData!==void 0&&p===void 0&&v==="pending"){let b;o!=null&&o.isPlaceholderData&&t.placeholderData===(x==null?void 0:x.placeholderData)?(b=o.data,_=!0):b=typeof t.placeholderData=="function"?t.placeholderData((ue=s(this,L))==null?void 0:ue.state.data,s(this,L)):t.placeholderData,b!==void 0&&(v="success",p=ge(o==null?void 0:o.data,b,t),U=!0)}if(t.select&&p!==void 0&&!_)if(o&&p===(c==null?void 0:c.data)&&t.select===s(this,W))p=s(this,O);else try{d(this,W,t.select),p=t.select(p),p=ge(o==null?void 0:o.data,p,t),d(this,O,p),d(this,T,null)}catch(b){d(this,T,b)}s(this,T)&&(N=s(this,T),p=s(this,O),Q=Date.now(),v="error");const G=u.fetchStatus==="fetching",K=v==="pending",$=v==="error",le=K&&G,de=p!==void 0,R={status:v,fetchStatus:u.fetchStatus,isPending:K,isSuccess:v==="success",isError:$,isInitialLoading:le,isLoading:le,data:p,dataUpdatedAt:u.dataUpdatedAt,error:N,errorUpdatedAt:Q,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>w.dataUpdateCount||u.errorUpdateCount>w.errorUpdateCount,isFetching:G,isRefetching:G&&!K,isLoadingError:$&&!de,isPaused:u.fetchStatus==="paused",isPlaceholderData:U,isRefetchError:$&&de,isStale:ce(e,t),refetch:this.refetch,promise:s(this,S),isEnabled:C(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const b=V=>{R.status==="error"?V.reject(R.error):R.data!==void 0&&V.resolve(R.data)},z=()=>{const V=d(this,S,R.promise=pe());b(V)},P=s(this,S);switch(P.status){case"pending":e.queryHash===r.queryHash&&b(P);break;case"fulfilled":(R.status==="error"||R.data!==P.value)&&z();break;case"rejected":(R.status!=="error"||R.error!==P.reason)&&z();break}}return R}updateResult(){const e=s(this,m),t=this.createResult(s(this,n),this.options);if(d(this,E,s(this,n).state),d(this,k,this.options),s(this,E).data!==void 0&&d(this,L,s(this,n)),J(t,e))return;d(this,m,t);const r=()=>{if(!e)return!0;const{notifyOnChangeProps:l}=this.options,o=typeof l=="function"?l():l;if(o==="all"||!o&&!s(this,F).size)return!0;const c=new Set(o??s(this,F));return this.options.throwOnError&&c.add("error"),Object.keys(s(this,m)).some(x=>{const f=x;return s(this,m)[f]!==e[f]&&c.has(f)})};h(this,a,Ce).call(this,{listeners:r()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&h(this,a,se).
1call(this)}},y=new WeakMap,n=new WeakMap,H=new WeakMap,m=new WeakMap,E=new WeakMap,k=new WeakMap,S=new WeakMap,T=new WeakMap,W=new WeakMap,O=new WeakMap,L=new WeakMap,M=new WeakMap,B=new WeakMap,I=new WeakMap,F=new WeakMap,a=new WeakSet,j=function(e){h(this,a,ae).call(this);let t=s(this,n).fetch(this.options,e);return e!=null&&e.throwOnError||(t=t.catch(X)),t},ee=function(){h(this,a,re).call(this);const e=Y(this.options.staleTime,s(this,n));if(Z||s(this,m).isStale||!fe(e))return;const r=Se(s(this,m).dataUpdatedAt,e)+1;d(this,M,setTimeout(()=>{s(this,m).isStale||this.updateResult()},r))},te=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(s(this,n)):this.options.refetchInterval)??!1},ie=function(e){h(this,a,ne).call(this),d(this,I,e),!(Z||C(this.options.enabled,s(this,n))===!1||!fe(s(this,I))||s(this,I)===0)&&d(this,B,setInterval(()=>{(this.options.refetchIntervalInBackground||Te.isFocused())&&h(this,a,j).call(this)},s(this,I)))},se=function(){h(this,a,ee).call(this),h(this,a,ie).call(this,h(this,a,te).call(this))},re=function(){s(this,M)&&(clearTimeout(s(this,M)),d(this,M,void 0))},ne=function(){s(this,B)&&(clearInterval(s(this,B)),d(this,B,void 0))},ae=function(){const e=s(this,y).getQueryCache().build(s(this,y),this.options);if(e===s(this,n))return;const t=s(this,n);d(this,n,e),d(this,H,e.state),this.hasListeners()&&(t==null||t.removeObserver(this),e.addObserver(this))},Ce=function(e){we.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(s(this,m))}),s(this,y).getQueryCache().notify({query:s(this,n),type:"observerResultsUpdated"})})},be);function Be(i,e){return C(e.enabled,i)!==!1&&i.state.data===void 0&&!(i.state.status==="error"&&e.retryOnMount===!1)}function me(i,e){return Be(i,e)||i.state.data!==void 0&&oe(i,e,e.refetchOnMount)}function oe(i,e,t){if(C(e.enabled,i)!==!1&&Y(e.staleTime,i)!=="static"){const r=typeof t=="function"?t(i):t;return r==="always"||r!==!1&&ce(i,e)}return!1}function ye(i,e,t,r){return(i!==e||C(r.enabled,i)===!1)&&(!t.suspense||i.state.status!=="error")&&ce(i,t)}function ce(i,e){return C(e.enabled,i)!==!1&&i.isStaleByTime(Y(e.staleTime,i))}function Pe(i,e){return!J(i.getCurrentResult(),e)}var Re=D.createContext(!1),ke=()=>D.useContext(Re);Re.Provider;function Oe(){let i=!1;return{clearReset:()=>{i=!1},reset:()=>{i=!0},isReset:()=>i}}var Le=D.createContext(Oe()),Fe=()=>D.useContext(Le),Ae=(i,e)=>{(i.suspense||i.throwOnError||i.experimental_prefetchInRender)&&(e.isReset()||(i.retryOnMount=!1))},Ue=i=>{D.useEffect(()=>{i.clearReset()},[i])},Ne=({result:i,errorResetBoundary:e,throwOnError:t,query:r,suspense:l})=>i.isError&&!e.isReset()&&!i.isFetching&&r&&(l&&i.data===void 0||xe(t,[i.error,r])),Qe=i=>{if(i.suspense){const e=r=>r==="static"?r:Math.max(r??1e3,1e3),t=i.staleTime;i.staleTime=typeof t=="function"?(...r)=>e(t(...r)):e(t),typeof i.gcTime=="number"&&(i.gcTime=Math.max(i.gcTime,1e3))}},je=(i,e)=>i.isLoading&&i.isFetching&&!e,Ye=(i,e)=>(i==null?void 0:i.suspense)&&e.isPending,ve=(i,e,t)=>e.fetchOptimistic(i).catch(()=>{t.clearReset()});function He(i,e,t){var u,U,p,N,Q;const r=ke(),l=Fe(),o=Ee(),c=o.defaultQueryOptions(i);(U=(u=o.getDefaultOptions().queries)==null?void 0:u._experimental_beforeQuery)==null||U.call(u,c),c._optimisticResults=r?"isRestoring":"optimistic",Qe(c),Ae(c,l),Ue(l);const x=!o.getQueryCache().get(c.queryHash),[f]=D.useState(()=>new e(o,c)),w=f.getOptimisticResult(c),A=!r&&i.subscribed!==!1;if(D.useSyncExternalStore(D.useCallback(v=>{const _=A?f.subscribe(we.batchCalls(v)):X;return f.updateResult(),_},[f,A]),()=>f.getCurrentResult(),()=>f.getCurrentResult()),D.useEffect(()=>{f.setOptions(c)},[c,f]),Ye(c,w))throw ve(c,f,l);if(Ne({result:w,errorResetBoundary:l,throwOnError:c.throwOnError,query:o.getQueryCache().get(c.queryHash),suspense:c.suspense}))throw w.error;if((N=(p=o.getDefaultOptions().queries)==null?void 0:p._experimental_afterQuery)==null||N.call(p,c,w),c.experimental_prefetchInRender&&!Z&&je(w,r)){const v=x?ve(c,f,l):(Q=o.getQueryCache().get(c.queryHash))==null?void 0:Q.promise;v==null||v.catch(X).finally(()=>{f.updateResult()})}return c.notifyOnChangeProps?w:f.trackResult(w)}function Ke(i,e){return He(i,Me)}const We={"settings.title":"Settings","settings.reflectionMode":"Reflection Mode","settings.reflectionMode.description":"Choose how NexoMind reflects back to you.","settings.reflectionMode.companion":"Companion","settings.reflectionMode.companion.description":"Empathetic, supportive reflections","settings.reflectionMode.challenger"
1:"Challenger","settings.reflectionMode.challenger.description":"Direct, growth-focused reflections that name cognitive distortions","settings.notifications":"Notifications","settings.patternInterrupts":"Pattern Interrupts","settings.patternInterrupts.description":"When NexoMind learns the times your loops tend to open, it can send a calm nudge. Never spam, never daily.","settings.patternInterrupts.channel":"Delivery Channel","settings.patternInterrupts.push":"Push notifications","settings.patternInterrupts.push.description":"Receive a push notification on your device","settings.patternInterrupts.banner":"In-app banners only","settings.patternInterrupts.banner.description":"See a banner next time you open the app","settings.patternInterrupts.off":"Off","settings.patternInterrupts.off.description":"No pattern interrupt notifications","settings.patternInterrupts.saved":"Pattern interrupt preference saved.","settings.patternInterrupts.error":"Could not save preference","settings.reflectionMode.saved":"Reflection mode updated.","settings.reflectionMode.error":"Could not update reflection mode","challenger.notice":"Challenger mode active â distortions named directly","challenger.notice.dismiss":"Dismiss","patternInterrupt.title":"Pattern Interrupt","patternInterrupt.dismiss":"Dismiss","patternInterrupt.expired":"This pattern interrupt has expired","patternInterrupt.banner.distortion":"Recurring pattern: {{distortion}}","general.save":"Save","general.cancel":"Cancel","general.loading":"Loading...","general.error":"Something went wrong","general.retry":"Retry","general.upgrade":"Upgrade","general.premiumFeature":"Premium Feature","tier.free":"Free","tier.premium":"Premium","tier.premiumPlus":"Premium+","voice.startRecording":"Start voice recording","voice.stopRecording":"Stop recording","voice.submit":"Submit recording","voice.reRecord":"Re-record","voice.discard":"Discard recording","voice.processing":"Transcribing...","voice.done":"Entry saved","voice.permissionDenied":"Microphone access denied. Please allow microphone permission in your browser settings.","voice.tooShort":"Recording too short. Please record at least 3 seconds.","voice.unsupported":"Voice recording is not supported on this device.","voice.freeTierUpsell":"Upgrade to Premium for full voice journaling","inbox.kicker":"Inbox","inbox.title":"Letters from yourself.","inbox.subtitle":"Weekly reflections synthesized from your journal entries.","inbox.unavailable":"This feature is not available yet.","inbox.empty.title":"No letters yet","inbox.empty.description":"Your first Sunday Letter will arrive once you have a few journal entries. Keep reflecting and it will come.","inbox.letterTitle":"Week of {{date}}","inbox.expand":"Read","inbox.collapse":"Close","settings.sundayLetter":"Sunday Letter","settings.sundayLetter.description":"A weekly letter from yourself, synthesizing themes and patterns from your recent reflections. Never contains raw journal text.","settings.sundayLetter.enable":"Enable Sunday Letter","settings.sundayLetter.deliveryTime":"Delivery time","settings.sundayLetter.channels":"Notification channels","settings.sundayLetter.emailChannel":"Email","settings.sundayLetter.pushChannel":"Push notification","settings.sundayLetter.saved":"Sunday Letter preferences saved.","settings.sundayLetter.error":"Could not save Sunday Letter preferences","e2ee.title":"End-to-End Encryption","e2ee.badge":"Encrypted","e2ee.lockedTitle":"Private Mode","e2ee.lockedDescription":"End-to-end encryption ensures not even NexoMind can read your entries. Available exclusively on the Premium+ plan.","e2ee.upgrade":"Upgrade to Premium+","e2ee.readyTitle":"Enable Private Mode","e2ee.readyDescription":"Encrypt your journal with a passphrase only you know. Your entries will be unreadable to anyone without it, including us.","e2ee.enableButton":"Enable E2EE","e2ee.enabledTitle":"Private Mode Active","e2ee.disclosure":"Your entries are encrypted with a key derived from your passphrase. Even we cannot read your journal. If you forget your passphrase, your data is permanently unrecoverable.","e2ee.cryptoDetail
1s":"Cryptographic details","e2ee.llmStatus":"On-device analysis","e2ee.llmAvailable":"Chrome Prompt API detected. Analysis runs entirely on your device.","e2ee.llmUnavailable":"No on-device LLM detected. Analysis will be limited until browser support is available.","e2ee.llmUnavailableNotice":"On-device analysis paused (no supported LLM detected)","e2ee.modal.step1Title":"Create your passphrase","e2ee.modal.step1Description":"Choose a strong passphrase (at least 12 characters). This is the only key to your encrypted data.","e2ee.modal.passphrasePlaceholder":"Enter a strong passphrase...","e2ee.modal.passphraseHint":"Minimum 12 characters. Use a mix of words, numbers, and symbols.","e2ee.modal.passphraseError":"Passphrase must be at least 12 characters","e2ee.modal.step2Title":"Confirm your passphrase","e2ee.modal.step2Description":"Type your passphrase again to make sure you have it memorized.","e2ee.modal.confirmPlaceholder":"Re-enter your passphrase...","e2ee.modal.mismatchError":"Passphrases do not match","e2ee.modal.step3Title":"Important","e2ee.modal.irrecoverableWarning":"If you forget your passphrase, your encrypted entries cannot be recovered. There is no reset option. NexoMind does not store your passphrase and cannot decrypt your data.","e2ee.modal.acknowledgment":"I understand that if I lose my passphrase, my encrypted journal entries will be permanently inaccessible.","e2ee.modal.continue":"Continue","e2ee.modal.activate":"Activate E2EE","e2ee.modal.activating":"Activating...","e2ee.modal.success":"End-to-end encryption is now active. Your entries are private.","e2ee.modal.activationError":"Failed to activate E2EE. Please try again.","integrations.title":"Integrations","integrations.heading":"Connected Services","integrations.description":"Connect wearables and calendars to enrich your reflections with sleep, HRV, and meeting context.","integrations.lockedTitle":"Wearable & Calendar Integrations","integrations.lockedDescription":"Connect your Oura Ring, Google Fit, or calendar to give NexoMind richer context for your reflections. Available on Premium.","integrations.connect":"Connect","integrations.disconnect":"Disconnect","integrations.disconnecting":"Disconnecting...","integrations.disconnected":"Integration disconnected.","integrations.disconnectError":"Could not disconnect integration.","integrations.connectedAt":"Connected {{date}}","integrations.comingSoon":"Coming soon","integrations.maskTitles":"Mask event titles (only share count and duration)","integrations.maskUpdated":"Calendar masking preference saved.","integrations.maskError":"Could not update masking preference.","integrations.oura":"Oura Ring","integrations.googleFit":"Google Fit","integrations.googleCalendar":"Google Calendar","integrations.appleHealth":"Apple Health","integrations.appleCalendar":"Apple Calendar","mindmap.entryReferences":"What built this node","mindmap.clusteredView":"Showing top {{shown}} of {{total}} nodes by frequency","mindmap.showAll":"Show all","mindmap.showingAll":"Showing all {{total}} nodes","mindmap.showClustered":"Show clustered view","disclaimer.crisisResources":"If you are in crisis","disclaimer.accept":"I accept","therapistBridge.kicker":"Therapist Bridge","therapistBridge.title":"Bridge to your therapist.","therapistBridge.subtitle":"Generate a structured brief from your recent reflections to share with your mental health professional.","therapistBridge.unavailable":"This feature is not available yet.","therapistBridge.premiumTitle":"Therapist Bridge","therapistBridge.premiumSubtitle":"Share structured insights with your therapist. Available on Premium.","therapistBridge.disclaimerNeeded":"Before using Therapist Bridge, please review and accept the disclaimer.","therapistBridge.reviewDisclaimer":"Review disclaimer","therapistBridge.disclaimerTitle":"Therapist Bridge Disclaimer","therapistBridge.disclaimerBody":`This feature generates an AI-assisted summary of your journal entries intended as supplementary context for a licensed mental health professional. 2 3It is NOT a clinical assessment, diagnosis, or treatment recommendation. 4 5The generated brief may contain inaccuracies. Your therapist should use their professional judgment when interpreting this document. 6 7You control which entries are included and can redact any entry before generating the PDF.`,"therapistBridge.disclaimerAck":"I understand that this is not a clinical document and that I am sharing AI-generated analysis with my therapist at my own discretion.","therapistBridge.generateTitle":"Generate Brief","therapistBridge.generateDescription":"NexoMind will analyze your last 30 days of journal entries and produce a structured brief covering themes, cognitive patterns, mood trends, and representative entries.","therapistBridge.generateButton":"Generate therapist brief","therapistBridge.insufficientData":"You need at least 3 analyzed journal entries in the last 30 days to generate a brief.","therapistBridge.e2eeBlocked":"Therapist briefs cannot be generated
7when end-to-end encryption is active. Briefs must be generated on-device.","therapistBridge.previewTitle":"Brief Preview","therapistBridge.themes":"Themes","therapistBridge.distortions":"Distortions","therapistBridge.entries":"Representative Entries","therapistBridge.redactHint":"Uncheck entries you want to exclude from the PDF.","therapistBridge.include":"Include in PDF","therapistBridge.redact":"Redact from PDF","therapistBridge.summary":"Summary","therapistBridge.downloadPDF":"Download PDF","therapistBridge.downloaded":"Your therapist brief PDF is downloading.","therapistBridge.setReminder":"Set reminder","therapistBridge.regenerate":"Regenerate","therapistBridge.reminderDescription":"Set a reminder to share this brief with your therapist before your next session.","therapistBridge.confirmReminder":"Set reminder","therapistBridge.reminderSet":"Reminder set for {{hours}} hours from now.","therapistBridge.reminderBody":"Remember to share your therapist brief before your next session.","crisisDetection.title":"Crisis Detection","crisisDetection.localeTitle":"Crisis Detection","crisisDetection.localeUnavailable":"Crisis detection is not yet available in your region. We are working on locale-appropriate resources and will notify you when it becomes available.","crisisDetection.setupTitle":"Crisis Safety Net","crisisDetection.setupDescription":"An optional safety feature that monitors your journal entries for signs of acute distress. When triggered, it surfaces crisis resources - it never contacts anyone automatically.","crisisDetection.beginSetup":"Set up crisis detection","crisisDetection.disclaimerTitle":"Crisis Detection Disclaimer","crisisDetection.disclaimerBody":`This feature uses pattern-based analysis to detect potential signs of crisis in your journal entries. 8 9It is NOT a substitute for professional crisis intervention. 10It will NEVER automatically contact emergency services or any other person. 11It may produce false positives or miss genuine crises. 12 13If you are in immediate danger, please contact emergency services directly.`,"crisisDetection.disclaimerAck":"I understand that crisis detection is not a substitute for professional help and that it will never automatically contact anyone on my behalf.","crisisDetection.explanationTitle":"How it works","crisisDetection.explanationBody":`NexoMind analyzes your journal entries for patterns associated with acute distress, including specific language patterns and voice biomarker changes. 14 15When the signal exceeds a threshold, you will see a card with crisis resources. You choose whether to act on it. 16 17No data is shared externally. No one is contacted without your explicit action.`,"crisisDetection.continue":"I understand, continue","crisisDetection.optInTitle":"Confirm activation","crisisDetection.optInBody":"By activating crisis detection, you consent to NexoMind analyzing your entries for distress patterns. You can disable this at any time from Settings.","crisisDetection.activate":"Activate crisis detection","crisisDetection.enabled":"Crisis detection is now active.","crisisDetection.disabled":"Crisis detection has been disabled.","crisisDetection.activeTitle":"Crisis Detection Active","crisisDetection.activeDescription":"Your journal entries are being monitored for signs of acute distress. If triggered, you will see a card with crisis resources.","crisisDetection.trustedContact":"Trusted Contact","crisisDetection.contactName":"Contact name","crisisDetection.contactPhone":"Phone number","crisisDetection.contactSaved":"Trusted contact saved.","crisisDetection.disable":"Disable crisis detection","crisisDetection.trustedMessage":"Hi, this is a message from NexoMind on behalf of {{name}}. They wanted to let you know they could use some support right now.","crisisCard.title":"You matter","crisisCard.body":"Something in your recent reflection caught our attention. You do not have to face this alone. Here are some people who can help right now.","crisisCard.dismiss":"Dismiss","crisisCard.call988":"988 Suicide & Crisis Lifeline (US)","crisisCard.callSamaritans":"Samaritans: 116 123 (UK/IE)","crisisCard.contactTrusted":"Message {{name}}","crisisCard.footer":"NexoMind will never contact anyone on your behalf without your action.","persona.pickerTitle":"Mentor Persona","persona.none":"Default","persona.youMentor":"You-Mentor","persona.youMentorProgress":"{{current}}/{{total}} entries","persona.youMentorLocked":"You need at least 30 journal entries to unlock You-Mentor.","persona.youMentorLockedTitle":"You-Mentor Locked","persona.youMentorLockedDescription":"Write at least 30 journal entries to unlock your personalized mentor voice. The more you write, the better it understands you.","persona.rateLimitFree":"Free tier: 1 persona switch per week. Upgrade for unlimited switches.","persona.switched":"Mentor persona updated.","persona.modeConflict":"Your persona does not fully support this mode - reflection mode rules still apply.","persona.settingsKicker":"Mentor Persona","persona.settingsTitle":"AI Mentor Voice","persona.settingsDescription":"Choose a persona to shape how NexoMind reflects back to you. Each persona brings a different c
17ommunication style.","persona.currentPersona":"Active","persona.manageProfile":"Manage profile","persona.profileKicker":"You-Mentor","persona.profileSubtitle":"A mentor voice trained on your own patterns and vocabulary.","persona.profileRefreshed":"You-Mentor profile refreshed from your latest entries.","persona.profileSaved":"You-Mentor profile saved.","persona.profileThemes":"Your Voice Profile","persona.profileThemesHint":"Themes, vocabulary, and reframing style extracted from your journal history.","persona.themes":"Themes","persona.vocab":"Vocabulary","persona.reframeStyle":"Reframing Style","persona.refresh":"Refresh","persona.refreshing":"Refreshing...","persona.lastRefresh":"Last refreshed: {{date}}","persona.sourceEntries":"{{count}} entries analyzed"},_e=We;function $e(i,e){let t=_e[i];if(t===void 0)return i;if(e)for(const[r,l]of Object.entries(e))t=t.replace(new RegExp(`\\{\\{${r}\\}\\}`,"g"),String(l));return t}export{$e as t,Ke as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.