@versini/sassysaint-common 4.48.1 → 4.48.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -56,7 +56,6 @@ export declare const APPROXIMATE_MODELS_PER_PROVIDER: {
56
56
  readonly OpenAI: readonly ["gpt-", "o3", "o4"];
57
57
  readonly Google: readonly ["gemini"];
58
58
  readonly Perplexity: readonly ["sonar"];
59
- readonly Mistral: readonly ["mistral"];
60
59
  };
61
60
 
62
61
  /**
@@ -207,7 +206,7 @@ export declare const DIGGIDY_CHAT_TIMESTAMP_HEADER = "x-diggidy-chat-timestamp";
207
206
  * ```
208
207
  *
209
208
  */
210
- export declare const findProvider: (modelName: string) => null | typeof PROVIDER_ANTHROPIC | typeof PROVIDER_MISTRAL | typeof PROVIDER_OPENAI | typeof PROVIDER_GOOGLE;
209
+ export declare const findProvider: (modelName: string) => null | typeof PROVIDER_ANTHROPIC | typeof PROVIDER_OPENAI | typeof PROVIDER_GOOGLE;
211
210
 
212
211
  /**
213
212
  * Resolve the emergency compression floor for a plan. Premium gets the high
@@ -572,10 +571,10 @@ export declare const MODEL_OPENAI_MEDIUM = "gpt-5.4-mini";
572
571
  * and not user-selectable, and the role-purpose slots (MODEL_MEMORY_INFERENCE,
573
572
  * MODEL_CHAT_SUMMARY, MODEL_SEARCH_DECOMPOSER, MODEL_HUMANIZE_REWRITE,
574
573
  * MODEL_HUMANIZE_AUDIT, MODEL_NUTRITION_SEARCH, MODEL_EMBEDDING_TEXT,
575
- * MODEL_GENERATE_IMAGE, MODEL_TEACHER, MODEL_DEV) are named for the job they do
576
- * rather than a provider tier, so a bump there never renames them either.
577
- * Anything that needs a specific model for a specific job belongs in that
578
- * group, NOT pointed at a picker tier whose value can move.
574
+ * MODEL_GENERATE_IMAGE, MODEL_DEV) are named for the job they do rather than a
575
+ * provider tier, so a bump there never renames them either. Anything that needs
576
+ * a specific model for a specific job belongs in that group, NOT pointed at a
577
+ * picker tier whose value can move.
579
578
  *
580
579
  */
581
580
  export declare const MODEL_OPENAI_TOP = "gpt-5.6-terra";
@@ -596,16 +595,14 @@ export declare const MODEL_SONAR = "sonar";
596
595
 
597
596
  export declare const MODEL_SONAR_PRO = "sonar-pro";
598
597
 
599
- export declare const MODEL_TEACHER = "mistral-large-latest";
600
-
601
598
  /**
602
599
  * List of models available according to the providers.
603
600
  *
604
- * Array order is load-bearing and is NOT sorted by tier: index [0] is the
605
- * per-provider fallback default in getModelNameForPlan (server providers.ts).
606
- * Google deliberately defaults to MEDIUM, and Anthropic lists LOW before
607
- * MEDIUM. Re-sorting these to match the TOP/MEDIUM/LOW names would silently
608
- * change which model a user falls back to.
601
+ * Order is NOT sorted by tier (Google lists MEDIUM first, Anthropic lists LOW
602
+ * before MEDIUM) but is no longer load-bearing: index [0] used to be the
603
+ * per-provider fallback default in getModelNameForPlan (server providers.ts),
604
+ * which fell open and served it to plans entitled to none of the provider's
605
+ * models. Model choice now comes from the plan's own allowedModels order.
609
606
  *
610
607
  */
611
608
  export declare const MODELS_PER_PROVIDER: {
@@ -639,8 +636,6 @@ export declare const PROVIDER_GOOGLE = "Google";
639
636
 
640
637
  export declare const PROVIDER_MEMORY = "Memory";
641
638
 
642
- export declare const PROVIDER_MISTRAL = "Mistral";
643
-
644
639
  /**
645
640
  * List of available providers.
646
641
  */
@@ -658,7 +653,6 @@ export declare const PROVIDER_ROLE_MAP: {
658
653
  Memory: string[];
659
654
  Google: string[];
660
655
  Perplexity: string[];
661
- Mistral: string[];
662
656
  };
663
657
 
664
658
  export declare const PROVIDER_SUMMARY = "Summary";
@@ -669,7 +663,7 @@ export declare const PROVIDER_SUMMARY = "Summary";
669
663
  * `PROVIDER_ROLE_MAP`, or provider-branched logic. Runtime guards
670
664
  * (`isRealProvider`) stay as backup for any `as any` escape hatches.
671
665
  */
672
- export declare type RealProvider = typeof PROVIDER_OPENAI | typeof PROVIDER_ANTHROPIC | typeof PROVIDER_GOOGLE | typeof PROVIDER_MISTRAL;
666
+ export declare type RealProvider = typeof PROVIDER_OPENAI | typeof PROVIDER_ANTHROPIC | typeof PROVIDER_GOOGLE;
673
667
 
674
668
  export declare const ROLE_ASSISTANT = "assistant";
675
669
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- let e=["preference","identity","constraint","habit","bio","device","location","finance","professional","interest","style","behavior","other"],t=["identity","bio","constraint","professional"],E=e=>t.includes(e);var O,r=((O={})[O.NewChat=0]="NewChat",O[O.Prompts=1]="Prompts",O[O.Attachment=2]="Attachment",O[O.PrivateChat=3]="PrivateChat",O[O.Send=4]="Send",O[O.Header=5]="Header",O[O.Provider=6]="Provider",O[O.Logo=7]="Logo",O[O.Placeholder=8]="Placeholder",O[O.Footer=9]="Footer",O);let n="system",i="user",a="assistant",o="OpenAI",_="Anthropic",R="Google",T="Summary",s="Memory",A="Perplexity",l="Mistral",I=o,M=[o,_,R],L="gpt-5.6-terra",S="gpt-5.4-mini",P="gpt-5.4-nano",g="claude-opus-4-8",N="claude-sonnet-5",D="claude-haiku-4-5",d="gemini-3.6-flash",c="gemini-3.5-flash-lite",u="sonar",C="sonar-pro",h="perplexity-search",p="openai/gpt-oss-20b:free",m="mistral-large-latest",G="gpt-5.4-mini",H="gpt-5.4-nano",f="gpt-5.4-mini",U="gemini-3.6-flash",y="gpt-5.6-terra",Y="gpt-5.4-mini",B="text-embedding-3-small",b="gemini-3-pro-image",F=5,v=1e4,w={[L]:"GPT-5.6 Terra",[S]:"GPT-5.4 Mini",[P]:"GPT-5.4 Nano",[g]:"Claude Opus 4.8",[N]:"Claude Sonnet 5",[D]:"Claude Haiku 4.5",[d]:"Gemini 3.6 Flash",[c]:"Gemini 3.5 Flash-Lite",[u]:"Sonar",[C]:"Sonar Pro",[h]:"Perplexity Search",[b]:"Nano Banana 3 Pro",[m]:"Mistral Large"},V=[L,S,P,g,N,D,c,d,b],X=[L,S,P,g,N,d,c],W={[o]:[L,S,P],[_]:[g,D,N],[R]:[c,d],[A]:[u,C,h]},x={[o]:[n,i,a],[_]:[i,a],[T]:[i,a],[s]:[i,a],[R]:[i,a],[A]:[i,a],[l]:[i,a]},k={[_]:["claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-4","claude-3"],[o]:["gpt-","o3","o4"],[R]:["gemini"],[A]:["sonar"],[l]:["mistral"]},K="x-diggidy-chat-id",Z="x-diggidy-chat-timestamp",z="complete",j="timestamp",Q="tokenUsage",$="Diggidy",q="sassy:basic",J="sassy:plus",ee="sassy:advanced",et={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",PRONUNCIATION:"getPronunciation",FRENCH_TEACHINGS:"getFrenchTeachings"},ADDON:{ATTACHMENTS:"addon:attachments",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},eE={code_interpreter:"Running code...",web_search:"Searching the web...",[et.TOOL.WEATHER]:"Checking the weather...",[et.TOOL.POLLUTION]:"Fetching air pollution data...",[et.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[et.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[et.TOOL.WEBSEARCH]:"Searching the web...",[et.TOOL.GITREPOSITORY]:"Looking up repository...",[et.TOOL.HOTELS]:"Searching for hotels...",[et.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[et.TOOL.GENERATE_IMAGE]:"Generating image...",[et.TOOL.BARCODE]:"Looking up product...",[et.TOOL.PRONUNCIATION]:"Generating pronunciation...",[et.TOOL.HUMANIZE]:"Rewriting text...",[et.TOOL.IMAGES]:"Searching for images..."},eO="Using tools...",er=5e4,en=1e5,ei=8e5;function ea(e){return e===ee?ei:en}let eo=16384,e_=4,eR=3,eT="context-compression-summary",es=new Set(["OpenAI",_,"Google",l]);function eA(e){return"string"==typeof e&&es.has(e)}let el=/^auto \((.+)\)$/;function eI(e){let t=e.match(el);return t?t[1]:e}let eM=e=>{for(let[t,E]of Object.entries(k))if(E.some(t=>e.startsWith(t)))return t;return null},eL=e=>{if(!e||0===e.length)return[];let t=new Set;for(let E of e)for(let[e,O]of Object.entries(W))O.includes(E)&&("OpenAI"===e||e===_||"Google"===e)&&t.add(e);return M.filter(e=>t.has(e))},eS=e=>{let t=new Map;if(!e||0===e.length)return t;for(let E of e)for(let[e,O]of Object.entries(W))if(O.includes(E)){t.has(e)||t.set(e,[]),t.get(e)?.push(E);break}return t},eP=e=>{for(let t of eS(e).values())if(t.length>1)return!0;return!1},eg=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function eN(e,t,E){if(!t||Array.isArray(t)&&0===t.length)return!0;let O=e instanceof Set?e:e?new Set(e):null;return!!O&&0!==O.size&&("string"==typeof t?O.has(t):E?.any===!0?t.some(e=>O.has(e)):t.every(e=>O.has(e)))}function eD(e){return X.includes(e)}export{V as ALL_MODELS,M as ALL_PROVIDERS,X as ALL_REASONING_MODELS,$ as APPLICATION_NAME,k as APPROXIMATE_MODELS_PER_PROVIDER,et as CAPABILITIES,z as CHAT_COMPLETION_MARKER_KEY,en as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,ei as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD_PREMIUM,eR as CONTEXT_COMPRESSION_KEEP_IMAGES,e_ as CONTEXT_COMPRESSION_KEEP_RECENT,eT as CONTEXT_COMPRESSION_SUMMARY_ID,er as CONTEXT_COMPRESSION_THRESHOLD,I as DEFAULT_PROVIDER,eO as DEFAULT_TOOL_LOADING_LABEL,K as DIGGIDY_CHAT_ID_HEADER,Z as DIGGIDY_CHAT_TIMESTAMP_HEADER,t as HARD_CATEGORIES,eo as MAX_OUTPUT_TOKENS,F as MAX_SEARCH_QUERIES,e as MEMORY_CATEGORIES,W as MODELS_PER_PROVIDER,D as MODEL_ANTHROPIC_LOW,N as MODEL_ANTHROPIC_MEDIUM,g as MODEL_ANTHROPIC_TOP,H as MODEL_CHAT_SUMMARY,p as MODEL_DEV,w as MODEL_DISPLAY_NAMES,B as MODEL_EMBEDDING_TEXT,b as MODEL_GENERATE_IMAGE,c as MODEL_GOOGLE_MEDIUM,d as MODEL_GOOGLE_TOP,y as MODEL_HUMANIZE_AUDIT,U as MODEL_HUMANIZE_REWRITE,G as MODEL_MEMORY_INFERENCE,Y as MODEL_NUTRITION_SEARCH,P as MODEL_OPENAI_LOW,S as MODEL_OPENAI_MEDIUM,L as MODEL_OPENAI_TOP,h as MODEL_PERPLEXITY_SEARCH,f as MODEL_SEARCH_DECOMPOSER,u as MODEL_SONAR,C as MODEL_SONAR_PRO,m as MODEL_TEACHER,q as PLAN_BASIC,J as PLAN_PLUS,ee as PLAN_PREMIUM,_ as PROVIDER_ANTHROPIC,R as PROVIDER_GOOGLE,s as PROVIDER_MEMORY,l as PROVIDER_MISTRAL,o as PROVIDER_OPENAI,A as PROVIDER_PERPLEXITY,x as PROVIDER_ROLE_MAP,T as PROVIDER_SUMMARY,a as ROLE_ASSISTANT,n as ROLE_SYSTEM,i as ROLE_USER,v as SEARCH_QUERY_TIMEOUT_MS,j as SORT_BY_TIMESTAMP,Q as SORT_BY_TOKEN_USAGE,eE as TOOL_LOADING_LABELS,eM as findProvider,ea as getCompressionEmergencyThreshold,eS as getModelsGroupedByProvider,eL as getProvidersFromModels,eP as hasMultipleModelsPerProvider,eN as isEntitled,E as isHardCategory,eg as isModelAllowedForPlan,eA as isRealProvider,eD as isReasoningModel,eI as stripAutoWrapper,r as ActionColor};
1
+ let e=["preference","identity","constraint","habit","bio","device","location","finance","professional","interest","style","behavior","other"],t=["identity","bio","constraint","professional"],E=e=>t.includes(e);var O,n=((O={})[O.NewChat=0]="NewChat",O[O.Prompts=1]="Prompts",O[O.Attachment=2]="Attachment",O[O.PrivateChat=3]="PrivateChat",O[O.Send=4]="Send",O[O.Header=5]="Header",O[O.Provider=6]="Provider",O[O.Logo=7]="Logo",O[O.Placeholder=8]="Placeholder",O[O.Footer=9]="Footer",O);let r="system",i="user",o="assistant",a="OpenAI",_="Anthropic",R="Google",T="Summary",s="Memory",A="Perplexity",I=a,M=[a,_,R],l="gpt-5.6-terra",L="gpt-5.4-mini",S="gpt-5.4-nano",P="claude-opus-4-8",g="claude-sonnet-5",N="claude-haiku-4-5",D="gemini-3.6-flash",d="gemini-3.5-flash-lite",c="sonar",u="sonar-pro",C="perplexity-search",h="openai/gpt-oss-20b:free",p="gpt-5.4-mini",m="gpt-5.4-nano",G="gpt-5.4-mini",H="gemini-3.6-flash",f="gpt-5.6-terra",U="gpt-5.4-mini",y="text-embedding-3-small",Y="gemini-3-pro-image",B=5,b=1e4,F={[l]:"GPT-5.6 Terra",[L]:"GPT-5.4 Mini",[S]:"GPT-5.4 Nano",[P]:"Claude Opus 4.8",[g]:"Claude Sonnet 5",[N]:"Claude Haiku 4.5",[D]:"Gemini 3.6 Flash",[d]:"Gemini 3.5 Flash-Lite",[c]:"Sonar",[u]:"Sonar Pro",[C]:"Perplexity Search",[Y]:"Nano Banana 3 Pro"},v=[l,L,S,P,g,N,d,D,Y],w=[l,L,S,P,g,D,d],V={[a]:[l,L,S],[_]:[P,N,g],[R]:[d,D],[A]:[c,u,C]},X={[a]:[r,i,o],[_]:[i,o],[T]:[i,o],[s]:[i,o],[R]:[i,o],[A]:[i,o]},W={[_]:["claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-4","claude-3"],[a]:["gpt-","o3","o4"],[R]:["gemini"],[A]:["sonar"]},x="x-diggidy-chat-id",k="x-diggidy-chat-timestamp",K="complete",Z="timestamp",z="tokenUsage",j="Diggidy",Q="sassy:basic",$="sassy:plus",q="sassy:advanced",J={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",PRONUNCIATION:"getPronunciation",FRENCH_TEACHINGS:"getFrenchTeachings"},ADDON:{ATTACHMENTS:"addon:attachments",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},ee={code_interpreter:"Running code...",web_search:"Searching the web...",[J.TOOL.WEATHER]:"Checking the weather...",[J.TOOL.POLLUTION]:"Fetching air pollution data...",[J.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[J.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[J.TOOL.WEBSEARCH]:"Searching the web...",[J.TOOL.GITREPOSITORY]:"Looking up repository...",[J.TOOL.HOTELS]:"Searching for hotels...",[J.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[J.TOOL.GENERATE_IMAGE]:"Generating image...",[J.TOOL.BARCODE]:"Looking up product...",[J.TOOL.PRONUNCIATION]:"Generating pronunciation...",[J.TOOL.HUMANIZE]:"Rewriting text...",[J.TOOL.IMAGES]:"Searching for images..."},et="Using tools...",eE=5e4,eO=1e5,en=8e5;function er(e){return e===q?en:eO}let ei=16384,eo=4,ea=3,e_="context-compression-summary",eR=new Set(["OpenAI",_,"Google"]);function eT(e){return"string"==typeof e&&eR.has(e)}let es=/^auto \((.+)\)$/;function eA(e){let t=e.match(es);return t?t[1]:e}let eI=e=>{for(let[t,E]of Object.entries(W))if(E.some(t=>e.startsWith(t)))return t;return null},eM=e=>{if(!e||0===e.length)return[];let t=new Set;for(let E of e)for(let[e,O]of Object.entries(V))O.includes(E)&&("OpenAI"===e||e===_||"Google"===e)&&t.add(e);return M.filter(e=>t.has(e))},el=e=>{let t=new Map;if(!e||0===e.length)return t;for(let E of e)for(let[e,O]of Object.entries(V))if(O.includes(E)){t.has(e)||t.set(e,[]),t.get(e)?.push(E);break}return t},eL=e=>{for(let t of el(e).values())if(t.length>1)return!0;return!1},eS=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function eP(e,t,E){if(!t||Array.isArray(t)&&0===t.length)return!0;let O=e instanceof Set?e:e?new Set(e):null;return!!O&&0!==O.size&&("string"==typeof t?O.has(t):E?.any===!0?t.some(e=>O.has(e)):t.every(e=>O.has(e)))}function eg(e){return w.includes(e)}export{v as ALL_MODELS,M as ALL_PROVIDERS,w as ALL_REASONING_MODELS,j as APPLICATION_NAME,W as APPROXIMATE_MODELS_PER_PROVIDER,J as CAPABILITIES,K as CHAT_COMPLETION_MARKER_KEY,eO as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,en as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD_PREMIUM,ea as CONTEXT_COMPRESSION_KEEP_IMAGES,eo as CONTEXT_COMPRESSION_KEEP_RECENT,e_ as CONTEXT_COMPRESSION_SUMMARY_ID,eE as CONTEXT_COMPRESSION_THRESHOLD,I as DEFAULT_PROVIDER,et as DEFAULT_TOOL_LOADING_LABEL,x as DIGGIDY_CHAT_ID_HEADER,k as DIGGIDY_CHAT_TIMESTAMP_HEADER,t as HARD_CATEGORIES,ei as MAX_OUTPUT_TOKENS,B as MAX_SEARCH_QUERIES,e as MEMORY_CATEGORIES,V as MODELS_PER_PROVIDER,N as MODEL_ANTHROPIC_LOW,g as MODEL_ANTHROPIC_MEDIUM,P as MODEL_ANTHROPIC_TOP,m as MODEL_CHAT_SUMMARY,h as MODEL_DEV,F as MODEL_DISPLAY_NAMES,y as MODEL_EMBEDDING_TEXT,Y as MODEL_GENERATE_IMAGE,d as MODEL_GOOGLE_MEDIUM,D as MODEL_GOOGLE_TOP,f as MODEL_HUMANIZE_AUDIT,H as MODEL_HUMANIZE_REWRITE,p as MODEL_MEMORY_INFERENCE,U as MODEL_NUTRITION_SEARCH,S as MODEL_OPENAI_LOW,L as MODEL_OPENAI_MEDIUM,l as MODEL_OPENAI_TOP,C as MODEL_PERPLEXITY_SEARCH,G as MODEL_SEARCH_DECOMPOSER,c as MODEL_SONAR,u as MODEL_SONAR_PRO,Q as PLAN_BASIC,$ as PLAN_PLUS,q as PLAN_PREMIUM,_ as PROVIDER_ANTHROPIC,R as PROVIDER_GOOGLE,s as PROVIDER_MEMORY,a as PROVIDER_OPENAI,A as PROVIDER_PERPLEXITY,X as PROVIDER_ROLE_MAP,T as PROVIDER_SUMMARY,o as ROLE_ASSISTANT,r as ROLE_SYSTEM,i as ROLE_USER,b as SEARCH_QUERY_TIMEOUT_MS,Z as SORT_BY_TIMESTAMP,z as SORT_BY_TOKEN_USAGE,ee as TOOL_LOADING_LABELS,eI as findProvider,er as getCompressionEmergencyThreshold,el as getModelsGroupedByProvider,eM as getProvidersFromModels,eL as hasMultipleModelsPerProvider,eP as isEntitled,E as isHardCategory,eS as isModelAllowedForPlan,eT as isRealProvider,eg as isReasoningModel,eA as stripAutoWrapper,n as ActionColor};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint-common",
3
- "version": "4.48.1",
3
+ "version": "4.48.2",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -32,5 +32,5 @@
32
32
  "test:watch": "vitest",
33
33
  "watch": "npm-run-all dev"
34
34
  },
35
- "gitHead": "1173fb5a0f0f09499e5067b138005b7a7501bf27"
35
+ "gitHead": "57e3767249413170e3ede4be10c7fa6adc8c3837"
36
36
  }