@versini/sassysaint-common 4.52.2 → 4.54.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 +66 -17
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare enum ActionColor {
|
|
|
19
19
|
* List of all models available TODAY. This is used by the client to display the
|
|
20
20
|
* list of models.
|
|
21
21
|
*/
|
|
22
|
-
export declare const ALL_MODELS: readonly ["gpt-5.6-
|
|
22
|
+
export declare const ALL_MODELS: readonly ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5", "gemini-3.5-flash-lite", "gemini-3.6-flash", "gemini-3-pro-image"];
|
|
23
23
|
|
|
24
24
|
export declare const ALL_PROVIDERS: readonly ["OpenAI", "Anthropic", "Google"];
|
|
25
25
|
|
|
@@ -505,7 +505,28 @@ export declare const MODEL_ANTHROPIC_MEDIUM = "claude-sonnet-5";
|
|
|
505
505
|
|
|
506
506
|
export declare const MODEL_ANTHROPIC_TOP = "claude-opus-5";
|
|
507
507
|
|
|
508
|
-
|
|
508
|
+
/**
|
|
509
|
+
* The highest-volume role slot: it pays for chat titles, search summaries AND
|
|
510
|
+
* context compression on every long chat.
|
|
511
|
+
*
|
|
512
|
+
* Bumped nano→luna. This slot was previously held off luna on purpose, and that
|
|
513
|
+
* tradeoff is now spent rather than solved. Usage rows are keyed by model id
|
|
514
|
+
* alone (`usageSchema.index({ email, date, model })`) and callType is never
|
|
515
|
+
* persisted, so every slot sharing an id also shares one cost series — a
|
|
516
|
+
* distinct id was what kept this job's per-job cost floor legible, the same
|
|
517
|
+
* signal that surfaced the consolidation-cron re-billing in #3111/#3113. Its
|
|
518
|
+
* spend now lands in the shared luna series alongside the Basic/Plus chat rung.
|
|
519
|
+
* To make it separable again, point this slot at an id nothing else holds; a
|
|
520
|
+
* per-job breakdown on a shared id would need usageSchema to persist callType
|
|
521
|
+
* first.
|
|
522
|
+
*
|
|
523
|
+
* Latency here is unmeasured against nano: the luna numbers in the block above
|
|
524
|
+
* were taken on memory extraction, not on this job, and this call is awaited on
|
|
525
|
+
* the critical path before time-to-first-token with no deadline. Watch
|
|
526
|
+
* time-to-first-token on long chats after deploying.
|
|
527
|
+
*
|
|
528
|
+
*/
|
|
529
|
+
export declare const MODEL_CHAT_SUMMARY = "gpt-5.6-luna";
|
|
509
530
|
|
|
510
531
|
export declare const MODEL_DEV = "openai/gpt-oss-20b:free";
|
|
511
532
|
|
|
@@ -552,23 +573,33 @@ export declare const MODEL_HUMANIZE_REWRITE = "gemini-3.6-flash";
|
|
|
552
573
|
* Measured on the GH #3129 chat, 10 runs each: quality did not separate them —
|
|
553
574
|
* both extracted the same 7 facts with verbatim quotes — but luna held a much
|
|
554
575
|
* tighter latency tail (max 25.8s against mini's 64.4s) and used ~15% fewer
|
|
555
|
-
* tokens.
|
|
556
|
-
*
|
|
557
|
-
*
|
|
576
|
+
* tokens.
|
|
577
|
+
*
|
|
578
|
+
* The OpenAI catalog bump then pointed MODEL_OPENAI_LOW at this same id. Five
|
|
579
|
+
* symbols now hold it — MODEL_OPENAI_LOW, this slot, MODEL_CHAT_SUMMARY,
|
|
580
|
+
* MODEL_NUTRITION_SEARCH and MODEL_REVIEW_TRUST_PANEL — so an EXACT row prices
|
|
581
|
+
* the id and the luna row in ROLE_MODEL_PRICING is the net for whichever of
|
|
582
|
+
* them moves first. Do not restate that set here; modelPricing.ts owns the
|
|
583
|
+
* count.
|
|
558
584
|
*
|
|
559
585
|
*/
|
|
560
586
|
export declare const MODEL_MEMORY_INFERENCE = "gpt-5.6-luna";
|
|
561
587
|
|
|
562
588
|
/**
|
|
563
589
|
* The nutrition fallback runs a web-search-tool lookup for branded products FDC
|
|
564
|
-
* does not carry.
|
|
565
|
-
*
|
|
590
|
+
* does not carry. The hard requirement is native support for the hosted
|
|
591
|
+
* `openai.tools.webSearch` tool, NOT a particular tier — this slot now holds
|
|
592
|
+
* the same id as the entry rung, and that was confirmed in production against
|
|
593
|
+
* "1 cup dry uncooked chickpeas": the FDC soft-failure path fell through to
|
|
594
|
+
* this search and returned 728 kcal. Re-confirm with one branded-product lookup
|
|
595
|
+
* before pointing this slot at any new model, since a capability loss here
|
|
596
|
+
* degrades to a NO_DATA string and reads as "FDC didn't have it".
|
|
566
597
|
*/
|
|
567
|
-
export declare const MODEL_NUTRITION_SEARCH = "gpt-5.
|
|
598
|
+
export declare const MODEL_NUTRITION_SEARCH = "gpt-5.6-luna";
|
|
568
599
|
|
|
569
|
-
export declare const MODEL_OPENAI_LOW = "gpt-5.
|
|
600
|
+
export declare const MODEL_OPENAI_LOW = "gpt-5.6-luna";
|
|
570
601
|
|
|
571
|
-
export declare const MODEL_OPENAI_MEDIUM = "gpt-5.
|
|
602
|
+
export declare const MODEL_OPENAI_MEDIUM = "gpt-5.6-terra";
|
|
572
603
|
|
|
573
604
|
/**
|
|
574
605
|
* List of available models TODAY.
|
|
@@ -584,14 +615,14 @@ export declare const MODEL_OPENAI_MEDIUM = "gpt-5.4-mini";
|
|
|
584
615
|
* Two deliberate exceptions follow the catalog: the Perplexity ids are legacy
|
|
585
616
|
* and not user-selectable, and the role-purpose slots (MODEL_MEMORY_INFERENCE,
|
|
586
617
|
* MODEL_CHAT_SUMMARY, MODEL_SEARCH_DECOMPOSER, MODEL_HUMANIZE_REWRITE,
|
|
587
|
-
* MODEL_HUMANIZE_AUDIT, MODEL_NUTRITION_SEARCH,
|
|
588
|
-
* MODEL_GENERATE_IMAGE, MODEL_DEV) are named for the job
|
|
589
|
-
* provider tier, so a bump there never renames them
|
|
590
|
-
* a specific model for a specific job belongs in
|
|
591
|
-
* picker tier whose value can move.
|
|
618
|
+
* MODEL_HUMANIZE_AUDIT, MODEL_NUTRITION_SEARCH, MODEL_REVIEW_TRUST_PANEL,
|
|
619
|
+
* MODEL_EMBEDDING_TEXT, MODEL_GENERATE_IMAGE, MODEL_DEV) are named for the job
|
|
620
|
+
* they do rather than a provider tier, so a bump there never renames them
|
|
621
|
+
* either. Anything that needs a specific model for a specific job belongs in
|
|
622
|
+
* that group, NOT pointed at a picker tier whose value can move.
|
|
592
623
|
*
|
|
593
624
|
*/
|
|
594
|
-
export declare const MODEL_OPENAI_TOP = "gpt-5.6-
|
|
625
|
+
export declare const MODEL_OPENAI_TOP = "gpt-5.6-sol";
|
|
595
626
|
|
|
596
627
|
/**
|
|
597
628
|
* Pseudo-model id for the Perplexity Search API (getWebSearch). Deliberately
|
|
@@ -603,6 +634,24 @@ export declare const MODEL_OPENAI_TOP = "gpt-5.6-terra";
|
|
|
603
634
|
*/
|
|
604
635
|
export declare const MODEL_PERPLEXITY_SEARCH = "perplexity-search";
|
|
605
636
|
|
|
637
|
+
/**
|
|
638
|
+
* The OpenAI seat on the reviewTrust eval panel. It gets its own slot so the
|
|
639
|
+
* roster stops following the OpenAI mid tier it used to read, which would move
|
|
640
|
+
* the panel on every catalog bump without anyone deciding to.
|
|
641
|
+
*
|
|
642
|
+
* This pin does NOT make the current panel comparable to the recorded holdout
|
|
643
|
+
* votes — it breaks that comparability once, deliberately. Both fixtures were
|
|
644
|
+
* labelled by gpt-5.4-mini (145 cases x 3 raters), and README.md records that
|
|
645
|
+
* rater calling "manipulated" 71%/59% against 13% for the other two, so it was
|
|
646
|
+
* the swing vote the leave-one-out table turns on. Those numbers describe a
|
|
647
|
+
* panel this code can no longer produce. Re-derive them with `node
|
|
648
|
+
* dist/evals/reviewTrust/runLabel.js <set> --force` before trusting the
|
|
649
|
+
* calibration again: a plain re-run relabels NOTHING, because runLabel treats a
|
|
650
|
+
* case as complete on vote COUNT and cannot see that a seat changed identity.
|
|
651
|
+
*
|
|
652
|
+
*/
|
|
653
|
+
export declare const MODEL_REVIEW_TRUST_PANEL = "gpt-5.6-luna";
|
|
654
|
+
|
|
606
655
|
/**
|
|
607
656
|
* The decomposer sits in front of every complex search, so its latency is paid
|
|
608
657
|
* on the critical path before a single result exists. Measured over 7 fixtures
|
|
@@ -629,7 +678,7 @@ export declare const MODEL_SONAR_PRO = "sonar-pro";
|
|
|
629
678
|
*
|
|
630
679
|
*/
|
|
631
680
|
export declare const MODELS_PER_PROVIDER: {
|
|
632
|
-
readonly OpenAI: readonly ["gpt-5.6-
|
|
681
|
+
readonly OpenAI: readonly ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"];
|
|
633
682
|
readonly Anthropic: readonly ["claude-opus-5", "claude-haiku-4-5", "claude-sonnet-5"];
|
|
634
683
|
readonly Google: readonly ["gemini-3.5-flash-lite", "gemini-3.6-flash"];
|
|
635
684
|
readonly Perplexity: readonly ["sonar", "sonar-pro", "perplexity-search"];
|
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,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",
|
|
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",T="Google",s="Summary",R="Memory",S="Perplexity",A=a,I=[a,_,T],l="gpt-5.6-sol",L="gpt-5.6-terra",M="gpt-5.6-luna",P="claude-opus-5",g="claude-sonnet-5",N="claude-haiku-4-5",u="gemini-3.6-flash",c="gemini-3.5-flash-lite",D="sonar",d="sonar-pro",C="perplexity-search",h="openai/gpt-oss-20b:free",p="gpt-5.6-luna",U="gpt-5.6-luna",m="gemini-3.5-flash-lite",G="gemini-3.6-flash",H="gpt-5.6-terra",f="gpt-5.6-luna",y="gpt-5.6-luna",B="text-embedding-3-small",Y="gemini-3-pro-image",b=5,v=1e4,F=3e3,w={[l]:"GPT-5.6 Sol",[L]:"GPT-5.6 Terra",[M]:"GPT-5.6 Luna",[P]:"Claude Opus 5",[g]:"Claude Sonnet 5",[N]:"Claude Haiku 4.5",[u]:"Gemini 3.6 Flash",[c]:"Gemini 3.5 Flash-Lite",[D]:"Sonar",[d]:"Sonar Pro",[C]:"Perplexity Search",[Y]:"Nano Banana 3 Pro"},V=[l,L,M,P,g,N,c,u,Y],W=[l,L,M,P,g,u,c],X={[a]:[l,L,M],[_]:[P,N,g],[T]:[c,u],[S]:[D,d,C]},k={[a]:[r,i,o],[_]:[i,o],[s]:[i,o],[R]:[i,o],[T]:[i,o],[S]:[i,o]},x={[_]:["claude-opus-5","claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-4","claude-3"],[a]:["gpt-","o3","o4"],[T]:["gemini"],[S]:["sonar"]},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",LOCAL_BUSINESSES:"getLocalBusinesses",PRODUCTS:"getProducts",REVIEW_TRUST:"getReviewTrust",STREAMING_PICKS:"getStreamingPicks",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.LOCAL_BUSINESSES]:"Searching for local businesses...",[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..."},eO="Using tools...",en=5e4,er=1e5,ei=8e5;function eo(e){return e===ee?ei:er}let ea=16384,e_=4,eT=3,es="context-compression-summary",eR=new Set(["OpenAI",_,"Google"]);function eS(e){return"string"==typeof e&&eR.has(e)}let eA=/^auto \((.+)\)$/;function eI(e){let t=e.match(eA);return t?t[1]:e}let el=e=>{for(let[t,E]of Object.entries(x))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(X))O.includes(E)&&("OpenAI"===e||e===_||"Google"===e)&&t.add(e);return I.filter(e=>t.has(e))},eM=e=>{let t=new Map;if(!e||0===e.length)return t;for(let E of e)for(let[e,O]of Object.entries(X))if(O.includes(E)){t.has(e)||t.set(e,[]),t.get(e)?.push(E);break}return t},eP=e=>{for(let t of eM(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 eu(e){return W.includes(e)}export{V as ALL_MODELS,I as ALL_PROVIDERS,W as ALL_REASONING_MODELS,$ as APPLICATION_NAME,x as APPROXIMATE_MODELS_PER_PROVIDER,et as CAPABILITIES,z as CHAT_COMPLETION_MARKER_KEY,er as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,ei as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD_PREMIUM,eT as CONTEXT_COMPRESSION_KEEP_IMAGES,e_ as CONTEXT_COMPRESSION_KEEP_RECENT,es as CONTEXT_COMPRESSION_SUMMARY_ID,en as CONTEXT_COMPRESSION_THRESHOLD,A 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,ea as MAX_OUTPUT_TOKENS,b as MAX_SEARCH_QUERIES,e as MEMORY_CATEGORIES,X as MODELS_PER_PROVIDER,N as MODEL_ANTHROPIC_LOW,g as MODEL_ANTHROPIC_MEDIUM,P as MODEL_ANTHROPIC_TOP,U as MODEL_CHAT_SUMMARY,h as MODEL_DEV,w as MODEL_DISPLAY_NAMES,B as MODEL_EMBEDDING_TEXT,Y as MODEL_GENERATE_IMAGE,c as MODEL_GOOGLE_MEDIUM,u as MODEL_GOOGLE_TOP,H as MODEL_HUMANIZE_AUDIT,G as MODEL_HUMANIZE_REWRITE,p as MODEL_MEMORY_INFERENCE,f as MODEL_NUTRITION_SEARCH,M as MODEL_OPENAI_LOW,L as MODEL_OPENAI_MEDIUM,l as MODEL_OPENAI_TOP,C as MODEL_PERPLEXITY_SEARCH,y as MODEL_REVIEW_TRUST_PANEL,m as MODEL_SEARCH_DECOMPOSER,D as MODEL_SONAR,d as MODEL_SONAR_PRO,q as PLAN_BASIC,J as PLAN_PLUS,ee as PLAN_PREMIUM,_ as PROVIDER_ANTHROPIC,T as PROVIDER_GOOGLE,R as PROVIDER_MEMORY,a as PROVIDER_OPENAI,S as PROVIDER_PERPLEXITY,k as PROVIDER_ROLE_MAP,s as PROVIDER_SUMMARY,o as ROLE_ASSISTANT,r as ROLE_SYSTEM,i as ROLE_USER,F as SEARCH_DECOMPOSE_TIMEOUT_MS,v as SEARCH_QUERY_TIMEOUT_MS,j as SORT_BY_TIMESTAMP,Q as SORT_BY_TOKEN_USAGE,eE as TOOL_LOADING_LABELS,el as findProvider,eo as getCompressionEmergencyThreshold,eM as getModelsGroupedByProvider,eL as getProvidersFromModels,eP as hasMultipleModelsPerProvider,eN as isEntitled,E as isHardCategory,eg as isModelAllowedForPlan,eS as isRealProvider,eu as isReasoningModel,eI as stripAutoWrapper,n as ActionColor};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@versini/sassysaint-common",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.54.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": "
|
|
35
|
+
"gitHead": "8e1f876e7bd0a6c494d9a0f02d9a72e1619dafcd"
|
|
36
36
|
}
|