@versini/sassysaint-common 4.34.0 → 4.35.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.
package/dist/index.d.ts CHANGED
@@ -120,6 +120,8 @@ export declare type CSSVariables = Record<string, string>;
120
120
 
121
121
  export declare const DEFAULT_PROVIDER = "OpenAI";
122
122
 
123
+ export declare const DEFAULT_TOOL_LOADING_LABEL = "Using tools...";
124
+
123
125
  /**
124
126
  * Header string for Diggidy Chat Id. Used to identify the chat in the server
125
127
  * when there is a client abort.
@@ -386,6 +388,13 @@ export declare const isModelAllowedForPlan: (selectedModel: string | undefined |
386
388
  */
387
389
  export declare function isReasoningModel(model: string): boolean;
388
390
 
391
+ /**
392
+ * Cap per-step output tokens for streamText(). 16,384 is generous enough
393
+ * for any normal response but prevents runaway generation that burns
394
+ * tokens silently when the model loops or hits provider limits.
395
+ */
396
+ export declare const MAX_OUTPUT_TOKENS = 16384;
397
+
389
398
  export declare const MODEL_CHAT_SUMMARY = "gpt-5.4-nano";
390
399
 
391
400
  export declare const MODEL_CLAUDE_HAIKU = "claude-haiku-4-5";
@@ -532,4 +541,12 @@ export declare interface ThemePalette {
532
541
  oled: Palette;
533
542
  }
534
543
 
544
+ /**
545
+ * Static loading labels for tool activity display. Generator tools override
546
+ * these with contextual text (e.g., "Analyzing bundle size for lodash...").
547
+ * These serve as fallback labels and cover provider-native tools that cannot
548
+ * use the generator pattern.
549
+ */
550
+ export declare const TOOL_LOADING_LABELS: Record<string, string>;
551
+
535
552
  export { }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- let e="standard";var t,E=((t={})[t.NewChat=0]="NewChat",t[t.Prompts=1]="Prompts",t[t.Attachment=2]="Attachment",t[t.PrivateChat=3]="PrivateChat",t[t.Reasoning=4]="Reasoning",t[t.Send=5]="Send",t[t.Header=6]="Header",t[t.Provider=7]="Provider",t[t.Logo=8]="Logo",t[t.Placeholder=9]="Placeholder",t[t.Footer=10]="Footer",t);let r="system",a="user",n="assistant",o="OpenAI",i="Anthropic",s="Google",O="Summary",_="Memory",R="Perplexity",A="Mistral",l=o,M=[o,i,s],P="gpt-5.4",T="gpt-5.4-mini",I="gpt-5.4-nano",S="gpt-4.1-nano",D="claude-opus-4-6",d="claude-sonnet-4-6",L="claude-haiku-4-5",N="gemini-3-flash-preview",g="gemini-3.1-pro-preview",u="sonar",c="sonar-pro",C="openai/gpt-oss-20b:free",h="mistral-large-latest",m="gpt-5.4-nano",p="gpt-5.4-nano",G="text-embedding-3-small",H="gemini-3-pro-image-preview",f={[P]:"GPT-5.4",[T]:"GPT-5.4 Mini",[I]:"GPT-5.4 Nano",[S]:"GPT-4.1 Nano",[D]:"Claude Opus 4.6",[d]:"Claude Sonnet 4.6",[L]:"Claude Haiku 4.5",[g]:"Gemini 3.1 Pro",[N]:"Gemini 3 Flash",[u]:"Sonar",[c]:"Sonar Pro",[H]:"Nano Banana 3 Pro",[h]:"Mistral Large"},U=[P,T,I,D,d,L,N,g,H],y=[P,T,I,D,d,g],v={[o]:[S,P,T,I],[i]:[D,L,d],[s]:[N,g],[R]:[u,c]},B={[o]:[r,a,n],[i]:[a,n],[O]:[a,n],[_]:[a,n],[s]:[a,n],[R]:[a,n],[A]:[a,n]},V={[i]:["claude-opus-4","claude-sonnet-4","claude-haiku-4","claude-3"],[o]:["gpt-","o3","o4"],[s]:["gemini"],[R]:["sonar"],[A]:["mistral"]},Y="x-diggidy-chat-id",F="x-diggidy-chat-timestamp",b="timestamp",w="tokenUsage",x="Diggidy",X="sassy:basic",k="sassy:plus",W="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",REASONING:"addon:reasoning",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},z=5e4,K=4,Z="context-compression-summary",q=e=>{for(let[t,E]of Object.entries(V))if(E.some(t=>e.startsWith(t)))return t;return null},J=e=>{if(!e||0===e.length)return[];let t=new Set;for(let E of e)for(let[e,r]of Object.entries(v))r.includes(E)&&(e===o||e===i||e===s)&&t.add(e);return M.filter(e=>t.has(e))},Q=e=>{let t=new Map;if(!e||0===e.length)return t;for(let E of e)for(let[e,r]of Object.entries(v))if(r.includes(E)){t.has(e)||t.set(e,[]),t.get(e)?.push(E);break}return t},$=e=>{for(let t of Q(e).values())if(t.length>1)return!0;return!1},ee=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function et(e,t,E){if(!t||Array.isArray(t)&&0===t.length)return!0;let r=e instanceof Set?e:e?new Set(e):null;return!!r&&0!==r.size&&("string"==typeof t?r.has(t):E?.any===!0?t.some(e=>r.has(e)):t.every(e=>r.has(e)))}function eE(e){return y.includes(e)}var er="subtle";export{U as ALL_MODELS,M as ALL_PROVIDERS,y as ALL_REASONING_MODELS,x as APPLICATION_NAME,V as APPROXIMATE_MODELS_PER_PROVIDER,j as CAPABILITIES,K as CONTEXT_COMPRESSION_KEEP_RECENT,Z as CONTEXT_COMPRESSION_SUMMARY_ID,z as CONTEXT_COMPRESSION_THRESHOLD,l as DEFAULT_PROVIDER,Y as DIGGIDY_CHAT_ID_HEADER,F as DIGGIDY_CHAT_TIMESTAMP_HEADER,v as MODELS_PER_PROVIDER,p as MODEL_CHAT_SUMMARY,L as MODEL_CLAUDE_HAIKU,D as MODEL_CLAUDE_OPUS,d as MODEL_CLAUDE_SONNET,C as MODEL_DEV,f as MODEL_DISPLAY_NAMES,G as MODEL_EMBEDDING_TEXT,N as MODEL_GEMINI_FLASH,g as MODEL_GEMINI_PRO,H as MODEL_GENERATE_IMAGE,S as MODEL_GPT4_NANO,P as MODEL_GPT5,T as MODEL_GPT5_MINI,I as MODEL_GPT5_NANO,m as MODEL_MEMORY_INFERENCE,u as MODEL_SONAR,c as MODEL_SONAR_PRO,h as MODEL_TEACHER,X as PLAN_BASIC,k as PLAN_PLUS,W as PLAN_PREMIUM,i as PROVIDER_ANTHROPIC,s as PROVIDER_GOOGLE,_ as PROVIDER_MEMORY,A as PROVIDER_MISTRAL,o as PROVIDER_OPENAI,R as PROVIDER_PERPLEXITY,B as PROVIDER_ROLE_MAP,O as PROVIDER_SUMMARY,n as ROLE_ASSISTANT,r as ROLE_SYSTEM,a as ROLE_USER,b as SORT_BY_TIMESTAMP,w as SORT_BY_TOKEN_USAGE,e as THEME_STANDARD,q as findProvider,Q as getModelsGroupedByProvider,J as getProvidersFromModels,$ as hasMultipleModelsPerProvider,et as isEntitled,ee as isModelAllowedForPlan,eE as isReasoningModel,er as THEME_SUBTLE,E as ActionColor};
1
+ let e="standard";var t,E=((t={})[t.NewChat=0]="NewChat",t[t.Prompts=1]="Prompts",t[t.Attachment=2]="Attachment",t[t.PrivateChat=3]="PrivateChat",t[t.Reasoning=4]="Reasoning",t[t.Send=5]="Send",t[t.Header=6]="Header",t[t.Provider=7]="Provider",t[t.Logo=8]="Logo",t[t.Placeholder=9]="Placeholder",t[t.Footer=10]="Footer",t);let n="system",r="user",a="assistant",O="OpenAI",i="Anthropic",o="Google",T="Summary",s="Memory",_="Perplexity",R="Mistral",A=O,L=[O,i,o],l="gpt-5.4",I="gpt-5.4-mini",M="gpt-5.4-nano",P="gpt-4.1-nano",S="claude-opus-4-6",g="claude-sonnet-4-6",N="claude-haiku-4-5",D="gemini-3-flash-preview",d="gemini-3.1-pro-preview",u="sonar",c="sonar-pro",h="openai/gpt-oss-20b:free",C="mistral-large-latest",p="gpt-5.4-nano",G="gpt-5.4-nano",m="text-embedding-3-small",U="gemini-3-pro-image-preview",H={[l]:"GPT-5.4",[I]:"GPT-5.4 Mini",[M]:"GPT-5.4 Nano",[P]:"GPT-4.1 Nano",[S]:"Claude Opus 4.6",[g]:"Claude Sonnet 4.6",[N]:"Claude Haiku 4.5",[d]:"Gemini 3.1 Pro",[D]:"Gemini 3 Flash",[u]:"Sonar",[c]:"Sonar Pro",[U]:"Nano Banana 3 Pro",[C]:"Mistral Large"},f=[l,I,M,S,g,N,D,d,U],y=[l,I,M,S,g,d],B={[O]:[P,l,I,M],[i]:[S,N,g],[o]:[D,d],[_]:[u,c]},v={[O]:[n,r,a],[i]:[r,a],[T]:[r,a],[s]:[r,a],[o]:[r,a],[_]:[r,a],[R]:[r,a]},F={[i]:["claude-opus-4","claude-sonnet-4","claude-haiku-4","claude-3"],[O]:["gpt-","o3","o4"],[o]:["gemini"],[_]:["sonar"],[R]:["mistral"]},w="x-diggidy-chat-id",b="x-diggidy-chat-timestamp",Y="timestamp",V="tokenUsage",k="Diggidy",x="sassy:basic",W="sassy:plus",X="sassy:advanced",z={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",REASONING:"addon:reasoning",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},K={web_search:"Searching the web...",code_interpreter:"Running code...",[z.TOOL.WEATHER]:"Checking the weather...",[z.TOOL.POLLUTION]:"Fetching air pollution data...",[z.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[z.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[z.TOOL.WEBSEARCH]:"Searching the web...",[z.TOOL.GITREPOSITORY]:"Looking up repository...",[z.TOOL.HOTELS]:"Searching for hotels...",[z.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[z.TOOL.GENERATE_IMAGE]:"Generating image...",[z.TOOL.BARCODE]:"Looking up product...",[z.TOOL.PRONUNCIATION]:"Generating pronunciation...",[z.TOOL.HUMANIZE]:"Rewriting text...",[z.TOOL.IMAGES]:"Searching for images..."},Z="Using tools...",j=5e4,q=16384,J=4,Q="context-compression-summary",$=e=>{for(let[t,E]of Object.entries(F))if(E.some(t=>e.startsWith(t)))return t;return null},ee=e=>{if(!e||0===e.length)return[];let t=new Set;for(let E of e)for(let[e,n]of Object.entries(B))n.includes(E)&&(e===O||e===i||e===o)&&t.add(e);return L.filter(e=>t.has(e))},et=e=>{let t=new Map;if(!e||0===e.length)return t;for(let E of e)for(let[e,n]of Object.entries(B))if(n.includes(E)){t.has(e)||t.set(e,[]),t.get(e)?.push(E);break}return t},eE=e=>{for(let t of et(e).values())if(t.length>1)return!0;return!1},en=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function er(e,t,E){if(!t||Array.isArray(t)&&0===t.length)return!0;let n=e instanceof Set?e:e?new Set(e):null;return!!n&&0!==n.size&&("string"==typeof t?n.has(t):E?.any===!0?t.some(e=>n.has(e)):t.every(e=>n.has(e)))}function ea(e){return y.includes(e)}var eO="subtle";export{f as ALL_MODELS,L as ALL_PROVIDERS,y as ALL_REASONING_MODELS,k as APPLICATION_NAME,F as APPROXIMATE_MODELS_PER_PROVIDER,z as CAPABILITIES,J as CONTEXT_COMPRESSION_KEEP_RECENT,Q as CONTEXT_COMPRESSION_SUMMARY_ID,j as CONTEXT_COMPRESSION_THRESHOLD,A as DEFAULT_PROVIDER,Z as DEFAULT_TOOL_LOADING_LABEL,w as DIGGIDY_CHAT_ID_HEADER,b as DIGGIDY_CHAT_TIMESTAMP_HEADER,q as MAX_OUTPUT_TOKENS,B as MODELS_PER_PROVIDER,G as MODEL_CHAT_SUMMARY,N as MODEL_CLAUDE_HAIKU,S as MODEL_CLAUDE_OPUS,g as MODEL_CLAUDE_SONNET,h as MODEL_DEV,H as MODEL_DISPLAY_NAMES,m as MODEL_EMBEDDING_TEXT,D as MODEL_GEMINI_FLASH,d as MODEL_GEMINI_PRO,U as MODEL_GENERATE_IMAGE,P as MODEL_GPT4_NANO,l as MODEL_GPT5,I as MODEL_GPT5_MINI,M as MODEL_GPT5_NANO,p as MODEL_MEMORY_INFERENCE,u as MODEL_SONAR,c as MODEL_SONAR_PRO,C as MODEL_TEACHER,x as PLAN_BASIC,W as PLAN_PLUS,X as PLAN_PREMIUM,i as PROVIDER_ANTHROPIC,o as PROVIDER_GOOGLE,s as PROVIDER_MEMORY,R as PROVIDER_MISTRAL,O as PROVIDER_OPENAI,_ as PROVIDER_PERPLEXITY,v as PROVIDER_ROLE_MAP,T as PROVIDER_SUMMARY,a as ROLE_ASSISTANT,n as ROLE_SYSTEM,r as ROLE_USER,Y as SORT_BY_TIMESTAMP,V as SORT_BY_TOKEN_USAGE,e as THEME_STANDARD,K as TOOL_LOADING_LABELS,$ as findProvider,et as getModelsGroupedByProvider,ee as getProvidersFromModels,eE as hasMultipleModelsPerProvider,er as isEntitled,en as isModelAllowedForPlan,ea as isReasoningModel,eO as THEME_SUBTLE,E as ActionColor};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint-common",
3
- "version": "4.34.0",
3
+ "version": "4.35.0",
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": "4165d84b0864d5c69e0571fbfe8f452ab8c703b4"
35
+ "gitHead": "3ff37e3765908bb4a2a087ceb49234e25dd96546"
36
36
  }