@versini/sassysaint-common 4.16.1 → 4.16.3

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
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Enumeration of all possible UI elements that can be themed. These map to
3
+ * specific actions, UI components, or visual elements in the application.
4
+ */
5
+ export declare enum ActionColor {
6
+ NewChat = 0,
7
+ Prompts = 1,
8
+ Attachment = 2,
9
+ PrivateChat = 3,
10
+ SaveChat = 4,
11
+ Reasoning = 5,
12
+ Send = 6,
13
+ Header = 7,
14
+ Provider = 8,
15
+ Logo = 9,
16
+ Placeholder = 10,
17
+ Footer = 11
18
+ }
19
+
1
20
  /**
2
21
  * List of all models available TODAY. This is used by the client to display the
3
22
  * list of models.
@@ -56,6 +75,35 @@ export declare const CAPABILITIES: {
56
75
  */
57
76
  export declare type CapabilityInput = string | readonly string[];
58
77
 
78
+ /**
79
+ * Color scheme constants based on system preference (light/dark mode).
80
+ */
81
+ export declare const COLOR_SCHEME: {
82
+ readonly LIGHT: "light";
83
+ readonly DARK: "dark";
84
+ };
85
+
86
+ /**
87
+ * Maps each ActionColor to its corresponding Tailwind CSS class string. These
88
+ * are complete class strings (e.g., "fill-[#7A9BC4]", "text-copy-medium") that
89
+ * can be directly applied to DOM elements.
90
+ *
91
+ * Partial mapping allows themes to define only the colors they want to
92
+ * customize, while inheriting defaults for undefined colors.
93
+ */
94
+ export declare type ColorMap = Partial<Record<ActionColor, string>>;
95
+
96
+ /**
97
+ * Color scheme based on system preference (light/dark mode).
98
+ */
99
+ export declare type ColorScheme = "light" | "dark";
100
+
101
+ /**
102
+ * CSS variables that can be dynamically applied to document.documentElement.
103
+ * Variable names must include the -- prefix (e.g., "--av-focus-light").
104
+ */
105
+ export declare type CSSVariables = Record<string, string>;
106
+
59
107
  export declare const DEFAULT_PROVIDER = "OpenAI";
60
108
 
61
109
  /**
@@ -64,6 +112,28 @@ export declare const DEFAULT_PROVIDER = "OpenAI";
64
112
  */
65
113
  export declare const DIGGIDY_CHAT_ID_HEADER = "x-diggidy-chat-id";
66
114
 
115
+ /**
116
+ * Display mode constants for OLED optimization.
117
+ */
118
+ export declare const DISPLAY_MODE: {
119
+ readonly NORMAL: "normal";
120
+ readonly OLED: "oled";
121
+ };
122
+
123
+ /**
124
+ * Display mode for OLED optimization.
125
+ */
126
+ export declare type DisplayMode = "normal" | "oled";
127
+
128
+ /**
129
+ * All palettes for a single display mode (normal or oled), containing both
130
+ * light and dark color scheme variants.
131
+ */
132
+ export declare interface DisplayModePalettes {
133
+ light: Palette;
134
+ dark: Palette;
135
+ }
136
+
67
137
  /**
68
138
  * Represents the shape of an entitlement state object, used for checking
69
139
  * capability loading status. This interface is intentionally flexible to work
@@ -391,6 +461,15 @@ export declare const MODELS_PER_PROVIDER: {
391
461
  readonly Perplexity: readonly ["sonar", "sonar-pro"];
392
462
  };
393
463
 
464
+ /**
465
+ * Complete palette for a single display mode and color scheme combination.
466
+ * Contains both the color class mappings and CSS variables.
467
+ */
468
+ export declare interface Palette {
469
+ colors: ColorMap;
470
+ cssVariables: CSSVariables;
471
+ }
472
+
394
473
  /**
395
474
  * List of all plans available.
396
475
  */
@@ -450,13 +529,31 @@ export declare const SORT_BY_TIMESTAMP = "timestamp";
450
529
  export declare const SORT_BY_TOKEN_USAGE = "tokenUsage";
451
530
 
452
531
  /**
453
- * Theme constants used across client and server.
532
+ * Theme mode constants.
454
533
  */
455
534
  export declare const THEME_STANDARD = "standard";
456
535
 
457
536
  export declare const THEME_SUBTLE = "subtle";
458
537
 
459
- export declare type ThemeMode = typeof THEME_STANDARD | typeof THEME_SUBTLE;
538
+ /**
539
+ * Theme mode type.
540
+ */
541
+ export declare type ThemeMode = "standard" | "subtle";
542
+
543
+ /**
544
+ * Complete theme palette containing all variants. This is the structure sent
545
+ * from the server to the client via getUserPreferences.
546
+ *
547
+ * Structure:
548
+ * - normal.light: Regular display, light color scheme
549
+ * - normal.dark: Regular display, dark color scheme
550
+ * - oled.light: OLED display, light color scheme
551
+ * - oled.dark: OLED display, dark color scheme
552
+ */
553
+ export declare interface ThemePalette {
554
+ normal: DisplayModePalettes;
555
+ oled: DisplayModePalettes;
556
+ }
460
557
 
461
558
  /**
462
559
  * Converts an array of capability strings into a Set for efficient lookup
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- let e="user",_="assistant",t="OpenAI",E="Anthropic",a="Google",r="Summary",s="Perplexity",n="Mistral",O=[t,E,a],i="gpt-5",o="gpt-5-mini",R="gpt-5-nano",l="gpt-4.1-nano",A="claude-haiku-4-5",I="claude-sonnet-4-5",M="gemini-2.5-flash",D="gemini-2.5-pro",L="sonar",P="sonar-pro",T="mistralai/mistral-small-3.2-24b-instruct:free",S="gpt-4o-mini",p="text-embedding-3-small",d={[i]:"GPT-5",[o]:"GPT-5 Mini",[R]:"GPT-5 Nano",[l]:"GPT-4.1 Nano",[A]:"Claude Haiku 4.5",[I]:"Claude Sonnet 4.5",[M]:"Gemini 2.5 Flash",[D]:"Gemini 2.5 Pro",[L]:"Sonar",[P]:"Sonar Pro"},N=[i,o,R,A,I,M,D],u=[i,o,R,I,D],g={[t]:[l,i,o,R],[E]:[A,I],[a]:[M,D],[s]:[L,P]},c={[t]:["system",e,_],[E]:[e,_],[r]:[e,_],Memory:[e,_],[a]:[e,_],[s]:[e,_]},G={[E]:["claude-sonnet-4","claude-haiku-4","claude-3"],[t]:["gpt-","o3","o4"],[a]:["gemini"],[s]:["sonar"]},m="x-diggidy-chat-id",f="timestamp",h="tokenUsage",b="Diggidy",y="sassy:basic",U="sassy:plus",H="sassy:advanced",V={TOOL:{DATETIME:"getDateTime",IMAGES:"getImages",POLLUTION:"getAirPollution",WEATHER:"getWeather",URLCONTENTPARSER:"getUrlContent",MEMORIES:"getUserMemories",HUMANIZE:"humanize",WEBSEARCH:"getWebSearch",GITREPOSITORY:"getGitRepoDetails",HOTELS:"getHotelDetails"},ADDON:{ATTACHMENTS:"addon:attachments",REASONING:"addon:reasoning",CODEINTERPRETER:"addon:codeinterpreter"}},k="standard",C=e=>{for(let[_,t]of Object.entries(G))if(t.some(_=>e.startsWith(_)))return _;return null},w=e=>{if(!e||0===e.length)return[];let _=new Set;for(let t of e)for(let[e,a]of Object.entries(g))a.includes(t)&&("OpenAI"===e||e===E||"Google"===e)&&_.add(e);return O.filter(e=>_.has(e))},x=e=>{let _=new Map;if(!e||0===e.length)return _;for(let t of e)for(let[e,E]of Object.entries(g))if(E.includes(t)){_.has(e)||_.set(e,[]),_.get(e)?.push(t);break}return _},Y=e=>{for(let _ of x(e).values())if(_.length>1)return!0;return!1},B=(e,_)=>!!e&&!!_&&0!==_.length&&_.includes(e);function v(e){return!!e&&Array.isArray(e.capabilities)&&e.capabilities.length>=0}function F(e){return e?new Set(e):null}function W(e,_,t){if(!_||Array.isArray(_)&&0===_.length)return!0;let E=e instanceof Set?e:F(e);return!!E&&0!==E.size&&("string"==typeof _?E.has(_):t?.any===!0?_.some(e=>E.has(e)):_.every(e=>E.has(e)))}var j="OpenAI",X="gpt-5",z="sonar",K="Google",Z="Memory",q="OpenAI",J="hidden",Q="data",$="system",ee="user",e_="subtle";export{N as ALL_MODELS,O as ALL_PROVIDERS,u as ALL_REASONING_MODELS,b as APPLICATION_NAME,G as APPROXIMATE_MODELS_PER_PROVIDER,V as CAPABILITIES,m as DIGGIDY_CHAT_ID_HEADER,g as MODELS_PER_PROVIDER,A as MODEL_CLAUDE_HAIKU,I as MODEL_CLAUDE_SONNET,T as MODEL_DEV,d as MODEL_DISPLAY_NAMES,p as MODEL_EMBEDDING_TEXT,M as MODEL_GEMINI_FLASH,D as MODEL_GEMINI_PRO,l as MODEL_GPT4_NANO,o as MODEL_GPT5_MINI,R as MODEL_GPT5_NANO,S as MODEL_MEMORY_INFERENCE,P as MODEL_SONAR_PRO,y as PLAN_BASIC,U as PLAN_PLUS,H as PLAN_PREMIUM,E as PROVIDER_ANTHROPIC,n as PROVIDER_MISTRAL,s as PROVIDER_PERPLEXITY,c as PROVIDER_ROLE_MAP,r as PROVIDER_SUMMARY,_ as ROLE_ASSISTANT,f as SORT_BY_TIMESTAMP,h as SORT_BY_TOKEN_USAGE,k as THEME_STANDARD,C as findProvider,x as getModelsGroupedByProvider,w as getProvidersFromModels,Y as hasMultipleModelsPerProvider,W as isEntitled,v as isEntitlementLoaded,B as isModelAllowedForPlan,F as toCapabilitySet,j as DEFAULT_PROVIDER,X as MODEL_GPT5,z as MODEL_SONAR,K as PROVIDER_GOOGLE,Z as PROVIDER_MEMORY,q as PROVIDER_OPENAI,J as ROLE_HIDDEN,Q as ROLE_INTERNAL,$ as ROLE_SYSTEM,ee as ROLE_USER,e_ as THEME_SUBTLE};
1
+ let e="standard",t={LIGHT:"light",DARK:"dark"},r={NORMAL:"normal",OLED:"oled"};var a,E=((a={})[a.NewChat=0]="NewChat",a[a.Prompts=1]="Prompts",a[a.Attachment=2]="Attachment",a[a.PrivateChat=3]="PrivateChat",a[a.SaveChat=4]="SaveChat",a[a.Reasoning=5]="Reasoning",a[a.Send=6]="Send",a[a.Header=7]="Header",a[a.Provider=8]="Provider",a[a.Logo=9]="Logo",a[a.Placeholder=10]="Placeholder",a[a.Footer=11]="Footer",a);let n="system",i="user",o="assistant",s="hidden",O="data",l="OpenAI",_="Anthropic",R="Google",A="Summary",P="Memory",L="Perplexity",M="Mistral",D=l,d=[l,_,R],I="gpt-5",S="gpt-5-mini",T="gpt-5-nano",N="gpt-4.1-nano",g="claude-haiku-4-5",u="claude-sonnet-4-5",h="gemini-2.5-flash",m="gemini-2.5-pro",c="sonar",p="sonar-pro",f="mistralai/mistral-small-3.2-24b-instruct:free",C="gpt-4o-mini",G="text-embedding-3-small",H={[I]:"GPT-5",[S]:"GPT-5 Mini",[T]:"GPT-5 Nano",[N]:"GPT-4.1 Nano",[g]:"Claude Haiku 4.5",[u]:"Claude Sonnet 4.5",[h]:"Gemini 2.5 Flash",[m]:"Gemini 2.5 Pro",[c]:"Sonar",[p]:"Sonar Pro"},y=[I,S,T,g,u,h,m],U=[I,S,T,u,m],v={[l]:[N,I,S,T],[_]:[g,u],[R]:[h,m],[L]:[c,p]},b={[l]:[n,i,o],[_]:[i,o],[A]:[i,o],[P]:[i,o],[R]:[i,o],[L]:[i,o]},V={[_]:["claude-sonnet-4","claude-haiku-4","claude-3"],[l]:["gpt-","o3","o4"],[R]:["gemini"],[L]:["sonar"]},Y="x-diggidy-chat-id",B="timestamp",F="tokenUsage",k="Diggidy",w="sassy:basic",x="sassy:plus",W="sassy:advanced",j={TOOL:{DATETIME:"getDateTime",IMAGES:"getImages",POLLUTION:"getAirPollution",WEATHER:"getWeather",URLCONTENTPARSER:"getUrlContent",MEMORIES:"getUserMemories",HUMANIZE:"humanize",WEBSEARCH:"getWebSearch",GITREPOSITORY:"getGitRepoDetails",HOTELS:"getHotelDetails"},ADDON:{ATTACHMENTS:"addon:attachments",REASONING:"addon:reasoning",CODEINTERPRETER:"addon:codeinterpreter"}},K=e=>{for(let[t,r]of Object.entries(V))if(r.some(t=>e.startsWith(t)))return t;return null},X=e=>{if(!e||0===e.length)return[];let t=new Set;for(let r of e)for(let[e,a]of Object.entries(v))a.includes(r)&&(e===l||e===_||e===R)&&t.add(e);return d.filter(e=>t.has(e))},z=e=>{let t=new Map;if(!e||0===e.length)return t;for(let r of e)for(let[e,a]of Object.entries(v))if(a.includes(r)){t.has(e)||t.set(e,[]),t.get(e)?.push(r);break}return t},Z=e=>{for(let t of z(e).values())if(t.length>1)return!0;return!1},q=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function J(e){return!!e&&Array.isArray(e.capabilities)&&e.capabilities.length>=0}function Q(e){return e?new Set(e):null}function $(e,t,r){if(!t||Array.isArray(t)&&0===t.length)return!0;let a=e instanceof Set?e:Q(e);return!!a&&0!==a.size&&("string"==typeof t?a.has(t):r?.any===!0?t.some(e=>a.has(e)):t.every(e=>a.has(e)))}var ee="subtle";export{y as ALL_MODELS,d as ALL_PROVIDERS,U as ALL_REASONING_MODELS,k as APPLICATION_NAME,V as APPROXIMATE_MODELS_PER_PROVIDER,E as ActionColor,j as CAPABILITIES,t as COLOR_SCHEME,D as DEFAULT_PROVIDER,Y as DIGGIDY_CHAT_ID_HEADER,r as DISPLAY_MODE,v as MODELS_PER_PROVIDER,g as MODEL_CLAUDE_HAIKU,u as MODEL_CLAUDE_SONNET,f as MODEL_DEV,H as MODEL_DISPLAY_NAMES,G as MODEL_EMBEDDING_TEXT,h as MODEL_GEMINI_FLASH,m as MODEL_GEMINI_PRO,N as MODEL_GPT4_NANO,I as MODEL_GPT5,S as MODEL_GPT5_MINI,T as MODEL_GPT5_NANO,C as MODEL_MEMORY_INFERENCE,c as MODEL_SONAR,p as MODEL_SONAR_PRO,w as PLAN_BASIC,x as PLAN_PLUS,W as PLAN_PREMIUM,_ as PROVIDER_ANTHROPIC,R as PROVIDER_GOOGLE,P as PROVIDER_MEMORY,M as PROVIDER_MISTRAL,l as PROVIDER_OPENAI,L as PROVIDER_PERPLEXITY,b as PROVIDER_ROLE_MAP,A as PROVIDER_SUMMARY,o as ROLE_ASSISTANT,s as ROLE_HIDDEN,O as ROLE_INTERNAL,n as ROLE_SYSTEM,i as ROLE_USER,B as SORT_BY_TIMESTAMP,F as SORT_BY_TOKEN_USAGE,e as THEME_STANDARD,K as findProvider,z as getModelsGroupedByProvider,X as getProvidersFromModels,Z as hasMultipleModelsPerProvider,$ as isEntitled,J as isEntitlementLoaded,q as isModelAllowedForPlan,Q as toCapabilitySet,ee as THEME_SUBTLE};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint-common",
3
- "version": "4.16.1",
3
+ "version": "4.16.3",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,8 +33,8 @@
33
33
  "watch": "npm-run-all dev"
34
34
  },
35
35
  "devDependencies": {
36
- "@microsoft/api-extractor": "7.54.0",
37
- "@rslib/core": "0.17.1"
36
+ "@microsoft/api-extractor": "7.55.0",
37
+ "@rslib/core": "0.17.2"
38
38
  },
39
- "gitHead": "fa0a42023398b3ba72c6a3c130e69496433af8fe"
39
+ "gitHead": "8386aaac30134dce86849e214ffb5551a5a006dd"
40
40
  }