@versini/sassysaint-common 4.75.0 → 4.77.0

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.
@@ -1 +1 @@
1
- export*from"./memory.js";export*from"./theme-types.js";let E="system",O="user",e="assistant",_="OpenAI",R="Anthropic",T="Google",S="Summary",t="Memory",A="Perplexity",a=_,I=[_,R,T],L="gpt-6.1-sol",i="gpt-6-luna",s="claude-opus-5-5",D="claude-sonnet-5-5",N="claude-haiku-5-5",P="gemini-3.8-flash",n="gemini-3.5-flash-lite",o="sonar",r="sonar-pro",M="perplexity-search",g="openai/gpt-oss-20b:free",C="perplexity-search",l="openai-web-search",u="google-tts-chirp3-hd",c="google-tts-neural2",U="google-tts-wavenet",h="serpapi",d="iproyal-residential",p="claude-haiku-5-5",G="gpt-6-luna",H="gemini-3.5-flash-lite",m="gemini-3.8-flash",V="gpt-6.1-sol",B="gpt-6-luna",y="gpt-5.6-luna",Y="gemini-3.6-flash",F="text-embedding-3-small",W="gpt-image-2.6-sunburst",f=5,X=1e4,b=3e3,w={[L]:"GPT-6.1 Sol",[i]:"GPT-6 Luna",[s]:"Claude Opus 5.5",[D]:"Claude Sonnet 5.5",[N]:"Claude Haiku 5.5",[P]:"Gemini 3.8 Flash",[n]:"Gemini 3.5 Flash-Lite",[o]:"Sonar",[r]:"Sonar Pro",[M]:"Perplexity Search",[W]:"GPT Image 2.6 Sunburst"},k=[L,i,s,D,N,n,P,W],x=[L,i,s,D,N,P,n],K="fast",Z="balanced",v="thorough",z=[K,Z,v],Q={[K]:"low",[Z]:"medium",[v]:"high"},j={[_]:K,[R]:Z,[T]:K},q="none",J=["settings","shortcuts","memories","history","usage","about"],$={[_]:[L,i],[R]:[s,N,D],[T]:[n,P],[A]:[o,r,M]},EE={[_]:[E,O,e],[R]:[O,e],[S]:[O,e],[t]:[O,e],[T]:[O,e],[A]:[O,e]},EO={[R]:["claude-opus-5","claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-5","claude-haiku-4","claude-3"],[_]:["gpt-","o3","o4"],[T]:["gemini"],[A]:["sonar"]},Ee="x-diggidy-chat-id",E_="SERVICE_PAUSED",ER="CREDITS_EXHAUSTED",ET="CREDITS_ON_HOLD",ES=.01,Et=.2,EA="x-diggidy-chat-timestamp",Ea="complete",EI="timestamp",EL="tokenUsage",Ei="Diggidy",Es="sassy:basic",ED="sassy:plus",EN={TOOL:{BARCODE:"getProductByBarcode",BUNDLESIZE:"getBundleSize",DATETIME:"getDateTime",GENERATE_IMAGE:"generateImage",IMAGES:"getImages",NUTRITION_FACTS:"getNutritionFacts",POLLUTION:"getAirPollution",WEATHER:"getWeather",URLCONTENTPARSER:"getUrlContent",MEMORIES:"getUserMemories",HUMANIZE:"humanize",WEBSEARCH:"getWebSearch",GITREPOSITORY:"getGitRepoDetails",HOTELS:"getHotelDetails",LOCAL_BUSINESSES:"getLocalBusinesses",NEWS_BRIEF:"getNewsBrief",PRODUCTS:"getProducts",REVIEW_TRUST:"getReviewTrust",STREAMING_PICKS:"getStreamingPicks",PRONUNCIATION:"getPronunciation",FRENCH_TEACHINGS:"getFrenchTeachings",PAST_CHATS:"searchPastChats"},ADDON:{ATTACHMENTS:"addon:attachments",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},EP={code_interpreter:"Running code...",web_search:"Searching the web...",[EN.TOOL.WEATHER]:"Checking the weather...",[EN.TOOL.POLLUTION]:"Fetching air pollution data...",[EN.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[EN.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[EN.TOOL.WEBSEARCH]:"Searching the web...",[EN.TOOL.GITREPOSITORY]:"Looking up repository...",[EN.TOOL.HOTELS]:"Searching for hotels...",[EN.TOOL.LOCAL_BUSINESSES]:"Searching for local businesses...",[EN.TOOL.NEWS_BRIEF]:"Reading today's news...",[EN.TOOL.PRODUCTS]:"Searching for products...",[EN.TOOL.REVIEW_TRUST]:"Checking reviews...",[EN.TOOL.STREAMING_PICKS]:"Finding movies to stream...",[EN.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[EN.TOOL.GENERATE_IMAGE]:"Generating image...",[EN.TOOL.BARCODE]:"Looking up product...",[EN.TOOL.PRONUNCIATION]:"Generating pronunciation...",[EN.TOOL.HUMANIZE]:"Rewriting text...",[EN.TOOL.IMAGES]:"Searching for images...",[EN.TOOL.PAST_CHATS]:"Searching your past chats..."},En="Using tools...",Eo=8e5,Er=16384,EM=4,Eg=3,EC=8388608,El="context-compression-summary",Eu="data-urlRead",Ec="[Note from the system: you read",EU="data-newsLinks";export{k as ALL_MODELS,I as ALL_PROVIDERS,x as ALL_REASONING_MODELS,Ei as APPLICATION_NAME,EO as APPROXIMATE_MODELS_PER_PROVIDER,EN as CAPABILITIES,Ea as CHAT_COMPLETION_MARKER_KEY,Eo as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,Eg as CONTEXT_COMPRESSION_KEEP_IMAGES,EM as CONTEXT_COMPRESSION_KEEP_RECENT,EC as CONTEXT_COMPRESSION_MAX_DOCUMENT_BYTES,El as CONTEXT_COMPRESSION_SUMMARY_ID,ER as CREDITS_EXHAUSTED,ET as CREDITS_ON_HOLD,ES as CREDIT_USD,a as DEFAULT_PROVIDER,j as DEFAULT_RESPONSE_SPEED,En as DEFAULT_TOOL_LOADING_LABEL,Ee as DIGGIDY_CHAT_ID_HEADER,EA as DIGGIDY_CHAT_TIMESTAMP_HEADER,Et as LOW_CREDITS_SHARE,Er as MAX_OUTPUT_TOKENS,f as MAX_SEARCH_QUERIES,$ as MODELS_PER_PROVIDER,N as MODEL_ANTHROPIC_LOW,D as MODEL_ANTHROPIC_MEDIUM,s as MODEL_ANTHROPIC_TOP,G as MODEL_CHAT_SUMMARY,g as MODEL_DEV,w as MODEL_DISPLAY_NAMES,F as MODEL_EMBEDDING_TEXT,W as MODEL_GENERATE_IMAGE,n as MODEL_GOOGLE_MEDIUM,P as MODEL_GOOGLE_TOP,V as MODEL_HUMANIZE_AUDIT,m as MODEL_HUMANIZE_REWRITE,p as MODEL_MEMORY_INFERENCE,B as MODEL_NUTRITION_SEARCH,i as MODEL_OPENAI_MEDIUM,L as MODEL_OPENAI_TOP,M as MODEL_PERPLEXITY_SEARCH,y as MODEL_REVIEW_TRUST_PANEL,Y as MODEL_REVIEW_TRUST_PANEL_GOOGLE,H as MODEL_SEARCH_DECOMPOSER,o as MODEL_SONAR,r as MODEL_SONAR_PRO,EU as NEWS_LINKS_PART_TYPE,Es as PLAN_BASIC,ED as PLAN_PLUS,R as PROVIDER_ANTHROPIC,T as PROVIDER_GOOGLE,t as PROVIDER_MEMORY,_ as PROVIDER_OPENAI,A as PROVIDER_PERPLEXITY,EE as PROVIDER_ROLE_MAP,S as PROVIDER_SUMMARY,q as QUICK_ACCESS_NONE,J as QUICK_ACCESS_PANELS,z as RESPONSE_SPEEDS,Z as RESPONSE_SPEED_BALANCED,K as RESPONSE_SPEED_FAST,v as RESPONSE_SPEED_THOROUGH,Q as RESPONSE_SPEED_TO_EFFORT,e as ROLE_ASSISTANT,E as ROLE_SYSTEM,O as ROLE_USER,b as SEARCH_DECOMPOSE_TIMEOUT_MS,X as SEARCH_QUERY_TIMEOUT_MS,E_ as SERVICE_PAUSED,EI as SORT_BY_TIMESTAMP,EL as SORT_BY_TOKEN_USAGE,EP as TOOL_LOADING_LABELS,Ec as URL_READ_NOTE_PREFIX,Eu as URL_READ_PART_TYPE,u as VENDOR_GOOGLE_TTS_CHIRP3_HD,c as VENDOR_GOOGLE_TTS_NEURAL2,U as VENDOR_GOOGLE_TTS_WAVENET,d as VENDOR_IPROYAL_RESIDENTIAL,l as VENDOR_OPENAI_WEB_SEARCH,C as VENDOR_PERPLEXITY_SEARCH,h as VENDOR_SERPAPI};
1
+ export*from"./memory.js";export*from"./theme-types.js";let E="system",O="user",e="assistant",_="OpenAI",R="Anthropic",S="Google",T="Summary",t="Memory",A="Perplexity",a=_,I=[_,R,S],L="gpt-6.1-sol",i="gpt-6-luna",s="claude-opus-5-5",N="claude-sonnet-5-5",P="claude-haiku-5-5",D="gemini-3.8-flash",n="gemini-3.5-flash-lite",o="sonar",r="sonar-pro",M="perplexity-search",g="openai/gpt-oss-20b:free",C="perplexity-search",l="openai-web-search",u="google-tts-chirp3-hd",c="google-tts-neural2",U="google-tts-wavenet",h="serpapi",d="iproyal-residential",p="claude-haiku-5-5",G="gpt-6-luna",H="gemini-3.5-flash-lite",m="gemini-3.8-flash",V="gpt-6.1-sol",y="gpt-6-luna",B="gpt-5.6-luna",Y="gemini-3.6-flash",F="text-embedding-3-small",W="gpt-image-2.6-sunburst",X=5,f=1e4,b=3e3,w={[L]:"GPT-6.1 Sol",[i]:"GPT-6 Luna",[s]:"Claude Opus 5.5",[N]:"Claude Sonnet 5.5",[P]:"Claude Haiku 5.5",[D]:"Gemini 3.8 Flash",[n]:"Gemini 3.5 Flash-Lite",[o]:"Sonar",[r]:"Sonar Pro",[M]:"Perplexity Search",[W]:"GPT Image 2.6 Sunburst"},k=[L,i,s,N,P,n,D,W],x=[L,i,s,N,P,D,n],K="fast",Z="balanced",Q="thorough",v=[K,Z,Q],z={[K]:"low",[Z]:"medium",[Q]:"high"},j={[_]:K,[R]:Z,[S]:K},q=2,J="none",$=["settings","shortcuts","memories","history","usage","about"],EE={[_]:[L,i],[R]:[s,P,N],[S]:[n,D],[A]:[o,r,M]},EO={[_]:[E,O,e],[R]:[O,e],[T]:[O,e],[t]:[O,e],[S]:[O,e],[A]:[O,e]},Ee={[R]:["claude-opus-5","claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-5","claude-haiku-4","claude-3"],[_]:["gpt-","o3","o4"],[S]:["gemini"],[A]:["sonar"]},E_="x-diggidy-chat-id",ER="SERVICE_PAUSED",ES="CREDITS_EXHAUSTED",ET="CREDITS_ON_HOLD",Et=.01,EA=.2,Ea="x-diggidy-chat-timestamp",EI="complete",EL="timestamp",Ei="tokenUsage",Es="Diggidy",EN="sassy:basic",EP="sassy:plus",ED="sassy:none",En={TOOL:{BARCODE:"getProductByBarcode",BUNDLESIZE:"getBundleSize",DATETIME:"getDateTime",GENERATE_IMAGE:"generateImage",IMAGES:"getImages",NUTRITION_FACTS:"getNutritionFacts",POLLUTION:"getAirPollution",WEATHER:"getWeather",URLCONTENTPARSER:"getUrlContent",MEMORIES:"getUserMemories",HUMANIZE:"humanize",WEBSEARCH:"getWebSearch",GITREPOSITORY:"getGitRepoDetails",HOTELS:"getHotelDetails",LOCAL_BUSINESSES:"getLocalBusinesses",NEWS_BRIEF:"getNewsBrief",PRODUCTS:"getProducts",REVIEW_TRUST:"getReviewTrust",STREAMING_PICKS:"getStreamingPicks",PRONUNCIATION:"getPronunciation",FRENCH_TEACHINGS:"getFrenchTeachings",PAST_CHATS:"searchPastChats"},ADDON:{ATTACHMENTS:"addon:attachments",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},Eo={code_interpreter:"Running code...",web_search:"Searching the web...",[En.TOOL.WEATHER]:"Checking the weather...",[En.TOOL.POLLUTION]:"Fetching air pollution data...",[En.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[En.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[En.TOOL.WEBSEARCH]:"Searching the web...",[En.TOOL.GITREPOSITORY]:"Looking up repository...",[En.TOOL.HOTELS]:"Searching for hotels...",[En.TOOL.LOCAL_BUSINESSES]:"Searching for local businesses...",[En.TOOL.NEWS_BRIEF]:"Reading today's news...",[En.TOOL.PRODUCTS]:"Searching for products...",[En.TOOL.REVIEW_TRUST]:"Checking reviews...",[En.TOOL.STREAMING_PICKS]:"Finding movies to stream...",[En.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[En.TOOL.GENERATE_IMAGE]:"Generating image...",[En.TOOL.BARCODE]:"Looking up product...",[En.TOOL.PRONUNCIATION]:"Generating pronunciation...",[En.TOOL.HUMANIZE]:"Rewriting text...",[En.TOOL.IMAGES]:"Searching for images...",[En.TOOL.PAST_CHATS]:"Searching your past chats..."},Er="Using tools...",EM=8e5,Eg=16384,EC=4,El=3,Eu=8388608,Ec="context-compression-summary",EU="data-urlRead",Eh="[Note from the system: you read",Ed="data-newsLinks";export{k as ALL_MODELS,I as ALL_PROVIDERS,x as ALL_REASONING_MODELS,Es as APPLICATION_NAME,Ee as APPROXIMATE_MODELS_PER_PROVIDER,En as CAPABILITIES,EI as CHAT_COMPLETION_MARKER_KEY,EM as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,El as CONTEXT_COMPRESSION_KEEP_IMAGES,EC as CONTEXT_COMPRESSION_KEEP_RECENT,Eu as CONTEXT_COMPRESSION_MAX_DOCUMENT_BYTES,Ec as CONTEXT_COMPRESSION_SUMMARY_ID,ES as CREDITS_EXHAUSTED,ET as CREDITS_ON_HOLD,Et as CREDIT_USD,a as DEFAULT_PROVIDER,j as DEFAULT_RESPONSE_SPEED,Er as DEFAULT_TOOL_LOADING_LABEL,E_ as DIGGIDY_CHAT_ID_HEADER,Ea as DIGGIDY_CHAT_TIMESTAMP_HEADER,EA as LOW_CREDITS_SHARE,Eg as MAX_OUTPUT_TOKENS,X as MAX_SEARCH_QUERIES,EE as MODELS_PER_PROVIDER,P as MODEL_ANTHROPIC_LOW,N as MODEL_ANTHROPIC_MEDIUM,s as MODEL_ANTHROPIC_TOP,G as MODEL_CHAT_SUMMARY,g as MODEL_DEV,w as MODEL_DISPLAY_NAMES,F as MODEL_EMBEDDING_TEXT,W as MODEL_GENERATE_IMAGE,n as MODEL_GOOGLE_MEDIUM,D as MODEL_GOOGLE_TOP,V as MODEL_HUMANIZE_AUDIT,m as MODEL_HUMANIZE_REWRITE,p as MODEL_MEMORY_INFERENCE,y as MODEL_NUTRITION_SEARCH,i as MODEL_OPENAI_MEDIUM,L as MODEL_OPENAI_TOP,M as MODEL_PERPLEXITY_SEARCH,B as MODEL_REVIEW_TRUST_PANEL,Y as MODEL_REVIEW_TRUST_PANEL_GOOGLE,H as MODEL_SEARCH_DECOMPOSER,o as MODEL_SONAR,r as MODEL_SONAR_PRO,Ed as NEWS_LINKS_PART_TYPE,EN as PLAN_BASIC,ED as PLAN_NONE,EP as PLAN_PLUS,R as PROVIDER_ANTHROPIC,S as PROVIDER_GOOGLE,t as PROVIDER_MEMORY,_ as PROVIDER_OPENAI,A as PROVIDER_PERPLEXITY,EO as PROVIDER_ROLE_MAP,T as PROVIDER_SUMMARY,q as QUICK_ACCESS_MAX,J as QUICK_ACCESS_NONE,$ as QUICK_ACCESS_PANELS,v as RESPONSE_SPEEDS,Z as RESPONSE_SPEED_BALANCED,K as RESPONSE_SPEED_FAST,Q as RESPONSE_SPEED_THOROUGH,z as RESPONSE_SPEED_TO_EFFORT,e as ROLE_ASSISTANT,E as ROLE_SYSTEM,O as ROLE_USER,b as SEARCH_DECOMPOSE_TIMEOUT_MS,f as SEARCH_QUERY_TIMEOUT_MS,ER as SERVICE_PAUSED,EL as SORT_BY_TIMESTAMP,Ei as SORT_BY_TOKEN_USAGE,Eo as TOOL_LOADING_LABELS,Eh as URL_READ_NOTE_PREFIX,EU as URL_READ_PART_TYPE,u as VENDOR_GOOGLE_TTS_CHIRP3_HD,c as VENDOR_GOOGLE_TTS_NEURAL2,U as VENDOR_GOOGLE_TTS_WAVENET,d as VENDOR_IPROYAL_RESIDENTIAL,l as VENDOR_OPENAI_WEB_SEARCH,C as VENDOR_PERPLEXITY_SEARCH,h as VENDOR_SERPAPI};
package/dist/index.d.ts CHANGED
@@ -941,6 +941,12 @@ export declare function parseNewsBrief(content: string): NewsBrief | null;
941
941
  */
942
942
  export declare const PLAN_BASIC = "sassy:basic";
943
943
 
944
+ /**
945
+ * No plan: 0 monthly credits, only top-up and trial credits to spend. Where an
946
+ * account lands when its In-App Purchase subscription ends. Never offered.
947
+ */
948
+ export declare const PLAN_NONE = "sassy:none";
949
+
944
950
  export declare const PLAN_PLUS = "sassy:plus";
945
951
 
946
952
  export declare const PROVIDER_ANTHROPIC = "Anthropic";
@@ -971,16 +977,18 @@ export declare const PROVIDER_ROLE_MAP: {
971
977
  export declare const PROVIDER_SUMMARY = "Summary";
972
978
 
973
979
  /**
974
- * Quick Access, a user preference (Settings > Header): the panel an icon next
975
- * to the header's gear opens in one tap, or none. In the iOS menu sheet's
976
- * order. Profile is left out: it is the first row of the menu the gear opens.
980
+ * Quick Access, a user preference (Settings > Header): up to QUICK_ACCESS_MAX
981
+ * panels, each an icon next to the header's gear that opens it in one tap, left
982
+ * to right in the stored order. The panels are in the iOS menu sheet's order.
983
+ * Profile is left out: it is the first row of the menu the gear opens.
984
+ * QUICK_ACCESS_NONE is the older single-panel field's "no icon".
977
985
  */
986
+ export declare const QUICK_ACCESS_MAX = 2;
987
+
978
988
  export declare const QUICK_ACCESS_NONE = "none";
979
989
 
980
990
  export declare const QUICK_ACCESS_PANELS: readonly ["settings", "shortcuts", "memories", "history", "usage", "about"];
981
991
 
982
- export declare type QuickAccess = QuickAccessPanel | typeof QUICK_ACCESS_NONE;
983
-
984
992
  export declare type QuickAccessPanel = (typeof QUICK_ACCESS_PANELS)[number];
985
993
 
986
994
  /**
@@ -1003,17 +1011,19 @@ export declare function readUrlParts(readUrls: unknown): {
1003
1011
  export declare type RealProvider = typeof PROVIDER_OPENAI | typeof PROVIDER_ANTHROPIC | typeof PROVIDER_GOOGLE;
1004
1012
 
1005
1013
  /**
1006
- * Resolve a stored Quick Access preference: one of QUICK_ACCESS_PANELS, or
1007
- * QUICK_ACCESS_NONE for anything else, whatever the DB or a client sent.
1014
+ * Resolve a stored Quick Access preference to the panels it shows, in order:
1015
+ * known panels only, each once, at most QUICK_ACCESS_MAX. A single panel name,
1016
+ * the older field's value, is a list of one; anything else is none.
1008
1017
  *
1009
1018
  * @example
1010
1019
  * ```ts
1011
- * resolveQuickAccess("history"); // Returns: "history"
1012
- * resolveQuickAccess("profile"); // Returns: "none"
1020
+ * resolveQuickAccess(["history", "usage"]); // Returns: ["history", "usage"]
1021
+ * resolveQuickAccess("history"); // Returns: ["history"]
1022
+ * resolveQuickAccess("none"); // Returns: []
1013
1023
  * ```
1014
1024
  *
1015
1025
  */
1016
- export declare function resolveQuickAccess(stored?: unknown): QuickAccess;
1026
+ export declare function resolveQuickAccess(stored?: unknown): QuickAccessPanel[];
1017
1027
 
1018
1028
  /**
1019
1029
  * Resolve a stored Response Speed preference into a complete per-provider
@@ -1 +1 @@
1
- import{ALL_MODELS as e,ALL_PROVIDERS as r,ALL_REASONING_MODELS as t,APPROXIMATE_MODELS_PER_PROVIDER as n,DEFAULT_RESPONSE_SPEED as o,MODELS_PER_PROVIDER as s,PROVIDER_ANTHROPIC as l,PROVIDER_GOOGLE as i,PROVIDER_OPENAI as u,QUICK_ACCESS_NONE as f,QUICK_ACCESS_PANELS as a,RESPONSE_SPEEDS as d}from"../constants/index.js";export*from"./cardFollowUp.js";export*from"./newChatRequest.js";export*from"./newsBrief.js";export*from"./newsLinkParts.js";export*from"./readUrlParts.js";export*from"./resetDay.js";let c=new Set([u,l,i]);function p(e){return"string"==typeof e&&c.has(e)}let h=/^auto \((.+)\)$/;function m(e){let r=e.match(h);return r?r[1]:e}let g=e=>{for(let[r,t]of Object.entries(n))if(t.some(r=>e.startsWith(r)))return r;return null},j=/image|embedding|tts|realtime|transcribe|audio/;function v(r,{matchUnknownByPrefix:t=!1}){for(let[e,t]of Object.entries(s))if(t.includes(r))return p(e)?e:null;if(!t||e.includes(r)||j.test(r))return null;let n=g(r);return p(n)?n:null}let w=(e,t={})=>{if(!e||0===e.length)return[];let n=new Set;for(let r of e){let e=v(r,t);e&&n.add(e)}return r.filter(e=>n.has(e))},P=(e,r={})=>{let t=new Map;if(!e||0===e.length)return t;for(let n of e){let e=v(n,r);e&&(t.has(e)||t.set(e,[]),t.get(e)?.push(n))}return t},x=(e,r={})=>{for(let t of P(e,r).values())if(t.length>1)return!0;return!1},y=(e,r)=>!!e&&!!r&&0!==r.length&&r.includes(e);function M(e,r,t){if(!r||Array.isArray(r)&&0===r.length)return!0;let n=e instanceof Set?e:e?new Set(e):null;return!!n&&0!==n.size&&("string"==typeof r?n.has(r):t?.any===!0?r.some(e=>n.has(e)):r.every(e=>n.has(e)))}function A(e){return t.includes(e)}function S(e){let r=r=>{let t=e?.[r];return d.includes(t)?t:o[r]};return{[u]:r(u),[l]:r(l),[i]:r(i)}}function b(e){return a.includes(e)?e:f}export{g as findProvider,P as getModelsGroupedByProvider,w as getProvidersFromModels,x as hasMultipleModelsPerProvider,M as isEntitled,y as isModelAllowedForPlan,p as isRealProvider,A as isReasoningModel,b as resolveQuickAccess,S as resolveResponseSpeed,m as stripAutoWrapper};
1
+ import{ALL_MODELS as e,ALL_PROVIDERS as r,ALL_REASONING_MODELS as t,APPROXIMATE_MODELS_PER_PROVIDER as n,DEFAULT_RESPONSE_SPEED as s,MODELS_PER_PROVIDER as l,PROVIDER_ANTHROPIC as o,PROVIDER_GOOGLE as i,PROVIDER_OPENAI as u,QUICK_ACCESS_MAX as f,QUICK_ACCESS_PANELS as a,RESPONSE_SPEEDS as d}from"../constants/index.js";export*from"./cardFollowUp.js";export*from"./newChatRequest.js";export*from"./newsBrief.js";export*from"./newsLinkParts.js";export*from"./readUrlParts.js";export*from"./resetDay.js";let c=new Set([u,o,i]);function p(e){return"string"==typeof e&&c.has(e)}let h=/^auto \((.+)\)$/;function m(e){let r=e.match(h);return r?r[1]:e}let g=e=>{for(let[r,t]of Object.entries(n))if(t.some(r=>e.startsWith(r)))return r;return null},y=/image|embedding|tts|realtime|transcribe|audio/;function j(r,{matchUnknownByPrefix:t=!1}){for(let[e,t]of Object.entries(l))if(t.includes(r))return p(e)?e:null;if(!t||e.includes(r)||y.test(r))return null;let n=g(r);return p(n)?n:null}let v=(e,t={})=>{if(!e||0===e.length)return[];let n=new Set;for(let r of e){let e=j(r,t);e&&n.add(e)}return r.filter(e=>n.has(e))},w=(e,r={})=>{let t=new Map;if(!e||0===e.length)return t;for(let n of e){let e=j(n,r);e&&(t.has(e)||t.set(e,[]),t.get(e)?.push(n))}return t},P=(e,r={})=>{for(let t of w(e,r).values())if(t.length>1)return!0;return!1},x=(e,r)=>!!e&&!!r&&0!==r.length&&r.includes(e);function A(e,r,t){if(!r||Array.isArray(r)&&0===r.length)return!0;let n=e instanceof Set?e:e?new Set(e):null;return!!n&&0!==n.size&&("string"==typeof r?n.has(r):t?.any===!0?r.some(e=>n.has(e)):r.every(e=>n.has(e)))}function M(e){return t.includes(e)}function S(e){let r=r=>{let t=e?.[r];return d.includes(t)?t:s[r]};return{[u]:r(u),[o]:r(o),[i]:r(i)}}function b(e){let r=Array.isArray(e)?e:[e],t=[];for(let e of r)a.includes(e)&&!t.includes(e)&&t.push(e);return t.slice(0,f)}export{g as findProvider,w as getModelsGroupedByProvider,v as getProvidersFromModels,P as hasMultipleModelsPerProvider,A as isEntitled,x as isModelAllowedForPlan,p as isRealProvider,M as isReasoningModel,b as resolveQuickAccess,S as resolveResponseSpeed,m as stripAutoWrapper};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint-common",
3
- "version": "4.75.0",
3
+ "version": "4.77.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {