@versini/sassysaint-common 4.68.0 → 4.69.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
CHANGED
|
@@ -1 +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",
|
|
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",W="balanced",b="thorough",X=[V,W,b],k={[V]:"low",[W]:"medium",[b]:"high"},w={[_]:V,[T]:W,[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",Eo="data-newsLinks";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,Eo as NEWS_LINKS_PART_TYPE,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,W as RESPONSE_SPEED_BALANCED,V as RESPONSE_SPEED_FAST,b 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};
|
package/dist/index.d.ts
CHANGED
|
@@ -839,6 +839,15 @@ export declare const MODELS_PER_PROVIDER: {
|
|
|
839
839
|
readonly Perplexity: readonly ["sonar", "sonar-pro", "perplexity-search"];
|
|
840
840
|
};
|
|
841
841
|
|
|
842
|
+
/**
|
|
843
|
+
* UI message part that keeps a news brief's article links readable after a
|
|
844
|
+
* reload. getUrlContent may open a brief's links only while the getNewsBrief
|
|
845
|
+
* result is in the chat, and a saved chat does not keep tool results. The
|
|
846
|
+
* server persists the links the card showed as a message's `newsLinks`, and the
|
|
847
|
+
* client rebuilds this part from them when a chat is restored.
|
|
848
|
+
*/
|
|
849
|
+
export declare const NEWS_LINKS_PART_TYPE = "data-newsLinks";
|
|
850
|
+
|
|
842
851
|
export declare interface NewsBrief {
|
|
843
852
|
asOf: string;
|
|
844
853
|
note?: string;
|
|
@@ -876,6 +885,18 @@ export declare interface NewsEvidence {
|
|
|
876
885
|
url: string;
|
|
877
886
|
}
|
|
878
887
|
|
|
888
|
+
/**
|
|
889
|
+
* The news-links part for a persisted message's `newsLinks`, keeping only
|
|
890
|
+
* string entries, or none when no link is left. The server validates them again
|
|
891
|
+
* before trusting them.
|
|
892
|
+
*/
|
|
893
|
+
export declare function newsLinkParts(newsLinks: unknown): {
|
|
894
|
+
type: string;
|
|
895
|
+
data: {
|
|
896
|
+
urls: string[];
|
|
897
|
+
};
|
|
898
|
+
}[];
|
|
899
|
+
|
|
879
900
|
export declare interface NewsOnThisDay {
|
|
880
901
|
title: string;
|
|
881
902
|
url: string;
|
|
@@ -909,6 +930,13 @@ export declare const PLAN_PLUS = "sassy:plus";
|
|
|
909
930
|
|
|
910
931
|
export declare const PLAN_PREMIUM = "sassy:advanced";
|
|
911
932
|
|
|
933
|
+
/**
|
|
934
|
+
* The accessible name of a post's "Read the post" link, on the chat card and
|
|
935
|
+
* the shared page alike: the visible text first, then the title and newsletter,
|
|
936
|
+
* so two posts with the same title still read as different links.
|
|
937
|
+
*/
|
|
938
|
+
export declare function postLinkName(post: NewsCommentary): string;
|
|
939
|
+
|
|
912
940
|
export declare const PROVIDER_ANTHROPIC = "Anthropic";
|
|
913
941
|
|
|
914
942
|
export declare const PROVIDER_GOOGLE = "Google";
|
|
@@ -1069,6 +1097,25 @@ export declare const SORT_BY_TOKEN_USAGE = "tokenUsage";
|
|
|
1069
1097
|
*/
|
|
1070
1098
|
export declare function stripAutoWrapper(modelName: string): string;
|
|
1071
1099
|
|
|
1100
|
+
/**
|
|
1101
|
+
* The follow-up a news card's "Tell me more" sends, and how the server tells it
|
|
1102
|
+
* apart from words the user typed.
|
|
1103
|
+
*
|
|
1104
|
+
* The story title is written by the model from third-party headlines, yet the
|
|
1105
|
+
* follow-up goes out as a user message, and the server grants a user's words
|
|
1106
|
+
* authority: a domain in them becomes a site getUrlContent may read
|
|
1107
|
+
* (buildAllowedHostSet), and memory extraction quotes them as the user's own.
|
|
1108
|
+
* So the title travels in one fixed form, between curly quotes, and
|
|
1109
|
+
* withoutCardQuote drops it wherever user text carries that authority. The chat
|
|
1110
|
+
* still shows the headline.
|
|
1111
|
+
*
|
|
1112
|
+
*/
|
|
1113
|
+
/**
|
|
1114
|
+
* The follow-up for one story: its title on one line, without curly quotes and
|
|
1115
|
+
* cut to MAX_TITLE_LENGTH characters, so it always matches CARD_FOLLOW_UP_RE.
|
|
1116
|
+
*/
|
|
1117
|
+
export declare function tellMeMorePrompt(title: string): string;
|
|
1118
|
+
|
|
1072
1119
|
/**
|
|
1073
1120
|
* Complete theme palette. This is the structure sent from the server to the
|
|
1074
1121
|
* client via getUserPreferences.
|
|
@@ -1086,6 +1133,18 @@ export declare interface ThemePalette {
|
|
|
1086
1133
|
normal: Palette;
|
|
1087
1134
|
}
|
|
1088
1135
|
|
|
1136
|
+
/**
|
|
1137
|
+
* The news-links part for a message's brief links. The single builder of that
|
|
1138
|
+
* shape, shared by the server, which also reads it back, and the client, which
|
|
1139
|
+
* rebuilds it from stored `newsLinks`.
|
|
1140
|
+
*/
|
|
1141
|
+
export declare function toNewsLinksPart(urls: string[]): {
|
|
1142
|
+
type: string;
|
|
1143
|
+
data: {
|
|
1144
|
+
urls: string[];
|
|
1145
|
+
};
|
|
1146
|
+
};
|
|
1147
|
+
|
|
1089
1148
|
/**
|
|
1090
1149
|
* Static loading labels for tool activity display. Generator tools override
|
|
1091
1150
|
* these with contextual text (e.g., "Analyzing bundle size for lodash...").
|
|
@@ -1128,4 +1187,11 @@ export declare interface UrlReadRecord {
|
|
|
1128
1187
|
partial: boolean;
|
|
1129
1188
|
}
|
|
1130
1189
|
|
|
1190
|
+
/**
|
|
1191
|
+
* A user message's text with a card follow-up's title removed, so only the
|
|
1192
|
+
* words the user chose keep their authority. Any other text is returned
|
|
1193
|
+
* unchanged.
|
|
1194
|
+
*/
|
|
1195
|
+
export declare function withoutCardQuote(text: string): string;
|
|
1196
|
+
|
|
1131
1197
|
export { }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let t="Tell me more about",e=RegExp(`^${t} “[^“”\\n]{1,200}”$`);function r(e){let r=e.replace(/[“”]/g,'"').replace(/\s+/g," ").trim().slice(0,200).trim()||"this story";return`${t} “${r}”`}function o(r){return e.test(r.trim())?`${t} a story`:r}export{r as tellMeMorePrompt,o as withoutCardQuote};
|
package/dist/utilities/index.js
CHANGED
|
@@ -1 +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
|
|
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 o,PROVIDER_ANTHROPIC as s,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";let c=new Set([u,s,i]);function p(e){return"string"==typeof e&&c.has(e)}let h=/^auto \((.+)\)$/;function m(e){let t=e.match(h);return t?t[1]:e}let g=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 w(t,{matchUnknownByPrefix:r=!1}){for(let[e,r]of Object.entries(o))if(r.includes(t))return p(e)?e:null;if(!r||e.includes(t)||v.test(t))return null;let n=g(t);return p(n)?n:null}let P=(e,r={})=>{if(!e||0===e.length)return[];let n=new Set;for(let t of e){let e=w(t,r);e&&n.add(e)}return t.filter(e=>n.has(e))},j=(e,t={})=>{let r=new Map;if(!e||0===e.length)return r;for(let n of e){let e=w(n,t);e&&(r.has(e)||r.set(e,[]),r.get(e)?.push(n))}return r},x=(e,t={})=>{for(let r of j(e,t).values())if(r.length>1)return!0;return!1},y=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function M(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),[s]:t(s),[i]:t(i)}}function b(e){return a.includes(e)?e:f}export{g as findProvider,j as getModelsGroupedByProvider,P 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 +1 @@
|
|
|
1
|
-
let
|
|
1
|
+
function t(t){return`Read the post: ${t.title}, ${t.newsletter}`}let e=/^https:\/\/encrypted-tbn\d\.gstatic\.com\/images\?q=tbn:[\w-]+$/;function r(t){return"string"==typeof t&&e.test(t)}function n(t){return"string"==typeof t&&""!==t.trim()}let a=new Set(['"',"\\","/","b","f","n","r","t","u"]),l={"\n":"\\n","\r":"\\r"," ":"\\t"};function i(t){return t.replace(/\\([\\|[\]])/g,"$1")}function u(t){if(!n(t))return!1;try{let{protocol:e}=new URL(t);return"http:"===e||"https:"===e}catch{return!1}}function f(t,e){return Array.isArray(t)?t.flatMap(t=>{let{author:r,newsletter:a,title:l,url:f,summary:s}=t??{};return!n(r)||!n(a)||!n(l)||!n(s)||!u(f)||e.has(f)?[]:(e.add(f),[{author:i(r),newsletter:a,title:i(l),url:f,summary:s}])}):[]}function s(t){let e,s=t.trim();if(!s||s.length>4e4)return null;try{e=function(t){try{return JSON.parse(t)}catch{return JSON.parse(function(t){let e="",r=!1;for(let n=0;n<t.length;n++){let i=t[n];if(r)if("\\"===i){let r=t[n+1]??"";e+=a.has(r)?`\\${r}`:`\\\\${r}`,n++}else'"'===i?(r=!1,e+=i):i<" "?e+=l[i]??`\\u${i.charCodeAt(0).toString(16).padStart(4,"0")}`:e+=i;else r='"'===i,e+=i}return e}(t))}}(s)}catch{return null}if(!e||!n(e.asOf)||!Array.isArray(e.items))return null;let o=new Set,c=function(t){let{title:e,url:r,line:a}=t??{};return n(e)&&u(r)&&n(a)?{title:i(e),url:r,line:a}:void 0}(e.onThisDay),h=new Set(c?[c.url]:[]),p=e.items.flatMap(t=>{let{id:e,title:a,summary:l,local:s,image:c,evidence:p,commentary:d}=t??{};if(!n(e)||o.has(e)||!n(a)||!n(l))return[];o.add(e);let m=f(d,h);return[{id:e,title:a,summary:l,local:!0===s,...r(c)?{image:c}:{},evidence:function(t){if(!Array.isArray(t))return[];let e=new Set;return t.flatMap(t=>{let{outlet:r,headline:a,url:l}=t??{};return!n(r)||!n(a)||!u(l)||e.has(l)?[]:(e.add(l),[{outlet:i(r),headline:i(a),url:l}])})}(p),...m.length>0?{commentary:m}:{}}]}),d=f(e.otherCommentary,h),m=e.earlier;return{asOf:e.asOf,...n(e.note)?{note:e.note}:{},...n(e.place)?{place:e.place}:{},...m&&n(m.chatId)&&n(m.time)?{earlier:{chatId:m.chatId,time:m.time}}:{},items:p,...d.length>0?{otherCommentary:d}:{},...c?{onThisDay:c}:{}}}let o=/^[^\S\n]{0,3}```(\w*)[^\S\n]*\n([\s\S]*?)\n[^\S\n]{0,3}```/gm;function c(t){for(let[,e,r]of t.matchAll(o))if("newsbrief"===e.toLowerCase()||""===e&&/"asOf"/.test(r)){let t=s(r);if(t)return t}return null}export{c as findNewsBrief,r as isNewsImageUrl,s as parseNewsBrief,t as postLinkName};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{NEWS_LINKS_PART_TYPE as t}from"../constants/index.js";function r(r){return{type:t,data:{urls:r}}}function n(t){if(!Array.isArray(t))return[];let n=t.filter(t=>"string"==typeof t);return n.length>0?[r(n)]:[]}export{n as newsLinkParts,r as toNewsLinksPart};
|