@versini/sassysaint-common 4.65.0 → 4.67.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/constants/index.js +1 -0
- package/dist/constants/memory.js +1 -0
- package/dist/constants/theme-types.js +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.js +1 -1
- package/dist/utilities/index.js +1 -0
- package/dist/utilities/newChatRequest.js +1 -0
- package/dist/utilities/newsBrief.js +1 -0
- package/dist/utilities/readUrlParts.js +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./memory.js";export*from"./theme-types.js";let E="system",e="user",O="assistant",_="OpenAI",T="Anthropic",R="Google",S="Summary",t="Memory",a="Perplexity",A=_,I=[_,T,R],L="gpt-6.1-sol",i="gpt-6-luna",s="claude-opus-5-5",n="claude-sonnet-5-5",P="claude-haiku-5-5",N="gemini-3.8-flash",o="gemini-3.5-flash-lite",M="sonar",r="sonar-pro",D="perplexity-search",g="openai/gpt-oss-20b:free",C="claude-haiku-5-5",u="gpt-6-luna",l="gemini-3.5-flash-lite",c="gemini-3.8-flash",h="gpt-6.1-sol",U="gpt-6-luna",d="gpt-5.6-luna",m="gemini-3.6-flash",p="text-embedding-3-small",G="gpt-image-2.5-sunburst",H=5,y=1e4,B=3e3,Y={[L]:"GPT-6.1 Sol",[i]:"GPT-6 Luna",[s]:"Claude Opus 5.5",[n]:"Claude Sonnet 5.5",[P]:"Claude Haiku 5.5",[N]:"Gemini 3.8 Flash",[o]:"Gemini 3.5 Flash-Lite",[M]:"Sonar",[r]:"Sonar Pro",[D]:"Perplexity Search",[G]:"GPT Image 2.5 Sunburst"},F=[L,i,s,n,P,o,N,G],f=[L,i,s,n,P,N,o],V="fast",b="balanced",W="thorough",X=[V,b,W],k={[V]:"low",[b]:"medium",[W]:"high"},w={[_]:V,[T]:b,[R]:V},x="none",K=["settings","shortcuts","memories","history","usage","about"],Z={[_]:[L,i],[T]:[s,P,n],[R]:[o,N],[a]:[M,r,D]},v={[_]:[E,e,O],[T]:[e,O],[S]:[e,O],[t]:[e,O],[R]:[e,O],[a]:[e,O]},z={[T]:["claude-opus-5","claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-5","claude-haiku-4","claude-3"],[_]:["gpt-","o3","o4"],[R]:["gemini"],[a]:["sonar"]},Q="x-diggidy-chat-id",j="x-diggidy-chat-timestamp",q="complete",J="timestamp",$="tokenUsage",EE="Diggidy",Ee="sassy:basic",EO="sassy:plus",E_="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",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"}},ER={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.LOCAL_BUSINESSES]:"Searching for local businesses...",[ET.TOOL.NEWS_BRIEF]:"Reading today's news...",[ET.TOOL.PRODUCTS]:"Searching for products...",[ET.TOOL.REVIEW_TRUST]:"Checking reviews...",[ET.TOOL.STREAMING_PICKS]:"Finding movies to stream...",[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...",[ET.TOOL.PAST_CHATS]:"Searching your past chats..."},ES="Using tools...",Et=1e5,Ea=8e5;function EA(E){return E===E_?Ea:Et}let EI=16384,EL=4,Ei=3,Es=8388608,En="context-compression-summary",EP="data-urlRead",EN="[Note from the system: you read";export{F as ALL_MODELS,I as ALL_PROVIDERS,f as ALL_REASONING_MODELS,EE as APPLICATION_NAME,z as APPROXIMATE_MODELS_PER_PROVIDER,ET as CAPABILITIES,q as CHAT_COMPLETION_MARKER_KEY,Et as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,Ea as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD_PREMIUM,Ei as CONTEXT_COMPRESSION_KEEP_IMAGES,EL as CONTEXT_COMPRESSION_KEEP_RECENT,Es as CONTEXT_COMPRESSION_MAX_DOCUMENT_BYTES,En as CONTEXT_COMPRESSION_SUMMARY_ID,A as DEFAULT_PROVIDER,w as DEFAULT_RESPONSE_SPEED,ES as DEFAULT_TOOL_LOADING_LABEL,Q as DIGGIDY_CHAT_ID_HEADER,j as DIGGIDY_CHAT_TIMESTAMP_HEADER,EI as MAX_OUTPUT_TOKENS,H as MAX_SEARCH_QUERIES,Z as MODELS_PER_PROVIDER,P as MODEL_ANTHROPIC_LOW,n as MODEL_ANTHROPIC_MEDIUM,s as MODEL_ANTHROPIC_TOP,u as MODEL_CHAT_SUMMARY,g as MODEL_DEV,Y as MODEL_DISPLAY_NAMES,p as MODEL_EMBEDDING_TEXT,G as MODEL_GENERATE_IMAGE,o as MODEL_GOOGLE_MEDIUM,N as MODEL_GOOGLE_TOP,h as MODEL_HUMANIZE_AUDIT,c as MODEL_HUMANIZE_REWRITE,C as MODEL_MEMORY_INFERENCE,U as MODEL_NUTRITION_SEARCH,i as MODEL_OPENAI_MEDIUM,L as MODEL_OPENAI_TOP,D as MODEL_PERPLEXITY_SEARCH,d as MODEL_REVIEW_TRUST_PANEL,m as MODEL_REVIEW_TRUST_PANEL_GOOGLE,l as MODEL_SEARCH_DECOMPOSER,M as MODEL_SONAR,r as MODEL_SONAR_PRO,Ee as PLAN_BASIC,EO as PLAN_PLUS,E_ as PLAN_PREMIUM,T as PROVIDER_ANTHROPIC,R as PROVIDER_GOOGLE,t as PROVIDER_MEMORY,_ as PROVIDER_OPENAI,a as PROVIDER_PERPLEXITY,v as PROVIDER_ROLE_MAP,S as PROVIDER_SUMMARY,x as QUICK_ACCESS_NONE,K as QUICK_ACCESS_PANELS,X as RESPONSE_SPEEDS,b as RESPONSE_SPEED_BALANCED,V as RESPONSE_SPEED_FAST,W as RESPONSE_SPEED_THOROUGH,k as RESPONSE_SPEED_TO_EFFORT,O as ROLE_ASSISTANT,E as ROLE_SYSTEM,e as ROLE_USER,B as SEARCH_DECOMPOSE_TIMEOUT_MS,y as SEARCH_QUERY_TIMEOUT_MS,J as SORT_BY_TIMESTAMP,$ as SORT_BY_TOKEN_USAGE,ER as TOOL_LOADING_LABELS,EN as URL_READ_NOTE_PREFIX,EP as URL_READ_PART_TYPE,EA as getCompressionEmergencyThreshold};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=["preference","identity","constraint","habit","bio","device","location","finance","professional","interest","style","behavior","other"],i=["identity","bio","constraint","professional"],t=e=>i.includes(e);export{i as HARD_CATEGORIES,e as MEMORY_CATEGORIES,t as isHardCategory};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e,o=((e={})[e.NewChat=0]="NewChat",e[e.Prompts=1]="Prompts",e[e.Attachment=2]="Attachment",e[e.PrivateChat=3]="PrivateChat",e[e.Send=4]="Send",e[e.Header=5]="Header",e[e.Provider=6]="Provider",e[e.Logo=7]="Logo",e[e.Placeholder=8]="Placeholder",e[e.Footer=9]="Footer",e);export{o as ActionColor};
|
package/dist/index.d.ts
CHANGED
|
@@ -85,6 +85,7 @@ export declare const CAPABILITIES: {
|
|
|
85
85
|
readonly GITREPOSITORY: "getGitRepoDetails";
|
|
86
86
|
readonly HOTELS: "getHotelDetails";
|
|
87
87
|
readonly LOCAL_BUSINESSES: "getLocalBusinesses";
|
|
88
|
+
readonly NEWS_BRIEF: "getNewsBrief";
|
|
88
89
|
readonly PRODUCTS: "getProducts";
|
|
89
90
|
readonly REVIEW_TRUST: "getReviewTrust";
|
|
90
91
|
readonly STREAMING_PICKS: "getStreamingPicks";
|
|
@@ -240,6 +241,13 @@ export declare const DIGGIDY_CHAT_ID_HEADER = "x-diggidy-chat-id";
|
|
|
240
241
|
*/
|
|
241
242
|
export declare const DIGGIDY_CHAT_TIMESTAMP_HEADER = "x-diggidy-chat-timestamp";
|
|
242
243
|
|
|
244
|
+
/**
|
|
245
|
+
* The brief in a finished reply: its first ```newsbrief fence, or an unlabeled
|
|
246
|
+
* fence holding the brief's JSON, as the client renders either one. null when
|
|
247
|
+
* the reply has no brief the card could show.
|
|
248
|
+
*/
|
|
249
|
+
export declare function findNewsBrief(text: string): NewsBrief | null;
|
|
250
|
+
|
|
243
251
|
/**
|
|
244
252
|
* Identifies the AI provider associated with a given model name by matching
|
|
245
253
|
* against known model prefixes. This function provides backward compatibility
|
|
@@ -829,6 +837,47 @@ export declare const MODELS_PER_PROVIDER: {
|
|
|
829
837
|
readonly Perplexity: readonly ["sonar", "sonar-pro", "perplexity-search"];
|
|
830
838
|
};
|
|
831
839
|
|
|
840
|
+
export declare interface NewsBrief {
|
|
841
|
+
asOf: string;
|
|
842
|
+
note?: string;
|
|
843
|
+
earlier?: {
|
|
844
|
+
chatId: string;
|
|
845
|
+
time: string;
|
|
846
|
+
};
|
|
847
|
+
items: NewsBriefItem[];
|
|
848
|
+
otherCommentary?: NewsCommentary[];
|
|
849
|
+
onThisDay?: NewsOnThisDay;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
export declare interface NewsBriefItem {
|
|
853
|
+
id: string;
|
|
854
|
+
title: string;
|
|
855
|
+
summary: string;
|
|
856
|
+
local: boolean;
|
|
857
|
+
evidence: NewsEvidence[];
|
|
858
|
+
commentary?: NewsCommentary[];
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
export declare interface NewsCommentary {
|
|
862
|
+
author: string;
|
|
863
|
+
newsletter: string;
|
|
864
|
+
title: string;
|
|
865
|
+
url: string;
|
|
866
|
+
summary: string;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
export declare interface NewsEvidence {
|
|
870
|
+
outlet: string;
|
|
871
|
+
headline: string;
|
|
872
|
+
url: string;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
export declare interface NewsOnThisDay {
|
|
876
|
+
title: string;
|
|
877
|
+
url: string;
|
|
878
|
+
line: string;
|
|
879
|
+
}
|
|
880
|
+
|
|
832
881
|
/**
|
|
833
882
|
* Color class mappings and CSS variables for the theme. Covers both color
|
|
834
883
|
* schemes at once, via Tailwind `dark:` prefixes inside the class strings.
|
|
@@ -838,6 +887,15 @@ export declare interface Palette {
|
|
|
838
887
|
cssVariables: CSSVariables;
|
|
839
888
|
}
|
|
840
889
|
|
|
890
|
+
/**
|
|
891
|
+
* Parse the ```newsbrief payload the model writes, for the chat card and the
|
|
892
|
+
* shared page alike, so both show the same stories. Items missing an id, title
|
|
893
|
+
* or summary, repeats of an id, and repeats of an evidence url are dropped
|
|
894
|
+
* rather than failing the brief. null means nothing parseable, which is also
|
|
895
|
+
* the state while the block is still streaming.
|
|
896
|
+
*/
|
|
897
|
+
export declare function parseNewsBrief(content: string): NewsBrief | null;
|
|
898
|
+
|
|
841
899
|
/**
|
|
842
900
|
* List of all plans available.
|
|
843
901
|
*/
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from"./constants/index.js";export*from"./utilities/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ALL_MODELS as e,ALL_PROVIDERS as t,ALL_REASONING_MODELS as r,APPROXIMATE_MODELS_PER_PROVIDER as n,DEFAULT_RESPONSE_SPEED as l,MODELS_PER_PROVIDER as s,PROVIDER_ANTHROPIC as o,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"./newChatRequest.js";export*from"./newsBrief.js";export*from"./readUrlParts.js";let c=new Set([u,o,i]);function h(e){return"string"==typeof e&&c.has(e)}let p=/^auto \((.+)\)$/;function g(e){let t=e.match(p);return t?t[1]:e}let m=e=>{for(let[t,r]of Object.entries(n))if(r.some(t=>e.startsWith(t)))return t;return null},v=/image|embedding|tts|realtime|transcribe|audio/;function P(t,{matchUnknownByPrefix:r=!1}){for(let[e,r]of Object.entries(s))if(r.includes(t))return h(e)?e:null;if(!r||e.includes(t)||v.test(t))return null;let n=m(t);return h(n)?n:null}let w=(e,r={})=>{if(!e||0===e.length)return[];let n=new Set;for(let t of e){let e=P(t,r);e&&n.add(e)}return t.filter(e=>n.has(e))},y=(e,t={})=>{let r=new Map;if(!e||0===e.length)return r;for(let n of e){let e=P(n,t);e&&(r.has(e)||r.set(e,[]),r.get(e)?.push(n))}return r},M=(e,t={})=>{for(let r of y(e,t).values())if(r.length>1)return!0;return!1},j=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function x(e,t,r){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):r?.any===!0?t.some(e=>n.has(e)):t.every(e=>n.has(e)))}function A(e){return r.includes(e)}function S(e){let t=t=>{let r=e?.[t];return d.includes(r)?r:l[t]};return{[u]:t(u),[o]:t(o),[i]:t(i)}}function b(e){return a.includes(e)?e:f}export{m as findProvider,y as getModelsGroupedByProvider,w as getProvidersFromModels,M as hasMultipleModelsPerProvider,x as isEntitled,j as isModelAllowedForPlan,h as isRealProvider,A as isReasoningModel,b as resolveQuickAccess,S as resolveResponseSpeed,g as stripAutoWrapper};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e="(?:an?\\s+|another\\s+)?",s=RegExp(`^(?:(?:ok(?:ay)?|alright|right|hey|hi|hello|yes|yep|yeah|sure|thanks|thank you|please|claude|diggidy)[\\s,]+)*(?:(?:(?:let'?s\\s+|can you\\s+|could you\\s+|can we\\s+|please\\s+)?(?:start|begin|create|open)\\s+)?${e}(?:new|fresh)\\s+(?:chat|conversation)|${e}(?:new|fresh)\\s+(?:thread|session))(?:[\\s,]+(?:please|pls|plz|now|thanks|thank you|thx|ty))*$`),t=/^[^\p{L}\p{N}]+/u,a=/[^\p{L}\p{N}]+$/u;function r(e){if(!e||e.length>120)return!1;let r=e.toLowerCase().replace(/’/g,"'").replace(/\s+/g," ").trim().replace(t,"").replace(a,"").trim();return""!==r&&s.test(r)}export{r as isExplicitNewChatRequest};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t){return"string"==typeof t&&""!==t.trim()}let e=new Set(['"',"\\","/","b","f","n","r","t","u"]),r={"\n":"\\n","\r":"\\r"," ":"\\t"};function n(t){return t.replace(/\\([\\|[\]])/g,"$1")}function a(e){if(!t(e))return!1;try{let{protocol:t}=new URL(e);return"http:"===t||"https:"===t}catch{return!1}}function l(e,r){return Array.isArray(e)?e.flatMap(e=>{let{author:l,newsletter:i,title:u,url:f,summary:o}=e??{};return!t(l)||!t(i)||!t(u)||!t(o)||!a(f)||r.has(f)?[]:(r.add(f),[{author:n(l),newsletter:i,title:n(u),url:f,summary:o}])}):[]}function i(i){let u,f=i.trim();if(!f||f.length>4e4)return null;try{u=function(t){try{return JSON.parse(t)}catch{return JSON.parse(function(t){let n="",a=!1;for(let l=0;l<t.length;l++){let i=t[l];if(a)if("\\"===i){let r=t[l+1]??"";n+=e.has(r)?`\\${r}`:`\\\\${r}`,l++}else'"'===i?(a=!1,n+=i):i<" "?n+=r[i]??`\\u${i.charCodeAt(0).toString(16).padStart(4,"0")}`:n+=i;else a='"'===i,n+=i}return n}(t))}}(f)}catch{return null}if(!u||!t(u.asOf)||!Array.isArray(u.items))return null;let o=new Set,s=function(e){let{title:r,url:l,line:i}=e??{};return t(r)&&a(l)&&t(i)?{title:n(r),url:l,line:i}:void 0}(u.onThisDay),c=new Set(s?[s.url]:[]),h=u.items.flatMap(e=>{let{id:r,title:i,summary:u,local:f,evidence:s,commentary:h}=e??{};if(!t(r)||o.has(r)||!t(i)||!t(u))return[];o.add(r);let d=l(h,c);return[{id:r,title:i,summary:u,local:!0===f,evidence:function(e){if(!Array.isArray(e))return[];let r=new Set;return e.flatMap(e=>{let{outlet:l,headline:i,url:u}=e??{};return!t(l)||!t(i)||!a(u)||r.has(u)?[]:(r.add(u),[{outlet:n(l),headline:n(i),url:u}])})}(s),...d.length>0?{commentary:d}:{}}]}),d=l(u.otherCommentary,c),m=u.earlier;return{asOf:u.asOf,...t(u.note)?{note:u.note}:{},...m&&t(m.chatId)&&t(m.time)?{earlier:{chatId:m.chatId,time:m.time}}:{},items:h,...d.length>0?{otherCommentary:d}:{},...s?{onThisDay:s}:{}}}let u=/^[^\S\n]{0,3}```(\w*)[^\S\n]*\n([\s\S]*?)\n[^\S\n]{0,3}```/gm;function f(t){for(let[,e,r]of t.matchAll(u))if("newsbrief"===e.toLowerCase()||""===e&&/"asOf"/.test(r)){let t=i(r);if(t)return t}return null}export{f as findNewsBrief,i as parseNewsBrief};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{URL_READ_PART_TYPE as r}from"../constants/index.js";function t(t){return{type:r,data:t}}function a(r){return Array.isArray(r)?r.filter(r=>"string"==typeof r?.url).map(r=>t({url:r.url,partial:!1!==r.partial})):[]}export{a as readUrlParts,t as toUrlReadPart};
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@versini/sassysaint-common",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.67.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Arno Versini",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
|
+
"sideEffects": false,
|
|
10
11
|
"main": "dist/index.js",
|
|
11
12
|
"types": "dist/index.d.ts",
|
|
12
13
|
"files": [
|